Vietos pakeitimas
Posted: 2015 Jul 25 13:40
Gal galetumete padaryti kad butu virs hp rangai sitie ir eilute tuokios spalvos
Nepagailesiu karmos
Code: Select all
000100255
Code: Select all
#include <amxmodx>#include <amxmisc>#include <cstrike>#include <csstats>#include <fakemeta>#include <fun> //#define STATUS_VALUE // Показывать звание игрока при наведении прицела (Выключено по умолчанию)#define PREFIX // Включить префиксы Админа и Випа (Включено по умолчанию, закомментируйте если хотите выключить)#define HUD_UPD 10.0 // Через сколько секунд обновлять информер (по умолчанию стоит 10 секунд), если значение меньше, то соответственно нагрузка больше #if defined PREFIX#define ADMIN_PREFIX ADMIN_BAN // Флаг для префикса админа (по умолчанию флаг d)#define VIP_PREFIX ADMIN_LEVEL_H // Флаг для префикса випа (по умолчанию флаг t)#endif new szMessage[191]new iPlayerRus[33], iPlayerRusInfo[33] #define PLUGIN "Lite Rank System"#define VERSION "2.2b"#define AUTHOR "xoymiii" #define TASKID_INFO 7777 new round_countnew PlayerXP[33], PlayerLevel[33], g_MsgHud, levelUp[33]#if defined STATUS_VALUEnew g_MsgHud2#endifnew g_XPvalue, g_XPheadshot, g_Bomb, g_XPc4def, g_XPc4pl, g_MinPlayersnew g_Levels, bonus, g_Smoke, g_Flash, g_He, g_Armor, g_Bonus_Smoke, g_Bonus_Flash, g_Bonus_Flash2, g_Bonus_He, g_Bonus_Armor, g_Money, g_Bonus_Money, g_Lvl_Money, g_Block_Mapnew Array:g_array_block_bonusnew bool:bonus_blockednew LEVELS[31]new const CLASSES[][] = { "I_1", "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", "I_21", "I_22", "I_23", "I_24", "I_25", "I_26", "I_27", "I_28", "I_29", "I_30" }new const eng[][]={"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","{","}",":",'"',"<",">","~","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","[","]",";","'",",",".","`","?","/","@","$","^^","&"}new const rus[][]={"Ф","И","С","В","У","А","П","Р","Ш","О","Л","Д","Ь","Т","Щ","З","Й","К","Ы","Е","Г","М","Ц","Ч","Н","Я","Х","Ъ","ж","Э","Б","Ю","Ё","ф","и","с","в","у","а","п","р","ш","о","л","д","ь","т","щ","з","й","к","ы","е","г","м","ц","ч","н","я","х","ъ","ж","э","б","ю","ё",",",".","'",";", ":","?"} enum _:CVARS {g1,g2,g3,g4,g5,g6,g7,g8,g9,g10,g11,g12,g13,g14,g15,g16,g17,g18,g19,g20}new pcv[CVARS]new g_oldrank[33], maxrank public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_dictionary("Lite_Rank_System.txt" ) register_event("DeathMsg", "EventDeath", "a", "1>0") register_event("HLTV", "RoundStart", "a", "1=0", "2=0") register_event("TextMsg","RoundRestart","a","2&#Game_w") set_task(HUD_UPD, "Info", TASKID_INFO, "", 0, "b") g_MsgHud = CreateHudSyncObj() #if defined STATUS_VALUE register_event("StatusValue", "StatusValueShow", "be", "1=2", "2!0") register_event("StatusValue", "StatusValueHide", "be", "1=1", "2=0") g_MsgHud2 = CreateHudSyncObj() #endif g_array_block_bonus = ArrayCreate(32, 1) g_XPvalue = register_cvar("lrs_xp_value", "1") g_Bomb = register_cvar("lrs_bomb", "1") g_MinPlayers = register_cvar("lrs_min_players", "3") g_XPc4def = register_cvar("lrs_xp_c4def", "3") g_XPc4pl = register_cvar("lrs_xp_c4pl", "3") g_XPheadshot = register_cvar("lrs_xp_hs", "1") g_Levels = register_cvar("lrs_levels", "0 10 20 30 50 100 150 200 250 300 350 400 500 600 700 800 1000 1200 1500 2000 2500 3000 3500 4000 4500 5000 5500 6000 6500 7000") bonus = register_cvar("lrs_bonus", "1") g_Block_Map = register_cvar("lrs_block_map", "1") g_Smoke = register_cvar("lrs_smoke", "1") g_Flash = register_cvar("lrs_flash", "1") g_He = register_cvar("lrs_he", "1") g_Armor = register_cvar("lrs_armor", "1") g_Money = register_cvar("lrs_money", "1") g_Bonus_Smoke = register_cvar("lrs_b_smoke", "10") g_Bonus_Flash = register_cvar("lrs_b_flash", "15") g_Bonus_Flash2 = register_cvar("lrs_b_flash2", "17") g_Bonus_He = register_cvar("lrs_b_he", "20") g_Bonus_Armor = register_cvar("lrs_b_armor", "22") g_Lvl_Money = register_cvar("lrs_lvl_money", "25") g_Bonus_Money = register_cvar("lrs_b_money", "1000") register_concmd("lrs_lockmap", "MapConst", ADMIN_RCON, "Lock Map. <map>") new const szRegisterClmd[][] = { "say /rus", "LangRus", "say /eng", "LangEng", "say", "Say", "say_team", "SayTeam" } for(new a; a < sizeof szRegisterClmd; a += 2) register_clcmd(szRegisterClmd[a],szRegisterClmd[a + 1])} public plugin_cfg(){ new configsDir[64] get_localinfo("amxx_configsdir", configsDir, 63) server_cmd("exec %s/Lite_Rank_System.cfg", configsDir) pcv[g1] = get_pcvar_num(g_XPvalue) pcv[g2] = get_pcvar_num(g_Bomb) pcv[g3] = get_pcvar_num(g_MinPlayers) pcv[g4] = get_pcvar_num(g_XPc4def) pcv[g5] = get_pcvar_num(g_XPc4pl) pcv[g6] = get_pcvar_num(g_XPheadshot) pcv[g7] = get_pcvar_num(bonus) pcv[g8] = get_pcvar_num(g_Block_Map) pcv[g9] = get_pcvar_num(g_Smoke) pcv[g10] = get_pcvar_num(g_Flash) pcv[g11] = get_pcvar_num(g_He) pcv[g12] = get_pcvar_num(g_Armor) pcv[g13] = get_pcvar_num(g_Money) pcv[g14] = get_pcvar_num(g_Bonus_Smoke) pcv[g15] = get_pcvar_num(g_Bonus_Flash) pcv[g16] = get_pcvar_num(g_Bonus_Flash2) pcv[g17] = get_pcvar_num(g_Bonus_He) pcv[g18] = get_pcvar_num(g_Bonus_Armor) pcv[g19] = get_pcvar_num(g_Lvl_Money) pcv[g20] = get_pcvar_num(g_Bonus_Money) BlockMapBonus() LoadSettings()} ///////////////// BLOCK MAP BONUS /////////////////////public BlockMapBonus() { if(pcv[g8]) { new Map[32] new block_bonus[32] get_mapname(Map, 31) for(new i = 0; i < ArraySize(g_array_block_bonus); i++) { ArrayGetString(g_array_block_bonus, i, block_bonus, 31) if(equal(Map, block_bonus)) { bonus_blocked = true break } else bonus_blocked = false } }} public MapConst(id, level, cid){ if(!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED new arg[32] read_argv(1, arg, 31) ArrayPushString(g_array_block_bonus, arg) return PLUGIN_HANDLED}/////////////////////////////////////////////////////////////////// /////////////////// CHAT /////////////////////public LangRus(id){ if(!iPlayerRus[id]) { iPlayerRus[id] = true PrintMsg(id, 0, "^4Русский ^1чат активирован!") } else PrintMsg(id, 0, "^3Русский ^1чат уже активирован!")} public LangEng(id){ if(iPlayerRus[id]) { iPlayerRus[id] = false PrintMsg(id, 0, "^4Английский ^1чат активирован!") } else PrintMsg(id, 0, "^3Английский ^1чат уже активирован!")} public Say(id) return SayHandler(id, false) public SayTeam(id) return SayHandler(id, true) public SayHandler(id, bool:is_say_team){ read_args(szMessage, charsmax(szMessage)) remove_quotes(szMessage) if(!szMessage[0] || szMessage[0] == '/') return PLUGIN_HANDLED_MAIN replace_all2(szMessage, charsmax(szMessage), "%", "") if(!iPlayerRusInfo[id]) { if(!iPlayerRus[id]) { iPlayerRusInfo[id] = true PrintMsg(id, 0, "^1У Вас есть возможность писать ^3по-русски. ^1Наберите ^4/rus ^1или ^4/eng ^1для переключения.") } } if(iPlayerRus[id]) { for(new i; i < sizeof eng; i++) replace_all2(szMessage, charsmax(szMessage), eng[i], rus[i]) } new szFormatedMsg[191], szLen, szName[32], iAlive = is_user_alive(id), iTeam = get_pdata_int(id, 114) get_user_name(id, szName, charsmax(szName)) if(is_say_team) { switch(iTeam) { case 1: szLen = formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "%s(Команде) ", iAlive ? "^1" : "^1*УБИТ* ") case 2: szLen = formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "%s(Команде) ", iAlive ? "^1" : "^1*УБИТ* ") case 3: szLen = formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^1(Наблюдатель) ") } } else { if(iTeam == 3) szLen = formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg), "^1(Наблюдатель) ") else szLen = formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "%s", iAlive ? "^1" : "^1*УБИТ* ") } #if defined PREFIX new iFlags = get_user_flags(id) if(iFlags & ADMIN_PREFIX) szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "%L [^3%L^1] ^3%s^1 :^4 ", LANG_PLAYER, "ADMIN", LANG_PLAYER, CLASSES[PlayerLevel[id]], szName) else if(iFlags & VIP_PREFIX) szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "%L [^3%L^1] ^3%s^1 : ", LANG_PLAYER, "VIP", LANG_PLAYER, CLASSES[PlayerLevel[id]], szName) else szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "[^3%L^1] ^3%s^1 : ", LANG_PLAYER, CLASSES[PlayerLevel[id]], szName) #else szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "[^3%L^1] ^3%s^1 : ", LANG_PLAYER, CLASSES[PlayerLevel[id]], szName) #endif szLen += formatex(szFormatedMsg[szLen], charsmax(szFormatedMsg) - szLen, "%s", szMessage) static players[32], pcount; get_players(players, pcount, "c") if(is_say_team) { for(new i; i < pcount; i++) if(get_user_flags(players[i]) & ADMIN_BAN || (iTeam == get_user_team(players[i]) && iAlive == is_user_alive(players[i]))) PrintMsg(players[i], id, szFormatedMsg) } else { for(new i; i < pcount; i++) PrintMsg(players[i], id, szFormatedMsg) } return PLUGIN_HANDLED} stock PrintMsg(const iReceiver, const iSender, const szMessage[], any:...){ new szMsg[191] vformat(szMsg, charsmax(szMsg), szMessage, 4) message_begin(MSG_ONE_UNRELIABLE, 76, _, iReceiver) write_byte(iSender ? iSender : iReceiver) write_string(szMsg) message_end()} stock replace_all2(string[], len, const what[], const with[]){ new pos if((pos = contain(string, what)) == -1) return 0 new total, with_len = strlen(with), diff = strlen(what) - with_len, total_len = strlen(string), temp_pos while(total_len + with_len < len && replace(string[pos], len - pos, what, with) != 0) { total++ pos += with_len total_len -= diff if (pos >= total_len) break temp_pos = contain(string[pos], what) if (temp_pos == -1) break pos += temp_pos } return total}///////////////////////////////////////////////////////////////////////////// /////////////////////// RANK, LEVEL i td... //////////////////// public LoadSettings() { new i, cvLevels[256], LVL[31][16] get_pcvar_string(g_Levels, cvLevels, 255) trim(cvLevels) parse(cvLevels, LVL[0], 15, LVL[1], 15, LVL[2], 15, LVL[3], 15, LVL[4], 15, LVL[5], 15, LVL[6], 15, LVL[7], 15, LVL[8], 15, LVL[9], 15, LVL[10], 15, LVL[11], 15, LVL[12], 15, LVL[13], 15, LVL[14], 15, LVL[15], 15, LVL[16], 15, LVL[17], 15, LVL[18], 15, LVL[19], 15, LVL[20], 15, LVL[21], 15, LVL[22], 15, LVL[23], 15, LVL[24], 15, LVL[25], 15, LVL[26], 15, LVL[27], 15, LVL[28], 15, LVL[29], 15, LVL[30], 15) for (i = 0; i < 30; i++) LEVELS[i+1] = str_to_num(LVL[i]) return PLUGIN_HANDLED} public checkLvl(id) { new Name[32] get_user_name(id, Name, 31) if(id > 0 && id < 33) { if (PlayerLevel[id] <= 0) PlayerLevel[id] = 1 if (PlayerLevel[id] < 30) { while(PlayerXP[id] >= LEVELS[PlayerLevel[id]+1]) { PlayerLevel[id]++ levelUp[id] = 1 ChatColor(0, "%L %L", LANG_PLAYER,"LRS_TAG", LANG_PLAYER,"NEW_LEVEL", Name, LANG_PLAYER,CLASSES[PlayerLevel[id]]) } } } } public EventDeath() { new iKiller = read_data(1) new iVictim = read_data(2) if(iKiller != iVictim && get_pdata_int(iKiller, 114) != get_pdata_int(iVictim, 114) && is_user_connected(iKiller) && PlayerLevel[iKiller] < 30) { if (pcv[g6]) { if(read_data(3)) PlayerXP[iKiller] += pcv[g1] * 2 else PlayerXP[iKiller] += pcv[g1] } else PlayerXP[iKiller] += pcv[g1] checkLvl(iKiller) } return PLUGIN_CONTINUE} public bomb_explode(id){ if(pcv[g5] < 1 || pcv[g2] != 1) return if(get_playersnum() <= pcv[g3]) { ChatColor(id, "%L", LANG_PLAYER,"MIN_PLAYERS") } else { PlayerXP[id] += pcv[g5] }} public bomb_defused(id) { if(pcv[g4] < 1 || pcv[g2] != 1) return if(get_playersnum() <= pcv[g3]) { ChatColor(id, "%L", LANG_PLAYER,"MIN_PLAYERS") } else { PlayerXP[id] += pcv[g4] }} public client_putinserver(id) set_task(1.0, "load_client_data", id) public load_client_data(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED new stats[8], bodyhits[8], stats2[4] get_user_stats(id, stats, bodyhits) if (pcv[g4]) get_user_stats2(id, stats2) if (pcv[g6]) PlayerXP[id] = ((stats[2]*2 + (stats[0] - stats[2])) + (stats2[1]*3 + stats2[3]*3)) * pcv[g1] else PlayerXP[id] = (stats2[1]*3 + stats2[3]*3 + stats[0]) * pcv[g1] for(new i = 1; i <= 30; i++) { if (i < 30) { if (PlayerXP[id] >= LEVELS[i] && PlayerXP[id] < LEVELS[i+1]) PlayerLevel[id] = i } else { if (PlayerXP[id] >= LEVELS[30]) PlayerLevel[id] = 30 } } return PLUGIN_HANDLED}/////////////////////////////////////////////////////////////////////////// #if defined STATUS_VALUEpublic StatusValueShow(id){ new name[32], pid = read_data(2) get_user_name(pid, name, 31) if(get_pdata_int(id, 114) == get_pdata_int(pid, 114)) { set_hudmessage(255, 127, 0, -1.0, 0.6, 1, 0.01, 3.0, 0.01, 0.01, -1) ShowSyncHudMsg(id, g_MsgHud2, "Ник: %s ^n%L: %L", name, LANG_PLAYER, "ZVANIE", LANG_PLAYER, CLASSES[PlayerLevel[pid]]) }} public StatusValueHide(id) ClearSyncHud(id, g_MsgHud2)#endif /////////////////// BONUS //////////////////public RoundRestart(id) round_count = 1 public RoundStart(){ round_count++ maxrank = get_statsnum() if(!pcv[g7] || bonus_blocked) return static Players[32], Count new id, Money get_players(Players, Count, "ach") for(new i = 0; i < Count; i++) { id = Players[i] Money = cs_get_user_money(id) if(round_count > 2) { if(pcv[g9] && PlayerLevel[id] >= pcv[g14]) give_item(id,"weapon_smokegrenade") if(pcv[g10] && PlayerLevel[id] >= pcv[g15]) give_item(id,"weapon_flashbang") if(pcv[g10] && PlayerLevel[id] >= pcv[g16]) give_item(id,"weapon_flashbang") if(pcv[g11] && PlayerLevel[id] >= pcv[g17]) give_item(id,"weapon_hegrenade") if(pcv[g12] && PlayerLevel[id] >= pcv[g18]) cs_set_user_armor(id, 100, CS_ARMOR_VESTHELM) if(pcv[g13] && PlayerLevel[id] >= pcv[g19]) { if(Money < 5000) { cs_set_user_money(id, Money + pcv[g20]) ChatColor(id, "%L %L", LANG_PLAYER, "LRS_TAG", LANG_PLAYER, "BONUS_MONEY", pcv[g20]) } } } }}////////////////////////////////////////////////////////////// ////////////////// INFORMER /////////////////////// public Info() { static Players[32], Count, buffer[192], len new id, id2, Name2[32], live, osef[8] get_players(Players, Count, "ch") for(new i = 0; i < Count; i++) { id = Players[i] live = is_user_alive(id) id2 = pev(id, pev_iuser2) get_user_name(id2, Name2, 31) g_oldrank[id] = get_user_stats(id, osef, osef) if(!live) { if(id2 > 0) { if(PlayerLevel[id2] < 30) { len = format(buffer, charsmax(buffer), "%L: %s", LANG_PLAYER,"A_NAME", Name2) len += format(buffer[len], charsmax(buffer) - len, "^n%L:", LANG_PLAYER,"ZVANIE") len += format(buffer[len], charsmax(buffer) - len, " %L", LANG_PLAYER,CLASSES[PlayerLevel[id2]]) len += format(buffer[len], charsmax(buffer) - len, "^n%L: %d", LANG_PLAYER,"PL_XP",PlayerXP[id2]) len += format(buffer[len], charsmax(buffer) - len, "^n%L: %d", LANG_PLAYER,"RANK", g_oldrank[id2]) } else { len = format(buffer, charsmax(buffer), "%L: %s", LANG_PLAYER,"A_NAME", Name2) len += format(buffer[len], charsmax(buffer) - len, "^n%L:",LANG_PLAYER,"ZVANIE") len += format(buffer[len], charsmax(buffer) - len, " %L",LANG_PLAYER,CLASSES[PlayerLevel[id2]]) len += format(buffer[len], charsmax(buffer) - len, "^n%L: %L",LANG_PLAYER,"PL_XP", LANG_PLAYER,"PL_MAX") len += format(buffer[len], charsmax(buffer) - len, "^n%L: %d", LANG_PLAYER,"RANK", g_oldrank[id2]) } } else { if(PlayerLevel[id] < 30) { len = format(buffer, charsmax(buffer) - len, "%L: %L", LANG_PLAYER,"ZVANIE", LANG_PLAYER,CLASSES[PlayerLevel[id]]) len += format(buffer[len], charsmax(buffer) - len, "^n%L: %d",LANG_PLAYER,"PL_XP",PlayerXP[id]) len += format(buffer[len], charsmax(buffer) - len, "^n%L: %d", LANG_PLAYER,"RANK", g_oldrank[id]) } else { len = format(buffer, charsmax(buffer) - len, "%L: %L", LANG_PLAYER,"ZVANIE", LANG_PLAYER,CLASSES[PlayerLevel[id]]) len += format(buffer[len], charsmax(buffer) - len, "^n%L",LANG_PLAYER,"PL_MAX") len += format(buffer[len], charsmax(buffer) - len, "^n%L: %d", LANG_PLAYER,"RANK", g_oldrank[id]) } } } else { if((PlayerLevel[id] < 30) && live) { len = format(buffer, charsmax(buffer), "%L", LANG_PLAYER,CLASSES[PlayerLevel[id]]) len += format(buffer[len], charsmax(buffer) - len, "^n%L: %d %L %d", LANG_PLAYER,"PL_XP",PlayerXP[id], LANG_PLAYER,"IZ", LEVELS[PlayerLevel[id]+1]) len += format(buffer[len], charsmax(buffer) - len, "^n%L: %d %L %d", LANG_PLAYER,"RANK", g_oldrank[id], LANG_PLAYER,"IZ", maxrank) } else { len = format(buffer, charsmax(buffer), "%L",LANG_PLAYER,CLASSES[PlayerLevel[id]]) len += format(buffer[len], charsmax(buffer) - len, "^n%L: %L",LANG_PLAYER,"PL_XP", LANG_PLAYER,"PL_MAX") len += format(buffer[len], charsmax(buffer) - len, "^n%L: %d %L %d", LANG_PLAYER,"RANK", g_oldrank[id], LANG_PLAYER,"IZ", maxrank) } } set_hudmessage(255, 255, 255, 0.01, 0.19, 0, 0.0, HUD_UPD, _, _, -1) ShowSyncHudMsg(id, g_MsgHud, "%s", buffer) } return PLUGIN_CONTINUE}///////////////////////////////////////////////////////////////// ////////////////// STOCK ////////////////////// stock ChatColor(const id, const input[], any:...){ new count = 1, players[32] static msg[192] vformat(msg, 191, input, 3) replace_all(msg, 191, "!g", "^4") // Green Color replace_all(msg, 191, "!y", "^1") // Default Color replace_all(msg, 191, "!t", "^3") // Team Color 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() } } }}/////////////////////////////////////////////////////////////