#include #include #include #include #include #include #include #include #define STANDARDNA_BRZINA 250.0 #define ZADATAK_POSTAVI_brzinu 832 #define IN_MOVING (IN_FORWARD|IN_BACK|IN_MOVELEFT|IN_MOVERIGHT|IN_JUMP|IN_ATTACK|IN_ATTACK2) #define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers) #define STATSX_SHELL_DESIGN2_STYLE "" enum RankData { Data_SteamID[32], Data_Name[32], Data_Level }; new g_SyncHudObj, g_SyncHudObj3; new g_msgScreenFade, g_msgSayText, g_msgStatusIcon; new cvar_xp_za_ubistvo, cvar_xp_za_level, cvar_max_level, cvar_gamename; new sprite_white, sprite_blast, sprite_smoke; new g_vault; new Ubrania_CT[4][]={"sas","gsg9","urban","gign"}; new Ubrania_Terro[4][]={"arctic","leet","guerilla","terror"}; /* novi modeli new Ubrania_CT[][]={"cod_gign","cod_gsg9"}; new Ubrania_Terro[][]={"cod_guerilla","cod_leet"}; */ new const maxAmmo[31]={0, 200, 0, 180, 1, 64, 1, 120, 180, 1, 200, 200, 180, 180, 180, 180, 200, 200, 30, 180, 200, 64, 180, 180, 90, 2, 70, 90, 120, 0, 150}; new const maxClip[31] = { -1, 13, -1, 10, 1, 7, 1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 }; new informacije_predmet_igraca[33][2]; new const naziv_predmeta[][] = {"ML_PERK_NEMAPERK", "ML_PERK_NECUJNECIZME", //1 "ML_PERK_DUPLIPANCIR", //2 "ML_PERK_OJACANIPANCIR", //3 "ML_PERK_VETERANNOZ", //4 "ML_PERK_IZNENADINEPR", //5 "ML_PERK_NEVIDLJIVOST", //6 "ML_PERK_RESPAWN", //7 "ML_PERK_NOZMARINCA", //8 "ML_PERK_KAMUFLAZA", //9 "ML_PERK_HEXPERT", //10 "ML_PERK_DUPLISKOK", //11 "ML_PERK_VOJNATAJNA", //12 "ML_PERK_AWPMASTER", //13 "ML_PERK_ADRENALIN", //14 "ML_PERK_RAMBOVATAJNA", //15 "ML_PERK_DEAGLEMANIJAK", //16 "ML_PERK_SUPERPANCIR", //17 "ML_PERK_EXTRAHP", //18 "ML_PERK_KOMPLETPOMOC", //19 "ML_PERK_NORECOIL", //20 "ML_PERK_TITANMETCI", //21 "ML_PERK_PUKMETCI", //22 "ML_PERK_OGRNORECOIL", //23 "ML_PERK_HPBOOSTER", //24 "ML_PERK_50HP", //25 "ML_PERK_NANOKLOP", //26 "ML_PERK_BULLETPROOF", //27 "ML_PERK_JETPACK", //28 "ML_PERK_GRAVITACIJA", //29 "ML_PERK_SPEED", //30 "ML_PERK_GOLDENAMMO", //31 "ML_PERK_HEADSHOT" }; new const opis_predmet[][] = {"ML_OPIS_NEMAPERK", "ML_OPIS_NECUJNECIZME", "ML_OPIS_DUPLIPANCIR", "ML_OPIS_OJACANIPANCIR", "ML_OPIS_VETERANNOZ", "ML_OPIS_IZNENADINEPR", "ML_OPIS_NEVIDLJIVOST", "ML_OPIS_RESPAWN", "ML_OPIS_NOZMARINCA", "ML_OPIS_KAMUFLAZA", "ML_OPIS_HEXPERT", "ML_OPIS_DUPLISKOK", "ML_OPIS_VOJNATAJNA", "ML_OPIS_AWPMASTER", "ML_OPIS_ADRENALIN", "ML_OPIS_RAMBOVATAJNA", "ML_OPIS_DEAGLEMANIJAK", "ML_OPIS_SUPERPANCIR", "ML_OPIS_EXTRAHP", "ML_OPIS_KOMPLETPOMOC", "ML_OPIS_NORECOIL", "ML_OPIS_TITANMETCI", "ML_OPIS_PUKMETCI", "ML_OPIS_OGRNORECOIL", "ML_OPIS_HPBOOSTER", "ML_OPIS_50HP", "ML_OPIS_NANOKLOP", "ML_OPIS_BULLETPROOF", "ML_OPIS_JETPACK", "ML_OPIS_GRAVITACIJA", "ML_OPIS_SPEED", "ML_OPIS_GOLDENAMMO", "ML_OPIS_HEADSHOT" }; new szShopMenu[][] = { "ML_SHOP_ASPIRIN", "ML_SHOP_MORFIJUM", "ML_SHOP_REDBULL", "ML_SHOP_ISKUSTVO", "ML_SHOP_EISKUSTVO", "ML_SHOP_SIZBOR", "ML_SHOP_MINE", "ML_SHOP_DINAMIT" } new szShopSufix[][] = { "ML_SHOP_SUFIX1", "ML_SHOP_SUFIX2", "ML_SHOP_SUFIX3", "ML_SHOP_SUFIX4", "ML_SHOP_SUFIX5", "ML_SHOP_SUFIX6", "ML_SHOP_SUFIX7", "ML_SHOP_SUFIX8" } new szShopCene[] = { 3000, 5000, 7500, 5000, 15000, 3000, 10000, 10000 } new iskustvo_za_pare, iskustvo_za_mnogopara; new klasa_igraca[33]; new level_igraca[33] = 1; new iskustvo_igraca[33]; new nova_klasa_igraca[33]; new poeni_igraca[33]; new energija_igraca[33]; new inteligencija_igraca[33]; new snaga_igraca[33]; new Float:smanjene_povrede_igraca[33]; new kondicija_igraca[33]; new maximalna_energija_igraca[33]; new Float:brzina_igraca[33]; new frakcija_igraca[33]; enum { NONE = 0, Snajperista, Marinac, Pro_Strelac, Mitraljezac, Doktor, Vatrena_Podrska, Miner, Demolitions, Rusher, Rambo, Partizan, Spijun, Bombarder, Gunner, Pesadinac, Pobunjenik, Assassin, SWAT, Pistolj, Nezaustavljivi, Pukovnik, Loyal}; new const energija_klasa[] = { 0, 120, 140, 110, 120, 110, 100, 100, 110, 100, 130, 100, 70, 140, 125, 100, 125, 10, 100, 100, 300, 100, 200}; new const Float:brzina_klasa[] = {0.0, 1.2, 1.35, 0.8, 0.8, 1.0, 1.0, 1.0, 1.0, 1.3 , 1.15, 1.1, 1.2, 0.9, 0.9, 1.5, 1.2, 2.0, 0.8, 1.2, 1.5, 1.0, 1.2}; new const oklop_klase[] = { 0, 100, 100, 100, 150, 100, 0, 100, 100, 0, 150, 0, 0, 150, 50, 200, 25, 100, 0, 100, 500, 100, 100}; new const naziv_klase[][] = { "ML_KLASA_NEMAKLASU", "ML_KLASA_SNAJPERISTA", "ML_KLASA_MARINAC", "ML_KLASA_STRELAC", "ML_KLASA_MITRALJEZAC", "ML_KLASA_DOKTOR", "ML_KLASA_PODRSKA", "ML_KLASA_MINER", "ML_KLASA_DEMOLISH", "ML_KLASA_RUSHER", "ML_KLASA_RAMBO", "ML_KLASA_PARTIZAN", "ML_KLASA_SPIJUN", "ML_KLASA_BOMBARDER", "ML_KLASA_GUNNER", "ML_KLASA_MAJOR", "ML_KLASA_POBUNJENJIK", "ML_KLASA_ASSASSIN", "ML_KLASA_SWAT", "ML_KLASA_PREDATOR", "ML_KLASA_KOMANDOS", "ML_KLASA_PUKOVNIK", "ML_KLASA_WARRIOR" }; new const opis_klase[][] = { "ML_OPIS_NEMAKLASU", "ML_OPIS_SNAJPERISTA", "ML_OPIS_MARINAC", "ML_OPIS_STRELAC", "ML_OPIS_MITRALJEZAC", "ML_OPIS_DOKTOR", "ML_OPIS_PODRSKA", "ML_OPIS_MINER", "ML_OPIS_DEMOLISH", "ML_OPIS_RUSHER", "ML_OPIS_RAMBO", "ML_OPIS_PARTIZAN", "ML_OPIS_SPIJUN", "ML_OPIS_BOMBARDER", "ML_OPIS_GUNNER", "ML_OPIS_MAJOR", "ML_OPIS_POBUNJENJIK", "ML_OPIS_ASSASSIN", "ML_OPIS_SWAT", "ML_OPIS_PREDATOR", "ML_OPIS_KOMANDOS", "ML_OPIS_PUKOVNIK", "ML_OPIS_WARRIOR" }; new frakcije[][]={ "Nema", "Army", "Elite (Premium)" } enum { NONE = 0,army,elita} new const ako_pripada[]={ NONE, army, //1 army, //2 army, //3 army, //4 army, //5 army, //6 army, //7 army, //8 army, //9 elita, //10 army, //11 army, //12 army, //13 army, //14 army, //15 army, //16 elita, //17 army, army, //16 elita, //17 army, army }; new broj_medkit_igraca[33]; new broj_min_igraca[33]; new broj_dinamita_igraca[33]; new broj_skokova_igraca[33]; new bool:freezetime = true; new bool:g_BackAttack[33]; new g_dynamit_active[33]; new g_szModel[33][32]; new page[33][2]; new g_iMaxPlayers, g_hud_thinker; new g_iHealth[33]; new bool:g_isConnected[33], g_isAlive[33]; new g_iAdminChatFlag = ADMIN_ALL; new g_happy_hour, happy_hour_on; new g_RankFile[64]; new Array:g_SteamID; new Trie:g_Name, Trie:g_PlayerLevel; new g_Top15[2048]; new g_Data[33][RankData]; new bool:g_FirstSpawn[33]; public plugin_init() { register_plugin("Call of Duty: MW Mod", "1.0", "QTM_Peyote & OvidiuS"); register_cvar("CallOfDuty", "1.0", FCVAR_SERVER|FCVAR_SPONLY); g_vault = nvault_open("CodMod"); g_happy_hour = register_cvar("cod_vip_hour", "off") static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s get_pcvar_string(g_happy_hour, hours, charsmax(hours)) if(equal(hours, "off")) { happy_hour_on = false; register_dictionary("codmod.txt") } else { strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-') hour1 = str_to_num(hour1s) hour2 = str_to_num(hour2s) time(h, m, s) if(hour1 <= h <= hour2) happy_hour_on = true else happy_hour_on = false if(!happy_hour_on) register_dictionary("codmod.txt") else register_dictionary("codmodhp.txt") } register_think("MedKit","MedKitThink"); RegisterHam(Ham_Spawn, "player", "Pocetak", 1); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); RegisterHam(Ham_Killed, "player", "Player_Killed") RegisterHam(Ham_ObjectCaps , "player", "Forward_ObjectCaps"); RegisterHam(Ham_Player_Jump, "player", "Player_Jump") RegisterHam(Ham_TraceAttack, "player", "HamTraceAttack"); RegisterHam(Ham_Touch, "armoury_entity", "DodirOruzija"); RegisterHam(Ham_Touch, "weapon_shield", "DodirOruzija"); RegisterHam(Ham_Touch, "weaponbox", "DodirOruzija"); register_forward(FM_CmdStart, "CmdStart"); register_forward(FM_SetClientKeyValue, "SetClientKeyValue"); register_logevent("PocetakRunde", 2, "1=Round_Start"); register_event("HLTV", "novaRunda", "a", "1=0", "2=0"); register_event("CurWeapon","CurWeapon","be", "1=1"); register_event("Health", "Event_Health", "b") register_touch("Mine", "player", "DodirMine"); get_datadir(g_RankFile, charsmax(g_RankFile)); add(g_RankFile, charsmax(g_RankFile), "/codrank.ini"); g_SteamID = ArrayCreate(32, 1); g_Name = TrieCreate(); g_PlayerLevel = TrieCreate(); cvar_xp_za_ubistvo = register_cvar("cod_killxp", "70"); cvar_xp_za_level = register_cvar("cod_levelratio", "2"); cvar_max_level = register_cvar("cod_maxlevel", "10000"); iskustvo_za_pare = 1000; iskustvo_za_mnogopara = 5000; register_clcmd("say /rank", "SayRank"); register_clcmd("say /top15", "SayTop15"); register_clcmd("say /klasa", "IzaberiKlasu"); register_clcmd("say /opis", "OpisKlase"); register_clcmd("say /predmet", "OpisPredmeta"); register_clcmd("say /item", "OpisPredmeta"); register_clcmd("say /perks", "OpisPredmeta1"); register_clcmd("say /drop", "IzbaciPredmet"); register_clcmd("say /izbaci", "IzbaciPredmet"); register_clcmd("say /reset", "KomandaResetujPoene"); register_clcmd("say /shop", "ShopMenu"); register_clcmd("say /pomoc", "Pomoc"); register_clcmd("say /help", "Pomoc"); register_clcmd("say /lang", "IzaberiJezik") register_clcmd("fullupdate", "BlokirajKomande"); register_clcmd( "say", "CmdSay" ); register_clcmd( "say_team", "CmdSayTeam" ); g_msgSayText = get_user_msgid( "SayText" ); g_msgStatusIcon = get_user_msgid("StatusIcon"); g_msgScreenFade = get_user_msgid("ScreenFade"); g_iMaxPlayers = get_maxplayers(); register_message(g_msgStatusIcon, "msgStatusIcon"); register_menucmd(register_menuid("Klasa:"), 1023, "OpisKlase"); register_menucmd(register_menuid("Predmet:"), 1023, "OpisPredmeta1"); new szCommand[ 32 ], iFlags; for( new i = 0; get_concmd( i, szCommand, charsmax( szCommand ), iFlags, "", 0, 0, -1 ); i++ ) { if( equal( szCommand, "amx_chat" ) ) { g_iAdminChatFlag = iFlags; break; } } LoadRanks(); ArraySort(g_SteamID, "SortRanks"); WriteTop15(); } public plugin_cfg() { server_cmd("sv_maxspeed 9999"); CreateHudEntity(); } public plugin_precache() { sprite_white = precache_model("sprites/white.spr") ; sprite_blast = precache_model("sprites/dexplo.spr"); sprite_smoke = precache_model("sprites/steam1.spr"); precache_sound("QTM_CodMod/select.wav"); precache_sound("QTM_CodMod/start.wav"); precache_sound("QTM_CodMod/start2.wav"); precache_sound("QTM_CodMod/levelup.wav"); precache_sound("weapons/mine_charge.wav") precache_sound("weapons/mine_deploy.wav") precache_sound("weapons/rocketfire1.wav") precache_model("models/v_dynamite.mdl"); precache_model("models/p_dynamite.mdl"); precache_model("models/w_dynamite.mdl"); precache_model("models/w_medkit.mdl"); precache_model("models/rpgrocket.mdl"); precache_model("models/mine.mdl"); /* new szTmp[64]; for(new i = 0; i informacije_predmet_igraca[id][1]+4.0) { informacije_predmet_igraca[id][1] = floatround(get_gametime()); new Float:velocity[3]; VelocityByAim(id, 700, velocity); velocity[2] = random_float(265.0,285.0); set_pev(id, pev_velocity, velocity); UTIL_SetBarTime(id, 4, 0) } return FMRES_IGNORED; } public client_PreThink(id) { if(!g_isAlive[id]) return PLUGIN_CONTINUE; new iButton = pev(id, pev_button) if(iButton & IN_MOVING && klasa_igraca[id] == Nezaustavljivi) set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderNormal, 255) else if(klasa_igraca[id] == Nezaustavljivi) set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 10); if(klasa_igraca[id] == Partizan || klasa_igraca[id] == Pistolj || informacije_predmet_igraca[id][0] == 6) set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 70); else if(klasa_igraca[id] != Partizan || klasa_igraca[id] != Pistolj || informacije_predmet_igraca[id][0] != 6) set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 255); if(klasa_igraca[id] == Assassin && get_user_weapon(id) == CSW_KNIFE) set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 10); else if(klasa_igraca[id] == Assassin && get_user_weapon(id) != CSW_KNIFE) set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 255); return PLUGIN_HANDLED } public Player_Jump(id) { if(!g_isAlive[id]) return HAM_IGNORED if(informacije_predmet_igraca[id][0] == 7) { static iOldButtons ; iOldButtons = entity_get_int(id, EV_INT_oldbuttons) if( iOldButtons & IN_JUMP ) { entity_set_int(id, EV_INT_oldbuttons, iOldButtons & ~IN_JUMP) return HAM_HANDLED } } if(informacije_predmet_igraca[id][0] == 11 || klasa_igraca[id] == Rambo) { new fFlags = pev(id, pev_flags) if( fFlags & FL_WATERJUMP || pev(id, pev_waterlevel) >= 2 || !(get_pdata_int(id, 246, 5) & IN_JUMP)) return HAM_IGNORED else if(fFlags & FL_ONGROUND) { broj_skokova_igraca[id] = 0; if(informacije_predmet_igraca[id][0] == 11 || klasa_igraca[id] == Rambo) broj_skokova_igraca[id]++; } if(broj_skokova_igraca[id] > 0 ) { broj_skokova_igraca[id]--; new Float:fVelocity[3] pev(id, pev_velocity, fVelocity) fVelocity[2] = random_float(265.0,285.0); set_pev(id, pev_velocity, fVelocity) } } return HAM_IGNORED } public HamTraceAttack(Vic, Att, Float:dmg, Float:dir[3], traceresult, dmgbits) { if(!IsPlayer(Att) || !IsPlayer(Vic) || Vic == Att) return HAM_IGNORED; new hitzone = get_tr2(traceresult, TR_iHitgroup); if((informacije_predmet_igraca[Vic][0] == 32 && hitzone == HIT_HEAD)) { set_tr2(traceresult, TR_iHitgroup, HIT_CHEST) return HAM_HANDLED } return HAM_IGNORED; } public ShopMenu(id) { new szTmp[64], szItem[30]; formatex(szTmp,charsmax(szTmp),"\yBlack Market :") new pMenu = menu_create(szTmp,"ShopMenu_Handle") for(new i = 0;i cs_get_user_money(id)) { ChatColor(id, "%L", id, "ML_SHOPNEMAPARA"); menu_destroy(menu); ShopMenu(id) return PLUGIN_HANDLED; } client_cmd(id, "spk QTM_CodMod/select"); cs_set_user_money(id, cs_get_user_money(id) - szShopCene[item]); ChatColor(id, "%L", id, "ML_SHOPNEKUPIOSI", id, szShopMenu[item]); new hp = get_user_health(id); switch(item) { case 0: { new ammount=50; new nova_energija = (hp+ammount 0 ) DodelaPoena(id); if(informacije_predmet_igraca[id][0] == 10 || informacije_predmet_igraca[id][0] == 9) give_item(id, "weapon_hegrenade"); if(informacije_predmet_igraca[id][0] == 9) PromeniModel(id, 0); if(informacije_predmet_igraca[id][0] == 1) set_user_footsteps(id, 1); else set_user_footsteps(id, 0); if(informacije_predmet_igraca[id][0] == 13) give_item(id, "weapon_awp"); if(informacije_predmet_igraca[id][0] == 16) give_item(id, "weapon_deagle"); if(informacije_predmet_igraca[id][0] == 19 || informacije_predmet_igraca[id][0] == 24) informacije_predmet_igraca[id][1] = 1; if(informacije_predmet_igraca[id][0] == 27) informacije_predmet_igraca[id][1] = 3; if(informacije_predmet_igraca[id][0] == 29) set_user_gravity(id,get_user_gravity(id) - 0.4); new weapons[32]; new weaponsnum; get_user_weapons(id, weapons, weaponsnum); for(new i=0; i 0) cs_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]); PostaviAtribute(id) return PLUGIN_CONTINUE; } public PostaviAtribute(id) { smanjene_povrede_igraca[id] = (0.7*(1.0-floatpower(1.1, -0.112311341*float(snaga_igraca[id])))); maximalna_energija_igraca[id] = energija_klasa[klasa_igraca[id]]+energija_igraca[id]*2; brzina_igraca[id] = STANDARDNA_BRZINA*brzina_klasa[klasa_igraca[id]]+floatround(kondicija_igraca[id]*1.3); if(informacije_predmet_igraca[id][0] == 18) { maximalna_energija_igraca[id] += 100; brzina_igraca[id] -= 0.4; } if(informacije_predmet_igraca[id][0] == 25) { maximalna_energija_igraca[id] += 50; brzina_igraca[id] -= 0.3; } if(informacije_predmet_igraca[id][0] == 30) { brzina_igraca[id] += 1.2; } set_user_armor(id, oklop_klase[klasa_igraca[id]]); if(informacije_predmet_igraca[id][0] == 17) set_user_armor(id, 500); set_user_health(id, maximalna_energija_igraca[id]); } public PocetakRunde() { freezetime = false; for(new id=1;id<=g_iMaxPlayers;id++) { if(!g_isAlive[id]) continue; set_task(0.1, "PostaviBrzinu", id+ZADATAK_POSTAVI_brzinu); switch(get_user_team(id)) { case 1: client_cmd(id, "spk QTM_CodMod/start2"); case 2: client_cmd(id, "spk QTM_CodMod/start"); } } } public novaRunda() { freezetime = true; new ent = find_ent_by_class(-1, "dynamite"); while(ent > 0) { remove_entity(ent); ent = find_ent_by_class(ent, "dynamite"); } new iEnt = find_ent_by_class(-1, "Mine"); while(iEnt > 0) { remove_entity(iEnt); iEnt = find_ent_by_class(iEnt, "Mine"); } static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s get_pcvar_string(g_happy_hour, hours, charsmax(hours)) if(equal(hours, "off")) {happy_hour_on = false; return; } strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-') hour1 = str_to_num(hour1s) hour2 = str_to_num(hour2s) time(h, m, s) if(hour1 <= h <= hour2) happy_hour_on = true else happy_hour_on = false } public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!g_isAlive[this] || !g_isConnected[this] || !g_isConnected[idattacker] || get_user_team(this) != get_user_team(idattacker) || !klasa_igraca[idattacker]) return HAM_IGNORED; new health = get_user_health(this); new weapon = get_user_weapon(idattacker); if(health < 2) return HAM_IGNORED; if(informacije_predmet_igraca[this][0] == 27 && informacije_predmet_igraca[this][1]>0) { informacije_predmet_igraca[this][1]--; return HAM_SUPERCEDE; } if(snaga_igraca[this]>0) damage -= smanjene_povrede_igraca[this]*damage; if(informacije_predmet_igraca[this][0] == 2 || informacije_predmet_igraca[this][0] == 3) damage-=(float(informacije_predmet_igraca[this][1]) 0) cs_set_user_bpammo(attacker, weapons[i], maxAmmo[weapons[i]]); new iskustvo_za_ubistvo = get_pcvar_num(cvar_xp_za_ubistvo); new novo_iskustvo = get_pcvar_num(cvar_xp_za_ubistvo); if((klasa_igraca[attacker] == Rambo || klasa_igraca[attacker] == Loyal) && (klasa_igraca[victim] != Rambo || klasa_igraca[victim] != Loyal)) novo_iskustvo += iskustvo_za_ubistvo*2; if(level_igraca[victim] > level_igraca[attacker]) novo_iskustvo += (level_igraca[victim]-level_igraca[attacker])*(iskustvo_za_ubistvo/10); if(klasa_igraca[attacker] == Rambo || informacije_predmet_igraca[attacker][0] == 15 && maxClip[weapon] != -1) { new nova_energija = (energija+20 iLevel2) return -1; return 0; } public client_disconnect(id) { g_isConnected[id] = false g_isAlive[id] = false SacuvajPodatke(id); DeleteSkills(id); ObrisiZadatke(id); Obrisipredmet(id); } public DeleteSkills(id) { klasa_igraca[id] = 0; level_igraca[id] = 0; iskustvo_igraca[id] = 0; poeni_igraca[id] = 0; energija_igraca[id] = 0; inteligencija_igraca[id] = 0; snaga_igraca[id] = 0; kondicija_igraca[id] = 0; maximalna_energija_igraca[id] = 0; brzina_igraca[id] = 0.0; g_dynamit_active[id] = 0; } public ObrisiZadatke(id) remove_task(id+ZADATAK_POSTAVI_brzinu); public IzaberiJezik(id) { new szItem[30] formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUIZBAERIJEZIK") new menu = menu_create(szItem, "IzaberiJezik_Handle"); menu_additem(menu, "English"); menu_additem(menu, "Srpski"); formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUEXIT") menu_setprop(menu, MPROP_EXITNAME, szItem); menu_display(id, menu); client_cmd(id, "spk QTM_CodMod/select"); } public IzaberiJezik_Handle(id, menu, item) { client_cmd(id, "spk QTM_CodMod/select"); if(item++ == MENU_EXIT) { menu_destroy(menu); return PLUGIN_CONTINUE; } switch(item) { case 1: set_user_info(id, "lang", "en") case 2: set_user_info(id, "lang", "sr") } menu_destroy(menu); return PLUGIN_CONTINUE; } public OpisKlase(id) { new szItem[30], klasa1[50] formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUIZABERIKLASU") new menu = menu_create(szItem, "OpisKlase_Handle"); for(new i=1; i 0) DodelaPoena(id); return PLUGIN_CONTINUE; } public KomandaResetujPoene(id) { ChatColor(id, "%L", id, "ML_POENI_RESETOVANI"); client_cmd(id, "spk QTM_CodMod/select"); ResetujPoene(id) } public ResetujPoene(id) { poeni_igraca[id] = level_igraca[id]*2-2; inteligencija_igraca[id] = 0; energija_igraca[id] = 0; kondicija_igraca[id] = 0; snaga_igraca[id] = 0; if(poeni_igraca[id]) DodelaPoena(id); } public KreirajMedKit(id) { if (!broj_medkit_igraca[id]) { client_print(id, print_center, "Imate samo 2 paketa za prvu pomoc u jednoj rundi!"); return PLUGIN_CONTINUE; } if(inteligencija_igraca[id] < 1) { client_print(id, print_center, "Da koristite paket za prvu pomoc, morate povecati inteligenciju"); return PLUGIN_CONTINUE; } broj_medkit_igraca[id]--; new Float:origin[3]; entity_get_vector(id, EV_VEC_origin, origin); new ent = create_entity("info_target"); entity_set_string(ent, EV_SZ_classname, "MedKit"); entity_set_edict(ent, EV_ENT_owner, id); entity_set_int(ent, EV_INT_solid, SOLID_NOT); entity_set_vector(ent, EV_VEC_origin, origin); entity_set_float(ent, EV_FL_ltime, get_gametime() + 7.1 ); entity_set_model(ent, "models/w_medkit.mdl"); set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 ) ; drop_to_floor(ent); entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.1); return PLUGIN_CONTINUE; } public MedKitThink(ent) { if(!is_valid_ent(ent)) return PLUGIN_HANDLED; new id = entity_get_edict(ent, EV_ENT_owner); new totem_dist = 300; new totem_heal = 5+floatround(inteligencija_igraca[id]*0.5); if (entity_get_edict(ent, EV_ENT_euser2) == 1) { new Float:forigin[3], origin[3]; entity_get_vector(ent, EV_VEC_origin, forigin); FVecIVec(forigin,origin); new entlist[33]; new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist, 32,forigin); for (new i=0; i < numfound; i++) { new pid = entlist[i]; if (get_user_team(pid) != get_user_team(id)) continue; new energija = get_user_health(pid); new nova_energija = (energija+totem_heal0) { set_user_health(id, maximalna_energija_igraca[id]); informacije_predmet_igraca[id][1]--; Display_Fade(id, 1<<10 ,1<<10,0x0000,0,255,0,65) } if(broj_medkit_igraca[id]>0) KreirajMedKit(id); if(broj_min_igraca[id]>0 || broj_dinamita_igraca[id]>0 ) MenuExplode(id) return PLUGIN_HANDLED; } public MenuExplode(id) { new menu,newmenu,menupage player_menu_info(id,menu,newmenu,menupage); if(menu > 0 || newmenu != -1) return PLUGIN_CONTINUE; new szTmp[64]; new pMenuExplode = menu_create("Explode Menu", "explodeMenu_Handle") formatex(szTmp, charsmax(szTmp), "%L \w[\y%d\w]", id, "ML_POSTAVI_MINU", broj_min_igraca[id]) menu_additem(pMenuExplode, szTmp); formatex(szTmp, charsmax(szTmp), "%L \w[\y%d\w]", id, "ML_POSTAVI_DINAMIT", broj_dinamita_igraca[id]) menu_additem(pMenuExplode, szTmp); formatex(szTmp, charsmax(szTmp), "%L", id, "ML_AKTIVIRAJ_MINE") menu_additem(pMenuExplode, szTmp); menu_setprop(pMenuExplode, MPROP_NUMBER_COLOR,"\r") menu_display(id, pMenuExplode); return PLUGIN_CONTINUE; } public explodeMenu_Handle(id, menu, item) { if(item == MENU_EXIT || !g_isAlive[id]) { menu_destroy(menu); return PLUGIN_CONTINUE; } switch(item) { case 0: { PostaviMine(id); } case 1: { KreirajDinamit(id); } case 2: { UTIL_PlayWeaponAnimation(id, 3) new iEnt = -1, iOwner; while((iEnt = find_ent_by_class(iEnt,"Mine"))) { iOwner = pev(iEnt, pev_owner); if(iOwner == id) { DodirMine2(iEnt); } } } } menu_destroy(menu); MenuExplode(id) return PLUGIN_CONTINUE; } public DodirMine2(ent) { if(!is_valid_ent(ent)) return PLUGIN_HANDLED; new attacker = entity_get_edict(ent, EV_ENT_owner); new Float:fOrigin[3]; entity_get_vector( ent, EV_VEC_origin, fOrigin); new iOrigin[3]; for(new i=0;i<3;i++) iOrigin[i] = floatround(fOrigin[i]); message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin); write_byte(TE_EXPLOSION); write_coord(iOrigin[0]); write_coord(iOrigin[1]); write_coord(iOrigin[2]); write_short(sprite_blast); write_byte(32); // scale write_byte(20); // framerate write_byte(0);// flags message_end(); new entlist[33]; new numfound = find_sphere_class(ent,"player", 90.0 ,entlist, 32); for (new i=0; i < numfound; i++) { new pid = entlist[i]; if (!g_isAlive[pid] || get_user_team(attacker) == get_user_team(pid) || klasa_igraca[pid] == Mitraljezac) continue; ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 90.0+float(inteligencija_igraca[attacker]) , 1); } remove_entity(ent); return PLUGIN_CONTINUE; } public SacuvajPodatke(id) { if(!klasa_igraca[id]) return PLUGIN_CONTINUE; new vaultkey[128],vaultdata[256], ID_igraca[64]; formatex(vaultdata, charsmax(vaultdata),"#%i#%i#%i#%i#%i#%i", iskustvo_igraca[id], level_igraca[id], inteligencija_igraca[id], energija_igraca[id], snaga_igraca[id], kondicija_igraca[id]); get_user_authid(id, ID_igraca, charsmax(ID_igraca)) formatex(vaultkey, charsmax(vaultkey),"%s-%i-cod", ID_igraca, klasa_igraca[id]); nvault_set(g_vault,vaultkey,vaultdata); return PLUGIN_CONTINUE; } public UcitajPodatke(id, klasa) { new vaultkey[128],vaultdata[256], ID_igraca[64]; get_user_authid(id, ID_igraca, charsmax(ID_igraca)) formatex(vaultkey, charsmax(vaultkey),"%s-%i-cod", ID_igraca, klasa); nvault_get(g_vault,vaultkey,vaultdata,255); replace_all(vaultdata, 255, "#", " "); new playerdata[6][32]; parse(vaultdata, playerdata[0], 31, playerdata[1], 31, playerdata[2], 31, playerdata[3], 31, playerdata[4], 31, playerdata[5], 31); iskustvo_igraca[id] = str_to_num(playerdata[0]); level_igraca[id] = str_to_num(playerdata[1])>0?str_to_num(playerdata[1]):1; inteligencija_igraca[id] = str_to_num(playerdata[2]); energija_igraca[id] = str_to_num(playerdata[3]); snaga_igraca[id] = str_to_num(playerdata[4]); kondicija_igraca[id] = str_to_num(playerdata[5]); poeni_igraca[id] = (level_igraca[id]-1)*2-inteligencija_igraca[id]-energija_igraca[id]-snaga_igraca[id]-kondicija_igraca[id]; return PLUGIN_CONTINUE; } public IzbaciPredmet(id) { if(informacije_predmet_igraca[id][0]) { ChatColor(id, "%L %L.", id, "ML_BACIO", id, naziv_predmeta[informacije_predmet_igraca[id][0]]); Obrisipredmet(id); } else ChatColor(id, "%L", id, "ML_NEMA_PREDMET"); } public Obrisipredmet(id) { informacije_predmet_igraca[id][0] = 0; informacije_predmet_igraca[id][1] = 0; if(g_isAlive[id]) { set_user_footsteps(id, 0); set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 255); PromeniModel(id, 1); } } public DajPredmet(id, predmet) { Obrisipredmet(id); informacije_predmet_igraca[id][0] = predmet; ChatColor(id, "%L %L.", id, "ML_DOBIO_PREDMET", id, naziv_predmeta[informacije_predmet_igraca[id][0]]); switch(predmet) { case 1: { set_user_footsteps(id, 1); } case 2: { informacije_predmet_igraca[id][1] = random_num(3,6); } case 3: { informacije_predmet_igraca[id][1] = random_num(6, 11); } case 5: { informacije_predmet_igraca[id][1] = random_num(6, 9); } case 6: { if(klasa_igraca[id] == Partizan || klasa_igraca[id] == Assassin ) { DajPredmet(id, random_num(1, sizeof naziv_predmeta-1)); } else { informacije_predmet_igraca[id][1] = random_num(100, 150); set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, informacije_predmet_igraca[id][1]); } } case 7: { if(klasa_igraca[id] == Rambo) DajPredmet(id, random_num(1, sizeof naziv_predmeta-1)); } case 8: { if(klasa_igraca[id] == Marinac || klasa_igraca[id] == Assassin) DajPredmet(id, random_num(1, sizeof naziv_predmeta-1)); } case 9: { informacije_predmet_igraca[id][1] = random_num(1, 3); PromeniModel(id, 0); give_item(id, "weapon_hegrenade"); } case 10: { informacije_predmet_igraca[id][1] = random_num(4, 8); give_item(id, "weapon_hegrenade"); } case 12: { informacije_predmet_igraca[id][1] = random_num(1, 4); } case 13: { give_item(id, "weapon_awp"); } case 15: { if(klasa_igraca[id] == Rambo) DajPredmet(id, random_num(1, sizeof naziv_predmeta-1)); } case 16: { if(informacije_predmet_igraca[id][1] == 16) give_item(id, "weapon_deagle") } case 19: { informacije_predmet_igraca[id][1] = 1; } case 24: { informacije_predmet_igraca[id][1] = 1; } case 26: { informacije_predmet_igraca[id][1] = random_num(3, 6); } case 27: { informacije_predmet_igraca[id][1] = 3; } } } public OpisPredmeta(id) { new opis_predmeta[128]; new slucajne_vrednosti[3]; num_to_str(informacije_predmet_igraca[id][1], slucajne_vrednosti, 2); formatex(opis_predmeta, 127, "%L", id, opis_predmet[informacije_predmet_igraca[id][0]]); replace_all(opis_predmeta, 127, "X", slucajne_vrednosti); new opispr[512]; formatex(opispr, charsmax(opispr), "%L: ^1%L.^n%s", id, "ML_PREDMET", id, naziv_predmeta[informacije_predmet_igraca[id][0]], opis_predmeta); show_menu(id, charsmax(opispr), opispr); } GetPosition(iPlayer) { static Position, Size, SteamID[32]; for (Position = 0, Size = ArraySize(g_SteamID); Position < Size; Position++) { ArrayGetString(g_SteamID, Position, SteamID, 31); if (equal(SteamID, g_Data[iPlayer][Data_SteamID])) return Position + 1; } return 0; } WriteTop15() { static Length, Position, Size, SteamID[32], Name[32], iLevel; Length = formatex(g_Top15[Length], 2047 - Length, STATSX_SHELL_DESIGN2_STYLE) Length += formatex(g_Top15[Length], 2047 - Length, "") Length += formatex(g_Top15[Length], 2047 - Length, "") for (Position = 0, Size = min(ArraySize(g_SteamID), 15); Position < Size; Position++) { ArrayGetString(g_SteamID, Position, SteamID, 31); TrieGetString(g_Name, SteamID, Name, 31); TrieGetCell(g_PlayerLevel, SteamID, iLevel); new szFixedName[ charsmax( Name ) * 5 + 1 ]; MakeMOTDSafe( Name, szFixedName, charsmax( szFixedName ), 32 ); Length += formatex(g_Top15[Length], 2047 - Length, "
#NickNajveci Level
%d%s%d", Position + 1, Name, iLevel) } } public ProveriNivo(id) { new level_limit = get_pcvar_num(cvar_max_level); if(level_igraca[id] > level_limit) { level_igraca[id] = level_limit; return; } while(iskustvo_igraca[id] >= Uzmixpzalevel(level_igraca[id]) && level_igraca[id] < level_limit) { if(happy_hour_on) { level_igraca[id]+=2; set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2); ShowSyncHudMsg(id, g_SyncHudObj3, "LEVEL x2"); client_cmd(id, "spk QTM_CodMod/levelup"); poeni_igraca[id] = (level_igraca[id]-1)*2-inteligencija_igraca[id]-energija_igraca[id]-snaga_igraca[id]-kondicija_igraca[id]; } else { level_igraca[id]++; set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2); ShowSyncHudMsg(id, g_SyncHudObj3, "Dobrodosao na %i level!", level_igraca[id]); client_cmd(id, "spk QTM_CodMod/levelup"); poeni_igraca[id] = (level_igraca[id]-1)*2-inteligencija_igraca[id]-energija_igraca[id]-snaga_igraca[id]-kondicija_igraca[id]; } } if(level_igraca[id] > g_Data[id][Data_Level]) { g_Data[id][Data_Level] = level_igraca[id]; UpdateRank(id, false); ArraySort(g_SteamID, "SortRanks"); } SacuvajPodatke(id); } public Uzmixpzalevel(level) return level*3*get_pcvar_num(cvar_xp_za_level); public FwdThink(entity) { if( entity != g_hud_thinker ) return; for(new id = 1; id <= g_iMaxPlayers; id++) PokaziInformacije(id); entity_set_float(g_hud_thinker, EV_FL_nextthink, get_gametime() + 1.0); } public PokaziInformacije(id) { if(IsPlayer(id) && g_isConnected[id]) { if(!g_isAlive[id]) { new target = entity_get_int(id, EV_INT_iuser2); if(!target) return PLUGIN_CONTINUE; set_hudmessage(255, 255, 255, - 1.0, 0.0, 0, 6.0, 1.0) ShowSyncHudMsg(id, g_SyncHudObj, "%L : %L^nXP : %i / %i^nLevel : %i^n%L : %L^nHP %d", id, "ML_KLASA", id, naziv_klase[klasa_igraca[target]], iskustvo_igraca[target], Uzmixpzalevel(level_igraca[target]), level_igraca[target], id, "ML_PREDMET", id, naziv_predmeta[informacije_predmet_igraca[target][0]], g_iHealth[target]); return PLUGIN_CONTINUE; } set_hudmessage(0, 255, 0, - 1.0, 0.0, 0, 6.0, 1.0) ShowSyncHudMsg(id, g_SyncHudObj, "[%L : %L]^n[XP : %i / %i] [Level : %i] [%L : %L]^n[HP: %d]", id, "ML_KLASA", id, naziv_klase[klasa_igraca[id]], iskustvo_igraca[id], Uzmixpzalevel(level_igraca[id]), level_igraca[id], id, "ML_PREDMET", id, naziv_predmeta[informacije_predmet_igraca[id][0]], g_iHealth[id]); } return PLUGIN_CONTINUE; } public Event_Health(id) g_iHealth[id] = read_data(1) public Pomoc(id) { new menupomoc[1024] formatex(menupomoc, charsmax(menupomoc), "%L", id, "ML_POMOC") show_menu(id, charsmax(menupomoc), menupomoc, -1, "Pomoc"); } public PostaviBrzinu(id) { id -= id>32? ZADATAK_POSTAVI_brzinu: 0; if(klasa_igraca[id]) set_user_maxspeed(id, brzina_igraca[id]); } public PromeniModel(id,reset) { if (!IsPlayer(id) || !g_isConnected[id]) return PLUGIN_HANDLED; if (reset) { fm_reset_user_model(id); DefaultModel(id); } else { new CsTeams:iTeam; iTeam = cs_get_user_team(id) switch(iTeam) { case CS_TEAM_T:fm_set_user_model(id, Ubrania_CT[random(sizeof(Ubrania_CT))]) case CS_TEAM_CT:fm_set_user_model(id, Ubrania_Terro[random(sizeof(Ubrania_Terro))]) } } return PLUGIN_CONTINUE; } public DefaultModel(id) { if (!g_isConnected[id]) return PLUGIN_CONTINUE; new CsTeams:iTeam; iTeam = cs_get_user_team(id) switch(iTeam) { case CS_TEAM_T:fm_set_user_model(id, Ubrania_Terro[random(sizeof(Ubrania_Terro))]) case CS_TEAM_CT:fm_set_user_model(id, Ubrania_CT[random(sizeof(Ubrania_CT))]) } return PLUGIN_CONTINUE; } public DodirOruzija(weapon, id) { new model[23]; pev(weapon, pev_model, model, 22); if (pev(weapon, pev_owner) == id || containi(model, "w_backpack") != -1) return HAM_IGNORED; return HAM_SUPERCEDE; } public client_infochanged(iPlayer) { if (!g_isConnected[iPlayer]) return; static Name[32]; get_user_info(iPlayer, "name", Name, 31); if (equal(Name, g_Data[iPlayer][Data_Name])) return; copy(g_Data[iPlayer][Data_Name], 31, Name); UpdateRank(iPlayer, true); } public SetClientKeyValue(id, szInfoBuffer[], szKey[], szValue[]) { if(equal(szKey, "model") && !equal(szValue, g_szModel[id])) { set_user_info(id, "model", g_szModel[id]) return FMRES_SUPERCEDE } return FMRES_IGNORED } public CmdSay( iPlayer ) { if( !g_isConnected[iPlayer]) return PLUGIN_HANDLED_MAIN; new szArgs[ 194 ]; if( !IsValidMessage( iPlayer, false, szArgs, charsmax( szArgs ) ) ) return PLUGIN_HANDLED_MAIN; new iAlive = g_isAlive[ iPlayer ]; new CsTeams:iTeam = cs_get_user_team( iPlayer ); new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new szName[ 32 ]; get_user_name( iPlayer, szName, charsmax( szName ) ); new const szPrefixes[ 2 ][ CsTeams ][ ] = { { "^1*DEAD*", "^1*DEAD*", "^1*DEAD*", "^1*SPEC*" }, { "", "", "", "" } }; new szMessage[ 192 ]; formatex( szMessage, charsmax( szMessage ), "%s^4 [Lvl. %i]^3 %s^1 : %s", szPrefixes[ iAlive ][ iTeam ], level_igraca[iPlayer], szName, szArgs ); new iTarget; for( new i = 0; i < iNum; i++ ) { iTarget = iPlayers[ i ]; if( iTarget == iPlayer || ( iAlive || g_isConnected[ iTarget ] ) && g_isAlive[ iTarget ] == iAlive ) { message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, iTarget ); write_byte( iPlayer ); write_string( szMessage ); message_end( ); } } return PLUGIN_HANDLED_MAIN; } public CmdSayTeam( iPlayer ) { if( !g_isConnected[ iPlayer ] ) return PLUGIN_HANDLED_MAIN; new szArgs[ 194 ]; if( !IsValidMessage( iPlayer, true, szArgs, charsmax( szArgs ) ) ) return PLUGIN_HANDLED_MAIN; new iAlive = g_isAlive[ iPlayer ]; new CsTeams:iTeam = cs_get_user_team( iPlayer ); new iPlayers[ 32 ], iNum; get_players( iPlayers, iNum ); new szName[ 32 ]; get_user_name( iPlayer, szName, charsmax( szName ) ); new const szPrefixes[ 2 ][ CsTeams ][ ] = { { "(Spectator)", "*DEAD*(Terrorist)", "*DEAD*(Counter-Terrorist)", "(Spectator)" }, { "(Spectator)", "(Terrorist)", "(Counter-Terrorist)", "(Spectator)" } }; new szMessage[ 192 ]; formatex( szMessage, charsmax( szMessage ), "^1%s^4 [Lvl. %i]^3 %s^1 : %s", szPrefixes[ iAlive ][ iTeam ], level_igraca[iPlayer], szName, szArgs ); for( new i = 0, iTeammate; i < iNum; i++ ) { iTeammate = iPlayers[ i ]; if( iTeammate == iPlayer || ( iAlive || g_isConnected[ iTeammate ] ) && g_isAlive[ iTeammate ] == iAlive && cs_get_user_team( iTeammate ) == iTeam ) { message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, iTeammate ); write_byte( iPlayer ); write_string( szMessage ); message_end( ); } } return PLUGIN_HANDLED_MAIN; } bool:IsValidMessage( iPlayer, bool:bTeamSay, szMessage[ ], iLen ) { read_args( szMessage, iLen ); remove_quotes( szMessage ); new iPos, cChar, i; while( ( cChar = szMessage[ iPos++ ] ) == '@' ) { i++; } if( ( bTeamSay ? ( i == 1 ) : ( 1 <= i <= 3 ) ) && !access( iPlayer, g_iAdminChatFlag ) ) return false; while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 ) { if( cChar != ' ' && cChar != '%' ) return true; } return false; } public BlokirajKomande() return PLUGIN_HANDLED; public plugin_end() { nvault_close( g_vault ) ArraySort(g_SteamID, "SortRanks"); SaveRanks(); ArrayDestroy(g_SteamID) } MakeMOTDSafe( const szInput[ ], szOutput[ ], const iOutputLen, const iMaxChars = 0 ) { new iMax = iOutputLen / 5; copy( szOutput, iMax, szInput ); replace_all( szOutput, iOutputLen, "&", "&" ); replace_all( szOutput, iOutputLen, "<", "<" ); replace_all( szOutput, iOutputLen, ">", ">" ); new iLastIndex, i, cChar; while( ( cChar = szOutput[ i ] ) ) { if( cChar == '&' ) { if( equali( szOutput[ i ], "<", 4 ) || equali( szOutput[ i ], ">", 4 ) ) i += 3; else if( equali( szOutput[ i ], "&", 5 ) ) i += 4; } i++; if( 0 < iMaxChars < i ) break; iLastIndex = i; } szOutput[ iLastIndex ] = 0; } stock UTIL_SetBarTime(id, time, startprogress=0) { message_begin(MSG_ONE, get_user_msgid("BarTime2"), _, id) write_short(time); write_short(startprogress); message_end(); } stock UTIL_PlayWeaponAnimation(id, anim) { set_pev(id, pev_weaponanim, anim) message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id) write_byte(anim) write_byte(pev(id, pev_body)) message_end() } stock fm_trace_target(ignoreent, const Float:start[3], distance) { new Float:fAim[3], Float:end[3]; velocity_by_aim(ignoreent, distance, fAim); end[0] = start[0] + fAim[0]; end[1] = start[1] + fAim[1]; end[2] = start[2] + fAim[2]; engfunc(EngFunc_TraceLine, start, end, ignoreent == -1 ? 1 : 0, ignoreent, 0); new ent = get_tr2(0, TR_pHit); return pev_valid(ent) ? ent : 0; } stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha) { message_begin( MSG_ONE, g_msgScreenFade,{0,0,0},id ); write_short( duration ); // Duration of fadeout write_short( holdtime ); // Hold time of color write_short( fadetype ); // Fade type write_byte ( red ); // Red write_byte ( green ); // Green write_byte ( blue ); // Blue write_byte ( alpha ); // Alpha message_end(); } stock set_user_clip(id, ammo) { new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _); get_weaponname(weapon, weaponname, 31); while ((weaponid = find_ent_by_class(weaponid, weaponname)) != 0) { if(entity_get_edict(weaponid, EV_ENT_owner) == id) { set_pdata_int(weaponid, 51, ammo, 4); return weaponid; } } return 0; } stock ChangeModelsSatchel(id) { set_pev(id, pev_viewmodel2, "models/v_dynamite.mdl") set_pev(id, pev_weaponmodel2, "models/p_dynamite.mdl") } stock fm_set_user_model(id, const szModelName[]) { copy(g_szModel[id], sizeof g_szModel[] - 1, szModelName) set_user_info(id, "model", szModelName) } stock fm_get_user_model(id, model[], len ) get_user_info(id, "model", model, len) stock fm_reset_user_model( player ) dllfunc( DLLFunc_ClientUserInfoChanged, player, engfunc( EngFunc_GetInfoKeyBuffer, player ) ); 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") // Green Color replace_all(msg, 190, "!y", "^1") // Default Color replace_all(msg, 190, "!t", "^3") // Team Color new index if (id) players[0] = id; else get_players(players, count, "ch") { for (new i = 0; i < count; i++) { index = players[i] message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, index) write_byte(index); write_string(msg); message_end(); } } }