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

no_players.amxx stopped

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

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

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

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

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

no_players.amxx stopped

Сообщение nemec21 » 08 мар 2017, 22:18

Почему не выполняется проверка через минуту?
И плагин пишет в консоле
Код: Выделить всё
no players              1.0         Nemec             no_players.amxx  stopped


Код: Выделить всё
#include <amxmodx>

new g_szBlockMapPrefixList[][] = 
{           
    
"$2000$",   
    
"awp_india",        
    
"de_inferno_2x2"                      
}                                     

new g_num
, g_maxplayers
new szMapName
[32] 
                                          
public plugin_init
()
{
    register_plugin( "no players", "1.0", "111")

    get_mapname(szMapName, charsmax(szMapName))
    for(new i; i < sizeof(g_szBlockMapPrefixList); i++)
    {    
        if 
(contain(g_szBlockMapPrefixList[i], szMapName) != INVALID_HANDLE)
        {                                       
            pause
("d");                   
        
}
    }
    g_maxplayers = get_maxplayers()                       
    set_task
(60.0, "check_players", 0, _, _, "b") 
}
 
public check_clients
()                  
{       
    g_num 
= 0                
                                                                                                               
    for 
(new playerid = 1; playerid <= g_maxplayers; playerid++)               
    
{                                                                                    
        if 
(is_user_connected(playerid))
            g_num++
    }
    return g_num 
} 
                                                                                   
public check_players
()                               
{                                 
    if
(!check_admins())    
    
{     
        new currentMap
[32]
        new map[] = "de_dust2"                                         
        get_mapname
(currentMap, 31)                                 

        if 
(check_clients() < 7 && !equali(map, currentMap))
        {
            set_task(10.0, "change_map", 0, map, charsmax(map))
            ChatColor(0, "^3[ ^4Immortal_classic 18+ ^3] ^1Так как игроков мень 9, поэтому карта сенится на ^3%s", map)
        }
    }
}
                                                                                          

public change_map
(map[])
{
    server_cmd("changelevel %s", map)
}
                             

stock check_admins
() 
{
    new players[32], playersnum;
    get_players(players, playersnum, "ch")

    for(new i; i < playersnum; i++) 
    
{
        if(get_user_flags(players[i]) & ADMIN_BAN) 
        
{
            return true
        
}
    }
    return false
}

stock ChatColor(const id, const input[], any:...) 
{
    new count = 1, players[32]
    static msg[191]
    vformat(msg, 190, input, 3)
    
    replace_all
(msg, 190, "!g", "^4")
    replace_all(msg, 190, "!y", "^1")
    replace_all(msg, 190, "!t", "^3")
    
    if 
(id) players[0] = id; else get_players(players, count, "ch")
    {
        for (new i = 0; i < count; i++)
        {
            if (is_user_connected(players[i]))
            {
                message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                write_byte(players[i]);
                write_string(msg);
                message_end();
            }
        }                                                    
    
}
}


Добавлено спустя 2 минуты 15 секунд:
Это на тестовом сервере, а на игровом сервере вроде как плагин подключен а действий нет, может где то накосячил? :-)

Добавлено спустя 16 минут 52 секунды:
я если правильно понял что он ставит все плагины на приставку de_

Добавлено спустя 6 минут 32 секунды:
ошибка в записи переменной, чего то карту de_inferno определяет как de_inferno_2x2. как это исправить
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: no_players.amxx stopped

Сообщение Xelson » 08 мар 2017, 22:40

используй equal вместо containi, чтобы de_inferno не опеределяло как de_inferno_2х2
Аватара пользователя
Xelson
 
Сообщения: 365
Зарегистрирован: 06 мар 2016, 14:41
Откуда: Беларусь
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Опыт программирования: Больше трех лет

Re: no_players.amxx stopped

Сообщение nemec21 » 08 мар 2017, 23:13

так у меня и стоит equal

Добавлено спустя 39 секунд:
if (contain(g_szBlockMapPrefixList[i], szMapName) != INVALID_HANDLE)
а ты имеешь ввиду тут?

Добавлено спустя 1 минуту 2 секунды:
а в чем отличие?

Добавлено спустя 4 минуты 10 секунд:
containi - содержащий эти карты
equal - равный этимкартам

Добавлено спустя 16 минут 29 секунд:
так как ты сказал тормозит все карты c приставкой de_
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: no_players.amxx stopped

Сообщение Xelson » 09 мар 2017, 16:49

nemec21, в этом случае (с containi) у тебя тормозит только карту de_inferno_2x2. Если тебе надо тормозить все карты с приставкой de_, тебе следует в массив вместо "de_inferno_2x2" поставить "de_" и вернуть containi в проверку.
Аватара пользователя
Xelson
 
Сообщения: 365
Зарегистрирован: 06 мар 2016, 14:41
Откуда: Беларусь
Благодарил (а): 16 раз.
Поблагодарили: 46 раз.
Опыт программирования: Больше трех лет


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12