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

Тема в разделе "Программирование / Скриптинг", создана пользователем Hejter, 2 мар 2016.

  1. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    Последнее редактирование: 2 мар 2016
  2. DarklSide

    DarklSide

    Сообщения:
    680
    Симпатии:
    173
    Создавай новую интовую локальную переменную и проинициализируй её балансом игрока (если отсутствует необходимость в использовании глобальной переменной, для каждого клиента).
    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 clientint args)
    {
       if (
    client)
       {
         if (
    args == 1)
         {
           if (
    IsClientInGame(client) && IsPlayerAlive(client))
           {
             
    char arg[16];
             
    GetCmdArgString(argsizeof(arg));
             
    int amount StringToInt(arg);
             if (
    amount 0)
             {
               
    int RP_Money GetEntData(clienti_offmoney);
               if ((
    RP_Money -= amount) >= 0)Drop_Money(clientamount);
               else 
    PrintHintText(client"У тебя нет таких денег!");
             }
             else 
    PrintHintText(client"Сумма должна быть не меньше 1$");
           }
         }
         else 
    ReplyToCommand(client"Используй: sm_drop_money <сумма>");
       }
       return 
    Plugin_Handled;
    }
    void Drop_Money(int clientint amount)
    {
       
    //
    }

    P.S.:
    Идет проверка введенного дропа "amount",- не данной у игрока суммы в наличии.
     
    Последнее редактирование: 2 мар 2016
  3. Reg1oxeN

    Reg1oxeN

    Сообщения:
    84
    Симпатии:
    26
    Код:
    if (amount > 0)
    {
        if (amount > RP_Money[client]) amount = RP_Money[client]; //если выкидываем больше чем есть, то выкидываем все что есть %)
        RP_Money[client] -= amount;
        Drop_Money(client, amount);
        PrintHintText(client, "Выкинул %d.", amount);
    }
     
  4. Hejter

    Hejter Mapper Source Engine

    Сообщения:
    1.771
    Симпатии:
    259
    Ты здесь используешь валюту CSGO?
    Ввел !drop_money -10000000, пишет нельзя выкинуть, но баланс ушел в минус.
    --- Добавлено позже ---
    Ввел !drop_money 10000000, выкинул всю сумму т.е 50000$, пишет что я выкинул 10000000$ и поднял 10000000$
    --- Добавлено позже ---
    Решил.
     
    Последнее редактирование: 2 мар 2016