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

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

Реклама

Вы можете заказать рекламу для вашего сообщества, или проекта на нашем портале. Реклама - двигатель торговли.

Что нового?

Хотите в один клик узнать что нового пишут наши пользователи? Тогда Вам сюда.

Связь с Администрацией

Если у Вас есть вопрос по работе портала, который Вы не в силах решить сами? Тогда напишите нам об это тут.

[Вопрос] Как снимать деньги при покупке чего-либо

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

Dmitriy Makarov

• Зарегистрированный •
Пользователь
Регистрация
12 Июн 2020
Сообщения
60
Реакции
0
Возраст
19
Привет. У меня в коде есть система еды для новичков. При выборе определенного пункта, у игрока должно отниматься определенное количество денег, но этого не происходит, не знаю почему.
Вот мой код:
C++:
case 0: SetPlayerHealth(playerid, health += 10.0); // Бесплатно
case 1:
{
    SetPlayerHealth(playerid, pInfo[playerid][pHealth]);
    if(pInfo[playerid][pMoney] < 10) // Если деньги игрока меньше 10$
    {
        SCM(playerid, COLOR_GREY, "У Вас недостаточно денег, чтобы купить это");
    }
    else // Иначе
    {
        SetPlayerHealth(playerid, health += 25.0);
        pInfo[playerid][pMoney] -= 10; // У игрока отнимается 10$
     }
}
case 2:
{
    SetPlayerHealth(playerid, pInfo[playerid][pHealth]);
      if(pInfo[playerid][pMoney] < 25) // Если деньги игрока меньше 25$
    {
        SCM(playerid, COLOR_GREY, "У Вас недостаточно денег, чтобы купить это");
    }
    else
    {
        SetPlayerHealth(playerid, health += 40.0);
        pInfo[playerid][pMoney] -= 25; // Иначе отнимается 25$
    }
}
Код сам по себе работает, т.е HP прибавляется, но деньги не отнимаются.
 

UnO33

Шершняга
Команда форума
Moderator
Регистрация
4 Фев 2013
Сообщения
1,524
Реакции
249
Адрес
Kyiv
  • Помощник
Смотри каким способом выдаются деньги в других частях мода и так же делай здесь.
 

Dmitriy Makarov

• Зарегистрированный •
Пользователь
Регистрация
12 Июн 2020
Сообщения
60
Реакции
0
Возраст
19
Смотри каким способом выдаются деньги в других частях мода и так же делай здесь.
В смысле?
В других функциях я выдаю через stock GiveMoney, ибо стандартная функция GivePlayerMoney деньги выдает и сразу отнимает, сказали, что это античит.
Насчет того, как отнимать - я без понятия как это сделать.
Я смотрел в чужие моды, там везде так же все, как у меня, т.е
Код:
pInfo[playerid][pMoney] -= 25;
 

Sorcatus

• Профик •
Регистрация
5 Ноя 2013
Сообщения
455
Реакции
283
  • Pawn-разработчик
  • Победитель
все верно деньги у тебя отнимаются, но визуально ничего не меняется.
тебе нужно после изменения переменной изменить визуально.
добавь везде после изменения переменной

C-like:
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
Либо посмотри какие аргументы принимает твоя функция GiveMoney и делай через нее
 

Dmitriy Makarov

• Зарегистрированный •
Пользователь
Регистрация
12 Июн 2020
Сообщения
60
Реакции
0
Возраст
19
все верно деньги у тебя отнимаются, но визуально ничего не меняется.
тебе нужно после изменения переменной изменить визуально.
добавь везде после изменения переменной

C-like:
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, pInfo[playerid][pMoney]);
Либо посмотри какие аргументы принимает твоя функция GiveMoney и делай через нее
Это куда добавить? В паблик OnPlayerSpawn или писать это везде, где я буду отнимать деньги?
 

Sorcatus

• Профик •
Регистрация
5 Ноя 2013
Сообщения
455
Реакции
283
  • Pawn-разработчик
  • Победитель
Это куда добавить? В паблик OnPlayerSpawn или писать это везде, где я буду отнимать деньги?
везде, где будешь отнимать деньги

для удобства можно ко всем #define добавить

#define UpdatePlayerMoney(%0) ResetPlayerMoney(%0),GivePlayerMoney(%0,pInfo[playerid][pMoney])

и уже писать просто

UpdatePlayerMoney(playerid);
 

Dmitriy Makarov

• Зарегистрированный •
Пользователь
Регистрация
12 Июн 2020
Сообщения
60
Реакции
0
Возраст
19
везде, где будешь отнимать деньги

для удобства можно ко всем #define добавить

#define UpdatePlayerMoney(%0) ResetPlayerMoney(%0),GivePlayerMoney(%0,pInfo[playerid][pMoney])

и уже писать просто

UpdatePlayerMoney(playerid);
Я добавил это в паблик OnPlayerSpawn и все работает. Это значит, что все работает, но через жопу или и так сойдет?
 

Sorcatus

• Профик •
Регистрация
5 Ноя 2013
Сообщения
455
Реакции
283
  • Pawn-разработчик
  • Победитель
Я добавил это в паблик OnPlayerSpawn и все работает. Это значит, что все работает, но через жопу или и так сойдет?
если ты купишь еду, то визуально деньги поменяются только после спавна, нужно добавлять каждый раз после изменения денег
 

Dmitriy Makarov

• Зарегистрированный •
Пользователь
Регистрация
12 Июн 2020
Сообщения
60
Реакции
0
Возраст
19
если ты купишь еду, то визуально деньги поменяются только после спавна, нужно добавлять каждый раз после изменения денег
У меня без спавна они отнимаются, хз..
Ну типа подходишь к пикапу с едой, покупаешь и деньги отнимаются
 

Dmitriy Makarov

• Зарегистрированный •
Пользователь
Регистрация
12 Июн 2020
Сообщения
60
Реакции
0
Возраст
19

UnO33

Шершняга
Команда форума
Moderator
Регистрация
4 Фев 2013
Сообщения
1,524
Реакции
249
Адрес
Kyiv
  • Помощник
Я добавил это в паблик OnPlayerSpawn и все работает. Это значит, что все работает, но через жопу или и так сойдет?
Это значит через жопу. Необходимость обновлять отображаемые деньги есть только при изменении их количества - т.е. каждый раз после pInfo[playerid][pMoney] -= 10;.
OnPlayerUpdate, куда ты засунул GivePlayerMoney, вызывается чаще, чем раз в секунду. Думай, сколько раз в час ты лишний раз вызываешь ненужную функцию GivePlayerMoney. :)
 

Dmitriy Makarov

• Зарегистрированный •
Пользователь
Регистрация
12 Июн 2020
Сообщения
60
Реакции
0
Возраст
19
Это значит через жопу. Необходимость обновлять отображаемые деньги есть только при изменении их количества - т.е. каждый раз после pInfo[playerid][pMoney] -= 10;.
OnPlayerUpdate, куда ты засунул GivePlayerMoney, вызывается чаще, чем раз в секунду. Думай, сколько раз в час ты лишний раз вызываешь ненужную функцию GivePlayerMoney. :)
Ладненько..
А как правильнее будет?
Просто если убрать это из OnPlayerUpdate, то деньги вообще не отнимаются.
 

Sorcatus

• Профик •
Регистрация
5 Ноя 2013
Сообщения
455
Реакции
283
  • Pawn-разработчик
  • Победитель
Ладненько..
А как правильнее будет?
Просто если убрать это из OnPlayerUpdate, то деньги вообще не отнимаются.
тебе же ответили уже

Необходимость обновлять отображаемые деньги есть только при изменении их количества - т.е. каждый раз после pInfo[playerid][pMoney] -= 10;.
 

Dmitriy Makarov

• Зарегистрированный •
Пользователь
Регистрация
12 Июн 2020
Сообщения
60
Реакции
0
Возраст
19
#define UpdatePlayerMoney(%0) ResetPlayerMoney(%0),GivePlayerMoney(%0,pInfo[playerid][pMoney])

и уже писать просто

UpdatePlayerMoney(playerid);
Необходимость обновлять отображаемые деньги есть только при изменении их количества - т.е. каждый раз после pInfo[playerid][pMoney] -= 10;.
Все, решил.
Спасибо большое. =)
 
Статус
В этой теме нельзя размещать новые ответы.

Реклама

shape1
shape2
shape3
shape4
shape7
shape8
Сверху