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

Отлов перехода за другую команду

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

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

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

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

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

Отлов перехода за другую команду

Сообщение simplyDavchik » 13 янв 2018, 17:41

Хочу сделать блок за кт в своем меню, как отловить когда игрок меняет команду?
Даже если цель не достижима, попробовать стоит.
Аватара пользователя
simplyDavchik
 
Сообщения: 132
Зарегистрирован: 08 апр 2017, 23:28
Откуда: Латвия
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Java
C++
C#
Pawn

Re: Отлов перехода за другую команду

Сообщение RevCrew » 13 янв 2018, 17:58

посмотрите плагин auto join on connect.
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Re: Отлов перехода за другую команду

Сообщение simplyDavchik » 13 янв 2018, 18:19

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

#define PLUGIN_NAME "Auto Join on Connect"
#define PLUGIN_VERSION "0.1"
#define PLUGIN_AUTHOR "VEN"

#define IMMUNITY_ACCESS_LEVEL ADMIN_IMMUNITY

#define AUTO_TEAM_JOIN_DELAY 0.1

#define TEAM_SELECT_VGUI_MENU_ID 2

new g_pcvar_team
new g_pcvar_class
new g_pcvar_imm

public plugin_init
() {
    register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)

    register_message(get_user_msgid("ShowMenu"), "message_show_menu")
    register_message(get_user_msgid("VGUIMenu"), "message_vgui_menu")

    g_pcvar_team = register_cvar("ajc_team", "5")
    g_pcvar_class = register_cvar("ajc_class", "5")
    g_pcvar_imm = register_cvar("ajc_imm", "1")
}

public message_show_menu(msgid, dest, id) {
    if (!should_autojoin(id))
        return PLUGIN_CONTINUE

    static team_select
[] = "#Team_Select"
    static menu_text_code[sizeof team_select]
    get_msg_arg_string(4, menu_text_code, sizeof menu_text_code - 1)
    if (!equal(menu_text_code, team_select))
        return PLUGIN_CONTINUE

    set_force_team_join_task
(id, msgid)

    return PLUGIN_HANDLED
}

public message_vgui_menu(msgid, dest, id) {
    if (get_msg_arg_int(1) != TEAM_SELECT_VGUI_MENU_ID || !should_autojoin(id))
        return PLUGIN_CONTINUE

    set_force_team_join_task
(id, msgid)

    return PLUGIN_HANDLED
}

bool:should_autojoin(id) {
    return (get_pcvar_num(g_pcvar_team) && !get_user_team(id) && !task_exists(id) && (!get_pcvar_num(g_pcvar_imm) || !(get_user_flags(id) & IMMUNITY_ACCESS_LEVEL)))
}

set_force_team_join_task(id, menu_msgid) {
    static param_menu_msgid[2]
    param_menu_msgid[0] = menu_msgid
    set_task
(AUTO_TEAM_JOIN_DELAY, "task_force_team_join", id, param_menu_msgid, sizeof param_menu_msgid)
}

public task_force_team_join(menu_msgid[], id) {
    if (get_user_team(id))
        return

    static team
[2], class[2]
    get_pcvar_string(g_pcvar_team, team, sizeof team - 1)
    get_pcvar_string(g_pcvar_class, class, sizeof class - 1)
    force_team_join(id, menu_msgid[0], team, class)
}

stock force_team_join(id, menu_msgid, /* const */ team[] = "5", /* const */ class[] = "0") {
    static jointeam[] = "jointeam"
    if (class[0] == '0') {
        engclient_cmd(id, jointeam, team)
        return
    
}

    static msg_block, joinclass[] = "joinclass"
    msg_block = get_msg_block(menu_msgid)
    set_msg_block(menu_msgid, BLOCK_SET)
    engclient_cmd(id, jointeam, team)
    engclient_cmd(id, joinclass, class)
    set_msg_block(menu_msgid, msg_block)
}
RevCrew писал(а):посмотрите плагин auto join on connect.


Направьте в нужное русло XD (С какой строки мне смотреть сам отлов)

Добавлено спустя 9 минут 38 секунд:
А, увидел, понял, принял
Даже если цель не достижима, попробовать стоит.
Аватара пользователя
simplyDavchik
 
Сообщения: 132
Зарегистрирован: 08 апр 2017, 23:28
Откуда: Латвия
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Java
C++
C#
Pawn

Re: Отлов перехода за другую команду

Сообщение RevCrew » 14 янв 2018, 21:49

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

#define PLUGIN  "Block Chooseteam"
#define AUTHOR  "Alucard"
#define VERSION "0.0.1"

new p_BlockChooseTeam

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
    
p_BlockChooseTeam register_cvar("bc_enable""1");
    
    
register_clcmd("chooseteam""HookCmdChooseTeam");
}

public 
HookCmdChooseTeam(iClient)
{

    return 
get_pcvar_num(p_BlockChooseTeam) ? PLUGIN_HANDLED PLUGIN_CONTINUE;
Аватара пользователя
RevCrew
Скриптер
 
Сообщения: 1648
Зарегистрирован: 15 июл 2013, 20:45
Благодарил (а): 273 раз.
Поблагодарили: 357 раз.
Языки программирования: Unkown

Re: Отлов перехода за другую команду

Сообщение BaHeK » 16 янв 2018, 17:57

RevCrew писал(а):
Код: Выделить всё
#include <amxmodx>

#define PLUGIN  "Block Chooseteam"
#define AUTHOR  "Alucard"
#define VERSION "0.0.1"

new p_BlockChooseTeam

public plugin_init
()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    
    p_BlockChooseTeam 
= register_cvar("bc_enable", "1");
    
    register_clcmd
("chooseteam", "HookCmdChooseTeam");
}

public HookCmdChooseTeam(iClient)
{

    return get_pcvar_num(p_BlockChooseTeam) ? PLUGIN_HANDLED : PLUGIN_CONTINUE;
}

jointeam еще надо блокировать, а то ничего не мешает сменить команду

[spoiler]Я VS VolksWagen POLO, МКАД
Психанул или моя русская рулетка
http://cs618330.vk.me/v618330946/8c16/hEeTVyYjCZw.jpg - Ой как плохо поступил[/spoiler]
Аватара пользователя
BaHeK
Скриптер
 
Сообщения: 544
Зарегистрирован: 26 авг 2011, 19:32
Откуда: Москва
Благодарил (а): 403 раз.
Поблагодарили: 261 раз.
Опыт программирования: Больше трех лет
Языки программирования: Counter-Strike 1.6


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

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

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