Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

Баг с переходом за ТТ (deathrun)

Статус пользователя Impression
сообщение 20.6.2014, 13:31
Сообщение #1
Стаж: 14 лет
Город: Киев

Сообщений: 271
Благодарностей: 87
Полезность: < 0

Я так понял ошибка в team_join'e , при нажатии на M (chooseteam) несколько раз игрока переводит за ТТ, помогите исправить (если это в нем) вот код:

Скрытый текст
#include <amxmodx>

enum
{
TEAM_NONE = 0,
TEAM_T,
TEAM_CT,
TEAM_SPEC,

MAX_TEAMS
};
new const g_cTeamChars[MAX_TEAMS] =
{
'U',
'T',
'C',
'S'
};
new const g_sTeamNums[MAX_TEAMS][] =
{
"0",
"1",
"2",
"3"
};
new const g_sClassNums[MAX_TEAMS][] =
{
"1",
"2",
"3",
"4"
};

// Old Style Menus
stock const FIRST_JOIN_MSG[] = "#Team_Select";
stock const FIRST_JOIN_MSG_SPEC[] = "#Team_Select_Spect";
stock const INGAME_JOIN_MSG[] = "#IG_Team_Select";
stock const INGAME_JOIN_MSG_SPEC[] = "#IG_Team_Select_Spect";
const iMaxLen = sizeof(INGAME_JOIN_MSG_SPEC);

// New VGUI Menus
stock const VGUI_JOIN_TEAM_NUM = 2;

new g_iTeam[33];
new g_iPlayers[MAX_TEAMS];

new tjm_join_team;
new tjm_switch_team;
new tjm_class[MAX_TEAMS];
new tjm_block_change;

public plugin_init()
{
register_plugin("Team Join Management", "0.3", "Exolent");
register_event("TeamInfo", "event_TeamInfo", "a");
register_message(get_user_msgid("ShowMenu"), "message_ShowMenu");
register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu");
tjm_join_team = register_cvar("tjm_join_team", "2");
tjm_switch_team = register_cvar("tjm_switch_team", "1");
tjm_class[TEAM_T] = register_cvar("tjm_class_t", "2");
tjm_class[TEAM_CT] = register_cvar("tjm_class_ct", "3");
tjm_block_change = register_cvar("tjm_block_change", "1");
register_clcmd("jointeam", "block")
register_clcmd("jointeam 1", "block")
register_clcmd("jointeam 2", "block")
register_clcmd("jointeam 3", "block")
register_clcmd("jointeam 4", "block")
register_clcmd("jointeam 5", "block")
register_clcmd("jointeam 6", "block")
}

public plugin_cfg()
{
set_cvar_num("mp_limitteams", 32);
set_cvar_num("sv_restart", 1);
}

public client_disconnect(id)
{
remove_task(id);
}

public event_TeamInfo()
{
new id = read_data(1);
new sTeam[32], iTeam;
read_data(2, sTeam, sizeof(sTeam) - 1);
for(new i = 0; i < MAX_TEAMS; i++)
{
if(g_cTeamChars[i] == sTeam[0])
{
iTeam = i;
break;
}
}

if(g_iTeam[id] != iTeam)
{
g_iPlayers[g_iTeam[id]]--;
g_iTeam[id] = iTeam;
g_iPlayers[iTeam]++;
}
}
public block(id)
{
console_print(id, "Даже не пытайся!")
return PLUGIN_HANDLED

}
public message_ShowMenu(iMsgid, iDest, id)
{
static sMenuCode[iMaxLen];
get_msg_arg_string(4, sMenuCode, sizeof(sMenuCode) - 1);
if(equal(sMenuCode, FIRST_JOIN_MSG) || equal(sMenuCode, FIRST_JOIN_MSG_SPEC))
{
if(should_autojoin(id))
{
set_autojoin_task(id, iMsgid);
return PLUGIN_HANDLED;
}
}
else if(equal(sMenuCode, INGAME_JOIN_MSG) || equal(sMenuCode, INGAME_JOIN_MSG_SPEC))
{
if(should_autoswitch(id))
{
set_autoswitch_task(id, iMsgid);
return PLUGIN_HANDLED;
}
else if(get_pcvar_num(tjm_block_change))
{
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}

public message_VGUIMenu(iMsgid, iDest, id)
{
if(get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM)
{
return PLUGIN_CONTINUE;
}

if(should_autojoin(id))
{
set_autojoin_task(id, iMsgid);
return PLUGIN_HANDLED;
}
else if(should_autoswitch(id))
{
set_autoswitch_task(id, iMsgid);
return PLUGIN_HANDLED;
}
else if((TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && get_pcvar_num(tjm_block_change))
{
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

public task_Autojoin(iParam[], id)
{
new iTeam = get_new_team(get_pcvar_num(tjm_join_team));
if(iTeam != -1)
{
handle_join(id, iParam[0], iTeam);
}
}

public task_Autoswitch(iParam[], id)
{
new iTeam = get_switch_team(id);
if(iTeam != -1)
{
handle_join(id, iParam[0], iTeam);
}
}

stock handle_join(id, iMsgid, iTeam)
{
new iMsgBlock = get_msg_block(iMsgid);
set_msg_block(iMsgid, BLOCK_SET);

engclient_cmd(id, "jointeam", g_sTeamNums[iTeam]);

new iClass = get_team_class(iTeam);
if(1 <= iClass <= 4)
{
engclient_cmd(id, "joinclass", g_sClassNums[iClass - 1]);
}
set_msg_block(iMsgid, iMsgBlock);
}

stock get_new_team(iCvar)
{
switch(iCvar)
{
case 1:
{
return TEAM_T;
}
case 2:
{
return TEAM_CT;
}
case 3:
{
return TEAM_SPEC;
}
case 4:
{
new iTCount = g_iPlayers[TEAM_T];
new iCTCount = g_iPlayers[TEAM_CT];
if(iTCount < iCTCount)
{
return TEAM_T;
}
else if(iTCount > iCTCount)
{
return TEAM_CT;
}
else
{
return random_num(TEAM_T, TEAM_CT);
}
}
}
return -1;
}

stock get_switch_team(id)
{
new iTeam;

new iTCount = g_iPlayers[TEAM_T];
new iCTCount = g_iPlayers[TEAM_CT];
switch(g_iTeam[id])
{
case TEAM_T: iTCount--;
case TEAM_CT: iCTCount--;
}
if(iTCount < iCTCount)
{
iTeam = TEAM_T;
}
else if(iTCount > iCTCount)
{
iTeam = TEAM_CT;
}
else
{
iTeam = random_num(TEAM_T, TEAM_CT);
}

if(iTeam != g_iTeam[id])
{
return iTeam;
}

return -1;
}

stock get_team_class(iTeam)
{
new iClass;
if(TEAM_NONE < iTeam < TEAM_SPEC)
{
iClass = get_pcvar_num(tjm_class[iTeam]);
if(iClass < 1 || iClass > 4)
{
iClass = random_num(1, 4);
}
}
return iClass;
}

stock set_autojoin_task(id, iMsgid)
{
new iParam[2];
iParam[0] = iMsgid;
set_task(0.1, "task_Autojoin", id, iParam, sizeof(iParam));
}

stock set_autoswitch_task(id, iMsgid)
{
new iParam[2];
iParam[0] = iMsgid;
set_task(0.1, "task_Autoswitch", id, iParam, sizeof(iParam));
}

stock bool:should_autojoin(id)
{
return ((5 > get_pcvar_num(tjm_join_team) > 0) && is_user_connected(id) && !(TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && !task_exists(id));
}

stock bool:should_autoswitch(id)
{
return (get_pcvar_num(tjm_switch_team) && is_user_connected(id) && (TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && !task_exists(id));
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Bloo
сообщение 20.6.2014, 14:16
Сообщение #2


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

Impression, где подсветка? (PAWN)?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Impression
сообщение 20.6.2014, 14:33
Сообщение #3
Стаж: 14 лет
Город: Киев

Сообщений: 271
Благодарностей: 87
Полезность: < 0

Код:
#include <amxmodx>

enum
{
TEAM_NONE = 0,
TEAM_T,
TEAM_CT,
TEAM_SPEC,

MAX_TEAMS
};
new const g_cTeamChars[MAX_TEAMS] =
{
'U',
'T',
'C',
'S'
};
new const g_sTeamNums[MAX_TEAMS][] =
{
"0",
"1",
"2",
"3"
};
new const g_sClassNums[MAX_TEAMS][] =
{
"1",
"2",
"3",
"4"
};

// Old Style Menus
stock const FIRST_JOIN_MSG[] = "#Team_Select";
stock const FIRST_JOIN_MSG_SPEC[] = "#Team_Select_Spect";
stock const INGAME_JOIN_MSG[] = "#IG_Team_Select";
stock const INGAME_JOIN_MSG_SPEC[] = "#IG_Team_Select_Spect";
const iMaxLen = sizeof(INGAME_JOIN_MSG_SPEC);

// New VGUI Menus
stock const VGUI_JOIN_TEAM_NUM = 2;

new g_iTeam[33];
new g_iPlayers[MAX_TEAMS];

new tjm_join_team;
new tjm_switch_team;
new tjm_class[MAX_TEAMS];
new tjm_block_change;

public plugin_init()
{
register_plugin("Team Join Management", "0.3", "Exolent");
register_event("TeamInfo", "event_TeamInfo", "a");
register_message(get_user_msgid("ShowMenu"), "message_ShowMenu");
register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu");
tjm_join_team = register_cvar("tjm_join_team", "2");
tjm_switch_team = register_cvar("tjm_switch_team", "1");
tjm_class[TEAM_T] = register_cvar("tjm_class_t", "2");
tjm_class[TEAM_CT] = register_cvar("tjm_class_ct", "3");
tjm_block_change = register_cvar("tjm_block_change", "1");
register_clcmd("jointeam", "block")
register_clcmd("jointeam 1", "block")
register_clcmd("jointeam 2", "block")
register_clcmd("jointeam 3", "block")
register_clcmd("jointeam 4", "block")
register_clcmd("jointeam 5", "block")
register_clcmd("jointeam 6", "block")
}

public plugin_cfg()
{
set_cvar_num("mp_limitteams", 32);
set_cvar_num("sv_restart", 1);
}

public client_disconnect(id)
{
remove_task(id);
}

public event_TeamInfo()
{
new id = read_data(1);
new sTeam[32], iTeam;
read_data(2, sTeam, sizeof(sTeam) - 1);
for(new i = 0; i < MAX_TEAMS; i++)
{
if(g_cTeamChars[i] == sTeam[0])
{
iTeam = i;
break;
}
}

if(g_iTeam[id] != iTeam)
{
g_iPlayers[g_iTeam[id]]--;
g_iTeam[id] = iTeam;
g_iPlayers[iTeam]++;
}
}
public block(id)
{
console_print(id, "Даже не пытайся!")
return PLUGIN_HANDLED

}
public message_ShowMenu(iMsgid, iDest, id)
{
static sMenuCode[iMaxLen];
get_msg_arg_string(4, sMenuCode, sizeof(sMenuCode) - 1);
if(equal(sMenuCode, FIRST_JOIN_MSG) || equal(sMenuCode, FIRST_JOIN_MSG_SPEC))
{
if(should_autojoin(id))
{
set_autojoin_task(id, iMsgid);
return PLUGIN_HANDLED;
}
}
else if(equal(sMenuCode, INGAME_JOIN_MSG) || equal(sMenuCode, INGAME_JOIN_MSG_SPEC))
{
if(should_autoswitch(id))
{
set_autoswitch_task(id, iMsgid);
return PLUGIN_HANDLED;
}
else if(get_pcvar_num(tjm_block_change))
{
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}

public message_VGUIMenu(iMsgid, iDest, id)
{
if(get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM)
{
return PLUGIN_CONTINUE;
}

if(should_autojoin(id))
{
set_autojoin_task(id, iMsgid);
return PLUGIN_HANDLED;
}
else if(should_autoswitch(id))
{
set_autoswitch_task(id, iMsgid);
return PLUGIN_HANDLED;
}
else if((TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && get_pcvar_num(tjm_block_change))
{
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

public task_Autojoin(iParam[], id)
{
new iTeam = get_new_team(get_pcvar_num(tjm_join_team));
if(iTeam != -1)
{
handle_join(id, iParam[0], iTeam);
}
}

public task_Autoswitch(iParam[], id)
{
new iTeam = get_switch_team(id);
if(iTeam != -1)
{
handle_join(id, iParam[0], iTeam);
}
}

stock handle_join(id, iMsgid, iTeam)
{
new iMsgBlock = get_msg_block(iMsgid);
set_msg_block(iMsgid, BLOCK_SET);

engclient_cmd(id, "jointeam", g_sTeamNums[iTeam]);

new iClass = get_team_class(iTeam);
if(1 <= iClass <= 4)
{
engclient_cmd(id, "joinclass", g_sClassNums[iClass - 1]);
}
set_msg_block(iMsgid, iMsgBlock);
}

stock get_new_team(iCvar)
{
switch(iCvar)
{
case 1:
{
return TEAM_T;
}
case 2:
{
return TEAM_CT;
}
case 3:
{
return TEAM_SPEC;
}
case 4:
{
new iTCount = g_iPlayers[TEAM_T];
new iCTCount = g_iPlayers[TEAM_CT];
if(iTCount < iCTCount)
{
return TEAM_T;
}
else if(iTCount > iCTCount)
{
return TEAM_CT;
}
else
{
return random_num(TEAM_T, TEAM_CT);
}
}
}
return -1;
}

stock get_switch_team(id)
{
new iTeam;

new iTCount = g_iPlayers[TEAM_T];
new iCTCount = g_iPlayers[TEAM_CT];
switch(g_iTeam[id])
{
case TEAM_T: iTCount--;
case TEAM_CT: iCTCount--;
}
if(iTCount < iCTCount)
{
iTeam = TEAM_T;
}
else if(iTCount > iCTCount)
{
iTeam = TEAM_CT;
}
else
{
iTeam = random_num(TEAM_T, TEAM_CT);
}

if(iTeam != g_iTeam[id])
{
return iTeam;
}

return -1;
}

stock get_team_class(iTeam)
{
new iClass;
if(TEAM_NONE < iTeam < TEAM_SPEC)
{
iClass = get_pcvar_num(tjm_class[iTeam]);
if(iClass < 1 || iClass > 4)
{
iClass = random_num(1, 4);
}
}
return iClass;
}

stock set_autojoin_task(id, iMsgid)
{
new iParam[2];
iParam[0] = iMsgid;
set_task(0.1, "task_Autojoin", id, iParam, sizeof(iParam));
}

stock set_autoswitch_task(id, iMsgid)
{
new iParam[2];
iParam[0] = iMsgid;
set_task(0.1, "task_Autoswitch", id, iParam, sizeof(iParam));
}

stock bool:should_autojoin(id)
{
return ((5 > get_pcvar_num(tjm_join_team) > 0) && is_user_connected(id) && !(TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && !task_exists(id));
}

stock bool:should_autoswitch(id)
{
return (get_pcvar_num(tjm_switch_team) && is_user_connected(id) && (TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && !task_exists(id));
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
OverGame
сообщение 20.6.2014, 16:07
Сообщение #4
Стаж: 11 лет

Сообщений: 384
Благодарностей: 217
Полезность: 348

Цитата(Impression @ 20.6.2014, 14:33) *
Код:
#include <amxmodx>

enum
{
TEAM_NONE = 0,
TEAM_T,
TEAM_CT,
TEAM_SPEC,

MAX_TEAMS
};
new const g_cTeamChars[MAX_TEAMS] =
{
'U',
'T',
'C',
'S'
};
new const g_sTeamNums[MAX_TEAMS][] =
{
"0",
"1",
"2",
"3"
};
new const g_sClassNums[MAX_TEAMS][] =
{
"1",
"2",
"3",
"4"
};

// Old Style Menus
stock const FIRST_JOIN_MSG[] = "#Team_Select";
stock const FIRST_JOIN_MSG_SPEC[] = "#Team_Select_Spect";
stock const INGAME_JOIN_MSG[] = "#IG_Team_Select";
stock const INGAME_JOIN_MSG_SPEC[] = "#IG_Team_Select_Spect";
const iMaxLen = sizeof(INGAME_JOIN_MSG_SPEC);

// New VGUI Menus
stock const VGUI_JOIN_TEAM_NUM = 2;

new g_iTeam[33];
new g_iPlayers[MAX_TEAMS];

new tjm_join_team;
new tjm_switch_team;
new tjm_class[MAX_TEAMS];
new tjm_block_change;

public plugin_init()
{
register_plugin("Team Join Management", "0.3", "Exolent");
register_event("TeamInfo", "event_TeamInfo", "a");
register_message(get_user_msgid("ShowMenu"), "message_ShowMenu");
register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu");
tjm_join_team = register_cvar("tjm_join_team", "2");
tjm_switch_team = register_cvar("tjm_switch_team", "1");
tjm_class[TEAM_T] = register_cvar("tjm_class_t", "2");
tjm_class[TEAM_CT] = register_cvar("tjm_class_ct", "3");
tjm_block_change = register_cvar("tjm_block_change", "1");
register_clcmd("jointeam", "block")
register_clcmd("jointeam 1", "block")
register_clcmd("jointeam 2", "block")
register_clcmd("jointeam 3", "block")
register_clcmd("jointeam 4", "block")
register_clcmd("jointeam 5", "block")
register_clcmd("jointeam 6", "block")
}

public plugin_cfg()
{
set_cvar_num("mp_limitteams", 32);
set_cvar_num("sv_restart", 1);
}

public client_disconnect(id)
{
remove_task(id);
}

public event_TeamInfo()
{
new id = read_data(1);
new sTeam[32], iTeam;
read_data(2, sTeam, sizeof(sTeam) - 1);
for(new i = 0; i < MAX_TEAMS; i++)
{
if(g_cTeamChars[i] == sTeam[0])
{
iTeam = i;
break;
}
}

if(g_iTeam[id] != iTeam)
{
g_iPlayers[g_iTeam[id]]--;
g_iTeam[id] = iTeam;
g_iPlayers[iTeam]++;
}
}
public block(id)
{
console_print(id, "Даже не пытайся!")
return PLUGIN_HANDLED

}
public message_ShowMenu(iMsgid, iDest, id)
{
static sMenuCode[iMaxLen];
get_msg_arg_string(4, sMenuCode, sizeof(sMenuCode) - 1);
if(equal(sMenuCode, FIRST_JOIN_MSG) || equal(sMenuCode, FIRST_JOIN_MSG_SPEC))
{
if(should_autojoin(id))
{
set_autojoin_task(id, iMsgid);
return PLUGIN_HANDLED;
}
}
else if(equal(sMenuCode, INGAME_JOIN_MSG) || equal(sMenuCode, INGAME_JOIN_MSG_SPEC))
{
if(should_autoswitch(id))
{
set_autoswitch_task(id, iMsgid);
return PLUGIN_HANDLED;
}
else if(get_pcvar_num(tjm_block_change))
{
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE;
}

public message_VGUIMenu(iMsgid, iDest, id)
{
if(get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM)
{
return PLUGIN_CONTINUE;
}

if(should_autojoin(id))
{
set_autojoin_task(id, iMsgid);
return PLUGIN_HANDLED;
}
else if(should_autoswitch(id))
{
set_autoswitch_task(id, iMsgid);
return PLUGIN_HANDLED;
}
else if((TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && get_pcvar_num(tjm_block_change))
{
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}

public task_Autojoin(iParam[], id)
{
new iTeam = get_new_team(get_pcvar_num(tjm_join_team));
if(iTeam != -1)
{
handle_join(id, iParam[0], iTeam);
}
}

public task_Autoswitch(iParam[], id)
{
new iTeam = get_switch_team(id);
if(iTeam != -1)
{
handle_join(id, iParam[0], iTeam);
}
}

stock handle_join(id, iMsgid, iTeam)
{
new iMsgBlock = get_msg_block(iMsgid);
set_msg_block(iMsgid, BLOCK_SET);

engclient_cmd(id, "jointeam", g_sTeamNums[iTeam]);

new iClass = get_team_class(iTeam);
if(1 <= iClass <= 4)
{
engclient_cmd(id, "joinclass", g_sClassNums[iClass - 1]);
}
set_msg_block(iMsgid, iMsgBlock);
}

stock get_new_team(iCvar)
{
switch(iCvar)
{
case 1:
{
return TEAM_T;
}
case 2:
{
return TEAM_CT;
}
case 3:
{
return TEAM_SPEC;
}
case 4:
{
new iTCount = g_iPlayers[TEAM_T];
new iCTCount = g_iPlayers[TEAM_CT];
if(iTCount < iCTCount)
{
return TEAM_T;
}
else if(iTCount > iCTCount)
{
return TEAM_CT;
}
else
{
return random_num(TEAM_T, TEAM_CT);
}
}
}
return -1;
}

stock get_switch_team(id)
{
new iTeam;

new iTCount = g_iPlayers[TEAM_T];
new iCTCount = g_iPlayers[TEAM_CT];
switch(g_iTeam[id])
{
case TEAM_T: iTCount--;
case TEAM_CT: iCTCount--;
}
if(iTCount < iCTCount)
{
iTeam = TEAM_T;
}
else if(iTCount > iCTCount)
{
iTeam = TEAM_CT;
}
else
{
iTeam = random_num(TEAM_T, TEAM_CT);
}

if(iTeam != g_iTeam[id])
{
return iTeam;
}

return -1;
}

stock get_team_class(iTeam)
{
new iClass;
if(TEAM_NONE < iTeam < TEAM_SPEC)
{
iClass = get_pcvar_num(tjm_class[iTeam]);
if(iClass < 1 || iClass > 4)
{
iClass = random_num(1, 4);
}
}
return iClass;
}

stock set_autojoin_task(id, iMsgid)
{
new iParam[2];
iParam[0] = iMsgid;
set_task(0.1, "task_Autojoin", id, iParam, sizeof(iParam));
}

stock set_autoswitch_task(id, iMsgid)
{
new iParam[2];
iParam[0] = iMsgid;
set_task(0.1, "task_Autoswitch", id, iParam, sizeof(iParam));
}

stock bool:should_autojoin(id)
{
return ((5 > get_pcvar_num(tjm_join_team) > 0) && is_user_connected(id) && !(TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && !task_exists(id));
}

stock bool:should_autoswitch(id)
{
return (get_pcvar_num(tjm_switch_team) && is_user_connected(id) && (TEAM_NONE < g_iTeam[id] < TEAM_SPEC) && !task_exists(id));
}


Держи от моего сервера
Код:
#include <amxmodx>
#include <cstrike>
#include <fakemeta>
#include <fun>
#include <amxmisc>

#define PLUGIN "Deathrun Join"
#define VERSION "1.2"
#define AUTHOR "OverGame"

#define MSG_SHOWMENU 96

#define VIP_OPEN ADMIN_LEVEL_H
#define ADMIN_100_OPEN ADMIN_LEVEL_G
#define ADMIN_200_OPEN ADMIN_LEVEL_F

public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_message(get_user_msgid("ShowMenu"), "message_ShowMenu")
register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu")

register_logevent("on_round_start", 2, "0=World triggered", "1=Round_Start")

register_clcmd("jointeam", "jointeam")
register_clcmd("menuxa", "team_menu")
register_clcmd("joinclass", "jointeam")

register_clcmd("say /team_menu", "team_menu")
register_clcmd("say_team /team_menu", "team_menu")
register_clcmd("team_menu", "team_menu")

set_task(1.0, "AlivePlayer", _, _, _, "b")
}

public ololo(id)
{
set_task(0.2, "team_menu", id)
}

public client_command(id)
{
new arg[13]
read_argv(0, arg , 12)

for (new a = 0; a < 34; a++)
{
if(equal("chooseteam", arg) || equal("say /chooseteam", arg))
{
team_menu(id)
return PLUGIN_HANDLED
}
} return PLUGIN_CONTINUE
}

public message_ShowMenu(iMsgid, iDest, id)
{
static sMenuCode[64]
get_msg_arg_string(4, sMenuCode, sizeof(sMenuCode) - 1)

if(equal(sMenuCode, "#Team_Select") || equal(sMenuCode, "#Team_Select_Spect"))
{
set_task(0.1, "auto_join", id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}

public auto_join(id)
{
if(is_user_connected(id))
{
new iMsgBlock = get_msg_block(114)
set_msg_block(114, BLOCK_SET)

new MsgBlock = get_msg_block(96)
set_msg_block(96, BLOCK_SET)

engclient_cmd(id, "jointeam", "2")
engclient_cmd(id, "joinclass", "2")

set_msg_block(114, iMsgBlock)
set_msg_block(96, MsgBlock)
}
}

public message_VGUIMenu(iMsgid, iDest, id)
{
if(get_msg_arg_int(1) != 2)
return PLUGIN_CONTINUE;

set_task(0.1, "auto_join", id)

return PLUGIN_HANDLED;
}

public team_menu(id){
new name[32]
get_user_name(id, name, 31)
static s_MenuItem[64]
formatex(s_MenuItem, charsmax(s_MenuItem), "\yПривет: \r%s", name)
new menu = menu_create(s_MenuItem, "menu_handler" )

if(cs_get_user_team(id) == 2){
menu_additem(menu, "\yЗайти за зайцев","1")
}else{
menu_additem(menu, "\dЗайти за зайцев [Нельзя]","1")
}
menu_additem(menu, "\yМеню сервера","2")
if(get_user_flags(id) & VIP_OPEN){
menu_additem(menu, "\yVIP меню \r[Доступно]","3")
}else{
menu_additem(menu, "\dVIP меню [70 руб]","3")
}
if(get_user_flags(id) & ADMIN_100_OPEN){
menu_additem(menu, "\yОбычная админка \r[Доступно]","4")
}else{
menu_additem(menu, "\dОбычная админка [100 руб]","4")
}
if(get_user_flags(id) & ADMIN_200_OPEN){
menu_additem(menu, "\yСупер админка \r[Доступно]","5")
}else{
menu_additem(menu, "\dСупер админка [200 руб]","5")
}

menu_setprop(menu, MPROP_BACKNAME, "Назад")
menu_setprop(menu, MPROP_NEXTNAME, "Далее")
menu_setprop(menu, MPROP_EXITNAME, "Выход")

menu_display(id,menu,0)
return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}

new data[6], iName[64], access, callback
menu_item_getinfo(menu, item, access, data, 5, iName, 63, callback)

new key = str_to_num(data)

switch(key)
{
case 1:{
if(cs_get_user_team(id) == 2)
engclient_cmd(id, "jointeam", "2")
engclient_cmd(id, "joinclass", "2")
}
case 2:{
client_cmd(id, "menu")
}
case 3:{
if(get_user_flags(id) & VIP_OPEN)
client_cmd(id, "deathrun_vip_menu")
}
case 4:{
if(get_user_flags(id) & ADMIN_100_OPEN)
client_cmd(id, "deathrun_100_menu")
}
case 5:{
if(get_user_flags(id) & ADMIN_200_OPEN)
client_cmd(id, "deathrun_200_menu")
}
}
return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: