#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fakemeta>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <nvault>
#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 "<meta charset=UTF-8><style>body{background:#283136;font-family:Arial}th{background:#323B40;color:#6ED5FF;padding:10px 2px;text-align:left}td{padding:4px 3px;border-bottom:1px solid #DCDCDC}table{background:#EDF1F2;font-size:10px;border:2px solid #505A62}h2,h3{color:#FFF}img{height:10px;background:#A7CC00;margin:0 3px}#r{height:10px;background:#CC3D00}#clr{background:none;color:#6ED5FF;font-size:20px;border:0}</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<sizeof Ubrania_CT; i++)
{
formatex(szTmp, charsmax(szTmp), "models/player/%s/%s.mdl", Ubrania_CT[i], Ubrania_CT[i])
precache_model(szTmp);
formatex(szTmp, charsmax(szTmp), "models/player/%s/%sT.mdl", Ubrania_CT[i], Ubrania_CT[i])
precache_model(szTmp);
}
for(new i = 0; i<sizeof Ubrania_Terro; i++)
{
formatex(szTmp, charsmax(szTmp), "models/player/%s/%s.mdl", Ubrania_Terro[i], Ubrania_Terro[i])
precache_model(szTmp);
formatex(szTmp, charsmax(szTmp), "models/player/%s/%sT.mdl", Ubrania_Terro[i], Ubrania_Terro[i])
precache_model(szTmp);
}
*/
g_SyncHudObj = CreateHudSyncObj();
g_SyncHudObj3 = CreateHudSyncObj();
}
public msgStatusIcon(msgid, msgdest, id)
{
static szIcon[8];
get_msg_arg_string(2, szIcon, charsmax(szIcon));
if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
{
set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
LoadRanks()
{
new f = fopen(g_RankFile, "r");
if (!f)
return;
new Data[96], SteamID[32], Name[32], iLevel[16];
while (!feof(f))
{
fgets(f, Data, 96);
if (!strlen(Data))
continue;
parse(Data, SteamID, charsmax(SteamID), Name, charsmax(Name), iLevel, charsmax(iLevel));
ArrayPushString(g_SteamID, SteamID);
TrieSetString(g_Name, SteamID, Name);
TrieSetCell(g_PlayerLevel, SteamID, str_to_num(iLevel));
}
fclose(f);
}
SaveRanks()
{
new f = fopen(g_RankFile, "w+");
if (!f)
return;
for (new Position, Size = ArraySize(g_SteamID), SteamID[32], Name[32], iLevel; Position < Size; Position++)
{
ArrayGetString(g_SteamID, Position, SteamID, charsmax(SteamID));
TrieGetString(g_Name, SteamID, Name, charsmax(Name));
TrieGetCell(g_PlayerLevel, SteamID, iLevel);
fprintf(f, "%s ^"%s^" %d^n", SteamID, Name, iLevel);
}
fclose(f);
}
public CreateHudEntity()
{
static failtimes;
g_hud_thinker = create_entity("info_target");
if(!is_valid_ent(g_hud_thinker) )
{
++failtimes;
log_amx("[ERROR] Failed to create hud entity (%i/10)", failtimes);
if( failtimes < 10 )
set_task(1.0, "CreateHudEntity");
else
log_amx("[ERROR] Could not create hud entity!");
return;
}
entity_set_string(g_hud_thinker, EV_SZ_classname, "hud_entity");
entity_set_float(g_hud_thinker, EV_FL_nextthink, get_gametime() + 1.0);
register_think("hud_entity", "FwdThink");
}
public CmdStart(id, uc_handle)
{
if(!g_isAlive[id])
return FMRES_IGNORED;
new iButton = get_uc(uc_handle, UC_Buttons);
new iFlags = pev(id, pev_flags);
if(iButton & IN_ATTACK)
{
new Float:punchangle[3];
if(informacije_predmet_igraca[id][0] == 20)
set_pev(id, pev_punchangle, punchangle);
if(informacije_predmet_igraca[id][0] == 23)
{
set_pev(id, pev_punchangle, punchangle);
for(new i=0; i<3;i++)
punchangle[i]*=0.9;
set_pev(id, pev_punchangle, punchangle);
}
}
if(((iButton & IN_ATTACK) || (iButton & IN_ATTACK2)) && informacije_predmet_igraca[id][0] == 5)
{
static Float:fViewAngles[3];
get_uc(uc_handle, UC_ViewAngles, fViewAngles);
static iEnt, Float:fOrigin[3];
pev(id, pev_origin, fOrigin);
iEnt = fm_trace_target(id, fOrigin, 100);
if(!IsPlayer(iEnt))
return FMRES_IGNORED;
static Float:fTViewAngles[3];
pev(iEnt, pev_v_angle, fTViewAngles);
static Float:fMinAngle, Float:fMaxAngle;
fMinAngle = fViewAngles[1] - 80;
fMaxAngle = fViewAngles[1] + 80;
if(fMinAngle <= fTViewAngles[1] <= fMaxAngle)
g_BackAttack[id] = true;
else
g_BackAttack[id] = false;
}
if(informacije_predmet_igraca[id][0] == 28 && iButton & IN_JUMP && iButton & IN_DUCK && iFlags & FL_ONGROUND && get_gametime() > 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<sizeof szShopMenu;i++)
{
formatex(szTmp,charsmax(szTmp),"%L \r%L \y[%d$]", id, szShopMenu[i], id, szShopSufix[i], szShopCene[i]);
menu_additem(pMenu,szTmp);
}
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUBACK")
menu_setprop(pMenu, MPROP_BACKNAME, szItem);
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUNEXT")
menu_setprop(pMenu, MPROP_NEXTNAME, szItem);
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUEXIT")
menu_setprop(pMenu, MPROP_EXITNAME, szItem);
menu_display(id,pMenu)
return PLUGIN_HANDLED;
}
public ShopMenu_Handle(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(szShopCene[item] > 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<maximalna_energija_igraca[id])? hp+ammount: maximalna_energija_igraca[id];
set_user_health(id, nova_energija);
}
case 1:
{
new ammount=100;
new nova_energija = (hp+ammount<maximalna_energija_igraca[id])? hp+ammount: maximalna_energija_igraca[id];
set_user_health(id, nova_energija);
}
case 2:
{
set_user_gravity(id,get_user_gravity(id) - 0.3);
set_user_maxspeed(id,get_user_maxspeed(id) + 10.0);
}
case 3:
{
iskustvo_igraca[id] += iskustvo_za_pare;
ProveriNivo(id);
}
case 4:
{
iskustvo_igraca[id] += iskustvo_za_mnogopara;
ProveriNivo(id);
}
case 5:
{
DajPredmet(id, random_num(1, sizeof naziv_predmeta-1));
}
case 6:
{
broj_min_igraca[id] +=2;
}
case 7:
{
broj_dinamita_igraca[id] +=2;
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public Pocetak(id)
{
if(!is_user_alive(id) || !cs_get_user_team(id))
return PLUGIN_HANDLED;
g_isAlive[id] = true
DefaultModel(id)
if(nova_klasa_igraca[id])
{
broj_medkit_igraca[id] = 0;
broj_min_igraca[id] = 0;
broj_dinamita_igraca[id] = 0;
klasa_igraca[id] = nova_klasa_igraca[id];
nova_klasa_igraca[id] = 0;
strip_user_weapons(id);
give_item(id, "weapon_knife");
UcitajPodatke(id, klasa_igraca[id]);
}
if(!klasa_igraca[id] && !g_FirstSpawn[id])
{
IzaberiKlasu(id);
return PLUGIN_CONTINUE;
}
if(g_FirstSpawn[id])
{
static language[32];
get_user_info(id, "lang", language, charsmax(language));
if(equal(language, "sr"))
return PLUGIN_CONTINUE
else
IzaberiJezik(id)
g_FirstSpawn[id] = false;
}
switch(klasa_igraca[id])
{
case Snajperista: // Snajperista
{
give_item(id, "weapon_usp");
}
case Marinac: // Marinac
{
give_item(id, "weapon_p228");
}
case Pro_Strelac: // Spec OPS
{
give_item(id, "weapon_deagle");
}
case Mitraljezac: // Mitraljezac
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
}
case Doktor: // Doktor
{
broj_medkit_igraca[id] = 2;
}
case Vatrena_Podrska: // Zelena Beretka
{
}
case Miner: // Miner
{
broj_min_igraca[id] = 3;
}
case Demolitions: // Komandos
{
give_item(id, "weapon_hegrenade");
give_item(id, "weapon_flashbang");
give_item(id, "weapon_smokegrenade");
broj_dinamita_igraca[id] = 1;
}
case Rusher: // Civilna Vojska
{
give_item(id, "weapon_m3");
}
case Rambo: // Terorista
{
}
case Partizan: //SWAT
{
give_item(id, "weapon_flashbang");
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransColor, 70);
}
case Spijun: //Dvostruki Agent
{
give_item(id, "weapon_deagle");
PromeniModel(id, 0);
}
case Bombarder: // Artiljerija
{
////nst_wpn_give_weapon1(id, "rpg");
give_item(id, "weapon_p90");
give_item(id, "weapon_deagle");
give_item(id, "weapon_hegrenade");
}
case Gunner:
{
give_item(id, "weapon_g3sg1");
//rpg[id] = 1 ;
}
case Pesadinac:
{
give_item(id, "weapon_xm1014");
give_item(id, "weapon_p228");
}
case Pobunjenik:
{
give_item(id, "weapon_sg552");
give_item(id, "weapon_hegrenade");
broj_min_igraca[id] = 1 ;
}
case Assassin:
{
give_item(id, "weapon_knife");
give_item(id, "weapon_usp");
}
case SWAT:
{
give_item(id, "weapon_m4a1");
}
case Pistolj:
{
give_item(id, "weapon_deagle");
give_item(id, "weapon_hegrenade");
//rpg[id] = 2;
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransColor, 70);
}
case Nezaustavljivi:
{
give_item(id, "weapon_usp");
give_item(id, "weapon_ump45");
give_item(id, "weapon_flashbang");
//rpg[id] = 3;
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransColor, 70);
}
case Pukovnik:
{
give_item(id, "weapon_famas");
give_item(id, "weapon_fiveseven");
//rpg[id] = 2 ;
}
case Loyal:
{
give_item(id, "weapon_fiveseven");
give_item(id, "weapon_ump45");
}
}
if(poeni_igraca[id] > 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<weaponsnum; i++)
if(g_isAlive[id])
if(maxAmmo[weapons[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])<damage)? float(informacije_predmet_igraca[this][1]): damage;
if(informacije_predmet_igraca[idattacker][0] == 5 && g_BackAttack[idattacker])
damage*=2.0;
if(informacije_predmet_igraca[idattacker][0] == 10)
damage+=informacije_predmet_igraca[idattacker][1];
if(informacije_predmet_igraca[this][0] == 12)
damage-=(5.0<damage)? 5.0: damage;
if(weapon == CSW_AWP && informacije_predmet_igraca[idattacker][0] == 13)
damage=float(health);
if(informacije_predmet_igraca[idattacker][0] == 21)
damage+=10;
if(informacije_predmet_igraca[idattacker][0] == 22)
damage+=20;
if(informacije_predmet_igraca[idattacker][0] == 16)
damage*=2;
if(informacije_predmet_igraca[idattacker][0] == 30)
damage+=25;
if(idinflictor != idattacker && entity_get_int(idinflictor, EV_INT_movetype) != 5)
{
if((informacije_predmet_igraca[idattacker][0] == 9 && random_num(1, informacije_predmet_igraca[idattacker][1]) == 1) || informacije_predmet_igraca[idattacker][0] == 10)
damage = float(health);
}
if(weapon == CSW_KNIFE)
{
if(klasa_igraca[this] == SWAT || klasa_igraca[this] == Pukovnik)
return HAM_SUPERCEDE;
if(informacije_predmet_igraca[this][0] == 4)
damage=damage*1.4+inteligencija_igraca[idattacker];
if(informacije_predmet_igraca[idattacker][0] == 8 || (klasa_igraca[idattacker] == Snajperista && random_num(1,2) == 1) || klasa_igraca[idattacker] == Marinac || klasa_igraca[idattacker] == Assassin && !(get_user_button(idattacker) & IN_ATTACK))
damage = float(health);
}
if(informacije_predmet_igraca[this][0] == 26 && random_num(1, informacije_predmet_igraca[this][1]) == 1)
{
SetHamParamEntity(3, this);
SetHamParamEntity(1, idattacker);
}
SetHamParamFloat(4, damage);
if(informacije_predmet_igraca[idattacker][0] == 12 && random_num(1, informacije_predmet_igraca[this][1]) == 1)
Display_Fade(this,1<<14,1<<14 ,1<<16,255,155,50,230);
ProveriNivo(idattacker);
return HAM_IGNORED;
}
public Player_Killed(victim, attacker)
{
if(!g_isAlive[attacker] || !g_isConnected[attacker])
return PLUGIN_CONTINUE;
g_isAlive[victim] = false
new weapon = get_user_weapon(attacker);
new energija = get_user_health(attacker);
if(cs_get_user_team(victim) != cs_get_user_team(attacker) && klasa_igraca[attacker])
{
new weapons[32];
new weaponsnum;
get_user_weapons(attacker, weapons, weaponsnum);
for(new i=0; i<weaponsnum; i++)
if(maxAmmo[weapons[i]] > 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<maximalna_energija_igraca[attacker])? energija+20: maximalna_energija_igraca[attacker];
set_user_clip(attacker, maxClip[weapon]);
set_user_health(attacker, nova_energija);
}
if(!informacije_predmet_igraca[attacker][0])
DajPredmet(attacker, random_num(1, sizeof naziv_predmeta-1));
if(informacije_predmet_igraca[attacker][0] == 14)
{
new nova_energija = (energija+50<maximalna_energija_igraca[attacker])? energija+50: maximalna_energija_igraca[attacker];
set_user_health(attacker, nova_energija);
}
iskustvo_igraca[attacker] += novo_iskustvo;
}
ProveriNivo(attacker);
return PLUGIN_CONTINUE;
}
public client_putinserver(id)
{
if(!is_user_bot(id))
g_isConnected[id] = true
else
g_isConnected[id] = false
DeleteSkills(id);
ObrisiZadatke(id);
Obrisipredmet(id);
g_FirstSpawn[id] = false;
get_user_authid(id, g_Data[id][Data_SteamID], 31);
if (!str_to_num(g_Data[id][Data_SteamID][10]))
return;
get_user_name(id, g_Data[id][Data_Name], 31);
if (!TrieKeyExists(g_Name, g_Data[id][Data_SteamID]))
AddRank(id);
else
LoadData(id);
UpdateRank(id, true);
}
AddRank(iPlayer)
{
g_Data[iPlayer][Data_Level] = 1;
ArrayPushString(g_SteamID, g_Data[iPlayer][Data_SteamID]);
TrieSetString(g_Name, g_Data[iPlayer][Data_SteamID], g_Data[iPlayer][Data_Name]);
}
LoadData(iPlayer)
TrieGetCell(g_PlayerLevel, g_Data[iPlayer][Data_SteamID], g_Data[iPlayer][Data_Level]);
UpdateRank(iPlayer, bool:Name)
{
if (Name)
TrieSetString(g_Name, g_Data[iPlayer][Data_SteamID], g_Data[iPlayer][Data_Name]);
TrieSetCell(g_PlayerLevel, g_Data[iPlayer][Data_SteamID], g_Data[iPlayer][Data_Level]);
return PLUGIN_CONTINUE;
}
public SayRank(iPlayer)
{
new Position = GetPosition(iPlayer);
if (!g_isConnected[iPlayer] || !Position)
{
ChatColor(iPlayer, "%L", iPlayer, "ML_CODNOTRANKED");
return;
}
ChatColor(iPlayer, "%L", iPlayer, "ML_CODRANK", Position, ArraySize(g_SteamID), g_Data[iPlayer][Data_Level]);
}
public SayTop15(iPlayer)
{
WriteTop15();
ChatColor(iPlayer, "^4Loading...")
set_task(1.0, "ShowMotd", iPlayer)
}
public ShowMotd(iPlayer)
show_motd(iPlayer, g_Top15, "Top 15");
public SortRanks(Array:SteamID, Position1, Position2)
{
static SteamID1[32];
ArrayGetString(SteamID, Position1, SteamID1, 31);
static SteamID2[32];
ArrayGetString(SteamID, Position2, SteamID2, 31);
static iLevel1;
TrieGetCell(g_PlayerLevel, SteamID1, iLevel1);
static iLevel2;
TrieGetCell(g_PlayerLevel, SteamID2, iLevel2);
if (iLevel1 < iLevel2)
return 1;
else if (iLevel1 > 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 <sizeof naziv_klase; i++)
{
formatex(klasa1, 49, "%L", id, naziv_klase[i]);
menu_additem(menu, klasa1);
}
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUBACK")
menu_setprop(menu, MPROP_BACKNAME, szItem);
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUNEXT")
menu_setprop(menu, MPROP_NEXTNAME, szItem);
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUEXIT")
menu_setprop(menu, MPROP_EXITNAME, szItem);
menu_display(id, menu, page[id][0]);
client_cmd(id, "spk QTM_CodMod/select");
}
public OpisKlase_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");
if(item++ == MENU_EXIT)
{
page[id][0] = 0
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
menu_destroy(menu)
page[id][0] = item / 7
new opis[512];
formatex(opis, charsmax(opis), "\yKlasa: \w%L^n%L", id, naziv_klase[item], id, opis_klase[item]);
show_menu(id, 1023, opis);
return PLUGIN_CONTINUE;
}
public OpisPredmeta1(id)
{
new szItem[30], predmet[50];
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUIZABERIPREDMET")
new menu = menu_create(szItem, "OpisPredmeta1_Handle");
for(new i=1; i <sizeof naziv_predmeta; i++)
{
formatex(predmet, 49, "%L", id, naziv_predmeta[i]);
menu_additem(menu, predmet);
}
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUBACK")
menu_setprop(menu, MPROP_BACKNAME, szItem);
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUNEXT")
menu_setprop(menu, MPROP_NEXTNAME, szItem);
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUEXIT")
menu_setprop(menu, MPROP_EXITNAME, szItem);
menu_display(id, menu, page[id][1]);
client_cmd(id, "spk QTM_CodMod/select");
}
public OpisPredmeta1_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");
if(item++ == MENU_EXIT)
{
page[id][1] = 0
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
menu_destroy(menu)
page[id][1] = item / 7
new predmet[512];
formatex(predmet, charsmax(predmet), "\yPredmet: \w%L^n%L", id, naziv_predmeta[item], id, opis_predmet[item]);
show_menu(id, 1023, predmet);
return PLUGIN_CONTINUE;
}
public IzaberiKlasu(id)
{
new menu = menu_create("Izaberi frakciju:", "IzaberiFrakciju_Handle");
for(new i = 1;i<sizeof(frakcije);i++)
{
menu_additem(menu, frakcije[i]);
}
menu_display(id, menu);
}
public IzaberiFrakciju_Handle(id, menu2, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu2);
return PLUGIN_CONTINUE;
}
item++;
frakcija_igraca[id] = item;
new szItem[30]
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUIZABERIKLASU")
new menu = menu_create(szItem, "IzaberiKlasu_Handle");
new klasa[50];
for(new i=1; i<sizeof naziv_klase; i++)
{
if(ako_pripada[i] == item)
{
UcitajPodatke(id, i);
formatex(klasa, 49, "%L \yLevel: %i", id, naziv_klase[i], level_igraca[id]);
menu_additem(menu, klasa);
}
}
UcitajPodatke(id, klasa_igraca[id]);
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUBACK")
menu_setprop(menu, MPROP_BACKNAME, szItem);
formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUNEXT")
menu_setprop(menu, MPROP_NEXTNAME, szItem);
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");
return PLUGIN_CONTINUE;
}
public IzaberiKlasu_Handle(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
item++;
new ako = 0;
for(new i=1; i<sizeof naziv_klase; i++)
{
if(ako_pripada[i] == frakcija_igraca[id]){
ako++;
}
if(ako == item){
item = i;
break;
}
}
if(item == klasa_igraca[id])
return PLUGIN_CONTINUE;
if(item == Assassin && !(get_user_flags(id) & ADMIN_LEVEL_A))
{
ChatColor(id, "%L", id, "ML_PREMIUM_KLASA");
IzaberiKlasu(id);
return PLUGIN_CONTINUE;
}
if(item == Pukovnik && !(get_user_flags(id) & ADMIN_LEVEL_B))
{
ChatColor(id, "%L", id, "ML_PREMIUM_KLASA");
IzaberiKlasu(id);
return PLUGIN_CONTINUE;
}
if(item == Rambo && !(get_user_flags(id) & ADMIN_LEVEL_C))
{
ChatColor(id, "%L", id, "ML_PREMIUM_KLASA");
IzaberiKlasu(id);
return PLUGIN_CONTINUE;
}
if(item == Nezaustavljivi && !(get_user_flags(id) & ADMIN_LEVEL_D))
{
ChatColor(id, "%L", id, "ML_PREMIUM_KLASA");
IzaberiKlasu(id);
return PLUGIN_CONTINUE;
}
if(klasa_igraca[id])
{
nova_klasa_igraca[id] = item;
ChatColor(id, "%L", id, "ML_KLASA_SLEDECARUNDA");
}
else
{
klasa_igraca[id] = item;
UcitajPodatke(id, klasa_igraca[id]);
Pocetak(id);
}
return PLUGIN_CONTINUE;
}
public DodelaPoena(id)
{
new inteligencija[65], inteligencija10[65];
new energija[60], energija10[60];
new snaga[60], snaga10[60];
new kondicija[60], kondicija10[60];
new naslov[25];
formatex(inteligencija, charsmax(inteligencija), "%L", id, "ML_INTELIGENCIJA", inteligencija_igraca[id]);
formatex(energija, charsmax(energija), "%L", id, "ML_ENERGIJA", energija_igraca[id]);
formatex(snaga, charsmax(snaga), "%L", id, "ML_SNAGA", snaga_igraca[id]);
formatex(kondicija, charsmax(kondicija), "%L", id, "ML_KONDICIJA", kondicija_igraca[id]);
formatex(inteligencija10, charsmax(inteligencija10), "%L", id, "ML_INTELIGENCIJA10");
formatex(energija10, charsmax(energija10), "%L", id, "ML_ENERGIJA10");
formatex(snaga10, charsmax(snaga10), "%L", id, "ML_SNAGA10");
formatex(kondicija10, charsmax(kondicija10), "%L", id, "ML_KONDICIJA10");
formatex(naslov, charsmax(naslov), "%L", id, "ML_DODELAPOENA", poeni_igraca[id]);
new menu = menu_create(naslov, "DodelaPoena_Handler");
menu_additem(menu, inteligencija);
menu_additem(menu, energija);
menu_additem(menu, snaga);
menu_additem(menu, kondicija);
menu_additem(menu, inteligencija10);
menu_additem(menu, energija10);
menu_additem(menu, snaga10);
menu_additem(menu, kondicija10);
menu_display(id, menu, page[id][1]);
}
public DodelaPoena_Handler(id, menu, item)
{
client_cmd(id, "spk QTM_CodMod/select");
if(item == MENU_EXIT)
{
page[id][1] = 0
menu_destroy(menu);
return PLUGIN_CONTINUE;
}
if(poeni_igraca[id] < 1)
return PLUGIN_CONTINUE;
page[id][1] = item / 7
new level_limit = get_pcvar_num(cvar_max_level);
switch(item)
{
case 0:
{
if(inteligencija_igraca[id]<level_limit)
{
inteligencija_igraca[id]++;
poeni_igraca[id]--;
}
else
ChatColor(id, "%L", id, "ML_POENI_MAX");
}
case 1:
{
if(energija_igraca[id]<level_limit)
{
energija_igraca[id]++;
poeni_igraca[id]--;
}
else
ChatColor(id, "%L", id, "ML_POENI_MAX");
}
case 2:
{
if(snaga_igraca[id]<level_limit)
{
snaga_igraca[id]++;
poeni_igraca[id]--;
}
else
ChatColor(id, "%L", id, "ML_POENI_MAX");
}
case 3:
{
if(kondicija_igraca[id]<level_limit)
{
kondicija_igraca[id]++;
poeni_igraca[id]--;
}
else
ChatColor(id, "%L", id, "ML_POENI_MAX");
}
case 4:
{
if(poeni_igraca[id] < 10)
{
ChatColor(id, "%L", id, "ML_POENI_NEDOVOLJNO");
}
else if(inteligencija_igraca[id]<level_limit)
{
inteligencija_igraca[id]+=10;
poeni_igraca[id]-=10
}
else
ChatColor(id, "%L", id, "ML_POENI_MAX");
}
case 5:
{
if(poeni_igraca[id] < 10)
{
ChatColor(id, "%L", id, "ML_POENI_NEDOVOLJNO");
}
else if(energija_igraca[id]<level_limit)
{
energija_igraca[id]+=10;
poeni_igraca[id]-=10;
}
else
ChatColor(id, "%L", id, "ML_POENI_MAX");
}
case 6:
{
if(poeni_igraca[id] < 10)
{
ChatColor(id, "%L", id, "ML_POENI_NEDOVOLJNO");
}
else if(snaga_igraca[id]<level_limit)
{
snaga_igraca[id]+=10;
poeni_igraca[id]-=10;
}
else
ChatColor(id, "%L", id, "ML_POENI_MAX");
}
case 7:
{
if(poeni_igraca[id] < 10)
{
ChatColor(id, "%L", id, "ML_POENI_NEDOVOLJNO");
}
else if(kondicija_igraca[id]<level_limit)
{
kondicija_igraca[id]+=10;
poeni_igraca[id]-=10;
}
else
ChatColor(id, "%L", id, "ML_POENI_MAX");
}
}
if(poeni_igraca[id] > 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_heal<maximalna_energija_igraca[pid])?energija+totem_heal:maximalna_energija_igraca[pid];
if (g_isAlive[pid])
{
set_user_health(pid, nova_energija);
Display_Fade(pid, 1<<10 ,1<<10,0x0000,0,255,0,65)
}
}
entity_set_edict(ent, EV_ENT_euser2, 0);
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 1.5);
return PLUGIN_CONTINUE;
}
if (entity_get_float(ent, EV_FL_ltime) < get_gametime() || !g_isAlive[id])
{
remove_entity(ent);
return PLUGIN_CONTINUE;
}
if (entity_get_float(ent, EV_FL_ltime)-2.0 < get_gametime())
set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 ) ;
new Float:forigin[3], origin[3];
entity_get_vector(ent, EV_VEC_origin, forigin);
FVecIVec(forigin,origin);
//Find people near and give them health
message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin );
write_byte( TE_BEAMCYLINDER );
write_coord( origin[0] );
write_coord( origin[1] );
write_coord( origin[2] );
write_coord( origin[0] );
write_coord( origin[1] + totem_dist );
write_coord( origin[2] + totem_dist );
write_short( sprite_white );
write_byte( 0 ); // startframe
write_byte( 0 ); // framerate
write_byte( 10 ); // life
write_byte( 10 ); // width
write_byte( 255 ); // noise
write_byte( 255 ); // r, g, b
write_byte( 100 );// r, g, b
write_byte( 100 ); // r, g, b
write_byte( 128 ); // brightness
write_byte( 5 ); // speed
message_end();
entity_set_edict(ent, EV_ENT_euser2 ,1);
entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.5);
return PLUGIN_CONTINUE;
}
public KreirajDinamit(id)
{
if(!broj_dinamita_igraca[id])
{
client_print(id, print_center, "Vec ste iskoristili sav dinamit!");
return PLUGIN_HANDLED;
}
if(inteligencija_igraca[id] < 1)
{
client_print(id, print_center, "Da koristite dinamit, morate povecati inteligenciju!");
return PLUGIN_HANDLED;
}
engclient_cmd(id, "weapon_knife")
g_dynamit_active[id] = true
ChangeModelsSatchel(id)
UTIL_PlayWeaponAnimation(id, 1)
set_task(0.5 ,"CreateBomb", id, _, _, _)
set_task(6.5 ,"detonate_satchel", id, _, _, _)
broj_dinamita_igraca[id]--;
return PLUGIN_CONTINUE
}
public CreateBomb(id)
{
UTIL_PlayWeaponAnimation(id, 2)
set_task(1.5 ,"return_weapon", id, _, _, _)
}
public return_weapon(id)
{
new iBomb = create_entity("info_target")
if(iBomb == 0)
return PLUGIN_HANDLED
entity_set_string(iBomb, EV_SZ_classname, "dynamite")
entity_set_model(iBomb, "models/w_dynamite.mdl")
entity_set_size(iBomb, Float:{-2.0,-2.0,-1.0}, Float:{2.0,2.0,1.0})
entity_set_int(iBomb, EV_INT_movetype, MOVETYPE_TOSS)
entity_set_int(iBomb, EV_INT_solid, SOLID_TRIGGER)
entity_set_float(iBomb, EV_FL_gravity, 0.9)
engfunc(EngFunc_DropToFloor, iBomb)
new Float:iOrigin[3]
entity_get_vector(id, EV_VEC_origin, iOrigin)
new Float:angles[3]
angles[0] += 180
angles[1] += 90
angles[2] += 90
entity_set_vector(iBomb, EV_VEC_angles, angles)
entity_set_origin(iBomb, iOrigin)
entity_set_int(iBomb, EV_ENT_owner, id)
emit_sound(id, CHAN_WEAPON, "weapons/c4_plant.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
entity_set_float(iBomb, EV_FL_nextthink, halflife_time() + 0.01)
g_dynamit_active[id] = false
engclient_cmd(id, "weapon_knife")
set_pev(id, pev_viewmodel2, "models/v_knife.mdl")
set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
return PLUGIN_HANDLED
}
public detonate_satchel(id)
{
new ent = find_ent_by_class(id, "dynamite")
if (ent)
{
CreateExplosion(ent, id)
remove_entity(ent)
}
return PLUGIN_CONTINUE
}
public CreateExplosion(ent, id)
{
if (!pev_valid(ent))
return PLUGIN_CONTINUE
new Float:origin[3];pev(ent, pev_origin, origin)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte (TE_EXPLOSION)
engfunc(EngFunc_WriteCoord, origin[0])
engfunc(EngFunc_WriteCoord, origin[1])
engfunc(EngFunc_WriteCoord, origin[2] + 30.0)
write_short(sprite_blast)
write_byte(30)
write_byte(15)
write_byte(0)
message_end()
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte (TE_SMOKE)
engfunc(EngFunc_WriteCoord, origin[0])
engfunc(EngFunc_WriteCoord, origin[1])
engfunc(EngFunc_WriteCoord, origin[2] + 50.0)
write_short(sprite_smoke)
write_byte(100)
write_byte(15)
message_end()
new entlist[33];
new numfound = find_sphere_class(ent, "player", 300.0 , entlist, 32);
for (new i=0; i < numfound; i++)
{
new pid = entlist[i];
if (!g_isAlive[pid] || get_user_team(id) == get_user_team(pid))
continue;
ExecuteHam(Ham_TakeDamage, pid, 0, id, 90.0+float(inteligencija_igraca[id]) , 1);
}
return PLUGIN_CONTINUE;
}
public PostaviMine(id)
{
if (!broj_min_igraca[id])
{
client_print(id, print_center, "Vec ste iskoristili sve mine!");
return PLUGIN_HANDLED;
}
if(inteligencija_igraca[id] < 1)
{
client_print(id, print_center, "Da koristite mine, morate povecati inteligenciju!");
return PLUGIN_HANDLED;
}
broj_min_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, "Mine");
entity_set_edict(ent ,EV_ENT_owner, id);
entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS);
entity_set_origin(ent, origin);
entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
entity_set_model(ent, "models/mine.mdl");
entity_set_size(ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0});
drop_to_floor(ent);
entity_set_float(ent,EV_FL_nextthink, get_gametime() + 0.01) ;
set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,50) ;
emit_sound( ent, CHAN_VOICE, "weapons/mine_deploy.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
emit_sound( ent, CHAN_BODY , "weapons/mine_charge.wav", 0.2, ATTN_NORM, 0, PITCH_NORM );
return PLUGIN_CONTINUE;
}
public DodirMine(ent, id)
{
if(!is_valid_ent(ent))
return PLUGIN_HANDLED;
new attacker = entity_get_edict(ent, EV_ENT_owner);
if (cs_get_user_team(attacker) != cs_get_user_team(id))
{
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[id] == Mitraljezac)
continue;
ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 90.0+float(inteligencija_igraca[attacker]) , 1);
}
remove_entity(ent);
}
return PLUGIN_CONTINUE;
}
public CurWeapon(id)
{
if(freezetime || !klasa_igraca[id])
return PLUGIN_HANDLED;
if(g_dynamit_active[id])
{
engclient_cmd( id, "weapon_knife" );
ChangeModelsSatchel(id)
}
PostaviBrzinu(id);
return PLUGIN_CONTINUE;
}
public Forward_ObjectCaps(id)
{
if(!g_isAlive[id])
return HAM_IGNORED;
KoristiPredmet(id);
return HAM_IGNORED;
}
public KoristiPredmet(id)
{
if((informacije_predmet_igraca[id][0] == 19 || informacije_predmet_igraca[id][0] == 24)&& informacije_predmet_igraca[id][1]>0)
{
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, "<body><table width=100%% border=0 align=center cellpadding=0 cellspacing=1>")
Length += formatex(g_Top15[Length], 2047 - Length, "<body><tr><th>#<th>Nick<th>Najveci Level</tr>")
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, "<tr><td>%d<td>%s<td>%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();
}
}
}
Comments