|
Стаж: 11 лет
Сообщений: 4
Благодарностей: 1
Полезность: 0
|
Нужно,что бы не было двойного чата,у админа отображалось так:[Админ][Звание]Ник,цвет ника админа под цвет команды(Синий-КТ,Красный-Т),и команды типа /aranks,что бы можно было просмотреть лидеров по званиям,а так же сделать за убийство с ножа 3 очка опыта,за HS-2,обычное убийство-1. Буду очень благодарен.Поставлю спасибку. Вот код Colored: Код #include <amxmodx> #include <amxmisc>
#define PLUGIN "Colored Translit Config" #define VERSION "3.0" #define AUTHOR "Sho0ter"
#define INTCVARS 29 #define ACCESS_LEVEL ADMIN_RCON
#define CT_TRANSLIT 0 #define CT_LOG 1 #define CT_ADMIN_PREFIX 2 #define CT_NAME_COLOR 3 #define CT_CHAT_COLOR 4 #define CT_ALLCHAT 5 #define CT_LISTEN 6 #define CT_SOUNDS 7 #define CT_COUNTRY 8 #define CT_SWEAR 9 #define CT_SWEAR_WARNS 10 #define CT_SWEAR_IMMUN 11 #define CT_SWEAR_GAG 12 #define CT_SWEAR_GAG_TIME 13 #define CT_AUTO_RUS 14 #define CT_SHOW_INFO 15 #define CT_IGNORE 16 #define CT_IGNORE_MODE 17 #define CT_GAG_IMMUN 18 #define CT_FLOOD 19 #define CT_SPAM 20 #define CT_SPAM_IMMUN 21 #define CT_SPAM_WARNS 22 #define CT_SPAM_ACTION 23 #define CT_SPAM_TIME 24 #define CT_CHEAT 25 #define CT_CHEAT_IMMUN 26 #define CT_CHEAT_ACTION 27 #define CT_CHEAT_TIME 28
new sCvars[INTCVARS][] = { "amx_translit", "amx_translit_log", "amx_admin_prefix", "amx_name_color", "amx_chat_color", "amx_allchat", "amx_listen", "amx_ctsounds", "amx_country_chat", "amx_swear_filter", "amx_swear_warns", "amx_swear_immunity", "amx_swear_gag", "amx_swear_gag_time", "amx_auto_rus", "amx_show_info", "amx_ignore", "amx_ignore_mode", "amx_gag_immunity", "amx_flood_time", "amx_spam_filter", "amx_spam_immunity", "amx_spam_warns", "amx_spam_action", "amx_spam_time", "amx_cheat_filter", "amx_cheat_immunity", "amx_cheat_action", "amx_cheat_time" }
new cOnOff[2][] = { "CT_OFF", "CT_ON" }
new cChatColors[7][] = { "", "CT_COLOR_YELLOW", "CT_COLOR_GREEN", "CT_COLOR_GRAY", "CT_COLOR_BLUE", "CT_COLOR_RED", "CT_COLOR_TEAM" }
new cAllChat[3][] = { "CT_OFF", "CT_ON", "CT_ALLCHAT_ADMIN" }
new cCountry[4][] = { "CT_OFF", "CT_COUNTRY_FULL", "CT_COUNTRY_2", "CT_COUNTRY_3" }
new cAutoRus[3][] = { "CT_OFF", "CT_AUTO_RUS_CONNECT", "CT_AUTO_RUS_ALWAYS" }
new cIgnoreMode[4][] = { "", "CT_IGNORE_NO_TRANSLIT", "CT_IGNORE_HIDE", "CT_IGNORE_STATSX_SHELL" }
new cSpamAction[7][] = { "CT_OFF", "CT_SPAM_KICK", "CT_SPAM_GAG", "CT_SPAM_BAN_STEAMID", "CT_SPAM_BAN_IP", "CT_SPAM_BAN_STEAMID_AMXBANS", "CT_SPAM_BAN_IP_AMXBANS" }
new cCheatAction[7][] = { "CT_OFF", "CT_CHEAT_KICK", "CT_CHEAT_BAN_STEAMID", "CT_CHEAT_BAN_IP", "CT_CHEAT_BAN_STEAMID_AMXBANS", "CT_CHEAT_BAN_IP_AMXBANS", "CT_CHEAT_CUSTOM" }
new iLines[INTCVARS] new iCvars[INTCVARS]
new Edited[33] new Position[33]
public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_dictionary("colored_translit_config.txt") register_menucmd(register_menuid("Config Menu"), 1023, "action_configs_menu") register_concmd("colored_translit_config", "cmd_admin_menu", ACCESS_LEVEL) cache_lines() read_cvars() add_menu() return PLUGIN_CONTINUE }
public add_menu() { new mName[128] format(mName, charsmax(mName), "%L", LANG_SERVER, "CT_MENU_TITLE") AddMenuItem(mName, "colored_translit_config", ADMIN_RCON, PLUGIN) }
public write_cvars(id) { new cFile[128], sLine[32] get_configsdir(cFile, charsmax(cFile)) format(cFile, charsmax(cFile), "%s/colored_translit/config.cfg", cFile) for(new i; i < INTCVARS-1; i++) { format(sLine, charsmax(sLine), "%s ^"%d^"", sCvars[i], iCvars[i]) write_file(cFile, sLine, iLines[i]) } server_cmd("exec %s", cFile) server_exec() client_print(id, print_chat, "[%s] %L", PLUGIN, id, "CT_SAVED") return PLUGIN_CONTINUE }
public read_cvars() { for(new i; i < INTCVARS; i++) { iCvars[i] = get_cvar_num(sCvars[i]) } return PLUGIN_CONTINUE }
public cache_lines() { new cFile[128] get_configsdir(cFile, charsmax(cFile)) format(cFile, charsmax(cFile), "%s/colored_translit/config.cfg", cFile) if(!file_exists(cFile)) { new errMsg[128] format(errMsg, charsmax(errMsg), "Config file <%s> not found!", cFile) set_fail_state(errMsg) return PLUGIN_HANDLED } new Buffer[512], Len, Cached new AllLines = file_size(cFile, 1) while(Cached < INTCVARS-1) { for(new i; i <= AllLines; i++) { read_file(cFile, i, Buffer, charsmax(Buffer), Len) if(Buffer[0] == ';' || Buffer[0] == '/' || !strlen(Buffer)) { continue } if(containi(Buffer, sCvars[Cached]) == 0) { iLines[Cached] = i Cached++ i = AllLines } } } return PLUGIN_CONTINUE }
public cmd_admin_menu(id, level, cid) { if(!access(id, level)) { return PLUGIN_HANDLED } show_configs_menu(id, Position[id] = 1, 1) return PLUGIN_CONTINUE }
public show_configs_menu(id, position, firstopen) { if(firstopen) { read_cvars() Edited[id] = 0 } new Len, MenuBody[1024] new Keys = MENU_KEY_0 Len = format(MenuBody, charsmax(MenuBody), "\y%L\R\r%d/5^n^n", id, "CT_MENU_TITLE", position) switch(position) { case 1: { Keys |= (1 << 0) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r1. \w%L\R\y%L^n", id, "CT_MENU_TRANSLIT", id, cOnOff[iCvars[CT_TRANSLIT]]) Keys |= (1 << 1) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r2. \w%L\R\y%L^n", id, "CT_MENU_LOG", id, cOnOff[iCvars[CT_LOG]]) Keys |= (1 << 2) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r3. \w%L\R\y%L^n", id, "CT_MENU_ADMIN_PREFIX", id, cOnOff[iCvars[CT_ADMIN_PREFIX]]) Keys |= (1 << 3) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r4. \w%L\R\y%L^n", id, "CT_MENU_NAME_COLOR", id, cChatColors[iCvars[CT_NAME_COLOR]]) Keys |= (1 << 4) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r5. \w%L\R\y%L^n", id, "CT_MENU_CHAT_COLOR", id, cChatColors[iCvars[CT_CHAT_COLOR]]) Keys |= (1 << 5) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r6. \w%L\R\y%L^n", id, "CT_MENU_ALLCHAT", id, cAllChat[iCvars[CT_ALLCHAT]]) } case 2: { Keys |= (1 << 0) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r1. \w%L\R\y%L^n", id, "CT_MENU_LISTEN", id, cOnOff[iCvars[CT_LISTEN]]) Keys |= (1 << 1) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r2. \w%L\R\y%L^n", id, "CT_MENU_SOUNDS", id, cOnOff[iCvars[CT_SOUNDS]]) Keys |= (1 << 2) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r3. \w%L\R\y%L^n", id, "CT_MENU_COUNTRY", id, cCountry[iCvars[CT_COUNTRY]]) Keys |= (1 << 3) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r4. \w%L\R\y%L^n", id, "CT_MENU_SWEAR", id, cOnOff[iCvars[CT_SWEAR]]) Keys |= (1 << 4) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r5. \w%L\R\y%d^n", id, "CT_MENU_SWEAR_WARNS", iCvars[CT_SWEAR_WARNS]) Keys |= (1 << 5) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r6. \w%L\R\y%L^n", id, "CT_MENU_SWEAR_IMMUN", id, cOnOff[iCvars[CT_SWEAR_IMMUN]]) } case 3: { Keys |= (1 << 0) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r1. \w%L\R\y%L^n", id, "CT_MENU_SWEAR_GAG", id, cOnOff[iCvars[CT_SWEAR_GAG]]) Keys |= (1 << 1) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r2. \w%L\R\y%d %L^n", id, "CT_MENU_SWEAR_GAG_TIME", iCvars[CT_SWEAR_GAG_TIME], id, "CT_MIN") Keys |= (1 << 2) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r3. \w%L\R\y%L^n", id, "CT_MENU_AUTO_RUS", id, cAutoRus[iCvars[CT_AUTO_RUS]]) Keys |= (1 << 3) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r4. \w%L\R\y%L^n", id, "CT_MENU_SHOW_INFO", id, cOnOff[iCvars[CT_SHOW_INFO]]) Keys |= (1 << 4) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r5. \w%L\R\y%L^n", id, "CT_MENU_IGNORE", id, cOnOff[iCvars[CT_IGNORE]]) Keys |= (1 << 5) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r6. \w%L\R\y%L^n", id, "CT_MENU_IGNORE_MODE", id, cIgnoreMode[iCvars[CT_IGNORE_MODE]]) } case 4: { Keys |= (1 << 0) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r1. \w%L\R\y%L^n", id, "CT_MENU_GAG_IMMUN", id, cOnOff[iCvars[CT_GAG_IMMUN]]) Keys |= (1 << 1) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r2. \w%L\R\y%d %L^n", id, "CT_MENU_FLOOD", iCvars[CT_FLOOD], id, "CT_SEC") Keys |= (1 << 2) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r3. \w%L\R\y%L^n", id, "CT_MENU_SPAM", id, cOnOff[iCvars[CT_SPAM]]) Keys |= (1 << 3) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r4. \w%L\R\y%L^n", id, "CT_MENU_SPAM_IMMUN", id, cOnOff[iCvars[CT_SPAM_IMMUN]]) Keys |= (1 << 4) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r5. \w%L\R\y%d^n", id, "CT_MENU_SPAM_WARNS", iCvars[CT_SPAM_WARNS]) Keys |= (1 << 5) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r6. \w%L\R\y%L^n", id, "CT_MENU_SPAM_ACTION", id, cSpamAction[iCvars[CT_SPAM_ACTION]]) } case 5: { Keys |= (1 << 0) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r1. \w%L\R\y%d %L^n", id, "CT_MENU_SPAM_TIME", iCvars[CT_SPAM_TIME], id, "CT_MIN") Keys |= (1 << 1) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r2. \w%L\R\y%L^n", id, "CT_MENU_CHEAT", id, cOnOff[iCvars[CT_CHEAT]]) Keys |= (1 << 2) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r3. \w%L\R\y%L^n", id, "CT_MENU_CHEAT_IMMUN", id, cOnOff[iCvars[CT_CHEAT_IMMUN]]) Keys |= (1 << 3) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r4. \w%L\R\y%L^n", id, "CT_MENU_CHEAT_ACTION", id, cCheatAction[iCvars[CT_CHEAT_ACTION]]) Keys |= (1 << 4) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r5. \w%L\R\y%d %L^n", id, "CT_MENU_CHEAT_TIME", iCvars[CT_CHEAT_TIME], id, "CT_MIN") } } Keys |= (1 << 6) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "^n\r7. \w%L^n", id, "CT_MENU_CLEAR") if(Edited[id]) { Keys |= (1 << 7) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r8. \w%L \r*^n^n", id, "CT_MENU_SAVE") } else { Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r8. \d%L^n^n", id, "CT_MENU_SAVE") } if(position != 5) { Keys |= (1 << 8) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r9. \w%L^n", id, "CT_MENU_MORE") } else { Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r9. \d%L^n", id, "CT_MENU_MORE") } if(position != 1) { Keys |= (1 << 9) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r0. \w%L^n^n\y%s v%s by %s", id, "CT_MENU_BACK", PLUGIN, VERSION, AUTHOR) } else { Keys |= (1 << 9) Len += format(MenuBody[Len], charsmax(MenuBody) - Len, "\r0. \w%L^n^n\y%s v%s by %s", id, "CT_MENU_EXIT", PLUGIN, VERSION, AUTHOR) } show_menu(id, Keys, MenuBody, -1, "Config Menu") }
public action_configs_menu(id, key) { switch(key) { case 6: { show_configs_menu(id, Position[id], 1) return PLUGIN_HANDLED } case 7: { if(Edited[id]) { write_cvars(id) } Edited[id] = 0 show_configs_menu(id, Position[id], 0) return PLUGIN_HANDLED } case 8: { if(Position[id] != 5) { Position[id]++ show_configs_menu(id, Position[id], 0) } return PLUGIN_HANDLED } case 9: { if(Position[id] == 1) { return PLUGIN_HANDLED } Position[id]-- show_configs_menu(id, Position[id], 0) return PLUGIN_HANDLED } default: { new Choosed if(Position[id] == 1) { Choosed = Position[id] * key } else { Choosed = (Position[id] - 1) * 6 + key } iCvars[Choosed]++ if(Choosed == CT_NAME_COLOR || Choosed == CT_CHAT_COLOR) { if(iCvars[Choosed] >= 7) { iCvars[Choosed] = 1 } } else if(Choosed == CT_ALLCHAT || Choosed == CT_AUTO_RUS) { if(iCvars[Choosed] >= 3) { iCvars[Choosed] = 0 } } else if(Choosed == CT_COUNTRY) { if(iCvars[Choosed] >= 4) { iCvars[Choosed] = 0 } } else if(Choosed == CT_SWEAR_WARNS || Choosed == CT_SPAM_WARNS || Choosed == CT_SWEAR_GAG_TIME || Choosed == CT_FLOOD) { if(iCvars[Choosed] >= 31) { iCvars[Choosed] = 0 } } else if(Choosed == CT_CHEAT_TIME || Choosed == CT_SPAM_TIME) { if(iCvars[Choosed] < 30) { iCvars[Choosed] += 4 } else if(30 <= iCvars[Choosed] < 240) { iCvars[Choosed] += 29 } else if(240 <= iCvars[Choosed] < 1440) { iCvars[Choosed] += 59 } else if(1440 <= iCvars[Choosed] < 10080) { iCvars[Choosed] += 1439 } else if(10080 <= iCvars[Choosed] < 50000) { iCvars[Choosed] += 10079 } else { iCvars[Choosed] = 0 } } else if(Choosed == CT_IGNORE_MODE) { if(iCvars[Choosed] >= 4) { iCvars[Choosed] = 1 } } else if(Choosed == CT_SPAM_ACTION || Choosed == CT_CHEAT_ACTION) { if(iCvars[Choosed] >= 7) { iCvars[Choosed] = 0 } } else if(iCvars[Choosed] >= 2) { iCvars[Choosed] = 0 } Edited[id] = 1 show_configs_menu(id, Position[id], 0) } } return PLUGIN_HANDLED } Вот код Army: Код #include <amxmodx> #include <amxmisc> #include <colorchat> #include <fun> #include <cstrike> #include <nvault> #include <sqlx> // #define PLUGIN "Army Ranks" #define VERSION "1.2fix-3" #define AUTHOR "Arctic" #pragma tabsize 0 #define ADM_MENU ADMIN_IMMUNITY // menu access flag // new g_vault; new Handle:g_SqlTuple; new g_Error[512]; enum _:PlData { gId,gExp,gLevel,gTempKey }; new UserData[33][PlData]; new gMessage[256]; new g_MsgHud,MaxPlayers,levelUp[33],gSayText; new bool:restr_blocked; new const gRankNames[][] = { "I_0","I_1","I_2","I_3","I_4","I_5","I_6","I_7","I_8","I_9","I_10","I_11","I_12","I_13","I_14", "I_15","I_16","I_17","I_18","I_19","I_20" }; new const gLevels[] = { 0,15,30,60,100,180,350,750,999,1500,2200,2800,3200,3900,4500,5000,5500,6000 ,7000,8000 }; new const gNades[][] = { {0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}, {0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1}, {0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1} } new const restrict_bonus[][] = { "35hp", "most_wanted", "ka_wintershank" }; new gRestrictMaps,gAdminGMsg,gBonusLevel,gFlash,gSmoke,gHe,gHpbylevel,gApbylevel, gHideRadar,gArmyChat,gSaveType,gTableName,gHost,gUser,gPassword,gDbName,gSlash, gTk,gLostXpTk,gLevelUpmsg,gAllChat//,gDeleteNullRow; // public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR); register_cvar("army_ranks",VERSION, FCVAR_SERVER | FCVAR_SPONLY); set_cvar_string("army_ranks",VERSION); // gRestrictMaps = register_cvar( "restrict_maps", "0");// вкл запрет бонусов на карте. gBonusLevel = register_cvar( "level_bonus", "0");// вкл оружие при получении уровня. gFlash = register_cvar( "flash_nades", "0");// вкл бонуса флешек gSmoke = register_cvar( "smoke_nades", "1");// вкл бонуса дымовых gHe = register_cvar( "he_nades", "1");// вкл бонуса осколочных gHpbylevel = register_cvar( "hp_by_level", "3");// кол-во хп, которое дается за лвл, если = 0 - то выкл gApbylevel = register_cvar( "ap_by_level", "5");// кол-во брони, которое дается за лвл, если = 0 - то выкл gHideRadar = register_cvar( "hide_radar", "1");// скрывать радар у игрока gArmyChat = register_cvar( "army_chat", "1");// использовать чат плагина, то есть приставка в чате, цвет сообщ. для админа gAdminGMsg = register_cvar( "admin_color", "1");// 1 = сообщ.админа зеленое,0 = желтое, 2 = цвета команды gSaveType = register_cvar( "save_type", "0");// 0 - nvault, 1- mysql. gSlash = register_cvar( "slash_messages", "1");// не отображать команды со слэшем gTk = register_cvar( "team_kill_lost_xp", "1");// терять exp при тимкилле gLostXpTk = register_cvar( "lost_xp_val", "3");// кол-во теряемых exp при тк gLevelUpmsg = register_cvar( "level_up_msg", "1");// сообщение при лвл-апе игрока : 1- вкл (всем), 2 - только игроку gAllChat = register_cvar( "all_chat", "1");// 1 - чат для всех(метвые и живые), 0-живые не видят чат мертвых и наоборот // для mysql gHost = register_cvar( "mysql_host", "127.0.0.1"); // host gUser = register_cvar( "mysql_user", "root"); // username gPassword = register_cvar( "mysql_password", "qwerty"); // password gDbName = register_cvar( "mysql_db_name", "test"); // database name gTableName = register_cvar( "mysql_table_name", "army_ranks"); // название таблицы mysql // register_logevent( "EventRoundStart", 2, "1=Round_Start" ); set_task(1.0,"Info",_,_,_, "b") register_event( "DeathMsg","EventDeath","a"); register_message(get_user_msgid("SayText"), "msg_SayText"); gSayText = get_user_msgid ("SayText"); // g_MsgHud = CreateHudSyncObj(); MaxPlayers = get_maxplayers(); register_dictionary("army.txt" ); // if(get_pcvar_num(gRestrictMaps)) { new szMapName[64]; get_mapname(szMapName,63); for(new a = 0; a < sizeof restrict_bonus; a++) { if(equal(szMapName, restrict_bonus[a])) { restr_blocked = true; log_amx("[army ranks] weapon menu is blocked on map [%s].",restrict_bonus[a]); break; } else { restr_blocked = false; } } } // switch(get_pcvar_num(gSaveType)) { case 0: { g_vault = nvault_open("army_ranks"); } case 1: { set_task(0.1, "sql_init"); } default: { g_vault = nvault_open("army_ranks"); } } // if(get_pcvar_num(gArmyChat)) { register_clcmd("say", "hookSay") register_clcmd("say_team", "hookSayTeam"); } register_clcmd("amx_setlevel","set_level_menu"); } public plugin_cfg() { new szCfgDir[64], szFile[192]; get_configsdir(szCfgDir, charsmax(szCfgDir)); formatex(szFile,charsmax(szFile),"%s/army_ranks.cfg",szCfgDir); if(file_exists(szFile)) server_cmd("exec %s", szFile); }
public set_level_menu(id) { if(get_user_flags(id) & ADM_MENU) { UserData[id][gTempKey] = 0; new players[32], num; get_players(players, num) new tempname[32], info[10]; new players_menu = menu_create("Выберите игрока :", "set_level_hl") for(new i = 0; i < num; i++) { get_user_name(players[i], tempname, 31); num_to_str(players[i], info, 9); menu_additem(players_menu, tempname, info, 0); } menu_setprop(players_menu, MPROP_EXIT, MEXIT_ALL); menu_display(id, players_menu, 0); } return PLUGIN_CONTINUE } public set_level_hl(id, menu, item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], _access, callback; menu_item_getinfo( menu, item, _access, data, charsmax(data), _, _, callback); UserData[id][gTempKey] = str_to_num(data); set_level_pl(id); return PLUGIN_CONTINUE } public set_level_pl(id) { static szText[1024]; formatex(szText,charsmax(szText), "%L", id, "CHOOSE_RANKN"); new menu = menu_create( szText, "set_level_phl"); //====== for(new i = 1; i < sizeof(gRankNames); i++) { new szItem[100],lang[10],num[5]; format(lang,9,"I_%d",i); format(num,4,"%d",i); formatex(szItem,charsmax(szItem),"%L",id,lang); menu_additem(menu,szItem,num); } //====== menu_setprop(menu, MPROP_BACKNAME, "Назад "); menu_setprop(menu, MPROP_NEXTNAME, "Далее "); menu_setprop(menu, MPROP_EXITNAME, "Выход "); menu_display( id, menu,0); return PLUGIN_CONTINUE; } public set_level_phl(id,menu,item) { if(item == MENU_EXIT) { menu_destroy(menu); return PLUGIN_HANDLED; } new data[6], _access, callback; menu_item_getinfo( menu, item, _access, data, charsmax(data), _, _, callback); new level = str_to_num(data); if(UserData[id][gTempKey] >= 1 && UserData[id][gTempKey] <= 32) { UserData[UserData[id][gTempKey]][gLevel] = level; UserData[UserData[id][gTempKey]][gExp] = gLevels[level-1]; new szName[2][32]; get_user_name(id, szName[0], 31); get_user_name(UserData[id][gTempKey], szName[1], 31); ColorChat(0,NORMAL,"%s give %L level to %s.",szName[0],LANG_PLAYER,gRankNames[level],szName[1]) } else { set_level_menu(id); } UserData[id][gTempKey] = 0; return PLUGIN_HANDLED; }
// public sql_init() { new szTableName[64],szHost[64],szUser[64],szPassword[64],szDbName[64],ErrorCode; get_pcvar_string(gTableName,szTableName,63); get_pcvar_string(gHost,szHost,63); get_pcvar_string(gUser,szUser,63); get_pcvar_string(gPassword,szPassword,63); get_pcvar_string(gDbName,szDbName,63); g_SqlTuple = SQL_MakeDbTuple(szHost,szUser,szPassword,szDbName); new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511) if(SqlConnection == Empty_Handle) set_fail_state(g_Error);
new Handle:Queries = SQL_PrepareQuery(SqlConnection,"CREATE TABLE IF NOT EXISTS `%s`(`id` INT(10) NOT NULL AUTO_INCREMENT,`name` VARCHAR(32) NOT NULL,`exp` INT(10) NOT NULL,`level` INT(10) NOT NULL,PRIMARY KEY (id));", szTableName) if(!SQL_Execute(Queries)) { SQL_QueryError(Queries,g_Error,charsmax(g_Error)) set_fail_state(g_Error); } SQL_QueryAndIgnore(SqlConnection, "DELETE FROM %s WHERE exp=0 and level=1;",szTableName); // 24.10.12 SQL_FreeHandle(Queries) SQL_FreeHandle(SqlConnection); } // public plugin_end() { switch(get_pcvar_num(gSaveType)) { case 0: { nvault_close(g_vault); } case 1: { if(g_SqlTuple != Empty_Handle) SQL_FreeHandle(g_SqlTuple); } default: { nvault_close(g_vault); } } } // public client_putinserver(id) // путинсервер) { if(get_pcvar_num(gHideRadar)) client_cmd(id,"hideradar 1"); UserData[id] = UserData[0]; load_data(id); } // public client_disconnect(id) { save_usr(id); UserData[id] = UserData[0]; } // public check_level(id) { if(UserData[id][gLevel] <= 0) UserData[id][gLevel] = 1; if(UserData[id][gExp] < 0) UserData[id][gExp] = 0;
while(UserData[id][gExp] >= gLevels[UserData[id][gLevel]]) { UserData[id][gLevel]++; levelUp[id] = 1; switch(get_pcvar_num(gLevelUpmsg)) { case 1: { new szName[33]; get_user_name(id, szName, 32); static buffer[192],len; len = format(buffer, charsmax(buffer), "^4[^3Army Ranks^4]^1 %L ^4%s^1",LANG_PLAYER,"PLAYER",szName); len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL"); len += format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,gRankNames[UserData[id][gLevel]]); len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR"); ColorChat(0,NORMAL,buffer); } case 2: { new szName[33]; get_user_name(id, szName, 32); static buffer[192],len; len = format(buffer, charsmax(buffer), "^4[^3Army Ranks^4]^1 %L ^4%s^1",LANG_PLAYER,"PLAYER",szName); len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,"NEW_LEVEL"); len += format(buffer[len], charsmax(buffer) - len, " ^4%L^1.",LANG_PLAYER,gRankNames[UserData[id][gLevel]]); len += format(buffer[len], charsmax(buffer) - len, "%L",LANG_PLAYER,"CONTR"); ColorChat(id,NORMAL,buffer); } } } } public EventDeath() { new iKiller = read_data(1); new iVictim = read_data(2); new head = read_data(3); if(iKiller != iVictim && is_user_connected(iKiller) && is_user_connected(iVictim) && UserData[iKiller][gLevel] <= 19) { // if tk? if(get_pcvar_num(gTk) && get_user_team(iKiller) == get_user_team(iVictim)) { UserData[iKiller][gExp] -= get_pcvar_num(gLostXpTk); return PLUGIN_CONTINUE; } new weapon = get_user_weapon(iKiller); UserData[iKiller][gExp] += 1; if(weapon == CSW_KNIFE) UserData[iKiller][gExp] += 3; if(head) UserData[iKiller][gExp] += 2;
if(weapon == CSW_HEGRENADE) UserData[iKiller][gExp] += 1;
check_level(iKiller); } return PLUGIN_CONTINUE; } public EventRoundStart() { for(new id = 1; id <= MaxPlayers; id++) { if(is_user_alive(id) && is_user_connected(id)) { if(restr_blocked) return PLUGIN_CONTINUE; if(get_pcvar_num(gFlash) && gNades[0][UserData[id][gLevel]]) give_item(id,"weapon_flashbang"); if(get_pcvar_num(gSmoke) && gNades[1][UserData[id][gLevel]]) give_item(id,"weapon_smokegrenade"); if(get_pcvar_num(gHe) && gNades[2][UserData[id][gLevel]]) give_item(id,"weapon_hegrenade"); if(get_pcvar_num(gHpbylevel) != 0) set_user_health(id,get_user_health(id)+get_pcvar_num(gHpbylevel)*UserData[id][gLevel]); if(get_pcvar_num(gApbylevel) != 0) set_user_armor(id,get_user_armor(id)+get_pcvar_num(gApbylevel)*UserData[id][gLevel]); if(levelUp[id] == 1 && get_pcvar_num(gBonusLevel)) { GetWeapon(id); levelUp[id] = 0; } } } return PLUGIN_CONTINUE; } ////////// save public load_data(id) { new szName[33]; get_user_name(id,szName,32); switch(get_pcvar_num(gSaveType)) { case 0: { static data[256], timestamp; if(nvault_lookup(g_vault, szName, data, sizeof(data) - 1, timestamp) ) { next_load_data(id, data, sizeof(data) - 1); return; } else { register_player(id,""); } } case 1: { new szTableName[32],ErrorCode; new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511) SQL_QuoteString(SqlConnection, szName, 32, szName); get_pcvar_string(gTableName,szTableName,31); if(SqlConnection == Empty_Handle) { log_amx(g_Error); return; } new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT id FROM %s WHERE name = '%s';",szTableName,szName) if(!SQL_Execute(Query)) { SQL_QueryError(Query,g_Error,511); log_amx(g_Error); return; } if(SQL_NumResults(Query) > 0 ) { next_load_data(id, "", 0); } else { register_player(id,""); } SQL_FreeHandle(Query); SQL_FreeHandle(SqlConnection); } default: { static data[256], timestamp; if(nvault_lookup(g_vault, szName, data, sizeof(data) - 1, timestamp) ) { next_load_data(id, data, sizeof(data) - 1); return; } else { register_player(id,""); } } } } public next_load_data(id,data[],len) { new szName[33]; get_user_name(id,szName,32); switch(get_pcvar_num(gSaveType)) { case 0: { replace_all(data,len,"|"," "); new exp[5],level[5]; parse(data,exp,4,level,4); UserData[id][gExp]= str_to_num(exp); UserData[id][gLevel]= str_to_num(level); } case 1: { new szTableName[32],ErrorCode; new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511) SQL_QuoteString(SqlConnection, szName, 32, szName); get_pcvar_string(gTableName,szTableName,31); if(SqlConnection == Empty_Handle) { log_amx(g_Error); return; } new Handle:Query = SQL_PrepareQuery(SqlConnection,"SELECT id,exp,level FROM %s WHERE name = '%s';",szTableName,szName) if(!SQL_Execute(Query)) { SQL_QueryError(Query,g_Error,511) log_amx(g_Error) } if( SQL_NumResults(Query) > 0) { UserData[id][gId]= SQL_ReadResult(Query,0); UserData[id][gExp]= SQL_ReadResult(Query,1); UserData[id][gLevel]= SQL_ReadResult(Query,2); } SQL_FreeHandle(Query); SQL_FreeHandle(SqlConnection); } default: { replace_all(data,len,"|"," "); new exp[5],level[5]; parse(data,exp,4,level,4); UserData[id][gExp]= str_to_num(exp); UserData[id][gLevel]= str_to_num(level); } } // mini-check lvl_up if(UserData[id][gLevel] <= 0) UserData[id][gLevel] = 1;
while(UserData[id][gExp] >= gLevels[UserData[id][gLevel]]) UserData[id][gLevel]++; } public register_player(id,data[]) { new szName[33]; get_user_name(id,szName,32); switch(get_pcvar_num(gSaveType)) { case 0: { UserData[id][gExp]= 0 UserData[id][gLevel]= 1; } case 1: { new szTableName[32],ErrorCode; new Handle:SqlConnection = SQL_Connect(g_SqlTuple,ErrorCode,g_Error,511) SQL_QuoteString(SqlConnection, szName, 32, szName); get_pcvar_string(gTableName,szTableName,31); if(SqlConnection == Empty_Handle) { log_amx(g_Error); return; } new Handle:Query = SQL_PrepareQuery(SqlConnection,"INSERT INTO %s (`id`,`name`,`exp`,`level`) VALUES (NULL,'%s','0','1');",szTableName,szName); if(!SQL_Execute(Query)) { SQL_QueryError(Query,g_Error,511) log_amx(g_Error) } SQL_FreeHandle(Query); SQL_FreeHandle(SqlConnection); UserData[id][gExp] = 0; UserData[id][gLevel] = 1; } default: { UserData[id][gExp]= 0 UserData[id][gLevel]= 1; } } } public save_usr(id) { new szName[33]; get_user_name(id,szName,32); switch(get_pcvar_num(gSaveType)) { case 0: { static data[256]; formatex(data, 255, "|%i|%i|", UserData[id][gExp],UserData[id][gLevel]); nvault_set(g_vault, szName, data); } case 1: { new saveq[256],szTableName[32]; get_pcvar_string(gTableName,szTableName,31); format(saveq,255,"UPDATE `%s` SET `exp`='%d',`level`='%d' WHERE `id`='%d';", szTableName,UserData[id][gExp],UserData[id][gLevel],UserData[id][gId]) SQL_ThreadQuery(g_SqlTuple,"QueryHandler",saveq); } default: { static data[256]; formatex(data, 255, "|%i|%i|", UserData[id][gExp],UserData[id][gLevel]); nvault_set(g_vault, szName, data); } } } ///////// chat event public hookSay(id) { if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id)) return PLUGIN_CONTINUE;
new message[192],Len; read_args(message, 191); remove_quotes(message); if(is_admin_msg(message)) return PLUGIN_CONTINUE; if(is_empty_message(message)) { ColorChat(id,NORMAL,"^4[^3Army Ranks^4]^1 %L",LANG_PLAYER,"EMPTY_MSG") return PLUGIN_HANDLED } if(get_pcvar_num(gSlash)) { if(is_has_slash(message)) return PLUGIN_HANDLED_MAIN } new szName[32]; get_user_name(id,szName,31); if(is_user_admin(id)) { Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3%L^4] ",LANG_PLAYER,gRankNames[UserData[id][gLevel]]); switch(get_pcvar_num(gAdminGMsg)) { case 1: { Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName); Len += format(gMessage[Len], charsmax(gMessage) - 1, "%s",message); } case 2: { Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName); Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s",message); } default: { Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName); Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message); } } Chat(id,0,get_pcvar_num(gAllChat)); } else { Len = format(gMessage[Len], charsmax(gMessage) - 1, "^4[^3%L^4] ",LANG_PLAYER,gRankNames[UserData[id][gLevel]]); Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName); Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message); Chat(id,0,get_pcvar_num(gAllChat)); } return PLUGIN_HANDLED_MAIN } public hookSayTeam(id) { if(is_user_hltv(id) || is_user_bot(id) || !is_user_connected(id)) return PLUGIN_CONTINUE;
new message[192],Len; read_args(message, 191); remove_quotes(message); if(is_admin_msg(message)) return PLUGIN_CONTINUE; if(is_empty_message(message)) { ColorChat(id,NORMAL,"^4[^3Army Ranks^4]^1 %L",LANG_PLAYER,"EMPTY_MSG"); return PLUGIN_HANDLED } if(get_pcvar_num(gSlash)) { if(is_has_slash(message)) return PLUGIN_HANDLED_MAIN } new szName[32]; get_user_name(id,szName,31); if(is_user_admin(id)) { Len = format(gMessage[Len], charsmax(gMessage) - 1, "^3%L^1 ^4[^3%L^4] ^3%s^4 : ",LANG_PLAYER,"SEND_TEAM",LANG_PLAYER,gRankNames[UserData[id][gLevel]],szName); switch(get_pcvar_num(gAdminGMsg)) { case 1: { Len += format(gMessage[Len], charsmax(gMessage) - 1, "%s",message); } case 2: { Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s",message); } default: { Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message); } } Chat(id,1,get_pcvar_num(gAllChat)); } else { Len = format(gMessage[Len], charsmax(gMessage) - 1, "^3%L^1 ^4[^3%L^4] ",LANG_PLAYER,"SEND_TEAM",LANG_PLAYER,gRankNames[UserData[id][gLevel]]); Len += format(gMessage[Len], charsmax(gMessage) - 1, "^3%s^4 : ",szName); Len += format(gMessage[Len], charsmax(gMessage) - 1, "^1%s",message); Chat(id,1,get_pcvar_num(gAllChat)); } return PLUGIN_HANDLED_MAIN } stock is_admin_msg(const Message[]) { if(Message[0] == '@') return true; return false; } stock is_empty_message(const Message[]) { if(equal(Message, "") || !strlen(Message)) return true; return false; } stock Chat(id,team,chat_type) { if(team) { if(chat_type) { for(new i = 1; i <= MaxPlayers; i++) { if(!is_user_connected(i)) continue if(get_user_team(id) == get_user_team(i)) send_message(gMessage, id, i); } } else { if(is_user_alive(id)) { for(new i = 1; i <= MaxPlayers; i++) { if(!is_user_connected(i) || !is_user_alive(i)) continue if(get_user_team(id) == get_user_team(i)) send_message(gMessage, id, i); } } else if(!is_user_alive(id)){ for(new i = 1; i <= MaxPlayers; i++) { if(!is_user_connected(i) || is_user_alive(i)) continue if(get_user_team(id) == get_user_team(i)) send_message(gMessage, id, i); } } } } else{ if(chat_type) { for(new i = 1; i <= MaxPlayers; i++) { if(!is_user_connected(i)) continue send_message(gMessage, id, i); } } else { if(is_user_alive(id)) { for(new i = 1; i <= MaxPlayers; i++) { if(!is_user_connected(i) || !is_user_alive(i)) continue send_message(gMessage, id, i); } } else if(!is_user_alive(id)){ for(new i = 1; i <= MaxPlayers; i++) { if(!is_user_connected(i) || is_user_alive(i)) continue send_message(gMessage, id, i); } } } } } stock send_message(const message[], const id, const i) { message_begin(MSG_ONE, gSayText, {0, 0, 0}, i) write_byte(id) write_string(message) message_end() } stock is_has_slash(const Message[]) { if(Message[0] == '/') return true; return false; }
public client_infochanged(id) { new newname[32],oldname[32] get_user_info(id, "name", newname,31) get_user_name(id,oldname,31) if(!is_user_connected(id) || is_user_bot(id)) return PLUGIN_CONTINUE if(!equali(newname, oldname)) { set_user_info(id,"name",oldname); log_amx("namechange BLOCKED."); return PLUGIN_HANDLED } return PLUGIN_CONTINUE } public msg_SayText() { new arg[32] get_msg_arg_string(2, arg, 31) if(containi(arg,"name")!=-1) return PLUGIN_HANDLED
return PLUGIN_CONTINUE } /////////// natives public plugin_natives() { register_native("get_user_exp", "native_get_user_exp", 1); register_native("get_user_lvl", "native_get_user_lvl", 1); register_native("set_user_exp", "native_set_user_exp", 1); register_native("set_user_lvl", "native_set_user_lvl", 1); register_native("get_user_rankname", "native_get_user_rankname", 1); } public native_set_user_exp(id,num) { UserData[id][gExp] = num; } public native_set_user_lvl(id,num) { UserData[id][gLevel] = num; } public native_get_user_exp(id) { return UserData[id][gExp]; } public native_get_user_lvl(id) { return UserData[id][gLevel]; } public native_get_user_rankname(id) { static szRankName[64]; format(szRankName, charsmax(szRankName), "%L",LANG_PLAYER,gRankNames[UserData[id][gLevel]]); return szRankName; } //////// informer public Info() { for(new id = 1; id <= MaxPlayers; id++) { if(!is_user_bot(id) && is_user_connected(id)) { if(get_pcvar_num(gHideRadar)) set_hudmessage(100, 100, 100, 0.01, 0.01, 0, 1.0, 1.0, _, _, -1); else set_hudmessage(100, 100, 100, 0.01, 0.13, 0, 1.0, 1.0, _, _, -1) static buffer[192], len; len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,"ZVANIE"); len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,gRankNames[UserData[id][gLevel]]); if(UserData[id][gLevel] <= 19) { len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_XP",UserData[id][gExp],gLevels[UserData[id][gLevel]]); } else { len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX"); } ShowSyncHudMsg(id, g_MsgHud, "%s", buffer); } } return PLUGIN_CONTINUE } /////// weap menu per lvl public GetWeapon(id) { new szText[700 char]; formatex( szText, charsmax( szText ), "%L", id, "GW_TITLE"); new menu = menu_create( szText, "gw_menu" ); // formatex( szText, charsmax( szText ), "awp"); menu_additem( menu, szText, "1", 0 ); // formatex( szText, charsmax( szText ), "ak-47"); menu_additem( menu, szText, "2", 0 ); // formatex( szText, charsmax( szText ), "m4a1"); menu_additem( menu, szText, "3", 0 ); // formatex( szText, charsmax( szText ), "famas"); menu_additem( menu, szText, "4", 0 ); // menu_setprop( menu, MPROP_EXIT, MEXIT_ALL ); menu_display( id, menu,0); return PLUGIN_CONTINUE; } public gw_menu(id,menu,item) { if( item == MENU_EXIT ) { return PLUGIN_HANDLED; } new data[ 6 ], iName[ 64 ], access, callback; menu_item_getinfo( menu, item, access, data, charsmax( data ), iName, charsmax( iName ), callback ); new key = str_to_num( data ); switch( key ) { case 1: { give_item(id,"weapon_awp"); cs_set_user_bpammo( id, CSW_AWP, 100); } case 2: { give_item(id,"weapon_ak47"); cs_set_user_bpammo( id, CSW_AK47, 200); } case 3: { give_item(id,"weapon_m4a1"); cs_set_user_bpammo( id, CSW_M4A1, 200); } case 4: { give_item(id,"weapon_famas"); cs_set_user_bpammo( id, CSW_FAMAS, 200); } } return PLUGIN_HANDLED; } public QueryHandler(FailState,Handle:Query,Error[],Errcode,Data[],DataSize) { switch(FailState) { case -2: log_amx("[Army Ranks] Failed to connect (%d): %s", Errcode, Error); case -1: log_amx("[Army Ranks] (%d): %s", Errcode, Error); } return PLUGIN_HANDLED } Или найдите мне,что бы Army не конфликтовало с Colored Translit и,что бы соответствовало требованиям написанным в самом верху.
Отредактировал: HaFToT, - 28.8.2014, 21:46
|