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

Если кикнуть через rcon или панель сервера, не идет обнулени  [Решено]

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

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

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

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

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

Re: Если кикнуть через rcon или панель сервера, не идет обну

Сообщение nemec21 » 14 апр 2017, 23:32

NEoMASTERR писал(а):Написать свою функцию для кика, либо ловить client_disconnect(ed)

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

Re: Если кикнуть через rcon или панель сервера, не идет обну

Сообщение NEoMASTERR » 14 апр 2017, 23:39

Ну а кого ж ещё. Он только по одной причине может выйти, если кикнули.
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Если кикнуть через rcon или панель сервера, не идет обну

Сообщение nemec21 » 15 апр 2017, 00:06

NEoMASTERR, спасибо, от души

Код: Выделить всё
public client_disconnect(id){
    if(
g_Bot == id){    
        
g_counter false;                     
    }

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

Re: Если кикнуть через rcon или панель сервера, не идет обну

Сообщение KOTOKU » 15 апр 2017, 00:27

Наверстал вот, если кикнешь одного - выкинет и второго автоматом, если на сервере больше 29 игроков - выкинет обоих, если на сервере к примеру 30 игроков и вышел один, то добавит снова обоих ботов

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

#define BOT_NUM        2    

new const BOT_NAMES[BOT_NUM][] = {"NAME_ONE", "NAME_TWO"};

new g_iPlayers;
new g_iBotID[BOT_NUM];
new g_iBotStatus;

public plugin_init(){}
public plugin_cfg() AUTH_BOTS();
public plugin_end() KICK_BOTS();

public client_putinserver(id)
{
            
    if
(++g_iPlayers >= (32-BOT_NUM) && !is_user_bot(id) && g_iBotStatus)
        KICK_BOTS();
}
    
public client_disconnect
(id)
{
    
    if
(is_user_bot(id) && g_iBotStatus)
    {
        set_task(1.0, "KICK_BOTS");
        return;
    }
    
    if
(--g_iPlayers < (32-BOT_NUM) && !g_iBotStatus)
        set_task(1.0, "AUTH_BOTS");
}

public AUTH_BOTS()
{
    if(g_iPlayers >= (32-BOT_NUM)) return;
    
    static i
;
    g_iBotStatus = 1;
    for(= 0; i < sizeof(g_iBotID); i++)
    {        
        if
(g_iBotID[i]) continue;
        g_iBotID[i] = engfunc(EngFunc_CreateFakeClient, BOT_NAMES[i])
        dllfunc(MetaFunc_CallGameEntity, "player", g_iBotID[i]);
        set_pev(g_iBotID[i], pev_flags, FL_FAKECLIENT);
    
        set_pev
(g_iBotID[i], pev_model, "");
        set_pev(g_iBotID[i], pev_viewmodel2, "");
        set_pev(g_iBotID[i], pev_modelindex, 0);
    
        set_pev
(g_iBotID[i], pev_renderfx, kRenderFxNone);
        set_pev(g_iBotID[i], pev_rendermode, kRenderTransAlpha);
        set_pev(g_iBotID[i], pev_renderamt, 0.0);
    
        set_pdata_int
(g_iBotID[i], 114, 0);
        set_user_flags(g_iBotID[i], ADMIN_IMMUNITY);
    }
}

public KICK_BOTS()
{
    if(!g_iBotStatus) return; 
    static i
;
    g_iBotStatus = 0;
    for(= 0; i < sizeof(g_iBotID); i++)
    {
        if(is_user_connected(g_iBotID[i]))
        server_cmd("kick #%d", get_user_userid(g_iBotID[i]));
        g_iBotID[i] = 0;
    }
}
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Если кикнуть через rcon или панель сервера, не идет обну

Сообщение nemec21 » 15 апр 2017, 10:12

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

Re: Если кикнуть через rcon или панель сервера, не идет обну

Сообщение KOTOKU » 15 апр 2017, 16:18

Странно, у меня всё работает, какой у тебя amxmodx?
Вот немного изменил, там был недочёт с проверкой на бота, но почему серв крашит - хз, у меня всё работает
Код: Выделить всё
#include <amxmodx> 
#include <fakemeta>

#define BOT_NUM        2    

new const BOT_NAMES[BOT_NUM][] = {"NAME_ONE""NAME_TWO"};

new 
g_iPlayers;
new 
g_iBotID[BOT_NUM];
new 
g_iBotStatus;

public 
plugin_init(){}
public 
plugin_cfg() AUTH_BOTS();
public 
plugin_end() KICK_BOTS();

public 
client_putinserver(id)
{            
    if(++
g_iPlayers >= (32-BOT_NUM) && !is_user_bot(id) && g_iBotStatus)
        
KICK_BOTS();
}
    
public 
client_disconnect(id)
{    
    if(
is_user_bot(id))
    {
        if(
g_iBotStatus)
            
set_task(1.0"KICK_BOTS");
        return;
    }
    
    if(--
g_iPlayers < (32-BOT_NUM) && !g_iBotStatus)
        
set_task(1.0"AUTH_BOTS");
}

public 
AUTH_BOTS()
{
    if(
g_iPlayers >= (32-BOT_NUM)) return;
    
    static 
i;
    
g_iBotStatus 1;
    for(
0sizeof(g_iBotID); i++)
    {        
        if(
g_iBotID[i]) continue;
        
g_iBotID[i] = engfunc(EngFunc_CreateFakeClientBOT_NAMES[i])
        
dllfunc(MetaFunc_CallGameEntity"player"g_iBotID[i]);
        
set_pev(g_iBotID[i], pev_flagsFL_FAKECLIENT);
    
        
set_pev(g_iBotID[i], pev_model"");
        
set_pev(g_iBotID[i], pev_viewmodel2"");
        
set_pev(g_iBotID[i], pev_modelindex0);
    
        
set_pev(g_iBotID[i], pev_renderfxkRenderFxNone);
        
set_pev(g_iBotID[i], pev_rendermodekRenderTransAlpha);
        
set_pev(g_iBotID[i], pev_renderamt0.0);
    
        
set_pdata_int(g_iBotID[i], 1140);
        
set_user_flags(g_iBotID[i], ADMIN_IMMUNITY);
    }
}

public 
KICK_BOTS()
{
    if(!
g_iBotStatus) return; 
    static 
i;
    
g_iBotStatus 0;
    for(
0sizeof(g_iBotID); i++)
    {
        if(
is_user_connected(g_iBotID[i]))
        
server_cmd("kick #%d"get_user_userid(g_iBotID[i]));
        
g_iBotID[i] = 0;
    }
}
 
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Если кикнуть через rcon или панель сервера, не идет обну

Сообщение nemec21 » 15 апр 2017, 16:33

KOTOKU, version "48/1.6.3.7/5408 это?
я заметил крашит на
Код: Выделить всё
public plugin_cfg
Аватара пользователя
nemec21
 
Сообщения: 799
Зарегистрирован: 07 фев 2016, 17:08
Откуда: Беларусь
Благодарил (а): 212 раз.
Поблагодарили: 44 раз.
Опыт программирования: Около 6 месяцев
Языки программирования: Counter-Strike 1.6

Re: Если кикнуть через rcon или панель сервера, не идет обну

Сообщение KOTOKU » 15 апр 2017, 16:42

Попробуй задержку поставить
Код: Выделить всё
public plugin_cfg() set_task(5.0, "AUTH_BOTS");


Добавлено спустя 34 секунды:
Re: Если кикнуть через rcon или панель сервера, не идет обнулени
чё 5408? :-|
Ставь версию 6153, я не делаю под старые билды ничего

Добавлено спустя 3 минуты 59 секунд:
Re: Если кикнуть через rcon или панель сервера, не идет обнулени
Попробуй вот этот метод, должен прокатить под старый билд, а вот set_task - нет
Код: Выделить всё
#include <amxmodx> 
#include <cstrike>
#include <fakemeta>

#define BOT_NUM        2    

new const BOT_NAMES[BOT_NUM][] = {"NAME_ONE""NAME_TWO"};

new 
g_iPlayers;
new 
g_iBotID[BOT_NUM];
new 
g_iBotStatus;

public 
plugin_init(){}
public 
plugin_cfg() AUTH_BOTS();
public 
plugin_end() KICK_BOTS();

public 
client_putinserver(id)
{            
    if(++
g_iPlayers >= (32-BOT_NUM) && !is_user_bot(id) && g_iBotStatus)
        
KICK_BOTS();
}
    
public 
client_disconnect(id)
{    
    if(
is_user_bot(id))
    {
        if(
g_iBotStatus)
            
set_task(1.0"KICK_BOTS");
        return;
    }
    
    if(--
g_iPlayers < (32-BOT_NUM) && !g_iBotStatus)
        
set_task(1.0"AUTH_BOTS");
}

public 
AUTH_BOTS()
{
    if(
g_iPlayers >= (32-BOT_NUM)) return;
    
    static 
i;
    
g_iBotStatus 1;
    for(
0sizeof(g_iBotID); i++)
    {        
        if(
g_iBotID[i]) continue;
        
g_iBotID[i] = engfunc(EngFunc_CreateFakeClientBOT_NAMES[i])
        
dllfunc(MetaFunc_CallGameEntity"player"g_iBotID[i]);
        
set_pev(g_iBotID[i], pev_flagsFL_FAKECLIENT);
    
        
set_pev(g_iBotID[i], pev_model"");
        
set_pev(g_iBotID[i], pev_viewmodel2"");
        
set_pev(g_iBotID[i], pev_modelindex0);
    
        
set_pev(g_iBotID[i], pev_renderfxkRenderFxNone);
        
set_pev(g_iBotID[i], pev_rendermodekRenderTransAlpha);
        
set_pev(g_iBotID[i], pev_renderamt0.0);
    
        
cs_set_user_team(g_iBotID[i], CS_TEAM_UNASSIGNED);
        
set_user_flags(g_iBotID[i], ADMIN_IMMUNITY);
    }
}

public 
KICK_BOTS()
{
    if(!
g_iBotStatus) return; 
    static 
i;
    
g_iBotStatus 0;
    for(
0sizeof(g_iBotID); i++)
    {
        if(
is_user_connected(g_iBotID[i]))
        
server_cmd("kick #%d"get_user_userid(g_iBotID[i]));
        
g_iBotID[i] = 0;
    }
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Re: Если кикнуть через rcon или панель сервера, не идет обну

Сообщение nemec21 » 15 апр 2017, 16:45

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

Re: Если кикнуть через rcon или панель сервера, не идет обну

Сообщение KOTOKU » 15 апр 2017, 16:54

Ты проверил на старом то, что я скинул в последний раз?
Проблема скорее в оффсетах была, а я команду выдавал через оффсет
Аватара пользователя
KOTOKU
 
Сообщения: 766
Зарегистрирован: 10 фев 2013, 00:53
Благодарил (а): 10 раз.
Поблагодарили: 117 раз.

Пред.След.

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

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

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