Деньги слабым игрокам.

Тема в разделе "Запросы", создана пользователем pihmih, 12 июл 2013.

  1. pihmih

    pihmih

    Сообщения:
    518
    Симпатии:
    23
    Здравствуйте. Не кто не встречал плагин, выдающий денег самым слабым игрокам на сервере?
     
  2. максимка27

    максимка27

    Сообщения:
    517
    Симпатии:
    170
    видел плагин, при проигрыше 3 раунда с подряд одной из сторон, выдаются деньги им большего размера, прикольный плагин
     
  3. CTe6eJIeK_vRn

    CTe6eJIeK_vRn Супер-модератор

    Сообщения:
    2.014
    Симпатии:
    1.797
    pihmih нравится это.
  4. pihmih

    pihmih

    Сообщения:
    518
    Симпатии:
    23
    Найти бы как.
     
  5. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    pihmih, там писать 5 минут
     
  6. максимка27

    максимка27

    Сообщения:
    517
    Симпатии:
    170
    кто быстрее сможет? :)
     
  7. pihmih

    pihmih

    Сообщения:
    518
    Симпатии:
    23
    Интересные плагины, но хотелось бы давать деньги, только слабому игроку. Не обязательно его командва должна выигрывать или проигрывать.
     
  8. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    pihmih, смотря как будет определятся слабость. Можно сделать по соотношению убийств/смертей за определенное количесто раундов.
     
  9. pihmih

    pihmih

    Сообщения:
    518
    Симпатии:
    23
    Именно так.
     
  10. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    Поправьте если что не так:

    PHP:
    #include <sourcemod>

    new Float:KDR[MAXPLAYERS+1] = 0g_iAccountCount_R[MAXPLAYERS+1];

    public 
    Plugin:myinfo 
    {
        
    name "Cash for noobs",
        
    author "R1KO",
        
    version "1.0"
    };

    public 
    OnPluginStart()
    {
        
    g_iAccount FindSendPropOffs("CCSPlayer""m_iAccount");
        
    HookEvent("player_death"OnPlayerDeath);
        
    HookEvent("round_start"OnRoundStart);
    }

    public 
    OnMapStart() Count_R 0;

    public 
    OnPlayerDeath(Handle:event, const String:name[], bool:silent

        new 
    client GetClientOfUserId(GetEventInt(event"userid")); 
        if (
    client 0
        {
        
    Frags GetClientFrags(client);
        
    Deaths GetClientDeaths(client);
        if (
    Frags && Deaths >= 0KDR[client] = Frags/Deaths;
        } 

    }

    public 
    OnClientDisconnect() KDR[i] = 0;

    public 
    OnRoundStart(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    client GetClientOfUserId(GetEventInt(event"userid")); 
        if (
    client 0
        {
            
    Count_R[client] ++;
            if(
    Count_R >= 3)
            {
                for (new 
    1<= MaxClientsi++)
                {
                    if (
    IsClientInGame(i) && GetClientTeam(i) > 2)
                    {
                        if(
    KDR[i] =< 1)
                        {
                            new 
    totalmoney GetEntData(ig_iAccount) + 1000;
                                        
    SetEntData(ig_iAccounttotalmoney);
                        }
                    }
                }
                
    Count_R[client]  = 0;
            }
        }
    }
     
    Последнее редактирование: 12 июл 2013
  11. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    R1KO
    1. Отсчитывай раунды для каждого игрока

    2. EventHookMode_Pre необязательно

    3. KDR - число с плавающей точкой, так и сравнивай float, а не int

    4. Если игрок не умирал ни разу, но и не убивал никого (0:0), ему не дадут денег

    5. clientid откуда

    6. g_winnermoney откуда

    7. Если игрок с плохим кдр выйдет, зайдет новый - кдр сохранится

    8*. float думаю не нужно


    *. Не уверен, если стоит звездочка
     
    R1KO нравится это.
  12. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    The End Is Near...,
    хз как.
    Щас глянь, ток я не всё исправил.
     
  13. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Неправильно

    Добавлено через 11 минут
    PHP:
    #include <sourcemod>

    // Количество денег, выдаваемое КАЖДЫЙ раунд, если у игрока КДР (Отношение фрагов к смертям) меньше 1.0
    #define MONEY 350

    new g_iAccount = -1;

    public 
    OnPluginStart()
    {
        
    g_iAccount FindSendPropOffs("CCSPlayer""m_iAccount");

        
    HookEvent("round_start"Event_OnRoundStart);
    }

    public 
    Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
    {
        for (new 
    1<= MaxClientsi++)
        {
            new 
    frags GetClientFrags(i), deaths GetClientDeaths(i);
            if (
    frags && deaths && (frags deaths) < 1.0)
            {
                
    SetEntData(ig_iAccountGetEntData(ig_iAccount) + MONEY);
            }
        }
    }
    Есть одно но, если у игрока 0 фрагов и 999 смертей - денег он не получит, лишний код ) да и мудрить не охота
     
    Последнее редактирование: 12 июл 2013
    mihaput, pihmih и R1KO нравится это.
  14. pihmih

    pihmih

    Сообщения:
    518
    Симпатии:
    23
    Ошибка:
    L 07/12/2013 - 18:16:01: [SM] Native "GetClientFrags" reported: Client 1 is not in game
    L 07/12/2013 - 18:16:01: [SM] Displaying call stack trace for plugin "money.smx":
    L 07/12/2013 - 18:16:01: [SM] [0] Line 19, E:\server\server\cstrike\addons\sourcemod\scripting\money::Event_OnRoundStart()
     
    Последнее редактирование: 12 июл 2013
  15. R1KO

    R1KO Супер-модератор

    Сообщения:
    5.970
    Симпатии:
    2.977
    pihmih, вот
    PHP:
    #include <sourcemod>

    // Количество денег, выдаваемое КАЖДЫЙ раунд, если у игрока КДР (Отношение фрагов к смертям) меньше 1.0
    #define MONEY 350

    new g_iAccount = -1;

    public 
    OnPluginStart()
    {
        
    g_iAccount FindSendPropOffs("CCSPlayer""m_iAccount");

        
    HookEvent("round_start"Event_OnRoundStart);
    }

    public 
    Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
    {
        for (new 
    1<= MaxClientsi++)
        {
            if (
    IsClientInGame(i))
            {
                new 
    frags GetClientFrags(i), deaths GetClientDeaths(i);
                if (
    frags && deaths && (frags deaths) < 1.0)
                {
                    
    SetEntData(ig_iAccountGetEntData(ig_iAccount) + MONEY);
                }
            }
        }
     
    maks.88, mihaput и pihmih нравится это.
  16. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    pihmih
    hoh, глупая ошибка :(