Добро пожаловать на Pawno-Info.Ru - Портал о программировании №1

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям и ответы на все интересующие Вас вопросы. После регистрации Вы сможете создавать темы, публиковать ответы, влиять на репутацию пользователей форума, обмениваться личными сообщениями и многое другое. Это быстро и совершенно бесплатно, так чего же Вы ждете?
Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Скачивать файлы
Создавать темы
Быть полноправным участником форума
Доступ к архиву Pawno-Info
Нормальное копирование кода

Маппинг для сервера

Если вы хотите обновить Ваш сервер новыми доработками - то зайдите в наш раздел. Большой выбор готовых решений от наших пользователей

Моды для сервера

Огромный выбор различных модификаций для Вашего сервера. Пролистайте эти темы! Возможно именно там Вы найдете то, что искали уже давно.

Модификации SA

Хотите разнообразить свою игру в San Andreas? Смелее в наш раздел. Отличный сборник готовых решений. Играйте с удовольствием

Статус
В этой теме нельзя размещать новые ответы.

Hosse

Заблокирован
Регистрация
17 Ноя 2011
Сообщения
613
Лучшие ответы
0
Репутация
224
Доброго времени суток,заметил такую проблему.Когда я себе админой делаю респекты,например 200шт,то припередачи их у того игрока показывает в /stats тоже 200,на первый взгляд всё хорошо,но когда он покупает лувел ( /buylevel ) то у него лвл покупается,но респекты все 200 обращяются в "0".
Моя команда для передачи респектов

PHP:
if(strcmp(cmd, "/giveexp", true) == 0)
    {
        if(IsPlayerConnected(playerid))
        {
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_YELLOW, "Используйте: /giveexp [ид] [кол-во]");
                return 1;
            }
            giveplayerid = ReturnUser(tmp);
            tmp = strtok(cmdtext, idx);
            if(!strlen(tmp))
            {
                SendClientMessage(playerid, COLOR_YELLOW, "Используйте: /giveexp [ид] [кол-во]");
                return 1;
            }
            moneys = strval(tmp);
            if(moneys > 5 && PlayerInfo[playerid][pLevel] < 2)
            {
                SendClientMessage(playerid, COLOR_RED, "{FF0000}x{ffffff} Вам нужен 2 уровень чтобы передавать более 5 респектов!");
                return 1;
            }
            if(moneys < 1 || moneys > 1000)
            {
                SendClientMessage(playerid, COLOR_RED, "{FF0000}x{ffffff} Нельзя передать более 1000 респектов.");
                return 1;
            }
            if (IsPlayerConnected(giveplayerid))
            {
                if(giveplayerid != INVALID_PLAYER_ID)
                {
                    if(PlayerInfo[giveplayerid][pLocal] == 106)
                    {
                        SendClientMessage(playerid, COLOR_RED, "{FF0000}x{ffffff} Команда запрещена в данной локации");
                        return 1;
                    }
                    if (ProxDetectorS(5.0, playerid, giveplayerid))
                    {
                        GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
                        GetPlayerName(playerid, sendername, sizeof(sendername));
                        playermoney = PlayerInfo[playerid][pExp];
                        if (moneys > 0 && playermoney >= moneys)
                        {
                        PlayerInfo[giveplayerid][pExp] += moneys;
                        PlayerInfo[playerid][pExp] -= moneys;
                            format(string, sizeof(string), "{ffffff}Вы передали %s[%d] %d Респектов.", giveplayer,giveplayerid, moneys);
                            PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
                            SendClientMessage(playerid, COLOR_YELLOW, string);
                            format(string, sizeof(string), "{ffffff}Вы получили %d респектов от %s[%d].", moneys, sendername, playerid);
                            SendClientMessage(giveplayerid, COLOR_YELLOW, string);
                            format(string, sizeof(string), "{ffffff}%s дал %d респектов %s", sendername, moneys, giveplayer);
//                            PayLog(string);
                            if(moneys >= 1000000)
                            {
                                ABroadCast(COLOR_YELLOW,string,1);
                            }
                            PlayerPlaySound(giveplayerid, 1052, 0.0, 0.0, 0.0);
                            format(string, sizeof(string), "%s передал респекты %s", sendername ,giveplayer);
                            ProxDetector(30.0, playerid, string,  COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE,COLOR_PURPLE);
                        }
                        else
                        {
                       		SendClientMessage(playerid, COLOR_RED, "{FF0000}x{ffffff} Неверное кол-во.");
                        }
                    }
                    else
                    {
                        SendClientMessage(playerid, COLOR_RED, "{FF0000}x{ffffff} Вы слишком далеко.");
                    }
                }//invalid id
            }
            else
            {
                format(string, sizeof(string), "{FF0000}x{ffffff} %d оффлайн.", giveplayerid);
                SendClientMessage(playerid, COLOR_RED, string);
            }
        }
        return 1;
    }
 

Smile

Эксперт
Пользователь
Регистрация
10 Июн 2011
Сообщения
1,247
Лучшие ответы
0
Репутация
274
Адрес
г.Казань
комманду /buylevel в студию.
 

Hosse

Заблокирован
Регистрация
17 Ноя 2011
Сообщения
613
Лучшие ответы
0
Репутация
224
PHP:
if (strcmp(cmd, "/buylevel", true) == 0)
	{
	    if(IsPlayerConnected(playerid))
	    {
			if (gPlayerLogged[playerid] != 0)
			{
				PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid);
				if(PlayerInfo[playerid][pLevel] >= 0)
				{
					new nxtlevel = PlayerInfo[playerid][pLevel]+1;
					new costlevel = nxtlevel*levelcost;//10k for testing purposes
					new expamount = nxtlevel*levelexp;
					new infostring[256];
					if(GetPlayerMoney(playerid) < costlevel)
					{
						format(infostring, 256, "   У Вас недостаточно наличности на руках ($%d) !",costlevel);
						SendClientMessage(playerid, COLOR_GRAD1, infostring);
						return 1;
					}
					else if (PlayerInfo[playerid][pExp] < expamount)
					{
						format(infostring, 256, "   Нужно %d респектов, У вас всего [%d] !",expamount,PlayerInfo[playerid][pExp]);
						SendClientMessage(playerid, COLOR_GRAD1, infostring);
						return 1;
					}
					else
					{
						format(string, sizeof(string), "~g~LEVEL UP~n~~w~You Are Now Level %d", nxtlevel);
						PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0);
						PlayerPlayMusic(playerid);
						NormMoney[playerid] = 2;
						AntiMoney[playerid] = AntiMoney[playerid] - costlevel;
						GivePlayerMoney(playerid, (-costlevel));
						PlayerInfo[playerid][pLevel]++;
						if(PlayerInfo[playerid][pDonateRank] > 0)
						{
						    PlayerInfo[playerid][pExp] -= expamount;
						    new total = PlayerInfo[playerid][pExp];
						    if(total > 0)
						    {
						        PlayerInfo[playerid][pExp] = total;
						    }
						    else
						    {
						        PlayerInfo[playerid][pExp] = 0;
						    }
						}
						else
						{
							PlayerInfo[playerid][pExp] = 0;
						}
						PlayerInfo[playerid][gPupgrade] = PlayerInfo[playerid][gPupgrade]+2;
						GameTextForPlayer(playerid, string, 500, 1);
						format(infostring, 256, "* Вы купили Уровень %d за ($%d) пишите /upgrade", nxtlevel, costlevel);
						SendClientMessage(playerid, COLOR_LIGHTBLUE, infostring);
						format(infostring, 256, "* Вам дали %d Пунктов Модернизации",PlayerInfo[playerid][gPupgrade]);
						SendClientMessage(playerid, COLOR_LIGHTBLUE, infostring);
					}
				}
				return 1;
			}
			else
			{
				SendClientMessage(playerid, COLOR_GRAD1, "   Вы не Загружены !");
			}
		}
		return 1;
	}


---------- Post added at 13:53 ---------- Previous post was at 12:48 ----------

up-up-up-up?

---------- Post added at 14:30 ---------- Previous post was at 13:53 ----------

вверх тему..
 

Frapsy

Эксперт
Пользователь
Регистрация
12 Дек 2011
Сообщения
1,277
Лучшие ответы
0
Репутация
341
Возраст
27
PHP:
                        if(PlayerInfo[playerid][pDonateRank] > 0) 
                        { 
                            PlayerInfo[playerid][pExp] -= expamount; 
                            new total = PlayerInfo[playerid][pExp]; 
                            if(total > 0) 
                            { 
                                PlayerInfo[playerid][pExp] = total; 
                            } 
                            else 
                            { 
                                PlayerInfo[playerid][pExp] = 0; 
                            } 
                        } 
                        else 
                        { 
                            PlayerInfo[playerid][pExp] = 0; 
                        }
Если игрок с премиум аккаунтом покупает лвл, то ехр остаются, а если нет - обнуляются.

---------- Post added at 14:38 ---------- Previous post was at 14:35 ----------

Если ты не хочешь, чтобы обнулялось, оставь просто:
PHP:
PlayerInfo[playerid][pExp] -= expamount;
 

Hosse

Заблокирован
Регистрация
17 Ноя 2011
Сообщения
613
Лучшие ответы
0
Репутация
224
тоесть убрать
PHP:
if(PlayerInfo[playerid][pDonateRank] > 0)
эту строку?
 

Frapsy

Эксперт
Пользователь
Регистрация
12 Дек 2011
Сообщения
1,277
Лучшие ответы
0
Репутация
341
Возраст
27
Вместо верхнего кода моего поста, вставить нижний.
 

Hosse

Заблокирован
Регистрация
17 Ноя 2011
Сообщения
613
Лучшие ответы
0
Репутация
224
попробую,поможет дам спасибку
 

Hosse

Заблокирован
Регистрация
17 Ноя 2011
Сообщения
613
Лучшие ответы
0
Репутация
224
сделал так,павно не компликтит,закрывается..так что не,не то
 

Frapsy

Эксперт
Пользователь
Регистрация
12 Дек 2011
Сообщения
1,277
Лучшие ответы
0
Репутация
341
Возраст
27
Руки кривые, вот что. Замени код, который в ПЕРВОЙ рамки, на код из ВТОРОЙ.
 

Hosse

Заблокирован
Регистрация
17 Ноя 2011
Сообщения
613
Лучшие ответы
0
Репутация
224
делаю вот так

PHP:
if (strcmp(cmd, "/buylevel", true) == 0) 
    { 
        if(IsPlayerConnected(playerid)) 
        { 
            if (gPlayerLogged[playerid] != 0) 
            { 
                PlayerInfo[playerid][pCash] = GetPlayerMoney(playerid); 
                if(PlayerInfo[playerid][pLevel] >= 0) 
                { 
                    new nxtlevel = PlayerInfo[playerid][pLevel]+1; 
                    new costlevel = nxtlevel*levelcost;//10k for testing purposes 
                    new expamount = nxtlevel*levelexp; 
                    new infostring[256]; 
                    if(GetPlayerMoney(playerid) < costlevel) 
                    { 
                        format(infostring, 256, "   У Вас недостаточно наличности на руках ($%d) !",costlevel); 
                        SendClientMessage(playerid, COLOR_GRAD1, infostring); 
                        return 1; 
                    } 
                    else if (PlayerInfo[playerid][pExp] < expamount) 
                    { 
                        format(infostring, 256, "   Нужно %d респектов, У вас всего [%d] !",expamount,PlayerInfo[playerid][pExp]); 
                        SendClientMessage(playerid, COLOR_GRAD1, infostring); 
                        return 1; 
                    } 
                    else 
                    { 
                        format(string, sizeof(string), "~g~LEVEL UP~n~~w~You Are Now Level %d", nxtlevel); 
                        PlayerPlaySound(playerid, 1052, 0.0, 0.0, 0.0); 
                        PlayerPlayMusic(playerid); 
                        NormMoney[playerid] = 2; 
                        AntiMoney[playerid] = AntiMoney[playerid] - costlevel; 
                        GivePlayerMoney(playerid, (-costlevel)); 
                        PlayerInfo[playerid][pLevel]++; 
                        PlayerInfo[playerid][pExp] -= expamount;
                        } 
                        else 
                        { 
                            PlayerInfo[playerid][pExp] = 0; 
                        } 
                        PlayerInfo[playerid][gPupgrade] = PlayerInfo[playerid][gPupgrade]+2; 
                        GameTextForPlayer(playerid, string, 500, 1); 
                        format(infostring, 256, "* Вы купили Уровень %d за ($%d) пишите /upgrade", nxtlevel, costlevel); 
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, infostring); 
                        format(infostring, 256, "* Вам дали %d Пунктов Модернизации",PlayerInfo[playerid][gPupgrade]); 
                        SendClientMessage(playerid, COLOR_LIGHTBLUE, infostring); 
                    } 
                } 
                return 1; 
            } 
            else 
            { 
                SendClientMessage(playerid, COLOR_GRAD1, "   Вы не Загружены !"); 
            } 
        } 
        return 1; 
    }
и павно просто закрывается
 
Последнее редактирование:

Hosse

Заблокирован
Регистрация
17 Ноя 2011
Сообщения
613
Лучшие ответы
0
Репутация
224
Статус
В этой теме нельзя размещать новые ответы.
shape1
shape2
shape3
shape4
shape7
shape8
Сверху Снизу