OvidiuS icon

COD MW [ OvidiuS Edit ]

OvidiuS | PRO | 05/17/12 01:22:29 PM UTC | 0 ⭐ | 5821 👁️ | Never ⏰ | []
Pawn |

71.36 KB

|

None

|

0 👍

/

0 👎

#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, "&", "&amp;" );
    replace_all( szOutput, iOutputLen, "<", "&lt;" );
    replace_all( szOutput, iOutputLen, ">", "&gt;" );
    
    new iLastIndex, i, cChar;
    while( ( cChar = szOutput[ i ] ) )
    {
        if( cChar == '&' )
        {
            if( equali( szOutput[ i ], "&lt;", 4 ) || equali( szOutput[ i ], "&gt;", 4 ) )
                i += 3;
            else if( equali( szOutput[ i ], "&amp;", 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