[CS: Source] Extra Cash

Тема в разделе "Утверждённые плагины", создана пользователем random.81, 25 сен 2010.

  1. random.81

    random.81

    Сообщения:
    504
    Симпатии:
    844
    Extra Cash

    Описание: Каждый раунд игрокам выдается указанное Вами количество денег.По умолчанию 16000$.

    Настройки:
    extra_cash_on - Включить/Выключить плагин.
    extra_cash_amount - сумма денег, выдаваемая игрокам начале раунда.

    Оригинал
     

    Вложения:

    Последнее редактирование: 28 сен 2010
    Sam_Fisher, ★Сириус★, mihaput и 10 другим нравится это.
  2. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Re: Extra Cash v0.2

    Обновил
    Сейчас вроде должно работать.. :blush2:

    Список изменений:
    1. Добавил конфигурационный файл
    2. Добавил квар. Включение = 1/ Отключение = 0 выдачи денег только админам

    Смотрим
     

    Вложения:

    • ExtraCash.cfg
      Размер файла:
      522 байт
      Просмотров:
      270
    • extra_cash.sp
      Размер файла:
      1,5 КБ
      Просмотров:
      180
    • extra_cash.smx
      Размер файла:
      2,8 КБ
      Просмотров:
      162
    Последнее редактирование: 22 авг 2012
    CTe6eJIeK_vRn и Andrey нравится это.
  3. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Re: Extra Cash v0.2

    Новая версия плагина
    • Добавлен квар. Минимальное количество игроков, при котором плагин будет выдавать деньги.
    • Добавлен квар. Через сколько раундов выдавать установленное вами количество денег.
    PHP:
    #include <sourcemod>

    #define PLUGIN_VERSION "0.4"

    new Handle:Switch;
    new 
    Handle:Cash;
    new 
    Handle:AdminCash;
    new 
    Handle:MinPlayer;
    new 
    Handle:Round;

    new 
    Rounds;
    new 
    ClientInGame;

    public 
    Plugin:myinfo 
    {
        
    name "Extra Cash",
        
    author "Peoples Army, DoK",
        
    description "Adds Extra Cash On Each Spawn",
        
    version PLUGIN_VERSION,
        
    url "www.sourcemod.net"
    };

    public 
    OnPluginStart()
    {
        Switch = 
    CreateConVar("extra_cash_enable""1""Включение = 1/ отключение = 0 плагина"FCVAR_NOTIFY);
        
    Cash CreateConVar("extra_cash_amount""16000""Количество денег, выдаваемое в начале раунда"FCVAR_NOTIFY);
        
    AdminCash CreateConVar("extra_cash_admin""1""Вкючение = 1/ отлючение = 0 вывода денег только админам"FCVAR_NOTIFY);
        
    MinPlayer CreateConVar("extra_cash_min_player""4""Минимальное количество игроков на сервере"FCVAR_NOTIFY);
        
    Round CreateConVar("extra_cash_round""2""Через сколько раундов будут выдаваться деньги"FCVAR_NOTIFY);
        
        
    HookEvent("player_spawn" Event_OnPlayerSpawn);
        
    HookEvent("round_start"Event_OnRoundStart);
        
        
    AutoExecConfig(true"ExtraCash");
    }

    public 
    OnMapStart()
    {
        
    Rounds 0;
    }

    public 
    Event_OnRoundStart(Handleevent , const Stringname[] , booldontBroadcast)
    {
        
    ClientInGame 0;
        for(new 
    1<= MaxClientsi++)    
        {
            if(
    IsClientInGame(i))
            {
                if(
    GetClientTeam(i) != 1)
                {
                    
    ClientInGame++;
                }
            }
        }
        
    Rounds++;
    }

    public 
    Event_OnPlayerSpawn(Handleevent , const Stringname[] , booldontBroadcast)
    {
        if(
    Rounds GetConVarInt(Round))
        {
            if(
    ClientInGame >= GetConVarInt(MinPlayer)) 
            {
                new 
    client GetClientOfUserId(GetEventInt(event,"userid"));    
                new 
    AdminId:admin_cash GetUserAdmin(client);
                if(
    GetConVarInt(Switch) == 1)
                {
                    if(
    GetConVarInt (AdminCash) == 1
                    {
                        if(
    admin_cash != INVALID_ADMIN_ID
                        {
                            
    SetEntProp(clientProp_Send"m_iAccount"GetConVarInt(Cash));
                        }
                    }
                    else if(
    GetConVarInt (AdminCash) == 0)
                    {
                        
    SetEntProp(clientProp_Send"m_iAccount"GetConVarInt(Cash));
                    }
                }
            }
        }
    }
     
    Последнее редактирование: 1 ноя 2012
    ★Сириус★ нравится это.
  4. acik

    acik

    Сообщения:
    734
    Симпатии:
    628
    Re: Extra Cash v0.2

    DoK_1997, может Добавишь "через сколько раундов будет работать плагин", а то хотелось бы поиграть на пистолетах)
     
  5. abvshka

    abvshka

    Сообщения:
    3
    Симпатии:
    0
    Re: Extra Cash v0.2

    Скомпилируйте пожалуйста кто-нибудь плагин из 3-его поста. На соурсмоде.ком, выдает ошибку. А через Total Commander не компилируется.
     
  6. ☆★☆БАТЯ☆★☆™

    ☆★☆БАТЯ☆★☆™

    Сообщения:
    2.585
    Симпатии:
    1.341
    Re: Extra Cash v0.2

    Поржал, честно.

    abvshka, Держи:
     

    Вложения:

    • extra_cash.rar
      Размер файла:
      3,9 КБ
      Просмотров:
      73
    R1KO, Leckter Hannibal и abvshka нравится это.
  7. abvshka

    abvshka

    Сообщения:
    3
    Симпатии:
    0
    Re: Extra Cash v0.2

    Можете объяснить, как правильно компилировать? И, что смешного? В том что я использую ТМ или в том, что у меня не получилось скомпилировать с помощью его?
     
  8. Konstantin

    Konstantin

    Сообщения:
    1.789
    Симпатии:
    767
  9. pihmih

    pihmih

    Сообщения:
    518
    Симпатии:
    23
    Re: Extra Cash v0.2

    Могли бы вы ввести флаг для админа, которому я бы хотел сделать деньги?
     
  10. DJ Cool Spot

    DJ Cool Spot

    Сообщения:
    83
    Симпатии:
    6
    Re: Extra Cash v0.2

    исправьте плагин чтобы выдавал 16000 через каждые 5 раундов)
    а то версия которую написал The End Is Near... работает неисправно((
     
  11. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Re: Extra Cash v0.2

    В смысле каждые 5 раундов? Там от начала карты считаются раунды так-то, твой запрос - другая логика плагина
    Оффтоп
     
  12. DJ Cool Spot

    DJ Cool Spot

    Сообщения:
    83
    Симпатии:
    6
    Re: Extra Cash v0.2

    The End Is Near... ты меня наверно не понял, так как я вопрос не совсем точно поставил...
    Хотелось бы вот так:
    Начало карты. Отсчёт раундов от начала карты до 5 раундов. Выдача 16000$ уже в 6 раунде. Следующая выдача 16000$ должна произойти через 5 раундов:)
    Вот как надо)
     
  13. DJ Cool Spot

    DJ Cool Spot

    Сообщения:
    83
    Симпатии:
    6
    Re: Extra Cash v0.2

    The End Is Near..., сделаешь так как я просил?:)
     
  14. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Re: Extra Cash v0.2

    DJ Cool Spot
    Пробуй
    PHP:
    #include <sourcemod>

    new CountRounds 0;

    public 
    OnPluginStart()
    {
        
    HookEvent("round_start"Event_OnRoundStart);
        
    HookEvent("player_spawn"Event_OnPlayerSpawn);
    }

    public 
    OnMapStart()
    {
        
    CountRounds 0;
    }

    public 
    Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
    {
        
    CountRounds++;
    }

    public 
    Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
    {
        if (
    CountRounds 5)
        {
            
    SetEntProp(GetClientOfUserId(GetEventInt(event"userid")), Prop_Send"m_iAccount"16000);

            
    CountRounds 0;
        }
    }
     
  15. vladimir16951

    vladimir16951

    Сообщения:
    16
    Симпатии:
    3
    Re: Extra Cash v0.2

    не работает(
     
  16. DJ Cool Spot

    DJ Cool Spot

    Сообщения:
    83
    Симпатии:
    6
    Re: Extra Cash v0.2

    The End Is Near..., подтверждаю, не работает:(
     
  17. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    Re: Extra Cash v0.2

    Потому что он допустил логическую ошибку - выдавать деньги надо всем игрокам, и делать это в цикле в событии round_start. А сейчас 16 000$ получает один из игроков, и в этот момент CountRounds = 0, и для следующего игрока уже не выполняется условие "пятого раунда" (потому что события player_spawn выполняются для каждого игрока отдельно, но последовательно). Лучше всего обойтись одним round_start, дабы у вновь подключившихся игроков не было 16 000$ вместо 800$, ну или если это требуется, то добавить глобальную bool переменную, отвечающую за то, является ли текущий раунд бонусным или нет, и в зависимости от неё в player_spawn выдавать деньги.

    P. S. Хотя может и стоит идти только вторым путем - round_start вроде бы вызывается раньше чем все player_spawn, тогда лучше хукать round_freeze_end, и уже в нем увеличивать счетчик и выдавать бонусные деньги. Но опять же таки, при mp_freezetime 0 я не уверен, что вызываться будет уже после всех player_spawn.

    P. S. S. Попробуйте так:
    Код:
    new g_iRoundCounter;
    public OnPluginStart()
    {
    	HookEvent("round_freeze_end", Event_RoundFreezeEnd);
    }
    public OnMapStart()
    {
    	g_iRoundCounter = 0;
    }
    public Action:Event_RoundFreezeEnd(Handle:hEvent, const String:sEventName[], bool:bSilent)
    {
    	g_iRoundCounter++;
    
    	if ( g_iRoundCounter % 5 == 0 )
    		for ( new i = 1; i <= MaxClients; i++ )
    			if ( IsClientInGame(i) && IsPlayerAlive(i) )
    				SetEntProp(i, Prop_Send, "m_iAccount", 16000);
    }
     
    DJ Cool Spot и September нравится это.
  18. DJ Cool Spot

    DJ Cool Spot

    Сообщения:
    83
    Симпатии:
    6
    Re: Extra Cash v0.2

    Reiko1231, дружищще это фикс того исходника или это готовый, уже для компиляции?:)

    Добавлено через 15 минут
    Reiko1231, не работает... скомпилировался, закинул и всё равно не то что надо...
    Надо вот что:
    Начало карты
    1 раунд (тут $800 как по стандарту)
    2 раунд (тут бабло копится ну всё как обычно в общем)
    3 раунд (и тут)
    4 раунд (и тут)
    5 раунд (ахахах и тут тоже)
    6 раунд (все игроки ликуют! бабла $16000 дали)
    7 раунд (в этом раунде повторно $16000 уже не выдаётся. пусть сами зарабатывают)
    8 раунд (в этом тоже)
    9 раунд (в этом тоже не выдавать)
    10 раунд (и в этом)
    11 раунд (ну и пожалуй в этом)
    12 раунд (все игроки ликуют! бабла $16000 дали.)

    ну и так далее)))
    вот бы научиться так плагины писать:D ахахахха))))))

    ну и сделать чтобы у игроков которые зашли было $800 и чтобы цикличность выдачи денег у каждого игрока была своя, а не зависила от раундов сыгранных уже другими игроками)
     
    Последнее редактирование: 26 авг 2013
  19. The End Is Near...

    The End Is Near... Russian Roulette

    Сообщения:
    893
    Симпатии:
    659
    Re: Extra Cash v0.2

    Reiko1231
    Не совсем, если игрок присоеденился на секунду позже (образно), то деньги уже не получит. Еще учитывай, если значение фриза слишком большое, то игрокам придется ждать выдачи денег, что не есть гуд
    PHP:
    #include <sourcemod>

    new CountRounds 0;

    public 
    OnPluginStart()
    {
        
    HookEvent("round_start"Event_OnRoundStart);
        
    HookEvent("player_spawn"Event_OnPlayerSpawn);
        
    HookEvent("round_end"Event_OnRoundEnd);
    }

    public 
    OnMapStart()
    {
        
    CountRounds 0;
    }

    public 
    Event_OnRoundStart(Handle:event, const String:name[], bool:silent)
    {
        
    CountRounds++;
    }

    public 
    Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
    {
        if (
    CountRounds 5)
        {
            
    SetEntProp(GetClientOfUserId(GetEventInt(event"userid")), Prop_Send"m_iAccount"160004);
        }
    }

    public 
    Event_OnRoundEnd(Handle:event, const String:name[], bool:silent)
    {
        if (
    CountRounds 5)
        {
            
    CountRounds 0;
        }
    }


    DJ Cool Spot
    PHP:
    #include <sourcemod>

    new CountRounds[MAXPLAYERS 1] = 0;

    public 
    OnPluginStart()
    {
        
    HookEvent("player_spawn"Event_OnPlayerSpawn);
    }

    public 
    OnClientPutInServer(client)
    {
        
    CountRounds[client] = 0;
    }

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

        if (++
    CountRounds[client] > 5)
        {
            
    SetEntProp(clientProp_Send"m_iAccount"160004);

            
    CountRounds[client] = 0;
        }
    }
     
    Последнее редактирование: 26 авг 2013
    DJ Cool Spot нравится это.
  20. Reiko1231

    Reiko1231 AlexTheRegent

    Сообщения:
    237
    Симпатии:
    569
    Re: Extra Cash v0.2

    The End Is Near..., CountRounds[client] нигде не увеличивается и всегда будет = 0.
    Вот так будет правильно:
    Код:
    new CountRounds[MAXPLAYERS + 1] = { 0, ... };
    public OnPluginStart()
    {
        HookEvent("player_spawn", Event_OnPlayerSpawn);
    }
    public OnClientPutInServer(client)
    {
        CountRounds[client] = 0;
    }
    public Event_OnPlayerSpawn(Handle:event, const String:name[], bool:silent)
    {
        new client = GetClientOfUserId(GetEventInt(event, "userid"));
        CountRounds[client]++;
    	
        if (CountRounds[client] > 5)
        {
            SetEntProp(client, Prop_Send, "m_iAccount", 16000);
            CountRounds[client] = 0;
        }
    }
    P.S. Писать #include <sourcemod> не обязательно.
     
    DJ Cool Spot нравится это.