Написание плагина проверяющий деньги игроков

Тема в разделе "Запросы", создана пользователем hanson, 10 июл 2015.

  1. hanson

    hanson

    Сообщения:
    303
    Симпатии:
    15
    Здравствуйте.

    У меня возникла такая проблема, которую я уже долго не могу решить. Прошу написать (бесплатно или за плату) плагин, который будет работать следующим образом: В первом раунде он будет проверять деньги всех игроков, и, если это значение не равно "mp_startmoney", то изменять это значение на "mp_startmoney". Также в конце раунда плагин запоминает сколько у игроков денег на момент конца раунда (когда roundtime=0:00) и в начале следующего раунда если кол-во и денег не равно тому значению которое было в конце прошлого раунда, то изменить кол-во на то которое было в конце предыдущего. Выдача денег должна происходить через 1 секунду после респауа игроков.

    Заранее спасибо

    Добавлено через 3 минуты
    1 раунд. Если "money" не равен "stratmoney", то изменить "money" на "stratmoney". В конце раунда запомнить чему равно "money" и присвоить это значение к "endmoney".
    2 раунд. Если "money" не равен "endmoney", то изменить "money" на "endmoney"

    Надеюсь понятно объяснил
     
    Последнее редактирование: 10 июл 2015
  2. FBZA

    FBZA

    Сообщения:
    69
    Симпатии:
    6
    Ты же понимаешь, что у всех игроков разное кол-во денег?
    Оставлять большее значение из проверенного или меньшее?
    Или же можно сделать, что в первом раунде 16000, во втором 13000, в третьем 10000 и т.д.
     
  3. hanson

    hanson

    Сообщения:
    303
    Симпатии:
    15
    FBZA, ни большее и ни меньшее. Записывать нужно кол-во денег всех игроков и выдавать определенному игроку только деньги опеделенного игрока.
     
  4. FBZA

    FBZA

    Сообщения:
    69
    Симпатии:
    6
    Ааааааааа, вон оно что, я думал всей тиме определенное кол-во денег

    Добавлено через 1 час 28 минут
    Не понял, а почему именно через 1 секунду после начала раунда?

    Добавлено через 1 час 31 минуту
    На, только учти, что у тебя люди постепенно вообще без денег останутся.
    Лучше сделать так, чтобы еще каждый раунд по 1-3к к предыдущему числу добавлялось.
    PHP:
    #include <sourcemod>

    new g_iAccount = -1;
    new 
    g_OldAccountValue[MAXPLAYERS+1];

    public 
    Plugin:myinfo 
    {
        
    name "Last Round Money",
        
    version "1.0",
    }

    public 
    OnMapStart()
    {
        for(new 
    1<= MaxClients; ++i)
        
    g_OldAccountValue[i] = GetConVarInt(FindConVar("mp_startmoney"));
    }

    public 
    OnPluginStart()
    {
        
    g_iAccount FindSendPropOffs("CCSPlayer""m_iAccount");
        
    HookEvent("round_end"EndEventHookMode_Pre);
        
    HookEvent("player_spawn"Spawn);
    }

    public 
    Action:End(Handle:event, const String:name[], bool:dontBroadcast)
    {
        for(new 
    1<= MaxClients; ++i)
    {
        if(
    IsClientInGame(i))
        {
            
    g_OldAccountValue[i] = GetEntData(ig_iAccount);
        }
    }
    }

    public 
    Spawn(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    GetClientOfUserId(GetEventInt(event"userid"));
        if(
    IsClientInGame(i)) SetEntData(ig_iAccountg_OldAccountValue[i]);
    }
     
    Последнее редактирование: 10 июл 2015
    hanson нравится это.
  5. R1KO

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

    Сообщения:
    5.973
    Симпатии:
    2.980
    PHP:
    #pragma semicolon 1
    #include <sourcemod>

    new g_iAccount = -1,
        
    g_iStartMoney,
        
    bool:g_bFirstRound;
    new 
    g_OldAccountValue[MAXPLAYERS+1];

    public 
    Plugin:myinfo 
    {
        
    name "Last Round Money",
        
    version "1.0",
    }

    public 
    OnPluginStart()
    {
        
    g_iAccount FindSendPropOffs("CCSPlayer""m_iAccount");
        
    HookEvent("round_end"End);
        
    HookEvent("player_spawn"Spawn);
        
        new 
    Handle:hCvar FindConVar("mp_startmoney");
        
    g_iStartMoney GetConVarInt(hCvar);
        
    HookConVarChange(hCvarOnStartMoneyChange);
    }

    public 
    OnMapStart()
    {
        
    g_bFirstRound true;
    }

    public 
    OnStartMoneyChange(Handle:hCvar, const String:oldValue[], const String:newValue[])    g_iStartMoney GetConVarInt(hCvar);

    public 
    End(Handle:event, const String:name[], bool:dontBroadcast)
    {
        
    g_bFirstRound false;
        for(new 
    1<= MaxClients; ++i)
        {
            if(
    IsClientInGame(i))
            {
                
    g_OldAccountValue[i] = GetEntData(ig_iAccount);
            }
        }
    }

    public 
    Spawn(Handle:event, const String:name[], bool:dontBroadcast)
    {
        new 
    GetClientOfUserId(GetEventInt(event"userid"));
        if(
    g_bFirstRound && g_OldAccountValue[i] != g_iStartMoney)
        {
            
    SetEntData(ig_iAccountg_iStartMoney);
        }
        else if(
    g_OldAccountValue[i] != GetEntData(ig_iAccount))
        {
            
    SetEntData(ig_iAccountg_OldAccountValue[i]);
        }
    P.S. Компилировать не пробывал
     
    hanson нравится это.
  6. FBZA

    FBZA

    Сообщения:
    69
    Симпатии:
    6
    Компилируется нормально
     
  7. hanson

    hanson

    Сообщения:
    303
    Симпатии:
    15
    FBZA, через секунду, потому что у меня через 1,1 выдаются деньги випам. И еще вопрос. Эта процедура происходит каждый раунд или только во втором?