Сумма ниже нуля.

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Последнее редактирование:

DarklSide

Участник
Сообщения
931
Реакции
468
Создавай новую интовую локальную переменную и проинициализируй её балансом игрока (если отсутствует необходимость в использовании глобальной переменной, для каждого клиента).
PHP:
#pragma semicolon 1
#pragma newdecls required
int i_offmoney = 0;
public void OnPluginStart()
{
   i_offmoney = FindSendPropOffs("CCSPlayer", "m_iAccount");
   if (i_offmoney == -1)SetFailState("Error - offset for CSSPlayer::m_iAccount");
   RegConsoleCmd("sm_drop_money", Cmd_Drop_Money);
}
public Action Cmd_Drop_Money(int client, int args)
{
   if (client)
   {
     if (args == 1)
     {
       if (IsClientInGame(client) && IsPlayerAlive(client))
       {
         char arg[16];
         GetCmdArgString(arg, sizeof(arg));
         int amount = StringToInt(arg);
         if (amount > 0)
         {
           int RP_Money = GetEntData(client, i_offmoney);
           if ((RP_Money -= amount) >= 0)Drop_Money(client, amount);
           else PrintHintText(client, "У тебя нет таких денег!");
         }
         else PrintHintText(client, "Сумма должна быть не меньше 1$");
       }
     }
     else ReplyToCommand(client, "Используй: sm_drop_money <сумма>");
   }
   return Plugin_Handled;
}
void Drop_Money(int client, int amount)
{
   //
}

P.S.:
Тобишь если написать !drop_money 1000000 (когда у меня на балансе 1000$), то баланс уйдет в минус и он мне эти деньги выдаст.
Идет проверка введенного дропа "amount",- не данной у игрока суммы в наличии.
 
Последнее редактирование:

Reg1oxeN

Участник
Сообщения
403
Реакции
319
C-подобный:
if (amount > 0)
{
    if (amount > RP_Money[client]) amount = RP_Money[client]; //если выкидываем больше чем есть, то выкидываем все что есть %)
    RP_Money[client] -= amount;
    Drop_Money(client, amount);
    PrintHintText(client, "Выкинул %d.", amount);
}
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Создавай новую интовую локальную переменную и проинициализируй её балансом игрока (если отсутствует необходимость в использовании глобальной переменной, для каждого клиента).
PHP:
#pragma semicolon 1
#pragma newdecls required
int i_offmoney = 0;
public void OnPluginStart()
{
   i_offmoney = FindSendPropOffs("CCSPlayer", "m_iAccount");
   if (i_offmoney == -1)SetFailState("Error - offset for CSSPlayer::m_iAccount");
   RegConsoleCmd("sm_drop_money", Cmd_Drop_Money);
}
public Action Cmd_Drop_Money(int client, int args)
{
   if (client)
   {
     if (args == 1)
     {
       if (IsClientInGame(client) && IsPlayerAlive(client))
       {
         char arg[16];
         GetCmdArgString(arg, sizeof(arg));
         int amount = StringToInt(arg);
         if (amount > 0)
         {
           int RP_Money = GetEntData(client, i_offmoney);
           if ((RP_Money -= amount) >= 0)Drop_Money(client, amount);
           else PrintHintText(client, "У тебя нет таких денег!");
         }
         else PrintHintText(client, "Сумма должна быть не меньше 1$");
       }
     }
     else ReplyToCommand(client, "Используй: sm_drop_money <сумма>");
   }
   return Plugin_Handled;
}
void Drop_Money(int client, int amount)
{
   //
}

P.S.:

Идет проверка введенного дропа "amount",- не данной у игрока суммы в наличии.

Ты здесь используешь валюту CSGO?
Ввел !drop_money -10000000, пишет нельзя выкинуть, но баланс ушел в минус.
--- Добавлено позже ---
C-подобный:
if (amount > 0)
{
    if (amount > RP_Money[client]) amount = RP_Money[client]; //если выкидываем больше чем есть, то выкидываем все что есть %)
    RP_Money[client] -= amount;
    Drop_Money(client, amount);
    PrintHintText(client, "Выкинул %d.", amount);
}
Ввел !drop_money 10000000, выкинул всю сумму т.е 50000$, пишет что я выкинул 10000000$ и поднял 10000000$
--- Добавлено позже ---
Решил.
 
Последнее редактирование:
Сверху Снизу