PDA

Просмотр полной версии : [Вопрос] Выдача денег через функцию и запись в переменную



Brutex
23.08.2014, 17:06
Здравствуйте. Чтобы не обновлять каждый раз стандартный текстдрав денег, я сделал функцию:

stock GivePlayerCash(playerid, money, bool:value)
{
if(value == true) PlayerInfo[playerid][pMoney] += money;
else if(value == false) PlayerInfo[playerid][pMoney] = money;
GivePlayerMoney(playerid, money);
return true;
}
Сделал команды для проверки:

if(strcmp("/1", cmdtext, true, 1) == 0)
{
GivePlayerCash(playerid, 100, true);
return 1;
}
if(strcmp("/2", cmdtext, true, 1) == 0)
{
GivePlayerCash(playerid, -50, true);
return 1;
}
if(strcmp("/3", cmdtext, true, 1) == 0)
{
GivePlayerCash(playerid, 500, false);
return 1;
}
И постоянно прибавляется 100 баксов. Введя 3 команды у меня стало 300 баксов, при сохранение в БД тоже написано 300 баксов. В чём ошибка? Подскажите пожалуйста.

Brutex
23.08.2014, 19:02
Ошибочка. Как раз всё хорошо работает. Запись в переменную идёт успешно.
Проблема с самим денежным текстдравом, он прибавляет, но ничего не убавляет и не изменяет.
Может есть иной способ?

L0ndl3m
23.08.2014, 19:13
Не совсем понял смысл стока.
Почему так не удобно?


stock GivePlayerCash(playerid, money)
{
PlayerInfo[playerid][pMoney] += money;
GivePlayerMoney(playerid, money);
return 1;
}


Использование простое:


GivePlayerCash(playerid, 5000); // выдать $5000
GivePlayerCash(playerid, -5000); // отнять $5000

Brutex
23.08.2014, 19:33
При помощи стока можно обновить/прибавить/изменить/отнять денежные средства.
Например, если я пишу GivePlayerCash(playerid, 5000, true); - то уже понятно, что при помощи true прибавит 5000$
У меня в кармане 5000$ я хочу отнять 4000$ - GivePlayerCash(playerid, -4000, true); Я сейчас заспавнюсь, мне нужно обновить
денежный текстдрав при спавне - GivePlayerCash(playerid, 0, true); textdraw обновлён. Я хочу просто изменить свою 1000$ на 1$ без всяких вычитаний - GivePlayerCash(playerid, 1, false); Вот собственно говоря такой пример. Такой код писал DeimoS, но я этот код найти не могу. Он вроде писал как-то так stock GiveMoney(playerid, money, bool:mode) - вроде так.

DeimoS
23.08.2014, 22:32
Вы забываете обнулить деньги в HUD =) Поэтому они и прибавляются.

stock GivePlayerCash(playerid, money, bool:value)
{
if(value == true) PlayerInfo[playerid][pMoney] += money;
else if(value == false) PlayerInfo[playerid][pMoney] = money;
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, PlayerInfo[playerid][pMoney]);
return true;
}

- - - Добавлено - - -


Не совсем понял смысл стока.

Ну тут совмещены две функции - установка определённого значения и изменение текущего значения на определённую сумму

Brutex
23.08.2014, 22:55
Спасибо огромное :smile: