Русское сообщество по скриптингу

Auto - Mix. Бесконечный рестарт

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Auto - Mix. Бесконечный рестарт

Сообщение radical » 15 фев 2018, 11:37

Привет. Пишу что-то вроде Auto - Mix.
Код: Выделить всё
/* Plugin generated by AMXX-Studio */

#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <hamsandwich>
#include <fun>
#include <fakemeta>

#define PLUGIN "New Plug-In"
#define VERSION "1.0"
#define AUTHOR "Author"
new t_wins
new ct_wins
new PlayerNum
new RoundNum 
= 0
new bool
:g_bCheckStartMatch[33]
new bool:g_bStartMatch[33]


public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_event("HLTV", "StartRound", "a", "1=0", "2=0")
    register_logevent("Event_GameCommencing", 2, "1=Game_Commencing");
    register_logevent("EventRestartRound", 2, "1&Restart_Round_");
    register_event("SendAudio", "t_win", "a", "2&%!MRAD_terwin")
    register_event("SendAudio", "ct_win", "a", "2&%!MRAD_ctwin")
    
}

public StartRound(id)
{
 
    RoundNum
++
    set_task(1.0,"StartMatch")
    
    if
(RoundNum == 1)
    {
    set_task(1.5,"KnifeRound")     
    
}  
    if
(t_wins >= 15){
    set_task( 10.0 ,"SwitchTeams" );
    client_print(0,print_center,"Terrorist match WIN")
    
    
}
    if(ct_wins >= 15){
    set_task( 10.0 ,"SwitchTeams" );
    client_print(0,print_center,"Counter-Terrorist match WIN")
  }
    
}

public StartMatch(id)
{
    if(PlayerNum == 10){
    g_bStartMatch[id] = true
    
}
}
public EventRestartRound(id)
{
    RoundNum = 0
    t_wins 
= 0
    ct_wins 
= 0
    PlayerNum 
= 0
    g_bStartMatch
[id] = false            
}

public Event_GameCommencing(id)
{
    RoundNum = 0    
    t_wins 
= 0
    ct_wins 
= 0
    PlayerNum 
= 0 
    g_bStartMatch
[id] = false
    
}
public t_win(id)
{
    
    PlayerNum 
= get_playersnum()
    if(g_bStartMatch[id])
    {
    t_wins++
    set_hudmessage(0, 255, 0, -1.0, -1.0, 0, 6.0, 3.0)
    show_hudmessage(id, "Komanda T pobedila v etom raunde")
    }
    
    
}

public ct_win(id)
{
    PlayerNum = get_playersnum()
    if(g_bStartMatch[id])
    {
    t_wins++
    set_hudmessage(0, 255, 0, -1.0, -1.0, 0, 6.0, 3.0)
    show_hudmessage(id, "Komanda CT pobedila v etom raunde")
    }
}
    
 public SwitchTeams
() 
  
{
        new iPlayers[32], iNum;
        get_players(iPlayers, iNum, "h");
        if( iNum )
        {
        new id;
        for(--iNum; iNum>=0; iNum--)
                {
                        id = iPlayers[iNum];
                        switch( cs_get_user_team(id) )
                        {
                                case CS_TEAM_T: cs_set_user_team( id, CS_TEAM_CT );
                                case CS_TEAM_CT: cs_set_user_team( id, CS_TEAM_T );        
                        
}
            server_cmd("sv_restart 1")

                }      
}    
}

public KnifeRound(id)
{
    
    set_hudmessage
(0, 255, 0, -1.0, -1.0, 0, 6.0, 3.0)
        show_hudmessage(id, "Razminka na knife")    
    new plist_public
[32], pnum_public
    get_players
(plist_public, pnum_public)
    for (new i = 0; i < pnum_public; i++) {
    if (is_user_connected(plist_public[i]) == 1 && is_user_alive(plist_public[i]) == 1){
    strip_user_weapons(plist_public[i])
    cs_set_user_money(plist_public[i],0)
    give_item(plist_public[i], "weapon_knife")
        }
}
}

public RandomTeam() 
  
{
        new iPlayers[32], iNum;
        get_players(iPlayers, iNum, "h");
        if( iNum )
        {
        new id;
        for(--iNum; iNum>=0; iNum--)
                {
                        id = iPlayers[iNum];
                        switch( random_num(1,2))
                        {
                                case 1: CS_TEAM_T: cs_set_user_team( id, CS_TEAM_CT );
                                case 2: CS_TEAM_CT: cs_set_user_team( id, CS_TEAM_T );        
                        
}
            server_cmd("sv_restart 1")

                }
}


Помогите с реализацией. Мне нужно:
1)Когда собирается 10 человек, делается автоматический рестарт
2)Идет рандомное распределение по командам + рестарт
3)После спавна раунд на ножах.

Вся проблема в том, что у меня получается бесконечный рестарт. Идет распределение по командам, потом рестарт и все заново. Как это исправить?
Аватара пользователя
radical
 
Сообщения: 84
Зарегистрирован: 01 фев 2018, 19:31
Благодарил (а): 22 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Pawn
SourcePawn
C#

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 14