[Zombie:Reloaded] После использования kill человек в следующем раунде теряет все деньги

Тема в разделе "Запросы", создана пользователем ★Сириус★, 20 авг 2013.

  1. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    199
    Ребят, за определенную сумму, может кто-нибудь написать плагин на Zombie:Reloaded для CS:S, суть плагина следующая.
    Если humans (выживший) прописывает команду kill (часто люди прописывают чтобы их не съели зомби), этот человек в следующем раунде теряет сумму денег прописанную в определенном cvar.
    Например плагин имеет cvar: sm_kill_money 16000, тогда у игрока в следующем раунде вычитается эта сумма денег и в чате напишет ему: За использование команды kill в прошлом раунде, вы оштрафованы на 16000$
    Таким образом, этот человек уже не сможет закупить оружие
     
  2. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Пробуй
    PHP:
    #include <sourcemod>

    new Handle:g_hMoney INVALID_HANDLE;

    new 
    bool:Check[MAXPLAYERS 1] = {false, ...};

    new 
    CVAR_Money 0;

    public 
    OnPluginStart()
    {
        
    g_hMoney CreateConVar("sm_kill_money""16000""Укажите сумму денег, которая будет вычитаться");

        
    AddCommandListener(ACL_Kill"kill");

        
    HookEvent("player_spawn"Event_OnPlayerSpawn);
    }

    public 
    OnMapStart()
    {
        
    CVAR_Money GetConVarInt(g_hMoney);
    }

    public 
    OnClientDisconnect(client)
    {
        if (
    Check[client])
        {
            
    Check[client] = false;
        }
    }

    public 
    Action:ACL_Kill(client, const String:name[], args)
    {
        if (
    IsPlayerAlive(client))
        {
            
    Check[client] = true;
        }
    }

    public 
    Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));

        if (
    Check[client])
        {
            new 
    money GetEntProp(clientProp_Send"m_iAccount"4);

            
    SetEntProp(clientProp_Send"m_iAccount"money <= CVAR_Money : (money CVAR_Money));

            
    Check[client] = false;

            
    PrintToChat(client"За использование команды kill в прошлом раунде, вы оштрафованы на %d$"CVAR_Money);
        }
    }
     
    ★Сириус★ нравится это.
  3. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    199
    на zr есть квар такой zr_account_cashfill_value "12000", который каждый раунд выдает сумму указанную денег.
    и соответственно твой вариант не работает

    Добавлено через 58 секунд
    в чат написало что я оштрафован, но не сняло денег, а может и сняло но потом снова восстановило

    Добавлено через 7 минут
    попробовал без мода Zombie:Reloaded, то все работает
     
    Последнее редактирование: 20 авг 2013
  4. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    ★Сириус★
    Попробуй так
    PHP:
    #include <sourcemod>

    new Handle:g_hMoney INVALID_HANDLE;

    new 
    bool:Check[MAXPLAYERS 1] = {false, ...};

    new 
    CVAR_Money 0;

    public 
    OnPluginStart()
    {
        
    g_hMoney CreateConVar("sm_kill_money""16000""Укажите сумму денег, которая будет вычитаться");

        
    AddCommandListener(ACL_Kill"kill");

        
    HookEvent("player_spawn"Event_OnPlayerSpawn);
    }

    public 
    OnMapStart()
    {
        
    CVAR_Money GetConVarInt(g_hMoney);
    }

    public 
    OnClientDisconnect(client)
    {
        if (
    Check[client])
        {
            
    Check[client] = false;
        }
    }

    public 
    Action:ACL_Kill(client, const String:name[], args)
    {
        if (
    IsPlayerAlive(client))
        {
            
    Check[client] = true;
        }
    }

    public 
    Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));

        if (
    Check[client])
        {
            
    CreateTimer(0.2Timerclient);
        }
    }

    public 
    Action:Timer(Handle:timerany:client)
    {
        if (
    IsClientInGame(client))
        {
            new 
    money GetEntProp(clientProp_Send"m_iAccount"4);
            
    SetEntProp(clientProp_Send"m_iAccount"money <= CVAR_Money : (money CVAR_Money));

            
    Check[client] = false;

            
    PrintToChat(client"За использование команды kill в прошлом раунде, вы оштрафованы на %d$"CVAR_Money);
        }
    }
     
    ★Сириус★ нравится это.
  5. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    199
    The End Is Near..., спасибо работает, только я не подумал, в моде есть автомагазин (автозакупка) и чел успевает закупиться до того как плагин вычтет деньги.
    Вобщем ладно, спасибо за работу, то что я заказывал то есть в твоей версии.
     
  6. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    ★Сириус★
    Попробуй так. Проверь, работает ли автозакупка
    PHP:
    #include <sourcemod>

    new Handle:g_hMoney INVALID_HANDLE;

    new 
    bool:Check[MAXPLAYERS 1] = {false, ...};

    new 
    CVAR_Money 0;

    public 
    OnPluginStart()
    {
        
    g_hMoney CreateConVar("sm_kill_money""16000""Укажите сумму денег, которая будет вычитаться");

        
    AddCommandListener(ACL_Kill"kill");

        
    HookEvent("player_spawn"Event_OnPlayerSpawn);
    }

    public 
    OnMapStart()
    {
        
    CVAR_Money GetConVarInt(g_hMoney);
    }

    public 
    OnClientDisconnect(client)
    {
        if (
    Check[client])
        {
            
    Check[client] = false;
        }
    }

    public 
    Action:CS_OnBuyCommand(client, const String:weapon[])
    {
        if (
    Check[client])
        {
            return 
    Plugin_Handled;
        }

        return 
    Plugin_Continue;
    }

    public 
    Action:ACL_Kill(client, const String:name[], args)
    {
        if (
    IsPlayerAlive(client))
        {
            
    Check[client] = true;
        }
    }

    public 
    Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));

        if (
    Check[client])
        {
            
    CreateTimer(0.2Timerclient);
        }
    }

    public 
    Action:Timer(Handle:timerany:client)
    {
        if (
    IsClientInGame(client))
        {
            new 
    money GetEntProp(clientProp_Send"m_iAccount"4);
            
    SetEntProp(clientProp_Send"m_iAccount"money <= CVAR_Money : (money CVAR_Money));

            
    Check[client] = false;

            
    PrintToChat(client"За использование команды kill в прошлом раунде, вы оштрафованы на %d$"CVAR_Money);
        }
    }
     
  7. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    199
    The End Is Near..., все осталось также как и было

    Добавлено через 12 минут
    в общем поставил значение
    Код:
            CreateTimer([B][COLOR="Red"]0.1[/COLOR][/B], Timer, client);
    и все стало норм, плагин стал успевать забрать деньги до автозакупки

    Добавлено через 16 минут
    а можно ли еще в плагин добавить условие, чтобы он работал только у живых humans, у zombie плагин не работал.
     
    Последнее редактирование: 20 авг 2013
  8. White Wolf

    White Wolf [] (int _n) -> double { return (_n % 2) == 0;}); Супер-модератор

    Сообщения:
    1.186
    Симпатии:
    411
    Вот попробуй:
    PHP:
    #include <sourcemod>
    #include <zombiereloaded>

    new Handle:g_hMoney INVALID_HANDLE;

    new 
    bool:Check[MAXPLAYERS 1] = {false, ...};

    new 
    CVAR_Money 0;

    public 
    OnPluginStart()
    {
        
    g_hMoney CreateConVar("sm_kill_money""16000""Укажите сумму денег, которая будет вычитаться");

        
    AddCommandListener(ACL_Kill"kill");

        
    HookEvent("player_spawn"Event_OnPlayerSpawn);
    }

    public 
    OnMapStart()
    {
        
    CVAR_Money GetConVarInt(g_hMoney);
    }

    public 
    OnClientDisconnect(client)
    {
        if (
    Check[client])
        {
            
    Check[client] = false;
        }
    }

    public 
    Action:CS_OnBuyCommand(client, const String:weapon[])
    {
        if (
    Check[client])
        {
            return 
    Plugin_Handled;
        }

        return 
    Plugin_Continue;
    }

    public 
    Action:ACL_Kill(client, const String:name[], args)
    {
        if (
    ZR_IsClientHuman(client) && IsPlayerAlive(client))
        {
            
    Check[client] = true;
        }
    }

    public 
    Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid"));

        if (
    Check[client])
        {
            
    CreateTimer(0.1Timerclient);
        }
    }

    public 
    Action:Timer(Handle:timerany:client)
    {
        if (
    IsClientInGame(client))
        {
            new 
    money GetEntProp(clientProp_Send"m_iAccount"4);
            
    SetEntProp(clientProp_Send"m_iAccount"money <= CVAR_Money : (money CVAR_Money));

            
    Check[client] = false;

            
    PrintToChat(client"За использование команды kill в прошлом раунде, вы оштрафованы на %d$"CVAR_Money);
        }
    }
     
    ★Сириус★ нравится это.
  9. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    199
    White Wolf, странно, в твоем варианте оружие успевает закупиться
     
  10. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    235
    Симпатии:
    568
    Попробуйте заблокировать команду autobuy. Ведь она как раз отвечает за автозакупку, и когда check[client] пытается её использовать, возвращайте Plugin_Handled.
     
  11. Серый™

    Серый™ CS:S Server

    Сообщения:
    2.558
    Симпатии:
    1.143
    Может просто заблочить команду килл)))
     
  12. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    199
    нет, если бы я хотел сделать так, то не создавал данный запрос.

    Еще так для справки, может кто не знает.
    В контре есть еще одна консольная команда: explode - значение её точно такое же как kill
     
  13. ★Сириус★

    ★Сириус★

    Сообщения:
    748
    Симпатии:
    199
    ну началось
    я без вас этого не знаю как будто. читайте первый пост

    Добавлено через 3 минуты
    В общем закрывайте тему,
    в целом мне помогли.
    За что всем выражаю огромную благодарность,
    а то начнется сейчас есть то, есть то, а еще есть то. и все это в стандартных функциях .......
    Всем спасибо
     
    Последнее редактирование: 21 авг 2013