Блокировка входа за охрану зекам. |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
+
) или ссылку на плагин который вызывает у вас вопросы.
|
|
Блокировка входа за охрану зекам. |
andruha
|
6.8.2015, 4:13
Сообщение
|
|
|
Блок команда работает нормально, но с одним минусом...
Cкрытый текст В общем когда игроку ставишь блокировку, игроку запрещено играть за охрану и при этом когда он зашел за охрану его не переводит сразу а переводит тогда когда он оживает. И когда нет представителей играющих за охрану, зек (кому было заблокировано играть за охрану) заходящий за охрану начинает как бы флудить т.е. когда игрок заходит за охрану его без конца перебрасывает за зеков и при этом происходит рестарт раунда. А любители так побаловаться весьма раздражающий действуют на игроков сервера. Просьба, если это возможно сделать так чтобы он (игрок кому был заблокирован вход за охрану) вообще не мог переходить за охрану + когда нажимаешь команду заблокировать, можно заблокировать только тех кто играет за охрану а зеков нельзя блок, так не могли бы ещё сделать возможность заблокировать вход и зекам за охрану т.е. не только охране ставить блок играть за охрану но и зекам... Исходник Код #include <amxmodx> #include <amxmisc> #include <hamsandwich> #include <cstrike> new g_LoadList[81] new iPlayerBlock[33] public plugin_init() { register_plugin("[JBU] Block", "1.3", "Avtor/Chlenistonogi") RegisterHam(Ham_Spawn, "player", "PlayerSpawn", 1) register_clcmd("say /block", "BlockMenu") register_clcmd("say /unblock", "UnblockMenu") } public plugin_cfg() { new g_LoadDir[81] get_configsdir(g_LoadDir, charsmax(g_LoadDir)) formatex(g_LoadList, charsmax(g_LoadList), "%s/jbu_block.ini", g_LoadDir) } public client_authorized(id) { if(!is_user_bot(id) || !is_user_hltv(id)) { set_task(0.1, "CheckPlayer", id) } } public plugin_natives() register_native("jbu_get_user_block", "native_jb_get_user_block", 1) public native_jb_get_user_block(id) return iPlayerBlock[id] public client_disconnect(id) iPlayerBlock[id] = false public CheckPlayer(id) { new szName[64], szSteam[32] new szParse[128] new iLine, iNum get_user_name(id, szName, charsmax(szName)) get_user_authid(id, szSteam, charsmax(szSteam)) for(iLine = 0; read_file(g_LoadList, iLine, szParse, charsmax(szParse), iNum); iLine++) { if(iNum > 0 && szParse[0] != ';') { if(equal(szName, szParse) || equal(szSteam, szParse)) { iPlayerBlock[id] = true break } } } } public PlayerSpawn(id) { if(!is_user_alive(id) || !is_user_connected(id)) return PLUGIN_CONTINUE if(!iPlayerBlock[id]) return PLUGIN_CONTINUE if(get_user_team(id) == 2) { user_kill(id) cs_set_user_team(id, CS_TEAM_T) set_task(2.0, "kill_id", id) ChatColor(id, "!t[!gJBU!t] Вам заблокирован вход за охранников") } return PLUGIN_CONTINUE } public kill_id(id) { if(is_user_alive(id)) { user_kill(id) } } public BlockMenu(id) { if(!(get_user_flags(id) & ADMIN_BAN)) { ChatColor(id, "!t[!gJBU!t] !yУ вас недостаточно прав") return PLUGIN_HANDLED } new szTitle[512] formatex(szTitle, charsmax(szTitle), "Управление охраной") new iMenu = menu_create(szTitle, "BlockMenu_handler") new iPlayers[32], szName[32] new iPlayer, iNum, iNumCT, iPlayerNum[10] get_players(iPlayers, iNum) for(new i; i < iNum; i++) { iPlayer = iPlayers[i] if(!is_user_connected( iPlayer ) || iPlayer == id || iPlayerBlock[iPlayer] || get_user_team(iPlayer) != 2) continue get_user_name(iPlayer, szName, charsmax( szName )) num_to_str(iPlayer, iPlayerNum, charsmax( iPlayerNum )) if(get_user_flags(iPlayer) & ADMIN_IMMUNITY) { menu_additem(iMenu, szName, iPlayerNum, ADMIN_ADMIN) }else{ menu_additem(iMenu, szName, iPlayerNum, 0) } ++iNumCT } if(!iNumCT) { ChatColor(id, "!t[!gJBU!t] !yОтсутствуют охранники") return PLUGIN_HANDLED } menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL ) menu_setprop(iMenu, MPROP_NEXTNAME, "Далее") menu_setprop(iMenu, MPROP_BACKNAME, "Назад") menu_setprop(iMenu, MPROP_EXITNAME, "Выход") menu_display(id, iMenu, 0) return PLUGIN_HANDLED } public BlockMenu_handler(id, iMenu, iItem) { if(iItem == MENU_EXIT) { menu_destroy( iMenu ) return PLUGIN_HANDLED } new szData[6], szName[64], szAccess, szCallback menu_item_getinfo(iMenu, iItem, szAccess, szData, charsmax( szData ), szName, charsmax( szName ), szCallback) new iPlayer = str_to_num( szData ) new szText[512] new szNamePlayer[32], szSteamPlayer[32] get_user_name(iPlayer, szNamePlayer, charsmax( szNamePlayer )) get_user_authid(iPlayer, szSteamPlayer, charsmax( szSteamPlayer )) iPlayerBlock[iPlayer] = true cs_set_user_team(iPlayer, CS_TEAM_T) ExecuteHam(Ham_CS_RoundRespawn, iPlayer) formatex(szText, charsmax( szText ), "%s", szSteamPlayer) write_file(g_LoadList, szText, -1) ChatColor(0, "!t[!gJBU!t] !yИгроку !t%s !yзаблокирован вход за охранников", szNamePlayer) menu_destroy( iMenu ) return PLUGIN_HANDLED } public UnblockMenu(id) { if(!(get_user_flags(id) & ADMIN_BAN)) { ChatColor(id, "!t[!gJBU!t] !yУ вас недостаточно прав") return PLUGIN_HANDLED } new szTitle[512] formatex(szTitle, charsmax( szTitle ), "Управление охраной") new iMenu = menu_create(szTitle, "UnblockMenu_handler") new iPlayers[32], szName[32] new iPlayer, iNum, iNumBlock, iPlayerNum[10] get_players(iPlayers, iNum) for(new i; i < iNum; i++) { iPlayer = iPlayers[i] if(!is_user_connected( iPlayer ) || iPlayer == id || !iPlayerBlock[iPlayer]) continue get_user_name(iPlayer, szName, charsmax( szName )) num_to_str(iPlayer, iPlayerNum, charsmax( iPlayerNum )) menu_additem(iMenu, szName, iPlayerNum, 0) ++iNumBlock } if(!iNumBlock) { ChatColor(id, "!t[!gJBU!t] !yОтсутствуют охранники") return PLUGIN_HANDLED } menu_setprop(iMenu, MPROP_EXIT, MEXIT_ALL ) menu_setprop(iMenu, MPROP_NEXTNAME, "Далее") menu_setprop(iMenu, MPROP_BACKNAME, "Назад") menu_setprop(iMenu, MPROP_EXITNAME, "Выход") menu_display(id, iMenu, 0) return PLUGIN_HANDLED } public UnblockMenu_handler(id, iMenu, iItem) { if(iItem == MENU_EXIT) { menu_destroy( iMenu ) return PLUGIN_HANDLED } new szData[6], szName[64], szAccess, szCallback menu_item_getinfo(iMenu, iItem, szAccess, szData, charsmax( szData ), szName, charsmax( szName ), szCallback) new iPlayer = str_to_num( szData ) new szText[512] new szNamePlayer[32], szSteamPlayer[32] new szParse[128] new iLine, iNum get_user_name(iPlayer, szNamePlayer, charsmax( szNamePlayer )) get_user_authid(iPlayer, szSteamPlayer, charsmax( szSteamPlayer )) iPlayerBlock[iPlayer] = false for(iLine = 0; read_file(g_LoadList, iLine, szParse, charsmax( szParse ), iNum); iLine++) { if(iNum > 0 && szParse[0] != ';') { if(equal(szNamePlayer, szParse)) { formatex(szText, charsmax( szText ), ";%s", szNamePlayer) write_file(g_LoadList, szText, iLine) break }else if(equal(szSteamPlayer, szParse)) { formatex(szText, charsmax( szText ), ";%s", szSteamPlayer) write_file(g_LoadList, szText, iLine) break } } } ChatColor(0, "!t[!gJBU!t] !yИгроку !t%s !yразблокирован вход за охранников", szNamePlayer) menu_destroy( iMenu ) return PLUGIN_HANDLED } 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(); } } } }
jbu_block.sma ( 6,94 килобайт )
Кол-во скачиваний: 23 |
|
|
|
![]() ![]() |