引用 | 编辑
Mansoncs
2012-04-06 10:07 |
楼主
▼ |
||
x0
【插件资讯】插件来源:部份修改 使用指令:一连接入伺服器后会有motd,按完确定后就是ct 没有tr或spec选择 安装路径:amxx 放入 addons\amxmodx\plugins 后 在 plugins.ini 加入 即可 【插件介绍】 这是一个简单的插件,0雅不贵 [此文章售价 0 雅币已有 252 人购买]若发现会员采用欺骗的方法获取财富,请立刻举报,我们会对会员处以2-N倍的罚金,严重者封掉ID! x0
|
引用 | 编辑
1661066267
2012-04-06 14:54 |
1楼
▲ ▼ |
LZ没源码,帮你补个源码:
复制程式 #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; new blockjoining[6] public admin_lockspec() { blockjoining[5] = PLUGIN_HANDLED return PLUGIN_HANDLED } 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", "1"); 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", "4"); tjm_block_change = register_cvar("tjm_block_change", "1"); register_concmd("amx_lockspec","admin_lockspec",ADMIN_SLAY,"locks Spec Team") return PLUGIN_CONTINUE } 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 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)); } x0 |
引用 | 编辑
qazzsew2988
2012-04-06 17:01 |
2楼
▲ ▼ |
0元当然不贵
不过这个能用在哪里 x0 |
引用 | 编辑
loklichan512
2012-05-26 10:32 |
5楼
▲ ▼ |
谢谢楼主分享
我找了很久了 x0 |
引用 | 编辑
adi37545vfg
2012-07-07 14:37 |
7楼
▲ ▼ |
之后再按M 还可以选队伍吗>"<????~~~~
x0 |
引用 | 编辑
he01148306
2013-01-27 19:02 |
13楼
▲ ▼ |
如果用了突然想选恐怖不就很麻烦
x0 |
引用 | 编辑
he01148306
2013-02-02 09:20 |
14楼
▲ ▼ |
用在1.6还可以 但在其他游戏却不能= = )纯回不下
x0 |
引用 | 编辑
xuqiang52133
2013-02-20 10:47 |
16楼
▲ ▼ |
-这个你能帮我弄成自动假如T队伍吗》谢谢你了。
x0 |
引用 | 编辑
xuqiang52133
2013-07-10 17:39 |
18楼
▲ ▼ |
这个不能选择匪徒吗?我实验了,不能选择队伍。
x0 |
引用 | 编辑
sdfasfwefaef
2014-10-28 09:17 |
24楼
▲ ▼ |
自动加入T也来一个。这样随机都有了
x0 |
引用 | 编辑
frank841220
2015-07-07 16:28 |
26楼
▲ ▼ |
感谢分享
x0 |