• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Проверка кода

Dmitriy Makarov

Изучающий
Пользователь
Регистрация
12 Июн 2020
Сообщения
294
Лучшие ответы
9
Репутация
24
Привет снова.
Посоветовали сохранять все, что происходит с игроком (деньги/тачка/дом/скин) сразу же в игре после его приобретения, а не при дисконнекте.
Так вот.. Мне нужно создать сток и сделать там обновления именно денег и после покупки чего-либо, вызывать этот сток. Скажите пожалуйста, я ниже все правильно сделал?


У меня есть такой дефайн, который обновляет деньги игрока после покупки чего-либо, только в игре
Код:
#define UpdatePlayerMoney(%0) ResetPlayerMoney(%0),GivePlayerMoney(%0,pInfo[playerid][pMoney])
Далее, есть такой код, который сохраняет деньги игрока в БД
C++:
new query[71];
format(query, sizeof(query), "UPDATE `users` SET `money` = '%d' WHERE `ID` = '%d' LIMIT 1", pInfo[playerid][pMoney], pInfo[playerid][pID]);
mysql_tquery(dbHandle, query);
И если завернуть это в stock, то получится следующее:
C++:
stock SaveMoney(playerid)
{
    UpdatePlayerMoney(playerid);
    new query[71];
    format(query, sizeof(query), "UPDATE `users` SET `money` = '%d' WHERE `ID` = '%d' LIMIT 1", pInfo[playerid][pMoney], pInfo[playerid][pID]);
    mysql_tquery(dbHandle, query);
    return 1;
}

// Вызов:
if(pInfo[playerid][pMoney] < 10) return SCM(playerid, COLOR_GREY, "У Вас недостаточно денег, чтобы купить это");
pInfo[playerid][pHealth] += 25.0;
pInfo[playerid][pMoney] -= 10;
SaveMoney(playerid);
SetPlayerChatBubble(playerid, "+25 HP", 0xFFFAFAAA, 15.0, 2000);
Он будет работать так?:
1. Человек купил себе покушать чего-нибудь
2. После покупки, у него прибавилось HP и отнялось 10$
3. Далее вызывается SaveMoney, который отнимает у игрока 10$ и оставшиеся деньги сохраняет в Базу Данных
-------------------------
Насчет define UpdatePlayerMoney: Была проблема, что у меня не отнимались деньги, этот define мне тогда помог. Я использовал его в коде выше, где "Вызов" вместо SaveMoney, чтобы деньги обновлялись в игре.
 
Сверху Снизу