Здравствуйте, гость Вход | Регистрация
Наши новости:
|
| Дата поста: | В теме: | За сообщение: | Спасибо сказали: | ||
|---|---|---|---|---|---|
| 8.1.2012, 13:41 | advertisements | заюзай text_in_chat.amxx, в исходнике подправь с 5 на 3 строчки Исходник Код #include <amxmodx> #include <amxmisc> #define PLUGIN "text in chat" #define VERSION "1.0" #define AUTHOR "patr1g / Pr4yer" enum ChatColor { CHATCOLOR_YELLOW = 1, // ЖЁЛТЫЙ CHATCOLOR_GREEN, // ЗЕЛЁНЫЙ CHATCOLOR_TEAM_COLOR, // Цвет, в зависимости от команды. (T - красный, CT - синий, CPEC - серый) CHATCOLOR_GREY, // СЕРЫЙ CHATCOLOR_RED, // КРАСНЫЙ CHATCOLOR_BLUE, // СИНИЙ } new g_TeamName[][] = { "", "TERRORIST", "CT", "SPECTATOR" } new g_msgSayText new g_msgTeamInfo public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_cvar("text_chat", "1") register_cvar("text_chat_interval", "25") register_cvar("text_chat_1", "PETYX 1") register_cvar("text_chat_2", "PETYX 2") register_cvar("text_chat_3", "PETYX 3") register_cvar("text_chat_4", "PETYX 4") register_cvar("text_chat_5", "PETYX 5") g_msgSayText = get_user_msgid("SayText") g_msgTeamInfo = get_user_msgid("TeamInfo") } public plugin_cfg() { set_task(get_cvar_float("text_chat_interval"), "showMsg", 12345, "", _, "b") } public showMsg() { if(get_cvar_num("text_chat") == 1) { static msg1[128], msg2[128], msg3[128], msg4[128], msg5[128] get_cvar_string("text_chat_1", msg1, 127) get_cvar_string("text_chat_2", msg2, 127) get_cvar_string("text_chat_3", msg3, 127) get_cvar_string("text_chat_4", msg4, 127) get_cvar_string("text_chat_5", msg5, 127) colorChat(0, CHATCOLOR_YELLOW, "%s", msg1) colorChat(0, CHATCOLOR_RED, "%s", msg2) colorChat(0, CHATCOLOR_GREEN, "%s", msg3) colorChat(0, CHATCOLOR_GREY, "%s", msg4) colorChat(0, CHATCOLOR_BLUE, "%s", msg5) } } colorChat(id, ChatColor:color, const msg[], {Float,Sql,Result,_}:...) { new team, index, MSG_Type new bool:teamChanged = false new message[192] switch(color) { case CHATCOLOR_YELLOW: { message[0] = 0x01; } case CHATCOLOR_GREEN: { message[0] = 0x04; } default: { message[0] = 0x03; } } vformat(message[1], 190, msg, 4); if (id == 0) { index = findAnyPlayer(); MSG_Type = MSG_ALL; } else { index = id; MSG_Type = MSG_ONE; } if (index != 0) { team = get_user_team(index); if (color == CHATCOLOR_RED && team != 1) { messageTeamInfo(index, MSG_Type, g_TeamName[1]) teamChanged = true } else if (color == CHATCOLOR_BLUE && team != 2) { messageTeamInfo(index, MSG_Type, g_TeamName[2]) teamChanged = true } else if (color == CHATCOLOR_GREY && team != 0) { messageTeamInfo(index, MSG_Type, g_TeamName[0]) teamChanged = true } messageSayText(index, MSG_Type, message); if (teamChanged) { messageTeamInfo(index, MSG_Type, g_TeamName[team]); } } } messageSayText(id, type, message[]) { message_begin(type, g_msgSayText, _, id) write_byte(id) write_string(message) message_end() } messageTeamInfo(id, type, team[]) { message_begin(type, g_msgTeamInfo, _, id) write_byte(id) write_string(team) message_end() } findAnyPlayer() { new players[32], inum get_players(players, inum) for (new a = 0; a < inum; ++a) { if(is_user_connected(players[a])) { return players[a] } } return 0 } |
Connect1507 | ||
| 14.11.2011, 10:46 | Ошибка при входе на свой сервер | dproto включи |
fame # | ||
| 14.10.2011, 18:43 | Setmaster | Сетмастера Valve, Setti+SM, ну и еще мастера мониторингов(если таковые имеются) |
HLrate | ||
| 13.10.2011, 18:21 | Хвастаемся и-нетом :) | Вы мне не конкуренты: ![]() |
HLrate | ||
| 13.10.2011, 16:23 | проблема с банами | HLrate | |||
| 12.10.2011, 21:42 | ссылку на обновление | спасибо большое, он-лайн повысился, играют только с 18лет. поставил режим по он-лайну жесткий пока без проблем. протоколы не тестил p.s можно как нибудь замутить чтобы только с микрофонами заходили? Когда же вы выучите серверные команды? server.cfg Код //Параметр разрешает/запрещает вход игрокам без микрофона. //Значения: 0 -разрешает игру без микрофона(по умолчанию), 1- Вход на сервер только с микрофоном. sv_mike 1 |
HLrate | ||
| 12.10.2011, 20:46 | проблема с банами | агась, одновременно завораживает и вводит в недоумевание |
HLrate | ||
| 12.10.2011, 20:41 | проблема с банами | Ну хорошо plmenu.sma fix /* AMX Mod X * Players Menu Plugin * * by the AMX Mod X Development Team * originally developed by OLO * * This file is part of AMX Mod X. * * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at * your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * In addition, as a special exception, the author gives permission to * link the code of this program with the Half-Life Game Engine ("HL * Engine") and Modified Game Libraries ("MODs") developed by Valve, * L.L.C ("Valve"). You must obey the GNU General Public License in all * respects for all of the code used other than the HL Engine and MODs * from Valve. If you modify this file, you may extend this exception * to your version of the file, but you are not obligated to do so. If * you do not wish to do so, delete this exception statement from your * version. */ #include <amxmodx> #include <amxmisc> /** skip autoloading since it's optional */ #define AMXMODX_NOAUTOLOAD #include <cstrike> new g_menuPosition[33] new g_menuPlayers[33][32] new g_menuPlayersNum[33] new g_menuOption[33] new g_menuSettings[33] new g_menuSelect[33][64] new g_menuSelectNum[33] #define MAX_CLCMDS 24 new g_clcmdName[MAX_CLCMDS][32] new g_clcmdCmd[MAX_CLCMDS][64] new g_clcmdMisc[MAX_CLCMDS][2] new g_clcmdNum new g_coloredMenus new g_cstrike = 0 new Array:g_bantimes; new Array:g_slapsettings; new g_CSTeamNames[3][] = { "TERRORIST", "CT", "SPECTATOR" } new g_CSTeamNumbers[3][] = { "1", "2", "6" } new g_CSTeamiNumbers[3] = { 1, 2, 6 } new g_ban_player[33]; public plugin_natives() { set_module_filter("module_filter") set_native_filter("native_filter") } public plugin_init() { register_plugin("Players Menu", AMXX_VERSION_STR, "AMXX Dev Team") register_dictionary("common.txt") register_dictionary("admincmd.txt") register_dictionary("plmenu.txt") register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu") register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu") register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu") register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_A, "- displays team menu") register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_LEVEL_A, "- displays client cmds menu") register_clcmd("amx_banreason", "CmdBanReason", ADMIN_BAN, "<reason>"); register_menucmd(register_menuid("Ban Menu"), 1023, "actionBanMenu") register_menucmd(register_menuid("Kick Menu"), 1023, "actionKickMenu") register_menucmd(register_menuid("Slap/Slay Menu"), 1023, "actionSlapMenu") register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu") register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu") g_bantimes = ArrayCreate(); // Load up the old default values ArrayPushCell(g_bantimes, 0); ArrayPushCell(g_bantimes, 5); ArrayPushCell(g_bantimes, 10); ArrayPushCell(g_bantimes, 15); ArrayPushCell(g_bantimes, 30); ArrayPushCell(g_bantimes, 45); ArrayPushCell(g_bantimes, 60); g_slapsettings = ArrayCreate(); // Old default values ArrayPushCell(g_slapsettings, 0); // First option is ignored - it is slay ArrayPushCell(g_slapsettings, 0); // slap 0 damage ArrayPushCell(g_slapsettings, 1); ArrayPushCell(g_slapsettings, 5); register_srvcmd("amx_plmenu_bantimes", "plmenu_setbantimes"); register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg"); g_coloredMenus = colored_menus() new clcmds_ini_file[64] get_configsdir(clcmds_ini_file, 63) format(clcmds_ini_file, 63, "%s/clcmds.ini", clcmds_ini_file) load_settings(clcmds_ini_file) if (module_exists("cstrike")) g_cstrike = 1 } public plmenu_setbantimes() { new buff[32]; new args = read_argc(); if (args <= 1) { server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ..."); server_print(" use time of 0 for permanent."); return; } ArrayClear(g_bantimes); for (new i = 1; i < args; i++) { read_argv(i, buff, charsmax(buff)); ArrayPushCell(g_bantimes, str_to_num(buff)); } } public plmenu_setslapdmg() { new buff[32]; new args = read_argc(); if (args <= 1) { server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ..."); server_print(" slay is automatically set for the first value."); return; } ArrayClear(g_slapsettings); ArrayPushCell(g_slapsettings, 0); // compensate for slay for (new i = 1; i < args; i++) { read_argv(i, buff, charsmax(buff)); ArrayPushCell(g_slapsettings, str_to_num(buff)); } } public module_filter(const module[]) { if (equali(module, "cstrike")) return PLUGIN_HANDLED return PLUGIN_CONTINUE } public native_filter(const name[], index, trap) { if (!trap) return PLUGIN_HANDLED return PLUGIN_CONTINUE } /* Ban menu */ public client_disconnect(id) { g_ban_player[id] = 0; } public CmdBanReason(id) { new player = g_ban_player[id]; if( !player ) return PLUGIN_HANDLED; new reason[128]; read_args(reason, sizeof(reason) - 1); remove_quotes(reason); new name[32], name2[32], authid[32], authid2[32] get_user_name(player, name2, 31) get_user_authid(id, authid, 31) get_user_authid(player, authid2, 31) get_user_name(id, name, 31) new userid2 = get_user_userid(player) log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id], reason) if ( !equal("STEAM_0:", authid2, 8)) { client_cmd(id, "amx_banip #%i %i ^"%s^"", userid2, g_menuSettings[id], reason); } else { client_cmd(id, "amx_ban #%i %i ^"%s^"", userid2, g_menuSettings[id], reason); } server_exec() g_ban_player[id] = 0; displayBanMenu(id, g_menuPosition[id]) return PLUGIN_HANDLED; } public actionBanMenu(id, key) { switch (key) { case 7: { /* BEGIN OF CHANGES BY MISTAGEE ADDED A FEW MORE OPTIONS */ ++g_menuOption[id] g_menuOption[id] %= ArraySize(g_bantimes); g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]); displayBanMenu(id, g_menuPosition[id]) } case 8: displayBanMenu(id, ++g_menuPosition[id]) case 9: displayBanMenu(id, --g_menuPosition[id]) default: { g_ban_player[id] = g_menuPlayers[id][g_menuPosition[id] * 7 + key] client_cmd(id, "messagemode amx_banreason"); client_print(id, print_chat, "[AMXX] Type in the reason for banning this player."); /*new name[32], name2[32], authid[32], authid2[32] get_user_name(player, name2, 31) get_user_authid(id, authid, 31) get_user_authid(player, authid2, 31) get_user_name(id, name, 31) new userid2 = get_user_userid(player) log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id]) if (g_menuSettings[id]==0) // permanent { new maxpl = get_maxplayers(); for (new i = 1; i <= maxpl; i++) { show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM"); } } else { new tempTime[32]; formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]); new maxpl = get_maxplayers(); for (new i = 1; i <= maxpl; i++) { show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime); } } // ---------- check for Steam ID added by MistaGee -------------------- // IF AUTHID == 4294967295 OR VALVE_ID_LAN OR HLTV, BAN PER IP TO NOT BAN EVERYONE if (equal("4294967295", authid2) || equal("HLTV", authid2) || equal("STEAM_ID_LAN", authid2) || equali("VALVE_ID_LAN", authid2)) { // END OF MODIFICATIONS BY MISTAGEE server_cmd("amx_banip #%i %i ^"Banned From Menu^"", userid2, g_menuSettings[id]); } else { server_cmd("amx_ban #%i %i ^"Banned From Menu^"", userid2, g_menuSettings[id]); } server_exec() displayBanMenu(id, g_menuPosition[id])*/ } } return PLUGIN_HANDLED } displayBanMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 7 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) new end = start + 7 new keys = MENU_KEY_0|MENU_KEY_8 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) if (is_user_admin(i)) len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name) else len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } if (g_menuSettings[id]) { new banLength[32] if (timeToString(g_menuSettings[id], banLength, 31)) len += format(menuBody[len], 511-len, "^n8. Ban for %s^n", banLength) else len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id]) } else len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM") if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") show_menu(id, keys, menuBody, -1, "Ban Menu") } timeToString(minutes, output[], len) { new hours = minutes / 60; minutes %= 60; new days = hours / 24; hours %= 24; new ret if (days) ret += formatex(output[ret], len-ret, "%s%d day%s", ret ? ", " : "", days, (days == 1) ? "" : "s") if (hours) ret += formatex(output[ret], len-ret, "%s%d hour%s", ret ? ", " : "", hours, (hours == 1) ? "" : "s") if (minutes) ret += formatex(output[ret], len-ret, "%s%d minute%s", ret ? ", " : "", minutes, (minutes == 1) ? "" : "s") return ret } public cmdBanMenu(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED g_menuOption[id] = 0 if (ArraySize(g_bantimes) > 0) { g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]); } else { // should never happen, but failsafe g_menuSettings[id] = 0 } displayBanMenu(id, g_menuPosition[id] = 0) return PLUGIN_HANDLED } /* Slap/Slay */ public actionSlapMenu(id, key) { switch (key) { case 7: { ++g_menuOption[id] g_menuOption[id] %= ArraySize(g_slapsettings); g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]); displaySlapMenu(id, g_menuPosition[id]); } case 8: displaySlapMenu(id, ++g_menuPosition[id]) case 9: displaySlapMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] new name2[32] get_user_name(player, name2, 31) if (!is_user_alive(player)) { client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2) displaySlapMenu(id, g_menuPosition[id]) return PLUGIN_HANDLED } new authid[32], authid2[32], name[32] get_user_authid(id, authid, 31) get_user_authid(player, authid2, 31) get_user_name(id, name, 31) if (g_menuOption[id]) { log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2) show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, g_menuSettings[id]); } else { log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2) show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2); } if (g_menuOption[id]) user_slap(player, (get_user_health(player) > g_menuSettings[id]) ? g_menuSettings[id] : 0) else user_kill(player) displaySlapMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } displaySlapMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32], team[4] new start = pos * 7 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "SLAP_SLAY_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) new end = start + 7 new keys = MENU_KEY_0|MENU_KEY_8 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (g_cstrike) { if (cs_get_user_team(i) == CS_TEAM_T) { copy(team, 3, "TE") } else if (cs_get_user_team(i) == CS_TEAM_CT) { copy(team, 3, "CT") } else { get_user_team(i, team, 3) } } else { get_user_team(i, team, 3) } if (!is_user_alive(i) || (access(i, ADMIN_IMMUNITY) && i != id)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team) else len += format(menuBody[len], 511-len, "#. %s %s^n", name, team) } else { keys |= (1<<b) if (is_user_admin(i)) len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s * %s^n", ++b, name, team) else len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++b, name, team) } } if (g_menuOption[id]) len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAP_WITH_DMG", g_menuSettings[id]) else len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAY") if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") show_menu(id, keys, menuBody, -1, "Slap/Slay Menu") } public cmdSlapMenu(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED g_menuOption[id] = 0 if (ArraySize(g_slapsettings) > 0) { g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]); } else { // should never happen, but failsafe g_menuSettings[id] = 0 } displaySlapMenu(id, g_menuPosition[id] = 0) return PLUGIN_HANDLED } /* Kick */ public actionKickMenu(id, key) { switch (key) { case 8: displayKickMenu(id, ++g_menuPosition[id]) case 9: displayKickMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key] new authid[32], authid2[32], name[32], name2[32] get_user_authid(id, authid, 31) get_user_authid(player, authid2, 31) get_user_name(id, name, 31) get_user_name(player, name2, 31) new userid2 = get_user_userid(player) log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2) show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2); server_cmd("kick #%d", userid2) server_exec() displayKickMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } displayKickMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 8 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "KICK_MENU", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0))) new end = start + 8 new keys = MENU_KEY_0 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (access(i, ADMIN_IMMUNITY) && i != id) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) if (is_user_admin(i)) len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name) else len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") show_menu(id, keys, menuBody, -1, "Kick Menu") } public cmdKickMenu(id, level, cid) { if (cmd_access(id, level, cid, 1)) displayKickMenu(id, g_menuPosition[id] = 0) return PLUGIN_HANDLED } /* Team menu */ public actionTeamMenu(id, key) { switch (key) { case 7: { g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2); displayTeamMenu(id, g_menuPosition[id]) } case 8: displayTeamMenu(id, ++g_menuPosition[id]) case 9: displayTeamMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] new authid[32], authid2[32], name[32], name2[32] get_user_name(player, name2, 31) get_user_authid(id, authid, 31) get_user_authid(player, authid2, 31) get_user_name(id, name, 31) log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT") show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]); if (g_cstrike) { if (is_user_alive(player)) { new deaths = cs_get_user_deaths(player) user_kill(player, 1) cs_set_user_deaths(player, deaths) } // This modulo math just aligns the option to the CsTeams-corresponding number cs_set_user_team(player, (g_menuOption[id] % 3) + 1) cs_reset_user_model(player) } else { new limit_setting = get_cvar_num("mp_limitteams") set_cvar_num("mp_limitteams", 0) engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2]) engclient_cmd(player, "joinclass", "1") set_cvar_num("mp_limitteams", limit_setting) } displayTeamMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } displayTeamMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i, iteam new name[32], team[4] new start = pos * 7 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) new end = start + 7 new keys = MENU_KEY_0|MENU_KEY_8 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (g_cstrike) { iteam = _:cs_get_user_team(i) if (iteam == 1) { copy(team, 3, "TE") } else if (iteam == 2) { copy(team, 3, "CT") } else if (iteam == 3) { copy(team, 3, "SPE"); iteam = 6; } else { iteam = get_user_team(i, team, 3) } } else { iteam = get_user_team(i, team, 3) } if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team) else len += format(menuBody[len], 511-len, "#. %s %s^n", name, team) } else { keys |= (1<<b) if (is_user_admin(i)) len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s * %s^n", ++b, name, team) else len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++b, name, team) } } len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)]) if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") show_menu(id, keys, menuBody, -1, "Team Menu") } public cmdTeamMenu(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED g_menuOption[id] = 0 displayTeamMenu(id, g_menuPosition[id] = 0) return PLUGIN_HANDLED } /* Client cmds menu */ public actionClcmdMenu(id, key) { switch (key) { case 7: { ++g_menuOption[id] g_menuOption[id] %= g_menuSelectNum[id] displayClcmdMenu(id, g_menuPosition[id]) } case 8: displayClcmdMenu(id, ++g_menuPosition[id]) case 9: displayClcmdMenu(id, --g_menuPosition[id]) default: { new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key] new flags = g_clcmdMisc[g_menuSelect[id][g_menuOption[id]]][1] if (is_user_connected(player)) { new command[512], authid[32], name[32], userid[32] copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]]) get_user_authid(player, authid, 31) get_user_name(player, name, 31) num_to_str(get_user_userid(player), userid, 31) replace(command, charsmax(command), "%userid%", userid) replace(command, charsmax(command), "%authid%", authid) replace(command, charsmax(command), "%name%", name) if (flags & 1) { server_cmd("%s", command) server_exec() } else if (flags & 2) client_cmd(id, "%s", command) else if (flags & 4) client_cmd(player, "%s", command) } if (flags & 8) displayClcmdMenu(id, g_menuPosition[id]) } } return PLUGIN_HANDLED } displayClcmdMenu(id, pos) { if (pos < 0) return get_players(g_menuPlayers[id], g_menuPlayersNum[id]) new menuBody[512] new b = 0 new i new name[32] new start = pos * 7 if (start >= g_menuPlayersNum[id]) start = pos = g_menuPosition[id] = 0 new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CL_CMD_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0))) new end = start + 7 new keys = MENU_KEY_0|MENU_KEY_8 if (end > g_menuPlayersNum[id]) end = g_menuPlayersNum[id] for (new a = start; a < end; ++a) { i = g_menuPlayers[id][a] get_user_name(i, name, 31) if (!g_menuSelectNum[id] || (access(i, ADMIN_IMMUNITY) && i != id)) { ++b if (g_coloredMenus) len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name) else len += format(menuBody[len], 511-len, "#. %s^n", name) } else { keys |= (1<<b) if (is_user_admin(i)) len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name) else len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name) } } if (g_menuSelectNum[id]) len += format(menuBody[len], 511-len, "^n8. %s^n", g_clcmdName[g_menuSelect[id][g_menuOption[id]]]) else len += format(menuBody[len], 511-len, "^n8. %L^n", id, "NO_CMDS") if (end != g_menuPlayersNum[id]) { format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT") keys |= MENU_KEY_9 } else format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT") show_menu(id, keys, menuBody, -1, "Client Cmds Menu") } public cmdClcmdMenu(id, level, cid) { if (!cmd_access(id, level, cid, 1)) return PLUGIN_HANDLED g_menuSelectNum[id] = 0 for (new a = 0; a < g_clcmdNum; ++a) if (access(id, g_clcmdMisc[a][0])) g_menuSelect[id][g_menuSelectNum[id]++] = a g_menuOption[id] = 0 displayClcmdMenu(id, g_menuPosition[id] = 0) return PLUGIN_HANDLED } load_settings(szFilename[]) { if (!file_exists(szFilename)) return 0 new text[256], szFlags[32], szAccess[32] new a, pos = 0 while (g_clcmdNum < MAX_CLCMDS && read_file(szFilename, pos++, text, 255, a)) { if (text[0] == ';') continue if (parse(text, g_clcmdName[g_clcmdNum], 31, g_clcmdCmd[g_clcmdNum], 63, szFlags, 31, szAccess, 31) > 3) { while (replace(g_clcmdCmd[g_clcmdNum], 63, "\'", "^"")) { // do nothing } g_clcmdMisc[g_clcmdNum][1] = read_flags(szFlags) g_clcmdMisc[g_clcmdNum][0] = read_flags(szAccess) g_clcmdNum++ } } return 1 } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */ |
HLrate | ||
| 12.10.2011, 20:06 | ML_NOTFOUND | core.ini amxx_datadir addons/amxmodx/data |
HLrate | ||
| 12.10.2011, 19:59 | проблема с банами | ![]() |
FixX, HLrate | ||
| 12.10.2011, 13:44 | Грамотная резервация слота | Хочу добится вот такого эффекта - когда 14\14, то человек с резервным слотом (далее - админ), может зайти, допустим через консоль. при этом с сервака кикается (или перенаправляется на другой сервак) игрок с самым большим пингом, или, допустим, игрок который последний зашел. далее - 14\14, и если простой игрок конектится к серваку - то тоже перенаправление на другой сервак. На сколько я знаю, плагина с нужными тебе характеристиками нет. Нужно править готовые, а это уже в другой раздел. |
HLrate | ||
| 12.10.2011, 11:33 | Не запускается серв | L 10/12/2011 - 11:55:17: -------- Mapchange to zm_toxic_house -------- stray key in process_key: item_getiteminfo 63 ./hlds_run: line 49: 6253 Segmentation fault $HL_CMD Wed Oct 12 11:55:17 MSD 2011: Server restart in 3 seconds Вот новая ошибка...Чё Ето ?? Мб для начала прочтешь правила создания тем и оформишь ее подобающим образом? |
HLrate | ||
| 11.10.2011, 21:38 | проблема с банами | plmenu обнови и прочти правила создания тем |
HLrate | ||
| 11.10.2011, 21:36 | Помогите настроить правильные рейты | я даже не смотрел на то что ТС написал, ужс... :crazy2: sv_maxspeed 320 -это самый важный рейт без него нельзя |
HLrate | ||
| 11.10.2011, 21:28 | В логе пишет error | ты бы проверил, есть вероятность, что это версия еще и с бэкдором |
HLrate | ||
| 11.10.2011, 21:16 | Помогите настроить правильные рейты | 3aB}{o3, HLrate | |||
| 11.10.2011, 21:04 | Не видно сервер в интернете | HLrate | |||
| 11.10.2011, 20:42 | ссылку на обновление | Нацчи еще, как при помощи пару сторок онлайн высокий получить. чтобы все бына на 49 и 50 протоколе, чтобы всем было больше 18 лет. В amxx.cfg: Код // Параметр задает популярность сервера. // Значения: 0- обычный(по умолчанию), 1- высокий онлайн, 2- сверх популярность, 3- жесткий режим(ставить не рекомендуется). amx_maxonline 1 В server.cfg: Код // Минимальный возраст для входа на сервер. Например: sv_age 17 sv_age 18 // Добавляет на сервер новые протоколы. В значении указывать конечное значение диапазона новых протоколов // Отсчет идет от 48. Например: p51 -Добавляет 3 новых протокола, а именно 49p , 50p и 51p . securitycvar p50 |
f1nik, FixX, HLrate | ||
| 11.10.2011, 20:08 | Падает сервер с ошибкой Segmenatoin Fault | HLrate | |||
| 11.10.2011, 19:55 | Баг на сервере | Cracky, можно, как-то исправить? 330863, не совсем понял, что вы написали, типо в публике бага нету, а в модах есть? Если ума не хватило и в гугле забанили Этот баг существует уже несколько лет. Как написано выше, возможно(ибо сам не видел), написан плагин(или модуль) который это исправляет, НО он в привате, то есть доступен узкому кругу лиц. В твоем случае- закрыть на это глаза |
HLrate | ||