А общее дублирование кода к чему?
То бишь это
PHP код:
pInfo[playerid][pMoney] += amount;
GivePlayerMoney(playerid, amount);
+ условие
PHP код:
if (GetPlayerMoney(playerid) != pInfo[playerid][pMoney])
и ещё 2 действия
PHP код:
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
Как я понимаю, это попытка избавиться от постоянного вызова ResetPlayerMoney, так?
Только на деле выходит, что ты добавляешь вызов GetPlayerMoney и, собственно, обращение к массиву.
А если условие срабатывает, то ещё и GivePlayerMoney вызываешь повторно.
Шило на мыло, уроненное в тюремной душевой, меняешь ![Grin](images/smile/grin.gif)
Проще сделать так, как по мне:
PHP код:
stock GivePlayerMoneyPlus(playerid, money)
{
pInfo[playerid][pMoney] += money;
ResetPlayerMoney(playerid);
return GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
}
Тут ты и логику функции не меняешь (GivePlayerMoney возвращает 0 в случаях, когда игрок не подключён. Ну и во всех других случаях, когда функция не смогла выполнится), и лишних действий никаких.
Можно ещё код сделать компактнее, перенеся "+= money" в GivePlayerMoney, но просто у меня в этой функции сразу отправляется запрос в БД с обновлением денег:
Открыть/закрыть
PHP код:
stock ac_money_GivePlayerMoney(playerid, money)
{
pInfo[playerid][pMoney] += money;
if(money) UpdatePlayerMoneyInAccount(playerid);// Если в GivePlayerMoney не выдаётся 0 долларов, вызываем функцию, в которой хранится запрос на обновление денег
ResetPlayerMoney(playerid);
return GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
}
#if defined _ALS_GivePlayerMoney
#undef GivePlayerMoney
#else
#define _ALS_GivePlayerMoney
#endif
#define GivePlayerMoney ac_money_GivePlayerMoney
поэтому код именно такой (а компактность подобному коду, имхо, не повредит)