Advertisement
OvidiuS

COD MW [ OvidiuS Edit ]

May 17th, 2012
5,661
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 71.36 KB | None | 0 0
  1. #include <amxmodx>
  2. #include <amxmisc>
  3. #include <engine>
  4. #include <fakemeta>
  5. #include <hamsandwich>
  6. #include <fun>
  7. #include <cstrike>
  8. #include <nvault>
  9.  
  10. #define STANDARDNA_BRZINA 250.0
  11. #define ZADATAK_POSTAVI_brzinu 832
  12.  
  13. #define IN_MOVING (IN_FORWARD|IN_BACK|IN_MOVELEFT|IN_MOVERIGHT|IN_JUMP|IN_ATTACK|IN_ATTACK2)
  14. #define IsPlayer(%1) (1 <= %1 <= g_iMaxPlayers)
  15.  
  16. #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>"
  17.  
  18. enum RankData
  19. {
  20.     Data_SteamID[32],
  21.     Data_Name[32],
  22.     Data_Level
  23. };
  24.  
  25. new g_SyncHudObj, g_SyncHudObj3;
  26. new g_msgScreenFade, g_msgSayText, g_msgStatusIcon;
  27.  
  28. new cvar_xp_za_ubistvo, cvar_xp_za_level, cvar_max_level, cvar_gamename;
  29. new sprite_white, sprite_blast, sprite_smoke;
  30.  
  31. new g_vault;
  32.  
  33. new Ubrania_CT[4][]={"sas","gsg9","urban","gign"};
  34. new Ubrania_Terro[4][]={"arctic","leet","guerilla","terror"};
  35.  
  36. /* novi modeli
  37. new Ubrania_CT[][]={"cod_gign","cod_gsg9"};
  38. new Ubrania_Terro[][]={"cod_guerilla","cod_leet"};
  39. */
  40.  
  41. 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};
  42. 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 };
  43.  
  44. new informacije_predmet_igraca[33][2];
  45.  
  46. new const naziv_predmeta[][] = {"ML_PERK_NEMAPERK",
  47.     "ML_PERK_NECUJNECIZME", //1
  48.     "ML_PERK_DUPLIPANCIR", //2
  49.     "ML_PERK_OJACANIPANCIR", //3
  50.     "ML_PERK_VETERANNOZ", //4
  51.     "ML_PERK_IZNENADINEPR", //5
  52.     "ML_PERK_NEVIDLJIVOST", //6
  53.     "ML_PERK_RESPAWN", //7
  54.     "ML_PERK_NOZMARINCA", //8
  55.     "ML_PERK_KAMUFLAZA", //9
  56.     "ML_PERK_HEXPERT", //10
  57.     "ML_PERK_DUPLISKOK", //11
  58.     "ML_PERK_VOJNATAJNA", //12
  59.     "ML_PERK_AWPMASTER", //13
  60.     "ML_PERK_ADRENALIN", //14
  61.     "ML_PERK_RAMBOVATAJNA", //15
  62.     "ML_PERK_DEAGLEMANIJAK", //16
  63.     "ML_PERK_SUPERPANCIR", //17
  64.     "ML_PERK_EXTRAHP", //18
  65.     "ML_PERK_KOMPLETPOMOC", //19
  66.     "ML_PERK_NORECOIL", //20
  67.     "ML_PERK_TITANMETCI", //21
  68.     "ML_PERK_PUKMETCI", //22
  69.     "ML_PERK_OGRNORECOIL", //23
  70.     "ML_PERK_HPBOOSTER", //24
  71.     "ML_PERK_50HP", //25
  72.     "ML_PERK_NANOKLOP", //26
  73.     "ML_PERK_BULLETPROOF", //27
  74.     "ML_PERK_JETPACK", //28
  75.     "ML_PERK_GRAVITACIJA", //29
  76.     "ML_PERK_SPEED", //30
  77.     "ML_PERK_GOLDENAMMO", //31
  78.     "ML_PERK_HEADSHOT"
  79. };
  80.  
  81. new const opis_predmet[][] = {"ML_OPIS_NEMAPERK",
  82.     "ML_OPIS_NECUJNECIZME",
  83.     "ML_OPIS_DUPLIPANCIR",
  84.     "ML_OPIS_OJACANIPANCIR",
  85.     "ML_OPIS_VETERANNOZ",
  86.     "ML_OPIS_IZNENADINEPR",
  87.     "ML_OPIS_NEVIDLJIVOST",
  88.     "ML_OPIS_RESPAWN",
  89.     "ML_OPIS_NOZMARINCA",
  90.     "ML_OPIS_KAMUFLAZA",
  91.     "ML_OPIS_HEXPERT",
  92.     "ML_OPIS_DUPLISKOK",
  93.     "ML_OPIS_VOJNATAJNA",
  94.     "ML_OPIS_AWPMASTER",
  95.     "ML_OPIS_ADRENALIN",
  96.     "ML_OPIS_RAMBOVATAJNA",
  97.     "ML_OPIS_DEAGLEMANIJAK",
  98.     "ML_OPIS_SUPERPANCIR",
  99.     "ML_OPIS_EXTRAHP",
  100.     "ML_OPIS_KOMPLETPOMOC",
  101.     "ML_OPIS_NORECOIL",
  102.     "ML_OPIS_TITANMETCI",
  103.     "ML_OPIS_PUKMETCI",
  104.     "ML_OPIS_OGRNORECOIL",
  105.     "ML_OPIS_HPBOOSTER",
  106.     "ML_OPIS_50HP",
  107.     "ML_OPIS_NANOKLOP",
  108.     "ML_OPIS_BULLETPROOF",
  109.     "ML_OPIS_JETPACK",
  110.     "ML_OPIS_GRAVITACIJA",
  111.     "ML_OPIS_SPEED",
  112.     "ML_OPIS_GOLDENAMMO",
  113.     "ML_OPIS_HEADSHOT"
  114. };
  115.  
  116. new szShopMenu[][] = {
  117.     "ML_SHOP_ASPIRIN",
  118.     "ML_SHOP_MORFIJUM",
  119.     "ML_SHOP_REDBULL",
  120.     "ML_SHOP_ISKUSTVO",
  121.     "ML_SHOP_EISKUSTVO",
  122.     "ML_SHOP_SIZBOR",
  123.     "ML_SHOP_MINE",
  124.     "ML_SHOP_DINAMIT"
  125. }
  126.  
  127. new szShopSufix[][] = {
  128.     "ML_SHOP_SUFIX1",
  129.     "ML_SHOP_SUFIX2",
  130.     "ML_SHOP_SUFIX3",
  131.     "ML_SHOP_SUFIX4",
  132.     "ML_SHOP_SUFIX5",
  133.     "ML_SHOP_SUFIX6",
  134.     "ML_SHOP_SUFIX7",
  135.     "ML_SHOP_SUFIX8"
  136. }
  137.  
  138. new szShopCene[] = {
  139.     3000,
  140.     5000,
  141.     7500,
  142.     5000,
  143.     15000,
  144.     3000,
  145.     10000,
  146.     10000
  147. }
  148.  
  149. new iskustvo_za_pare, iskustvo_za_mnogopara;
  150.  
  151. new klasa_igraca[33];
  152. new level_igraca[33] = 1;
  153. new iskustvo_igraca[33];
  154.  
  155. new nova_klasa_igraca[33];
  156.  
  157. new poeni_igraca[33];
  158. new energija_igraca[33];
  159. new inteligencija_igraca[33];
  160. new snaga_igraca[33];
  161. new Float:smanjene_povrede_igraca[33];
  162. new kondicija_igraca[33];
  163. new maximalna_energija_igraca[33];
  164. new Float:brzina_igraca[33];
  165. new frakcija_igraca[33];
  166.  
  167. 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};
  168. 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};
  169. 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};
  170. 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};
  171. new const naziv_klase[][] = { "ML_KLASA_NEMAKLASU",
  172.     "ML_KLASA_SNAJPERISTA",
  173.     "ML_KLASA_MARINAC",
  174.     "ML_KLASA_STRELAC",
  175.     "ML_KLASA_MITRALJEZAC",
  176.     "ML_KLASA_DOKTOR",
  177.     "ML_KLASA_PODRSKA",
  178.     "ML_KLASA_MINER",
  179.     "ML_KLASA_DEMOLISH",
  180.     "ML_KLASA_RUSHER",
  181.     "ML_KLASA_RAMBO",
  182.     "ML_KLASA_PARTIZAN",
  183.     "ML_KLASA_SPIJUN",
  184.     "ML_KLASA_BOMBARDER",
  185.     "ML_KLASA_GUNNER",
  186.     "ML_KLASA_MAJOR",
  187.     "ML_KLASA_POBUNJENJIK",
  188.     "ML_KLASA_ASSASSIN",
  189.     "ML_KLASA_SWAT",
  190.     "ML_KLASA_PREDATOR",
  191.     "ML_KLASA_KOMANDOS",
  192.     "ML_KLASA_PUKOVNIK",
  193.     "ML_KLASA_WARRIOR"
  194. };
  195.  
  196. new const opis_klase[][] = { "ML_OPIS_NEMAKLASU",
  197.     "ML_OPIS_SNAJPERISTA",
  198.     "ML_OPIS_MARINAC",
  199.     "ML_OPIS_STRELAC",
  200.     "ML_OPIS_MITRALJEZAC",
  201.     "ML_OPIS_DOKTOR",
  202.     "ML_OPIS_PODRSKA",
  203.     "ML_OPIS_MINER",
  204.     "ML_OPIS_DEMOLISH",
  205.     "ML_OPIS_RUSHER",
  206.     "ML_OPIS_RAMBO",
  207.     "ML_OPIS_PARTIZAN",
  208.     "ML_OPIS_SPIJUN",
  209.     "ML_OPIS_BOMBARDER",
  210.     "ML_OPIS_GUNNER",
  211.     "ML_OPIS_MAJOR",
  212.     "ML_OPIS_POBUNJENJIK",
  213.     "ML_OPIS_ASSASSIN",
  214.     "ML_OPIS_SWAT",
  215.     "ML_OPIS_PREDATOR",
  216.     "ML_OPIS_KOMANDOS",
  217.     "ML_OPIS_PUKOVNIK",
  218.     "ML_OPIS_WARRIOR"
  219. };
  220.  
  221.  
  222. new frakcije[][]={
  223.     "Nema",
  224.     "Army",
  225.     "Elite (Premium)"
  226. }
  227.  
  228. enum { NONE = 0,army,elita}
  229.  
  230. new const ako_pripada[]={
  231.     NONE,
  232.     army, //1
  233.     army, //2
  234.     army, //3
  235.     army, //4
  236.     army, //5
  237.     army, //6
  238.     army, //7
  239.     army, //8
  240.     army, //9
  241.     elita, //10
  242.     army, //11
  243.     army, //12
  244.     army, //13
  245.     army, //14
  246.     army, //15
  247.     army, //16
  248.     elita, //17
  249.     army,
  250.     army, //16
  251.     elita, //17
  252.     army,
  253.     army
  254. };
  255.  
  256. new broj_medkit_igraca[33];
  257. new broj_min_igraca[33];
  258. new broj_dinamita_igraca[33];
  259. new broj_skokova_igraca[33];
  260.  
  261. new bool:freezetime = true;
  262. new bool:g_BackAttack[33];
  263.  
  264. new g_dynamit_active[33];
  265. new g_szModel[33][32];
  266. new page[33][2];
  267. new g_iMaxPlayers, g_hud_thinker;
  268. new g_iHealth[33];
  269. new bool:g_isConnected[33], g_isAlive[33];
  270.  
  271. new g_iAdminChatFlag = ADMIN_ALL;
  272. new g_happy_hour, happy_hour_on;
  273.  
  274. new g_RankFile[64];
  275.  
  276. new Array:g_SteamID;
  277. new Trie:g_Name, Trie:g_PlayerLevel;
  278.  
  279. new g_Top15[2048];
  280. new g_Data[33][RankData];
  281. new bool:g_FirstSpawn[33];
  282.  
  283. public plugin_init()
  284. {
  285.     register_plugin("Call of Duty: MW Mod", "1.0", "QTM_Peyote & OvidiuS");
  286.     register_cvar("CallOfDuty", "1.0", FCVAR_SERVER|FCVAR_SPONLY);
  287.    
  288.     g_vault = nvault_open("CodMod");
  289.    
  290.     g_happy_hour = register_cvar("cod_vip_hour", "off")
  291.    
  292.     static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s
  293.     get_pcvar_string(g_happy_hour, hours, charsmax(hours))
  294.    
  295.     if(equal(hours, "off"))
  296.     {
  297.         happy_hour_on = false;
  298.         register_dictionary("codmod.txt")
  299.     }
  300.     else
  301.     {
  302.         strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-')
  303.         hour1 = str_to_num(hour1s)
  304.         hour2 = str_to_num(hour2s)
  305.        
  306.         time(h, m, s)
  307.         if(hour1 <= h <= hour2) happy_hour_on = true
  308.         else happy_hour_on = false
  309.        
  310.         if(!happy_hour_on)
  311.         register_dictionary("codmod.txt")
  312.         else
  313.         register_dictionary("codmodhp.txt")
  314.     }
  315.    
  316.     register_think("MedKit","MedKitThink");
  317.    
  318.     RegisterHam(Ham_Spawn, "player", "Pocetak", 1);
  319.     RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
  320.     RegisterHam(Ham_Killed, "player", "Player_Killed")
  321.     RegisterHam(Ham_ObjectCaps , "player", "Forward_ObjectCaps");
  322.     RegisterHam(Ham_Player_Jump, "player", "Player_Jump")
  323.     RegisterHam(Ham_TraceAttack, "player", "HamTraceAttack");
  324.     RegisterHam(Ham_Touch, "armoury_entity", "DodirOruzija");
  325.     RegisterHam(Ham_Touch, "weapon_shield", "DodirOruzija");
  326.     RegisterHam(Ham_Touch, "weaponbox", "DodirOruzija");
  327.  
  328.     register_forward(FM_CmdStart, "CmdStart");
  329.     register_forward(FM_SetClientKeyValue, "SetClientKeyValue");
  330.    
  331.     register_logevent("PocetakRunde", 2, "1=Round_Start");
  332.  
  333.     register_event("HLTV", "novaRunda", "a", "1=0", "2=0");  
  334.     register_event("CurWeapon","CurWeapon","be", "1=1");
  335.     register_event("Health", "Event_Health", "b")
  336.    
  337.     register_touch("Mine", "player",  "DodirMine");
  338.  
  339.     get_datadir(g_RankFile, charsmax(g_RankFile));
  340.     add(g_RankFile, charsmax(g_RankFile), "/codrank.ini");
  341.    
  342.     g_SteamID = ArrayCreate(32, 1);
  343.     g_Name = TrieCreate();
  344.     g_PlayerLevel = TrieCreate();
  345.    
  346.     cvar_xp_za_ubistvo = register_cvar("cod_killxp", "70");
  347.     cvar_xp_za_level = register_cvar("cod_levelratio", "2");
  348.     cvar_max_level = register_cvar("cod_maxlevel", "10000");
  349.     iskustvo_za_pare = 1000;
  350.     iskustvo_za_mnogopara = 5000;
  351.  
  352.     register_clcmd("say /rank", "SayRank");
  353.     register_clcmd("say /top15", "SayTop15");
  354.  
  355.     register_clcmd("say /klasa", "IzaberiKlasu");
  356.     register_clcmd("say /opis", "OpisKlase");
  357.     register_clcmd("say /predmet", "OpisPredmeta");
  358.     register_clcmd("say /item", "OpisPredmeta");
  359.     register_clcmd("say /perks", "OpisPredmeta1");
  360.     register_clcmd("say /drop", "IzbaciPredmet");
  361.     register_clcmd("say /izbaci", "IzbaciPredmet");
  362.     register_clcmd("say /reset", "KomandaResetujPoene");
  363.     register_clcmd("say /shop", "ShopMenu");
  364.     register_clcmd("say /pomoc", "Pomoc");
  365.     register_clcmd("say /help", "Pomoc");
  366.     register_clcmd("say /lang", "IzaberiJezik")
  367.     register_clcmd("fullupdate", "BlokirajKomande");
  368.    
  369.     register_clcmd( "say", "CmdSay" );
  370.     register_clcmd( "say_team", "CmdSayTeam" );
  371.    
  372.     g_msgSayText = get_user_msgid( "SayText" );
  373.     g_msgStatusIcon = get_user_msgid("StatusIcon");
  374.     g_msgScreenFade = get_user_msgid("ScreenFade");
  375.     g_iMaxPlayers = get_maxplayers();
  376.    
  377.     register_message(g_msgStatusIcon, "msgStatusIcon");
  378.    
  379.     register_menucmd(register_menuid("Klasa:"), 1023, "OpisKlase");
  380.     register_menucmd(register_menuid("Predmet:"), 1023, "OpisPredmeta1");
  381.    
  382.     new szCommand[ 32 ], iFlags;
  383.     for( new i = 0; get_concmd( i, szCommand, charsmax( szCommand ), iFlags, "", 0, 0, -1 ); i++ )
  384.     {
  385.         if( equal( szCommand, "amx_chat" ) )
  386.         {
  387.             g_iAdminChatFlag = iFlags;
  388.             break;
  389.         }
  390.     }
  391.    
  392.     LoadRanks();
  393.     ArraySort(g_SteamID, "SortRanks");
  394.     WriteTop15();
  395. }
  396.  
  397. public plugin_cfg()
  398. {
  399.     server_cmd("sv_maxspeed 9999");
  400.     CreateHudEntity();
  401. }
  402.  
  403. public plugin_precache()
  404. {      
  405.     sprite_white = precache_model("sprites/white.spr") ;
  406.     sprite_blast = precache_model("sprites/dexplo.spr");
  407.     sprite_smoke = precache_model("sprites/steam1.spr");
  408.    
  409.     precache_sound("QTM_CodMod/select.wav");
  410.     precache_sound("QTM_CodMod/start.wav");
  411.     precache_sound("QTM_CodMod/start2.wav");
  412.     precache_sound("QTM_CodMod/levelup.wav");
  413.     precache_sound("weapons/mine_charge.wav")
  414.     precache_sound("weapons/mine_deploy.wav")
  415.     precache_sound("weapons/rocketfire1.wav")
  416.    
  417.     precache_model("models/v_dynamite.mdl");
  418.     precache_model("models/p_dynamite.mdl");
  419.     precache_model("models/w_dynamite.mdl");
  420.     precache_model("models/w_medkit.mdl");
  421.     precache_model("models/rpgrocket.mdl");
  422.     precache_model("models/mine.mdl");
  423.  
  424.     /*
  425.     new szTmp[64];
  426.     for(new i = 0; i<sizeof Ubrania_CT; i++)
  427.     {
  428.         formatex(szTmp, charsmax(szTmp), "models/player/%s/%s.mdl", Ubrania_CT[i], Ubrania_CT[i])
  429.         precache_model(szTmp);
  430.         formatex(szTmp, charsmax(szTmp), "models/player/%s/%sT.mdl", Ubrania_CT[i], Ubrania_CT[i])
  431.         precache_model(szTmp);
  432.     }
  433.     for(new i = 0; i<sizeof Ubrania_Terro; i++)
  434.     {
  435.         formatex(szTmp, charsmax(szTmp), "models/player/%s/%s.mdl", Ubrania_Terro[i], Ubrania_Terro[i])
  436.         precache_model(szTmp);
  437.         formatex(szTmp, charsmax(szTmp), "models/player/%s/%sT.mdl", Ubrania_Terro[i], Ubrania_Terro[i])
  438.         precache_model(szTmp);
  439.     }
  440.     */
  441.     g_SyncHudObj = CreateHudSyncObj();
  442.     g_SyncHudObj3 = CreateHudSyncObj();
  443. }
  444.  
  445. public msgStatusIcon(msgid, msgdest, id)
  446. {
  447.     static szIcon[8];
  448.     get_msg_arg_string(2, szIcon, charsmax(szIcon));
  449.  
  450.     if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
  451.     {
  452.         set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
  453.         return PLUGIN_HANDLED;
  454.     }
  455.     return PLUGIN_CONTINUE;
  456. }
  457.  
  458. LoadRanks()
  459. {
  460.     new f = fopen(g_RankFile, "r");
  461.  
  462.     if (!f)
  463.         return;
  464.  
  465.     new Data[96], SteamID[32], Name[32], iLevel[16];
  466.  
  467.     while (!feof(f))
  468.     {
  469.         fgets(f, Data, 96);
  470.  
  471.         if (!strlen(Data))
  472.             continue;
  473.  
  474.         parse(Data, SteamID, charsmax(SteamID), Name, charsmax(Name), iLevel, charsmax(iLevel));
  475.  
  476.         ArrayPushString(g_SteamID, SteamID);
  477.        
  478.         TrieSetString(g_Name, SteamID, Name);
  479.         TrieSetCell(g_PlayerLevel, SteamID, str_to_num(iLevel));
  480.     }
  481.     fclose(f);
  482. }
  483.  
  484. SaveRanks()
  485. {
  486.     new f = fopen(g_RankFile, "w+");
  487.  
  488.     if (!f)
  489.         return;
  490.  
  491.     for (new Position, Size = ArraySize(g_SteamID), SteamID[32], Name[32], iLevel; Position < Size; Position++)
  492.     {
  493.         ArrayGetString(g_SteamID, Position, SteamID, charsmax(SteamID));
  494.         TrieGetString(g_Name, SteamID, Name, charsmax(Name));
  495.         TrieGetCell(g_PlayerLevel, SteamID, iLevel);
  496.  
  497.         fprintf(f, "%s ^"%s^" %d^n", SteamID, Name, iLevel);
  498.     }
  499.     fclose(f);
  500. }
  501.  
  502. public CreateHudEntity()
  503. {
  504.     static failtimes;
  505.     g_hud_thinker = create_entity("info_target");
  506.    
  507.     if(!is_valid_ent(g_hud_thinker) )
  508.     {
  509.         ++failtimes;
  510.        
  511.         log_amx("[ERROR] Failed to create hud entity (%i/10)", failtimes);
  512.        
  513.         if( failtimes < 10 )
  514.             set_task(1.0, "CreateHudEntity");
  515.         else
  516.             log_amx("[ERROR] Could not create hud entity!");
  517.            
  518.         return;
  519.     }
  520.    
  521.     entity_set_string(g_hud_thinker, EV_SZ_classname, "hud_entity");
  522.     entity_set_float(g_hud_thinker, EV_FL_nextthink, get_gametime() + 1.0);
  523.     register_think("hud_entity", "FwdThink");
  524. }
  525.  
  526. public CmdStart(id, uc_handle)
  527. {
  528.     if(!g_isAlive[id])
  529.         return FMRES_IGNORED;
  530.        
  531.     new iButton = get_uc(uc_handle, UC_Buttons);
  532.     new iFlags = pev(id, pev_flags);
  533.    
  534.     if(iButton & IN_ATTACK)
  535.     {
  536.         new Float:punchangle[3];
  537.        
  538.         if(informacije_predmet_igraca[id][0] == 20)
  539.             set_pev(id, pev_punchangle, punchangle);
  540.            
  541.         if(informacije_predmet_igraca[id][0] == 23)
  542.         {
  543.             set_pev(id, pev_punchangle, punchangle);
  544.             for(new i=0; i<3;i++)
  545.                 punchangle[i]*=0.9;
  546.             set_pev(id, pev_punchangle, punchangle);
  547.         }
  548.     }
  549.  
  550.     if(((iButton & IN_ATTACK) || (iButton & IN_ATTACK2)) && informacije_predmet_igraca[id][0] == 5)
  551.     {
  552.         static Float:fViewAngles[3];
  553.         get_uc(uc_handle, UC_ViewAngles, fViewAngles);
  554.        
  555.         static iEnt, Float:fOrigin[3];
  556.         pev(id, pev_origin, fOrigin);
  557.        
  558.         iEnt = fm_trace_target(id, fOrigin, 100);
  559.        
  560.         if(!IsPlayer(iEnt))
  561.             return FMRES_IGNORED;
  562.        
  563.         static Float:fTViewAngles[3];
  564.         pev(iEnt, pev_v_angle, fTViewAngles);
  565.        
  566.         static Float:fMinAngle, Float:fMaxAngle;
  567.         fMinAngle = fViewAngles[1] - 80;
  568.         fMaxAngle = fViewAngles[1] + 80;
  569.        
  570.         if(fMinAngle <= fTViewAngles[1] <= fMaxAngle)
  571.             g_BackAttack[id] = true;
  572.         else
  573.             g_BackAttack[id] = false;
  574.     }
  575.    
  576.     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)
  577.     {
  578.         informacije_predmet_igraca[id][1] = floatround(get_gametime());
  579.         new Float:velocity[3];
  580.         VelocityByAim(id, 700, velocity);
  581.         velocity[2] = random_float(265.0,285.0);
  582.         set_pev(id, pev_velocity, velocity);
  583.         UTIL_SetBarTime(id, 4, 0)
  584.     }
  585.     return FMRES_IGNORED;
  586. }
  587.  
  588. public client_PreThink(id)
  589. {
  590.     if(!g_isAlive[id])
  591.         return PLUGIN_CONTINUE;
  592.    
  593.     new iButton = pev(id, pev_button)
  594.    
  595.     if(iButton & IN_MOVING && klasa_igraca[id] == Nezaustavljivi)
  596.         set_user_rendering(id, kRenderFxNone, 0,0,0, kRenderNormal, 255)
  597.     else if(klasa_igraca[id] == Nezaustavljivi)
  598.         set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 10);
  599.        
  600.     if(klasa_igraca[id] == Partizan || klasa_igraca[id] == Pistolj || informacije_predmet_igraca[id][0] == 6)
  601.         set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 70);
  602.     else if(klasa_igraca[id] != Partizan || klasa_igraca[id] != Pistolj  || informacije_predmet_igraca[id][0] != 6)
  603.         set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 255);
  604.        
  605.     if(klasa_igraca[id] == Assassin && get_user_weapon(id) == CSW_KNIFE)
  606.         set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 10);
  607.     else if(klasa_igraca[id] == Assassin && get_user_weapon(id) != CSW_KNIFE)
  608.         set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 255);
  609.        
  610.     return PLUGIN_HANDLED      
  611. }
  612.  
  613. public Player_Jump(id)
  614. {
  615.     if(!g_isAlive[id])
  616.         return HAM_IGNORED
  617.  
  618.     if(informacije_predmet_igraca[id][0] == 7)
  619.     {  
  620.         static iOldButtons ; iOldButtons = entity_get_int(id, EV_INT_oldbuttons)
  621.         if( iOldButtons & IN_JUMP )
  622.         {
  623.             entity_set_int(id, EV_INT_oldbuttons, iOldButtons & ~IN_JUMP)
  624.             return HAM_HANDLED
  625.         }
  626.     }
  627.    
  628.     if(informacije_predmet_igraca[id][0] == 11 || klasa_igraca[id] == Rambo)
  629.     {
  630.         new fFlags = pev(id, pev_flags)
  631.         if( fFlags & FL_WATERJUMP || pev(id, pev_waterlevel) >= 2 || !(get_pdata_int(id, 246, 5) & IN_JUMP))
  632.             return HAM_IGNORED
  633.         else if(fFlags & FL_ONGROUND)
  634.         {
  635.             broj_skokova_igraca[id] = 0;
  636.             if(informacije_predmet_igraca[id][0] == 11 || klasa_igraca[id] == Rambo)
  637.                 broj_skokova_igraca[id]++;
  638.         }
  639.         if(broj_skokova_igraca[id] > 0 )
  640.         {
  641.             broj_skokova_igraca[id]--;
  642.             new Float:fVelocity[3]
  643.             pev(id, pev_velocity, fVelocity)
  644.             fVelocity[2] = random_float(265.0,285.0);
  645.             set_pev(id, pev_velocity, fVelocity)
  646.         }
  647.     }
  648.     return HAM_IGNORED
  649. }
  650.  
  651. public HamTraceAttack(Vic, Att, Float:dmg, Float:dir[3], traceresult, dmgbits)
  652. {
  653.     if(!IsPlayer(Att) || !IsPlayer(Vic) || Vic == Att)
  654.         return HAM_IGNORED;
  655.    
  656.     new hitzone = get_tr2(traceresult, TR_iHitgroup);
  657.     if((informacije_predmet_igraca[Vic][0] == 32 && hitzone == HIT_HEAD))
  658.     {
  659.         set_tr2(traceresult, TR_iHitgroup, HIT_CHEST)
  660.         return HAM_HANDLED
  661.     }
  662.     return HAM_IGNORED;
  663. }
  664.  
  665. public ShopMenu(id)
  666. {
  667.     new szTmp[64], szItem[30];
  668.     formatex(szTmp,charsmax(szTmp),"\yBlack Market :")
  669.     new pMenu = menu_create(szTmp,"ShopMenu_Handle")
  670.     for(new i = 0;i<sizeof szShopMenu;i++)
  671.     {
  672.         formatex(szTmp,charsmax(szTmp),"%L \r%L \y[%d$]", id, szShopMenu[i], id, szShopSufix[i], szShopCene[i]);
  673.         menu_additem(pMenu,szTmp);
  674.     }
  675.    
  676.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUBACK")
  677.     menu_setprop(pMenu, MPROP_BACKNAME, szItem);
  678.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUNEXT")
  679.     menu_setprop(pMenu, MPROP_NEXTNAME, szItem);
  680.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUEXIT")
  681.     menu_setprop(pMenu, MPROP_EXITNAME, szItem);
  682.    
  683.     menu_display(id,pMenu)
  684.  
  685.     return PLUGIN_HANDLED;
  686. }
  687.  
  688. public ShopMenu_Handle(id, menu, item)
  689. {
  690.     if(item == MENU_EXIT)
  691.     {
  692.         menu_destroy(menu);
  693.         return PLUGIN_HANDLED;
  694.     }
  695.     if(szShopCene[item] > cs_get_user_money(id))
  696.     {
  697.         ChatColor(id, "%L", id, "ML_SHOPNEMAPARA");
  698.         menu_destroy(menu);
  699.         ShopMenu(id)
  700.         return PLUGIN_HANDLED;
  701.     }
  702.     client_cmd(id, "spk QTM_CodMod/select");
  703.    
  704.     cs_set_user_money(id, cs_get_user_money(id) - szShopCene[item]);
  705.     ChatColor(id, "%L", id, "ML_SHOPNEKUPIOSI", id, szShopMenu[item]);
  706.    
  707.     new hp = get_user_health(id);
  708.     switch(item)
  709.     {
  710.         case 0:
  711.         {
  712.             new ammount=50;
  713.             new nova_energija = (hp+ammount<maximalna_energija_igraca[id])? hp+ammount: maximalna_energija_igraca[id];
  714.             set_user_health(id, nova_energija);
  715.         }
  716.         case 1:
  717.         {
  718.             new ammount=100;
  719.             new nova_energija = (hp+ammount<maximalna_energija_igraca[id])? hp+ammount: maximalna_energija_igraca[id];
  720.             set_user_health(id, nova_energija);
  721.         }
  722.         case 2:
  723.         {
  724.             set_user_gravity(id,get_user_gravity(id) - 0.3);
  725.             set_user_maxspeed(id,get_user_maxspeed(id) + 10.0);
  726.         }
  727.         case 3:
  728.         {
  729.             iskustvo_igraca[id] += iskustvo_za_pare;
  730.             ProveriNivo(id);
  731.         }
  732.         case 4:
  733.         {
  734.             iskustvo_igraca[id] += iskustvo_za_mnogopara;
  735.             ProveriNivo(id);
  736.         }
  737.         case 5:
  738.         {
  739.             DajPredmet(id, random_num(1, sizeof naziv_predmeta-1));
  740.         }
  741.         case 6:
  742.         {
  743.             broj_min_igraca[id] +=2;
  744.         }
  745.         case 7:
  746.         {
  747.             broj_dinamita_igraca[id] +=2;
  748.         }
  749.     }
  750.     menu_destroy(menu);
  751.    
  752.     return PLUGIN_HANDLED;
  753. }
  754.  
  755. public Pocetak(id)
  756. {
  757.     if(!is_user_alive(id) || !cs_get_user_team(id))
  758.         return PLUGIN_HANDLED;
  759.        
  760.     g_isAlive[id] = true
  761.     DefaultModel(id)
  762.    
  763.     if(nova_klasa_igraca[id])
  764.     {
  765.         broj_medkit_igraca[id] = 0;
  766.         broj_min_igraca[id] = 0;
  767.         broj_dinamita_igraca[id] = 0;
  768.         klasa_igraca[id] = nova_klasa_igraca[id];
  769.         nova_klasa_igraca[id] = 0;
  770.         strip_user_weapons(id);
  771.         give_item(id, "weapon_knife");
  772.  
  773.         UcitajPodatke(id, klasa_igraca[id]);
  774.     }
  775.        
  776.     if(!klasa_igraca[id] && !g_FirstSpawn[id])
  777.     {
  778.         IzaberiKlasu(id);
  779.         return PLUGIN_CONTINUE;
  780.     }
  781.    
  782.     if(g_FirstSpawn[id])
  783.     {
  784.         static language[32];
  785.         get_user_info(id, "lang", language, charsmax(language));
  786.         if(equal(language, "sr"))
  787.             return PLUGIN_CONTINUE
  788.         else
  789.             IzaberiJezik(id)
  790.            
  791.         g_FirstSpawn[id] = false;
  792.     }
  793.  
  794.     switch(klasa_igraca[id])
  795.     {
  796.         case Snajperista: // Snajperista
  797.         {
  798.             give_item(id, "weapon_usp");
  799.         }
  800.         case Marinac: // Marinac
  801.         {
  802.             give_item(id, "weapon_p228");
  803.         }
  804.         case Pro_Strelac: // Spec OPS
  805.         {
  806.             give_item(id, "weapon_deagle");
  807.         }
  808.         case Mitraljezac: // Mitraljezac
  809.         {
  810.             give_item(id, "weapon_hegrenade");
  811.             give_item(id, "weapon_flashbang");             
  812.             give_item(id, "weapon_smokegrenade");
  813.         }
  814.         case Doktor: // Doktor
  815.         {
  816.             broj_medkit_igraca[id] = 2;
  817.         }  
  818.         case Vatrena_Podrska: // Zelena Beretka
  819.         {
  820.  
  821.         }
  822.         case Miner: // Miner
  823.         {
  824.             broj_min_igraca[id] = 3;
  825.         }
  826.         case Demolitions: // Komandos
  827.         {
  828.             give_item(id, "weapon_hegrenade");
  829.             give_item(id, "weapon_flashbang");
  830.             give_item(id, "weapon_smokegrenade");
  831.             broj_dinamita_igraca[id] = 1;
  832.         }
  833.         case Rusher: // Civilna Vojska
  834.         {
  835.             give_item(id, "weapon_m3");
  836.         }
  837.         case Rambo: // Terorista
  838.         {
  839.         }
  840.         case Partizan: //SWAT
  841.         {
  842.             give_item(id, "weapon_flashbang");
  843.             set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransColor, 70);
  844.         }
  845.         case Spijun: //Dvostruki Agent
  846.         {
  847.             give_item(id, "weapon_deagle");
  848.             PromeniModel(id, 0);
  849.         }
  850.         case Bombarder: // Artiljerija
  851.         {
  852.             ////nst_wpn_give_weapon1(id, "rpg");
  853.             give_item(id, "weapon_p90");
  854.             give_item(id, "weapon_deagle");
  855.             give_item(id, "weapon_hegrenade");
  856.         }
  857.         case Gunner:
  858.         {
  859.             give_item(id, "weapon_g3sg1");
  860.             //rpg[id] = 1 ;
  861.         }
  862.         case Pesadinac:
  863.         {
  864.             give_item(id, "weapon_xm1014");
  865.             give_item(id, "weapon_p228");
  866.         }
  867.         case Pobunjenik:
  868.         {
  869.             give_item(id, "weapon_sg552");
  870.             give_item(id, "weapon_hegrenade");
  871.             broj_min_igraca[id] = 1 ;
  872.         }
  873.         case Assassin:
  874.         {
  875.             give_item(id, "weapon_knife");
  876.             give_item(id, "weapon_usp");
  877.         }
  878.         case SWAT:
  879.         {
  880.             give_item(id, "weapon_m4a1");
  881.         }
  882.         case Pistolj:
  883.         {
  884.             give_item(id, "weapon_deagle");
  885.             give_item(id, "weapon_hegrenade");
  886.             //rpg[id] = 2;
  887.             set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransColor, 70);    
  888.         }
  889.         case Nezaustavljivi:
  890.         {
  891.             give_item(id, "weapon_usp");
  892.             give_item(id, "weapon_ump45");
  893.             give_item(id, "weapon_flashbang");
  894.             //rpg[id] = 3;
  895.             set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransColor, 70);            
  896.         }
  897.         case Pukovnik:
  898.         {
  899.             give_item(id, "weapon_famas");
  900.             give_item(id, "weapon_fiveseven");
  901.             //rpg[id] = 2 ;        
  902.         }
  903.         case Loyal:
  904.         {
  905.             give_item(id, "weapon_fiveseven");
  906.             give_item(id, "weapon_ump45");
  907.         }
  908.     }
  909.  
  910.     if(poeni_igraca[id] > 0 )
  911.         DodelaPoena(id);
  912.            
  913.     if(informacije_predmet_igraca[id][0] == 10 || informacije_predmet_igraca[id][0] == 9)
  914.         give_item(id, "weapon_hegrenade");
  915.            
  916.     if(informacije_predmet_igraca[id][0] == 9)
  917.         PromeniModel(id, 0);
  918.            
  919.     if(informacije_predmet_igraca[id][0] == 1)
  920.         set_user_footsteps(id, 1);
  921.     else
  922.         set_user_footsteps(id, 0);
  923.        
  924.     if(informacije_predmet_igraca[id][0] == 13)
  925.         give_item(id, "weapon_awp");
  926.        
  927.     if(informacije_predmet_igraca[id][0] == 16)
  928.         give_item(id, "weapon_deagle");
  929.        
  930.     if(informacije_predmet_igraca[id][0] == 19 || informacije_predmet_igraca[id][0] == 24)
  931.         informacije_predmet_igraca[id][1] = 1;
  932.    
  933.     if(informacije_predmet_igraca[id][0] == 27)
  934.         informacije_predmet_igraca[id][1] = 3;
  935.        
  936.     if(informacije_predmet_igraca[id][0] == 29)
  937.         set_user_gravity(id,get_user_gravity(id) - 0.4);
  938.            
  939.     new weapons[32];
  940.     new weaponsnum;
  941.     get_user_weapons(id, weapons, weaponsnum);
  942.     for(new i=0; i<weaponsnum; i++)
  943.         if(g_isAlive[id])
  944.             if(maxAmmo[weapons[i]] > 0)
  945.                 cs_set_user_bpammo(id, weapons[i], maxAmmo[weapons[i]]);
  946.        
  947.     PostaviAtribute(id)
  948.    
  949.     return PLUGIN_CONTINUE;
  950. }
  951.  
  952. public PostaviAtribute(id)
  953. {
  954.     smanjene_povrede_igraca[id] = (0.7*(1.0-floatpower(1.1, -0.112311341*float(snaga_igraca[id]))));
  955.     maximalna_energija_igraca[id] = energija_klasa[klasa_igraca[id]]+energija_igraca[id]*2;
  956.     brzina_igraca[id] = STANDARDNA_BRZINA*brzina_klasa[klasa_igraca[id]]+floatround(kondicija_igraca[id]*1.3);
  957.        
  958.     if(informacije_predmet_igraca[id][0] == 18)
  959.     {
  960.         maximalna_energija_igraca[id] += 100;
  961.         brzina_igraca[id] -= 0.4;
  962.     }
  963.        
  964.     if(informacije_predmet_igraca[id][0] == 25)
  965.     {
  966.         maximalna_energija_igraca[id] += 50;
  967.         brzina_igraca[id] -= 0.3;
  968.     }
  969.     if(informacije_predmet_igraca[id][0] == 30)
  970.     {
  971.         brzina_igraca[id] += 1.2;
  972.     }
  973.     set_user_armor(id, oklop_klase[klasa_igraca[id]]);
  974.    
  975.     if(informacije_predmet_igraca[id][0] == 17)
  976.         set_user_armor(id, 500);
  977.  
  978.     set_user_health(id, maximalna_energija_igraca[id]);
  979. }
  980.  
  981. public PocetakRunde()  
  982. {
  983.     freezetime = false;
  984.  
  985.     for(new id=1;id<=g_iMaxPlayers;id++)
  986.     {
  987.         if(!g_isAlive[id])
  988.             continue;
  989.        
  990.         set_task(0.1, "PostaviBrzinu", id+ZADATAK_POSTAVI_brzinu);
  991.        
  992.         switch(get_user_team(id))
  993.         {
  994.             case 1: client_cmd(id, "spk QTM_CodMod/start2");
  995.             case 2: client_cmd(id, "spk QTM_CodMod/start");
  996.         }
  997.     }
  998. }
  999.  
  1000. public novaRunda()
  1001. {
  1002.     freezetime = true;
  1003.     new ent = find_ent_by_class(-1, "dynamite");
  1004.     while(ent > 0)
  1005.     {
  1006.         remove_entity(ent);
  1007.         ent = find_ent_by_class(ent, "dynamite");  
  1008.     }
  1009.  
  1010.     new iEnt = find_ent_by_class(-1, "Mine");
  1011.     while(iEnt > 0)
  1012.     {
  1013.         remove_entity(iEnt);
  1014.         iEnt = find_ent_by_class(iEnt, "Mine");
  1015.     }
  1016.    
  1017.     static hours[6], hour1s[3], hour2s[3], hour1, hour2, h, m, s
  1018.     get_pcvar_string(g_happy_hour, hours, charsmax(hours))
  1019.        
  1020.     if(equal(hours, "off")) {happy_hour_on = false; return; }
  1021.        
  1022.     strtok(hours, hour1s, charsmax(hour1s), hour2s, charsmax(hour2s), '-')
  1023.     hour1 = str_to_num(hour1s)
  1024.     hour2 = str_to_num(hour2s)
  1025.        
  1026.     time(h, m, s)
  1027.     if(hour1 <= h <= hour2) happy_hour_on = true
  1028.     else happy_hour_on = false
  1029. }
  1030.  
  1031. public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits)
  1032. {
  1033.     if(!g_isAlive[this] || !g_isConnected[this] || !g_isConnected[idattacker] || get_user_team(this) != get_user_team(idattacker) || !klasa_igraca[idattacker])
  1034.         return HAM_IGNORED;
  1035.        
  1036.     new health = get_user_health(this);
  1037.     new weapon = get_user_weapon(idattacker);
  1038.    
  1039.     if(health < 2)
  1040.         return HAM_IGNORED;
  1041.    
  1042.     if(informacije_predmet_igraca[this][0] == 27 && informacije_predmet_igraca[this][1]>0)
  1043.     {
  1044.         informacije_predmet_igraca[this][1]--;
  1045.         return HAM_SUPERCEDE;
  1046.     }
  1047.  
  1048.     if(snaga_igraca[this]>0)
  1049.         damage -= smanjene_povrede_igraca[this]*damage;
  1050.        
  1051.     if(informacije_predmet_igraca[this][0] == 2 || informacije_predmet_igraca[this][0] == 3)
  1052.         damage-=(float(informacije_predmet_igraca[this][1])<damage)? float(informacije_predmet_igraca[this][1]): damage;
  1053.            
  1054.     if(informacije_predmet_igraca[idattacker][0] == 5 && g_BackAttack[idattacker])
  1055.         damage*=2.0;
  1056.        
  1057.     if(informacije_predmet_igraca[idattacker][0] == 10)
  1058.         damage+=informacije_predmet_igraca[idattacker][1];
  1059.        
  1060.     if(informacije_predmet_igraca[this][0] == 12)
  1061.         damage-=(5.0<damage)? 5.0: damage;
  1062.    
  1063.     if(weapon == CSW_AWP && informacije_predmet_igraca[idattacker][0] == 13)
  1064.         damage=float(health);
  1065.        
  1066.     if(informacije_predmet_igraca[idattacker][0] == 21)
  1067.         damage+=10;
  1068.        
  1069.     if(informacije_predmet_igraca[idattacker][0] == 22)
  1070.         damage+=20;
  1071.    
  1072.     if(informacije_predmet_igraca[idattacker][0] == 16)
  1073.         damage*=2;
  1074.        
  1075.     if(informacije_predmet_igraca[idattacker][0] == 30)
  1076.         damage+=25;
  1077.        
  1078.     if(idinflictor != idattacker && entity_get_int(idinflictor, EV_INT_movetype) != 5)
  1079.     {
  1080.         if((informacije_predmet_igraca[idattacker][0] == 9 && random_num(1, informacije_predmet_igraca[idattacker][1]) == 1) || informacije_predmet_igraca[idattacker][0] == 10)
  1081.             damage = float(health);
  1082.     }
  1083.  
  1084.     if(weapon == CSW_KNIFE)
  1085.     {
  1086.         if(klasa_igraca[this] == SWAT || klasa_igraca[this] == Pukovnik)
  1087.             return HAM_SUPERCEDE;
  1088.         if(informacije_predmet_igraca[this][0] == 4)
  1089.             damage=damage*1.4+inteligencija_igraca[idattacker];
  1090.         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))
  1091.             damage = float(health);
  1092.     }
  1093.    
  1094.     if(informacije_predmet_igraca[this][0] == 26 && random_num(1, informacije_predmet_igraca[this][1]) == 1)
  1095.     {
  1096.         SetHamParamEntity(3, this);
  1097.         SetHamParamEntity(1, idattacker);
  1098.     }
  1099.     SetHamParamFloat(4, damage);
  1100.    
  1101.     if(informacije_predmet_igraca[idattacker][0] == 12 && random_num(1, informacije_predmet_igraca[this][1]) == 1)
  1102.         Display_Fade(this,1<<14,1<<14 ,1<<16,255,155,50,230);
  1103.    
  1104.     ProveriNivo(idattacker);
  1105.     return HAM_IGNORED;
  1106. }
  1107.  
  1108. public Player_Killed(victim, attacker)
  1109. {  
  1110.     if(!g_isAlive[attacker] || !g_isConnected[attacker])
  1111.         return PLUGIN_CONTINUE;
  1112.        
  1113.     g_isAlive[victim] = false
  1114.    
  1115.     new weapon = get_user_weapon(attacker);
  1116.     new energija = get_user_health(attacker);
  1117.    
  1118.     if(cs_get_user_team(victim) != cs_get_user_team(attacker) && klasa_igraca[attacker])
  1119.     {
  1120.         new weapons[32];
  1121.         new weaponsnum;
  1122.         get_user_weapons(attacker, weapons, weaponsnum);
  1123.         for(new i=0; i<weaponsnum; i++)
  1124.             if(maxAmmo[weapons[i]] > 0)
  1125.                 cs_set_user_bpammo(attacker, weapons[i], maxAmmo[weapons[i]]);
  1126.                
  1127.         new iskustvo_za_ubistvo = get_pcvar_num(cvar_xp_za_ubistvo);
  1128.         new novo_iskustvo = get_pcvar_num(cvar_xp_za_ubistvo);
  1129.        
  1130.         if((klasa_igraca[attacker] == Rambo || klasa_igraca[attacker] == Loyal) && (klasa_igraca[victim] != Rambo || klasa_igraca[victim] != Loyal))
  1131.             novo_iskustvo += iskustvo_za_ubistvo*2;
  1132.  
  1133.         if(level_igraca[victim] > level_igraca[attacker])
  1134.             novo_iskustvo += (level_igraca[victim]-level_igraca[attacker])*(iskustvo_za_ubistvo/10);
  1135.    
  1136.         if(klasa_igraca[attacker] == Rambo || informacije_predmet_igraca[attacker][0] == 15 && maxClip[weapon] != -1)
  1137.         {
  1138.    
  1139.             new nova_energija = (energija+20<maximalna_energija_igraca[attacker])? energija+20: maximalna_energija_igraca[attacker];
  1140.             set_user_clip(attacker, maxClip[weapon]);
  1141.             set_user_health(attacker, nova_energija);
  1142.         }
  1143.         if(!informacije_predmet_igraca[attacker][0])
  1144.             DajPredmet(attacker, random_num(1, sizeof naziv_predmeta-1));
  1145.    
  1146.         if(informacije_predmet_igraca[attacker][0] == 14)
  1147.         {
  1148.             new nova_energija = (energija+50<maximalna_energija_igraca[attacker])? energija+50: maximalna_energija_igraca[attacker];
  1149.             set_user_health(attacker, nova_energija);
  1150.         }
  1151.         iskustvo_igraca[attacker] += novo_iskustvo;
  1152.     }
  1153.     ProveriNivo(attacker);
  1154.    
  1155.     return PLUGIN_CONTINUE;
  1156. }
  1157.  
  1158. public client_putinserver(id)
  1159. {
  1160.     if(!is_user_bot(id))
  1161.         g_isConnected[id] = true
  1162.     else
  1163.         g_isConnected[id] = false
  1164.    
  1165.     DeleteSkills(id);
  1166.    
  1167.     ObrisiZadatke(id);
  1168.     Obrisipredmet(id);
  1169.    
  1170.     g_FirstSpawn[id] = false;
  1171.    
  1172.     get_user_authid(id, g_Data[id][Data_SteamID], 31);
  1173.    
  1174.     if (!str_to_num(g_Data[id][Data_SteamID][10]))
  1175.         return;
  1176.    
  1177.     get_user_name(id, g_Data[id][Data_Name], 31);
  1178.    
  1179.     if (!TrieKeyExists(g_Name, g_Data[id][Data_SteamID]))
  1180.         AddRank(id);
  1181.     else
  1182.         LoadData(id);
  1183.        
  1184.     UpdateRank(id, true);
  1185. }
  1186.  
  1187.  
  1188. AddRank(iPlayer)
  1189. {
  1190.     g_Data[iPlayer][Data_Level] = 1;
  1191.  
  1192.     ArrayPushString(g_SteamID, g_Data[iPlayer][Data_SteamID]);
  1193.     TrieSetString(g_Name, g_Data[iPlayer][Data_SteamID], g_Data[iPlayer][Data_Name]);
  1194. }
  1195.  
  1196. LoadData(iPlayer)
  1197.     TrieGetCell(g_PlayerLevel, g_Data[iPlayer][Data_SteamID], g_Data[iPlayer][Data_Level]);
  1198.  
  1199. UpdateRank(iPlayer, bool:Name)
  1200. {  
  1201.     if (Name)
  1202.         TrieSetString(g_Name, g_Data[iPlayer][Data_SteamID], g_Data[iPlayer][Data_Name]);
  1203.  
  1204.     TrieSetCell(g_PlayerLevel, g_Data[iPlayer][Data_SteamID], g_Data[iPlayer][Data_Level]);
  1205.    
  1206.     return PLUGIN_CONTINUE;
  1207. }
  1208.  
  1209. public SayRank(iPlayer)
  1210. {
  1211.     new Position = GetPosition(iPlayer);
  1212.  
  1213.     if (!g_isConnected[iPlayer] || !Position)
  1214.     {
  1215.         ChatColor(iPlayer, "%L", iPlayer, "ML_CODNOTRANKED");
  1216.         return;
  1217.     }
  1218.     ChatColor(iPlayer, "%L", iPlayer, "ML_CODRANK", Position, ArraySize(g_SteamID), g_Data[iPlayer][Data_Level]);
  1219. }
  1220.  
  1221. public SayTop15(iPlayer)
  1222. {
  1223.     WriteTop15();
  1224.     ChatColor(iPlayer, "^4Loading...")
  1225.     set_task(1.0, "ShowMotd", iPlayer)
  1226. }
  1227.  
  1228. public ShowMotd(iPlayer)
  1229.     show_motd(iPlayer, g_Top15, "Top 15");
  1230.  
  1231. public SortRanks(Array:SteamID, Position1, Position2)
  1232. {      
  1233.     static SteamID1[32];
  1234.     ArrayGetString(SteamID, Position1, SteamID1, 31);
  1235.  
  1236.     static SteamID2[32];
  1237.     ArrayGetString(SteamID, Position2, SteamID2, 31);
  1238.  
  1239.     static iLevel1;
  1240.     TrieGetCell(g_PlayerLevel, SteamID1, iLevel1);
  1241.  
  1242.     static iLevel2;
  1243.     TrieGetCell(g_PlayerLevel, SteamID2, iLevel2);
  1244.  
  1245.     if (iLevel1 < iLevel2)
  1246.         return 1;
  1247.     else if (iLevel1 > iLevel2)
  1248.         return -1;
  1249.  
  1250.     return 0;
  1251. }
  1252.  
  1253. public client_disconnect(id)
  1254. {
  1255.     g_isConnected[id] = false
  1256.     g_isAlive[id] = false
  1257.    
  1258.     SacuvajPodatke(id);
  1259.     DeleteSkills(id);
  1260.     ObrisiZadatke(id)
  1261.     Obrisipredmet(id);
  1262. }
  1263. public DeleteSkills(id)
  1264. {
  1265.     klasa_igraca[id] = 0;
  1266.     level_igraca[id] = 0;
  1267.     iskustvo_igraca[id] = 0;
  1268.     poeni_igraca[id] = 0;
  1269.     energija_igraca[id] = 0;
  1270.     inteligencija_igraca[id] = 0;
  1271.     snaga_igraca[id] = 0;
  1272.     kondicija_igraca[id] = 0;
  1273.     maximalna_energija_igraca[id] = 0;
  1274.     brzina_igraca[id] = 0.0;
  1275.     g_dynamit_active[id] = 0;
  1276. }
  1277.  
  1278. public ObrisiZadatke(id)   
  1279.     remove_task(id+ZADATAK_POSTAVI_brzinu);
  1280.  
  1281. public IzaberiJezik(id)
  1282. {
  1283.     new szItem[30]
  1284.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUIZBAERIJEZIK")
  1285.     new menu = menu_create(szItem, "IzaberiJezik_Handle");
  1286.    
  1287.     menu_additem(menu, "English");
  1288.     menu_additem(menu, "Srpski");
  1289.  
  1290.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUEXIT")
  1291.     menu_setprop(menu, MPROP_EXITNAME, szItem);
  1292.     menu_display(id, menu);
  1293.    
  1294.     client_cmd(id, "spk QTM_CodMod/select");
  1295. }
  1296.  
  1297. public IzaberiJezik_Handle(id, menu, item)
  1298. {
  1299.     client_cmd(id, "spk QTM_CodMod/select");
  1300.    
  1301.     if(item++ == MENU_EXIT)
  1302.     {
  1303.         menu_destroy(menu);
  1304.         return PLUGIN_CONTINUE;
  1305.     }
  1306.     switch(item)
  1307.     {
  1308.         case 1: set_user_info(id, "lang", "en")
  1309.         case 2: set_user_info(id, "lang", "sr")
  1310.     }
  1311.     menu_destroy(menu);
  1312.    
  1313.     return PLUGIN_CONTINUE;
  1314. }
  1315.  
  1316. public OpisKlase(id)
  1317. {
  1318.     new szItem[30], klasa1[50]
  1319.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUIZABERIKLASU")
  1320.    
  1321.     new menu = menu_create(szItem, "OpisKlase_Handle");
  1322.     for(new i=1; i <sizeof naziv_klase; i++)
  1323.     {
  1324.         formatex(klasa1, 49, "%L", id, naziv_klase[i]);
  1325.         menu_additem(menu, klasa1);
  1326.     }
  1327.    
  1328.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUBACK")
  1329.     menu_setprop(menu, MPROP_BACKNAME, szItem);
  1330.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUNEXT")
  1331.     menu_setprop(menu, MPROP_NEXTNAME, szItem);
  1332.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUEXIT")
  1333.     menu_setprop(menu, MPROP_EXITNAME, szItem);
  1334.     menu_display(id, menu, page[id][0]);
  1335.    
  1336.     client_cmd(id, "spk QTM_CodMod/select");
  1337. }
  1338.  
  1339. public OpisKlase_Handle(id, menu, item)
  1340. {
  1341.     client_cmd(id, "spk QTM_CodMod/select");
  1342.    
  1343.     if(item++ == MENU_EXIT)
  1344.     {
  1345.         page[id][0] = 0
  1346.         menu_destroy(menu);
  1347.         return PLUGIN_CONTINUE;
  1348.     }
  1349.     menu_destroy(menu)
  1350.    
  1351.     page[id][0] = item / 7
  1352.  
  1353.     new opis[512];
  1354.     formatex(opis, charsmax(opis), "\yKlasa: \w%L^n%L", id, naziv_klase[item], id, opis_klase[item]);
  1355.     show_menu(id, 1023, opis);
  1356.    
  1357.     return PLUGIN_CONTINUE;
  1358. }
  1359.  
  1360. public OpisPredmeta1(id)
  1361. {
  1362.     new szItem[30], predmet[50];
  1363.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUIZABERIPREDMET")
  1364.    
  1365.     new menu = menu_create(szItem, "OpisPredmeta1_Handle");
  1366.     for(new i=1; i <sizeof naziv_predmeta; i++)
  1367.     {
  1368.         formatex(predmet, 49, "%L", id, naziv_predmeta[i]);
  1369.         menu_additem(menu, predmet);
  1370.     }
  1371.    
  1372.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUBACK")
  1373.     menu_setprop(menu, MPROP_BACKNAME, szItem);
  1374.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUNEXT")
  1375.     menu_setprop(menu, MPROP_NEXTNAME, szItem);
  1376.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUEXIT")
  1377.     menu_setprop(menu, MPROP_EXITNAME, szItem);
  1378.     menu_display(id, menu, page[id][1]);
  1379.    
  1380.     client_cmd(id, "spk QTM_CodMod/select");
  1381. }
  1382.  
  1383. public OpisPredmeta1_Handle(id, menu, item)
  1384. {
  1385.     client_cmd(id, "spk QTM_CodMod/select");
  1386.    
  1387.     if(item++ == MENU_EXIT)
  1388.     {
  1389.         page[id][1] = 0
  1390.         menu_destroy(menu);
  1391.         return PLUGIN_CONTINUE;
  1392.     }
  1393.     menu_destroy(menu)
  1394.        
  1395.     page[id][1] = item / 7
  1396.    
  1397.     new predmet[512];
  1398.     formatex(predmet, charsmax(predmet), "\yPredmet: \w%L^n%L", id, naziv_predmeta[item], id, opis_predmet[item]);
  1399.     show_menu(id, 1023, predmet);
  1400.    
  1401.     return PLUGIN_CONTINUE;
  1402. }
  1403.  
  1404. public IzaberiKlasu(id)
  1405. {
  1406.     new menu = menu_create("Izaberi frakciju:", "IzaberiFrakciju_Handle");
  1407.     for(new i = 1;i<sizeof(frakcije);i++)
  1408.     {
  1409.         menu_additem(menu, frakcije[i]);
  1410.     }
  1411.     menu_display(id, menu);
  1412. }
  1413.  
  1414. public IzaberiFrakciju_Handle(id, menu2, item)
  1415. {      
  1416.     if(item == MENU_EXIT)
  1417.     {
  1418.         menu_destroy(menu2);
  1419.         return PLUGIN_CONTINUE;
  1420.     }      
  1421.    
  1422.     item++;
  1423.     frakcija_igraca[id] = item;
  1424.     new szItem[30]
  1425.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUIZABERIKLASU")
  1426.     new menu = menu_create(szItem, "IzaberiKlasu_Handle");
  1427.     new klasa[50];
  1428.     for(new i=1; i<sizeof naziv_klase; i++)
  1429.     {
  1430.         if(ako_pripada[i] == item)
  1431.         {
  1432.             UcitajPodatke(id, i);
  1433.             formatex(klasa, 49, "%L \yLevel: %i", id, naziv_klase[i], level_igraca[id]);
  1434.             menu_additem(menu, klasa);
  1435.         }
  1436.     }
  1437.    
  1438.     UcitajPodatke(id, klasa_igraca[id]);
  1439.    
  1440.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUBACK")
  1441.     menu_setprop(menu, MPROP_BACKNAME, szItem);
  1442.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUNEXT")
  1443.     menu_setprop(menu, MPROP_NEXTNAME, szItem);
  1444.     formatex(szItem, charsmax(szItem), "%L", id, "ML_MENUEXIT")
  1445.     menu_setprop(menu, MPROP_EXITNAME, szItem);
  1446.     menu_display(id, menu);
  1447.        
  1448.     client_cmd(id, "spk QTM_CodMod/select");
  1449.  
  1450.     return PLUGIN_CONTINUE;
  1451. }
  1452.  
  1453. public IzaberiKlasu_Handle(id, menu, item)
  1454. {
  1455.     client_cmd(id, "spk QTM_CodMod/select");
  1456.    
  1457.     if(item == MENU_EXIT)
  1458.     {
  1459.         menu_destroy(menu);
  1460.         return PLUGIN_CONTINUE;
  1461.     }  
  1462.        
  1463.     item++;
  1464.    
  1465.     new ako = 0;
  1466.     for(new i=1; i<sizeof naziv_klase; i++)
  1467.     {
  1468.         if(ako_pripada[i] == frakcija_igraca[id]){
  1469.             ako++;
  1470.         }
  1471.         if(ako == item){
  1472.             item = i;
  1473.             break;
  1474.         }
  1475.     }
  1476.    
  1477.     if(item == klasa_igraca[id])
  1478.         return PLUGIN_CONTINUE;
  1479.    
  1480.     if(item == Assassin && !(get_user_flags(id) & ADMIN_LEVEL_A))
  1481.     {
  1482.         ChatColor(id, "%L", id, "ML_PREMIUM_KLASA");
  1483.         IzaberiKlasu(id);
  1484.         return PLUGIN_CONTINUE;
  1485.     }
  1486.     if(item == Pukovnik && !(get_user_flags(id) & ADMIN_LEVEL_B))
  1487.     {
  1488.         ChatColor(id, "%L", id, "ML_PREMIUM_KLASA");
  1489.         IzaberiKlasu(id);
  1490.         return PLUGIN_CONTINUE;
  1491.     }
  1492.     if(item == Rambo && !(get_user_flags(id) & ADMIN_LEVEL_C))
  1493.     {
  1494.         ChatColor(id, "%L", id, "ML_PREMIUM_KLASA");
  1495.         IzaberiKlasu(id);
  1496.         return PLUGIN_CONTINUE;
  1497.     }
  1498.     if(item == Nezaustavljivi && !(get_user_flags(id) & ADMIN_LEVEL_D))
  1499.     {
  1500.         ChatColor(id, "%L", id, "ML_PREMIUM_KLASA");
  1501.         IzaberiKlasu(id);
  1502.         return PLUGIN_CONTINUE;
  1503.     }
  1504.     if(klasa_igraca[id])
  1505.     {
  1506.         nova_klasa_igraca[id] = item;
  1507.         ChatColor(id, "%L", id, "ML_KLASA_SLEDECARUNDA");
  1508.     }
  1509.     else
  1510.     {
  1511.         klasa_igraca[id] = item;
  1512.         UcitajPodatke(id, klasa_igraca[id]);
  1513.         Pocetak(id);
  1514.     }
  1515.     return PLUGIN_CONTINUE;
  1516. }
  1517.  
  1518. public DodelaPoena(id)
  1519. {
  1520.     new inteligencija[65], inteligencija10[65];
  1521.     new energija[60], energija10[60];
  1522.     new snaga[60], snaga10[60];
  1523.     new kondicija[60], kondicija10[60];
  1524.     new naslov[25];
  1525.  
  1526.     formatex(inteligencija, charsmax(inteligencija), "%L", id, "ML_INTELIGENCIJA", inteligencija_igraca[id]);
  1527.     formatex(energija, charsmax(energija), "%L", id, "ML_ENERGIJA", energija_igraca[id]);
  1528.     formatex(snaga, charsmax(snaga), "%L", id, "ML_SNAGA", snaga_igraca[id]);
  1529.     formatex(kondicija, charsmax(kondicija), "%L", id, "ML_KONDICIJA", kondicija_igraca[id]);
  1530.     formatex(inteligencija10, charsmax(inteligencija10), "%L", id, "ML_INTELIGENCIJA10");
  1531.     formatex(energija10, charsmax(energija10), "%L", id, "ML_ENERGIJA10");
  1532.     formatex(snaga10, charsmax(snaga10), "%L", id, "ML_SNAGA10");
  1533.     formatex(kondicija10, charsmax(kondicija10), "%L", id, "ML_KONDICIJA10");
  1534.     formatex(naslov, charsmax(naslov), "%L", id, "ML_DODELAPOENA", poeni_igraca[id]);
  1535.    
  1536.     new menu = menu_create(naslov, "DodelaPoena_Handler");
  1537.     menu_additem(menu, inteligencija);
  1538.     menu_additem(menu, energija);
  1539.     menu_additem(menu, snaga);
  1540.     menu_additem(menu, kondicija);
  1541.     menu_additem(menu, inteligencija10);
  1542.     menu_additem(menu, energija10);
  1543.     menu_additem(menu, snaga10);
  1544.     menu_additem(menu, kondicija10);
  1545.    
  1546.     menu_display(id, menu, page[id][1]);
  1547. }
  1548.  
  1549. public DodelaPoena_Handler(id, menu, item)
  1550. {
  1551.     client_cmd(id, "spk QTM_CodMod/select");
  1552.    
  1553.     if(item == MENU_EXIT)
  1554.     {
  1555.         page[id][1] = 0
  1556.         menu_destroy(menu);
  1557.         return PLUGIN_CONTINUE;
  1558.     }
  1559.    
  1560.     if(poeni_igraca[id] < 1)
  1561.         return PLUGIN_CONTINUE;
  1562.  
  1563.     page[id][1] = item / 7
  1564.     new level_limit = get_pcvar_num(cvar_max_level);
  1565.            
  1566.     switch(item)
  1567.     {
  1568.         case 0:
  1569.         {  
  1570.             if(inteligencija_igraca[id]<level_limit)
  1571.             {
  1572.                 inteligencija_igraca[id]++;
  1573.                 poeni_igraca[id]--;
  1574.             }
  1575.             else
  1576.                 ChatColor(id, "%L", id, "ML_POENI_MAX");
  1577.            
  1578.         }
  1579.         case 1:
  1580.         {  
  1581.             if(energija_igraca[id]<level_limit)
  1582.             {
  1583.                 energija_igraca[id]++;
  1584.                 poeni_igraca[id]--;
  1585.             }
  1586.             else
  1587.                 ChatColor(id, "%L", id, "ML_POENI_MAX");
  1588.         }
  1589.         case 2:
  1590.         {  
  1591.             if(snaga_igraca[id]<level_limit)
  1592.             {
  1593.                 snaga_igraca[id]++;
  1594.                 poeni_igraca[id]--;
  1595.             }
  1596.             else
  1597.                 ChatColor(id, "%L", id, "ML_POENI_MAX");
  1598.            
  1599.         }
  1600.         case 3:
  1601.         {  
  1602.             if(kondicija_igraca[id]<level_limit)
  1603.             {
  1604.                 kondicija_igraca[id]++;
  1605.                 poeni_igraca[id]--;
  1606.             }
  1607.             else
  1608.                 ChatColor(id, "%L", id, "ML_POENI_MAX");
  1609.         }
  1610.         case 4:
  1611.         {
  1612.             if(poeni_igraca[id] < 10)
  1613.             {
  1614.                 ChatColor(id, "%L", id, "ML_POENI_NEDOVOLJNO");
  1615.             }
  1616.             else if(inteligencija_igraca[id]<level_limit)
  1617.             {
  1618.                 inteligencija_igraca[id]+=10;
  1619.                 poeni_igraca[id]-=10
  1620.             }
  1621.             else
  1622.                 ChatColor(id, "%L", id, "ML_POENI_MAX");
  1623.         }
  1624.         case 5:
  1625.         {
  1626.             if(poeni_igraca[id] < 10)
  1627.             {
  1628.                 ChatColor(id, "%L", id, "ML_POENI_NEDOVOLJNO");
  1629.             }  
  1630.             else if(energija_igraca[id]<level_limit)
  1631.             {
  1632.                 energija_igraca[id]+=10;
  1633.                 poeni_igraca[id]-=10;
  1634.             }
  1635.             else
  1636.                 ChatColor(id, "%L", id, "ML_POENI_MAX");
  1637.         }
  1638.         case 6:
  1639.         {
  1640.             if(poeni_igraca[id] < 10)
  1641.             {
  1642.                 ChatColor(id, "%L", id, "ML_POENI_NEDOVOLJNO");
  1643.             }  
  1644.             else if(snaga_igraca[id]<level_limit)
  1645.             {
  1646.                 snaga_igraca[id]+=10;
  1647.                 poeni_igraca[id]-=10;
  1648.             }
  1649.             else
  1650.                 ChatColor(id, "%L", id, "ML_POENI_MAX");
  1651.         }
  1652.         case 7:
  1653.         {
  1654.             if(poeni_igraca[id] < 10)
  1655.             {
  1656.                 ChatColor(id, "%L", id, "ML_POENI_NEDOVOLJNO");
  1657.             }  
  1658.             else if(kondicija_igraca[id]<level_limit)
  1659.             {
  1660.                 kondicija_igraca[id]+=10;
  1661.                 poeni_igraca[id]-=10;
  1662.             }
  1663.             else
  1664.                 ChatColor(id, "%L", id, "ML_POENI_MAX");
  1665.         }
  1666.     }
  1667.    
  1668.     if(poeni_igraca[id] > 0)
  1669.         DodelaPoena(id);
  1670.        
  1671.     return PLUGIN_CONTINUE;
  1672. }
  1673.  
  1674. public KomandaResetujPoene(id)
  1675. {  
  1676.     ChatColor(id, "%L", id, "ML_POENI_RESETOVANI");
  1677.     client_cmd(id, "spk QTM_CodMod/select");
  1678.    
  1679.     ResetujPoene(id)
  1680. }
  1681.  
  1682. public ResetujPoene(id)
  1683. {  
  1684.     poeni_igraca[id] = level_igraca[id]*2-2;
  1685.     inteligencija_igraca[id] = 0;
  1686.     energija_igraca[id] = 0;
  1687.     kondicija_igraca[id] = 0;
  1688.     snaga_igraca[id] = 0;
  1689.  
  1690.     if(poeni_igraca[id])
  1691.         DodelaPoena(id);
  1692. }
  1693.  
  1694. public KreirajMedKit(id)
  1695. {
  1696.     if (!broj_medkit_igraca[id])
  1697.     {
  1698.         client_print(id, print_center, "Imate samo 2 paketa za prvu pomoc u jednoj rundi!");
  1699.         return PLUGIN_CONTINUE;
  1700.     }
  1701.    
  1702.     if(inteligencija_igraca[id] < 1)
  1703.     {
  1704.         client_print(id, print_center, "Da koristite paket za prvu pomoc, morate povecati inteligenciju");
  1705.         return PLUGIN_CONTINUE;
  1706.     }
  1707.        
  1708.     broj_medkit_igraca[id]--;
  1709.    
  1710.     new Float:origin[3];
  1711.     entity_get_vector(id, EV_VEC_origin, origin);
  1712.    
  1713.     new ent = create_entity("info_target");
  1714.     entity_set_string(ent, EV_SZ_classname, "MedKit");
  1715.     entity_set_edict(ent, EV_ENT_owner, id);
  1716.     entity_set_int(ent, EV_INT_solid, SOLID_NOT);
  1717.     entity_set_vector(ent, EV_VEC_origin, origin);
  1718.     entity_set_float(ent, EV_FL_ltime, get_gametime() + 7.1 );
  1719.    
  1720.    
  1721.     entity_set_model(ent, "models/w_medkit.mdl");
  1722.     set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 )  ;
  1723.     drop_to_floor(ent);
  1724.    
  1725.     entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.1);
  1726.    
  1727.     return PLUGIN_CONTINUE;
  1728. }
  1729.  
  1730.  
  1731. public MedKitThink(ent)
  1732. {
  1733.     if(!is_valid_ent(ent))
  1734.         return PLUGIN_HANDLED;
  1735.  
  1736.     new id = entity_get_edict(ent, EV_ENT_owner);
  1737.     new totem_dist = 300;
  1738.     new totem_heal = 5+floatround(inteligencija_igraca[id]*0.5);
  1739.     if (entity_get_edict(ent, EV_ENT_euser2) == 1)
  1740.     {      
  1741.         new Float:forigin[3], origin[3];
  1742.         entity_get_vector(ent, EV_VEC_origin, forigin);
  1743.         FVecIVec(forigin,origin);
  1744.        
  1745.         new entlist[33];
  1746.         new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist, 32,forigin);
  1747.        
  1748.         for (new i=0; i < numfound; i++)
  1749.         {      
  1750.             new pid = entlist[i];
  1751.            
  1752.             if (get_user_team(pid) != get_user_team(id))
  1753.                 continue;
  1754.                                
  1755.             new energija = get_user_health(pid);
  1756.             new nova_energija = (energija+totem_heal<maximalna_energija_igraca[pid])?energija+totem_heal:maximalna_energija_igraca[pid];
  1757.             if (g_isAlive[pid])
  1758.             {
  1759.                 set_user_health(pid, nova_energija);
  1760.                 Display_Fade(pid, 1<<10 ,1<<10,0x0000,0,255,0,65)
  1761.             }
  1762.         }
  1763.         entity_set_edict(ent, EV_ENT_euser2, 0);
  1764.         entity_set_float(ent, EV_FL_nextthink, get_gametime() + 1.5);
  1765.        
  1766.         return PLUGIN_CONTINUE;
  1767.     }
  1768.    
  1769.     if (entity_get_float(ent, EV_FL_ltime) < get_gametime() || !g_isAlive[id])
  1770.     {
  1771.         remove_entity(ent);
  1772.         return PLUGIN_CONTINUE;
  1773.     }
  1774.    
  1775.     if (entity_get_float(ent, EV_FL_ltime)-2.0 < get_gametime())
  1776.         set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 ) ;
  1777.        
  1778.     new Float:forigin[3], origin[3];
  1779.     entity_get_vector(ent, EV_VEC_origin, forigin);
  1780.     FVecIVec(forigin,origin);
  1781.                    
  1782.     //Find people near and give them health
  1783.     message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin );
  1784.     write_byte( TE_BEAMCYLINDER );
  1785.     write_coord( origin[0] );
  1786.     write_coord( origin[1] );
  1787.     write_coord( origin[2] );
  1788.     write_coord( origin[0] );
  1789.     write_coord( origin[1] + totem_dist );
  1790.     write_coord( origin[2] + totem_dist );
  1791.     write_short( sprite_white );
  1792.     write_byte( 0 ); // startframe
  1793.     write_byte( 0 ); // framerate
  1794.     write_byte( 10 ); // life
  1795.     write_byte( 10 ); // width
  1796.     write_byte( 255 ); // noise
  1797.     write_byte( 255 ); // r, g, b
  1798.     write_byte( 100 );// r, g, b
  1799.     write_byte( 100 ); // r, g, b
  1800.     write_byte( 128 ); // brightness
  1801.     write_byte( 5 ); // speed
  1802.     message_end();
  1803.        
  1804.     entity_set_edict(ent, EV_ENT_euser2 ,1);
  1805.     entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.5);
  1806.        
  1807.     return PLUGIN_CONTINUE;
  1808. }
  1809.  
  1810. public KreirajDinamit(id)
  1811. {
  1812.     if(!broj_dinamita_igraca[id])
  1813.     {
  1814.         client_print(id, print_center, "Vec ste iskoristili sav dinamit!");
  1815.         return PLUGIN_HANDLED;
  1816.     }
  1817.    
  1818.     if(inteligencija_igraca[id] < 1)
  1819.     {
  1820.         client_print(id, print_center, "Da koristite dinamit, morate povecati inteligenciju!");
  1821.         return PLUGIN_HANDLED;
  1822.     }
  1823.    
  1824.     engclient_cmd(id, "weapon_knife")
  1825.     g_dynamit_active[id] = true
  1826.    
  1827.     ChangeModelsSatchel(id)
  1828.     UTIL_PlayWeaponAnimation(id, 1)
  1829.     set_task(0.5 ,"CreateBomb", id, _, _, _)
  1830.     set_task(6.5 ,"detonate_satchel", id, _, _, _)
  1831.     broj_dinamita_igraca[id]--;
  1832.    
  1833.     return PLUGIN_CONTINUE
  1834. }
  1835.  
  1836. public CreateBomb(id)
  1837. {
  1838.     UTIL_PlayWeaponAnimation(id, 2)
  1839.     set_task(1.5 ,"return_weapon", id, _, _, _)
  1840. }
  1841.  
  1842. public return_weapon(id)
  1843. {
  1844.     new iBomb = create_entity("info_target")
  1845.    
  1846.     if(iBomb == 0)
  1847.         return PLUGIN_HANDLED
  1848.    
  1849.     entity_set_string(iBomb, EV_SZ_classname, "dynamite")
  1850.     entity_set_model(iBomb, "models/w_dynamite.mdl")
  1851.     entity_set_size(iBomb, Float:{-2.0,-2.0,-1.0}, Float:{2.0,2.0,1.0})
  1852.    
  1853.     entity_set_int(iBomb, EV_INT_movetype, MOVETYPE_TOSS)
  1854.     entity_set_int(iBomb, EV_INT_solid, SOLID_TRIGGER)
  1855.     entity_set_float(iBomb, EV_FL_gravity, 0.9)
  1856.     engfunc(EngFunc_DropToFloor, iBomb)
  1857.    
  1858.     new Float:iOrigin[3]
  1859.     entity_get_vector(id, EV_VEC_origin, iOrigin)
  1860.  
  1861.     new Float:angles[3]
  1862.     angles[0] += 180
  1863.     angles[1] += 90
  1864.     angles[2] += 90
  1865.     entity_set_vector(iBomb, EV_VEC_angles, angles)
  1866.    
  1867.     entity_set_origin(iBomb, iOrigin)
  1868.    
  1869.     entity_set_int(iBomb, EV_ENT_owner, id)
  1870.     emit_sound(id, CHAN_WEAPON, "weapons/c4_plant.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM)
  1871.  
  1872.     entity_set_float(iBomb, EV_FL_nextthink, halflife_time() + 0.01)
  1873.    
  1874.     g_dynamit_active[id] = false
  1875.     engclient_cmd(id, "weapon_knife")
  1876.     set_pev(id, pev_viewmodel2, "models/v_knife.mdl")
  1877.     set_pev(id, pev_weaponmodel2, "models/p_knife.mdl")
  1878.    
  1879.     return PLUGIN_HANDLED
  1880. }
  1881.    
  1882.  
  1883. public detonate_satchel(id)
  1884. {
  1885.     new ent = find_ent_by_class(id, "dynamite")    
  1886.     if (ent)
  1887.     {  
  1888.         CreateExplosion(ent, id)
  1889.         remove_entity(ent)
  1890.     }
  1891.     return PLUGIN_CONTINUE
  1892. }  
  1893.  
  1894. public CreateExplosion(ent, id)
  1895. {
  1896.     if (!pev_valid(ent))
  1897.         return PLUGIN_CONTINUE
  1898.    
  1899.     new Float:origin[3];pev(ent, pev_origin, origin)
  1900.    
  1901.     message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  1902.     write_byte (TE_EXPLOSION)
  1903.     engfunc(EngFunc_WriteCoord, origin[0])
  1904.     engfunc(EngFunc_WriteCoord, origin[1])
  1905.     engfunc(EngFunc_WriteCoord, origin[2] + 30.0)
  1906.     write_short(sprite_blast)
  1907.     write_byte(30)
  1908.     write_byte(15)
  1909.     write_byte(0)
  1910.     message_end()
  1911.    
  1912.     message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
  1913.     write_byte (TE_SMOKE)
  1914.     engfunc(EngFunc_WriteCoord, origin[0])
  1915.     engfunc(EngFunc_WriteCoord, origin[1])
  1916.     engfunc(EngFunc_WriteCoord, origin[2] + 50.0)
  1917.     write_short(sprite_smoke)
  1918.     write_byte(100)
  1919.     write_byte(15)
  1920.     message_end()
  1921.        
  1922.     new entlist[33];
  1923.     new numfound = find_sphere_class(ent, "player", 300.0 , entlist, 32);
  1924.    
  1925.     for (new i=0; i < numfound; i++)
  1926.     {      
  1927.         new pid = entlist[i];
  1928.        
  1929.         if (!g_isAlive[pid] || get_user_team(id) == get_user_team(pid))
  1930.             continue;
  1931.            
  1932.         ExecuteHam(Ham_TakeDamage, pid, 0, id, 90.0+float(inteligencija_igraca[id]) , 1);
  1933.     }
  1934.     return PLUGIN_CONTINUE;
  1935. }
  1936.  
  1937. public PostaviMine(id)
  1938. {
  1939.     if (!broj_min_igraca[id])
  1940.     {
  1941.         client_print(id, print_center, "Vec ste iskoristili sve mine!");
  1942.         return PLUGIN_HANDLED;
  1943.     }
  1944.    
  1945.     if(inteligencija_igraca[id] < 1)
  1946.     {
  1947.         client_print(id, print_center, "Da koristite mine, morate povecati inteligenciju!");
  1948.         return PLUGIN_HANDLED;
  1949.     }
  1950.    
  1951.     broj_min_igraca[id]--;
  1952.    
  1953.     new Float:origin[3];
  1954.     entity_get_vector(id, EV_VEC_origin, origin);
  1955.        
  1956.     new ent = create_entity("info_target");
  1957.     entity_set_string(ent ,EV_SZ_classname, "Mine");
  1958.     entity_set_edict(ent ,EV_ENT_owner, id);
  1959.     entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS);
  1960.     entity_set_origin(ent, origin);
  1961.     entity_set_int(ent, EV_INT_solid, SOLID_BBOX);
  1962.    
  1963.     entity_set_model(ent, "models/mine.mdl");
  1964.     entity_set_size(ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0});
  1965.    
  1966.     drop_to_floor(ent);
  1967.  
  1968.     entity_set_float(ent,EV_FL_nextthink, get_gametime() + 0.01) ;
  1969.    
  1970.     set_rendering(ent,kRenderFxNone, 0,0,0, kRenderTransTexture,50) ;
  1971.    
  1972.     emit_sound( ent, CHAN_VOICE, "weapons/mine_deploy.wav", VOL_NORM, ATTN_NORM, 0, PITCH_NORM );
  1973.     emit_sound( ent, CHAN_BODY , "weapons/mine_charge.wav", 0.2, ATTN_NORM, 0, PITCH_NORM );
  1974.    
  1975.     return PLUGIN_CONTINUE;
  1976. }
  1977.  
  1978. public DodirMine(ent, id)
  1979. {
  1980.     if(!is_valid_ent(ent))
  1981.         return PLUGIN_HANDLED;
  1982.        
  1983.     new attacker = entity_get_edict(ent, EV_ENT_owner);
  1984.     if (cs_get_user_team(attacker) != cs_get_user_team(id))
  1985.     {
  1986.         new Float:fOrigin[3];
  1987.         entity_get_vector( ent, EV_VEC_origin, fOrigin);
  1988.    
  1989.         new iOrigin[3];
  1990.         for(new i=0;i<3;i++)
  1991.             iOrigin[i] = floatround(fOrigin[i]);
  1992.        
  1993.         message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
  1994.         write_byte(TE_EXPLOSION);
  1995.         write_coord(iOrigin[0]);
  1996.         write_coord(iOrigin[1]);
  1997.         write_coord(iOrigin[2]);
  1998.         write_short(sprite_blast);
  1999.         write_byte(32); // scale
  2000.         write_byte(20); // framerate
  2001.         write_byte(0);// flags
  2002.         message_end();
  2003.         new entlist[33];
  2004.         new numfound = find_sphere_class(ent,"player", 90.0 ,entlist, 32);
  2005.        
  2006.         for (new i=0; i < numfound; i++)
  2007.         {      
  2008.             new pid = entlist[i];
  2009.            
  2010.             if (!g_isAlive[pid] || get_user_team(attacker) == get_user_team(pid) || klasa_igraca[id] == Mitraljezac)
  2011.                 continue;
  2012.                
  2013.             ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 90.0+float(inteligencija_igraca[attacker]) , 1);
  2014.         }
  2015.         remove_entity(ent);
  2016.     }
  2017.     return PLUGIN_CONTINUE;
  2018. }
  2019.  
  2020.  
  2021. public CurWeapon(id)
  2022. {
  2023.     if(freezetime || !klasa_igraca[id])
  2024.         return PLUGIN_HANDLED;
  2025.        
  2026.     if(g_dynamit_active[id])
  2027.     {
  2028.         engclient_cmd( id, "weapon_knife" );
  2029.         ChangeModelsSatchel(id)
  2030.     }
  2031.    
  2032.     PostaviBrzinu(id);
  2033.     return PLUGIN_CONTINUE;
  2034. }
  2035.  
  2036. public Forward_ObjectCaps(id)
  2037. {
  2038.     if(!g_isAlive[id])
  2039.         return HAM_IGNORED;
  2040.    
  2041.     KoristiPredmet(id);
  2042.    
  2043.     return HAM_IGNORED;
  2044. }
  2045.  
  2046. public KoristiPredmet(id)
  2047. {
  2048.     if((informacije_predmet_igraca[id][0] == 19 || informacije_predmet_igraca[id][0] == 24)&& informacije_predmet_igraca[id][1]>0)
  2049.     {
  2050.         set_user_health(id, maximalna_energija_igraca[id]);
  2051.         informacije_predmet_igraca[id][1]--;
  2052.         Display_Fade(id, 1<<10 ,1<<10,0x0000,0,255,0,65)
  2053.     }
  2054.    
  2055.     if(broj_medkit_igraca[id]>0)
  2056.         KreirajMedKit(id);
  2057.     if(broj_min_igraca[id]>0 || broj_dinamita_igraca[id]>0 )
  2058.         MenuExplode(id)
  2059.        
  2060.     return PLUGIN_HANDLED;
  2061. }
  2062.  
  2063. public MenuExplode(id)
  2064. {
  2065.     new menu,newmenu,menupage
  2066.     player_menu_info(id,menu,newmenu,menupage);
  2067.    
  2068.     if(menu > 0 || newmenu != -1)
  2069.         return PLUGIN_CONTINUE;
  2070.        
  2071.     new szTmp[64];
  2072.     new pMenuExplode = menu_create("Explode Menu", "explodeMenu_Handle")
  2073.    
  2074.     formatex(szTmp, charsmax(szTmp), "%L \w[\y%d\w]", id, "ML_POSTAVI_MINU", broj_min_igraca[id])
  2075.     menu_additem(pMenuExplode, szTmp);
  2076.    
  2077.     formatex(szTmp, charsmax(szTmp), "%L \w[\y%d\w]", id, "ML_POSTAVI_DINAMIT", broj_dinamita_igraca[id])
  2078.     menu_additem(pMenuExplode, szTmp);
  2079.    
  2080.     formatex(szTmp, charsmax(szTmp), "%L", id, "ML_AKTIVIRAJ_MINE")
  2081.     menu_additem(pMenuExplode, szTmp);
  2082.    
  2083.     menu_setprop(pMenuExplode, MPROP_NUMBER_COLOR,"\r")
  2084.     menu_display(id, pMenuExplode);
  2085.     return PLUGIN_CONTINUE;
  2086. }
  2087.  
  2088. public explodeMenu_Handle(id, menu, item)
  2089. {
  2090.     if(item == MENU_EXIT || !g_isAlive[id])
  2091.     {
  2092.         menu_destroy(menu);
  2093.         return PLUGIN_CONTINUE;
  2094.     }
  2095.     switch(item)
  2096.     {
  2097.         case 0:
  2098.         {
  2099.             PostaviMine(id);
  2100.         }
  2101.         case 1:
  2102.         {
  2103.             KreirajDinamit(id);
  2104.         }
  2105.         case 2:
  2106.         {
  2107.             UTIL_PlayWeaponAnimation(id, 3)
  2108.             new iEnt = -1, iOwner;
  2109.             while((iEnt = find_ent_by_class(iEnt,"Mine")))
  2110.             {
  2111.                 iOwner = pev(iEnt, pev_owner);
  2112.                 if(iOwner == id)
  2113.                 {
  2114.                     DodirMine2(iEnt);
  2115.                 }
  2116.             }
  2117.         }
  2118.     }
  2119.     menu_destroy(menu);
  2120.     MenuExplode(id)
  2121.     return PLUGIN_CONTINUE;
  2122. }
  2123.  
  2124. public DodirMine2(ent)
  2125. {
  2126.     if(!is_valid_ent(ent))
  2127.         return PLUGIN_HANDLED;
  2128.        
  2129.     new attacker = entity_get_edict(ent, EV_ENT_owner);
  2130.  
  2131.     new Float:fOrigin[3];
  2132.     entity_get_vector( ent, EV_VEC_origin, fOrigin);
  2133.    
  2134.     new iOrigin[3];
  2135.     for(new i=0;i<3;i++)
  2136.         iOrigin[i] = floatround(fOrigin[i]);
  2137.        
  2138.     message_begin(MSG_BROADCAST,SVC_TEMPENTITY, iOrigin);
  2139.     write_byte(TE_EXPLOSION);
  2140.     write_coord(iOrigin[0]);
  2141.     write_coord(iOrigin[1]);
  2142.     write_coord(iOrigin[2]);
  2143.     write_short(sprite_blast);
  2144.     write_byte(32); // scale
  2145.     write_byte(20); // framerate
  2146.     write_byte(0);// flags
  2147.     message_end();
  2148.     new entlist[33];
  2149.     new numfound = find_sphere_class(ent,"player", 90.0 ,entlist, 32);
  2150.        
  2151.     for (new i=0; i < numfound; i++)
  2152.     {      
  2153.         new pid = entlist[i];
  2154.            
  2155.         if (!g_isAlive[pid] || get_user_team(attacker) == get_user_team(pid) || klasa_igraca[pid] == Mitraljezac)
  2156.             continue;
  2157.            
  2158.         ExecuteHam(Ham_TakeDamage, pid, ent, attacker, 90.0+float(inteligencija_igraca[attacker]) , 1);
  2159.     }
  2160.     remove_entity(ent);
  2161.  
  2162.     return PLUGIN_CONTINUE;
  2163. }
  2164.  
  2165. public SacuvajPodatke(id)
  2166. {
  2167.     if(!klasa_igraca[id])
  2168.         return PLUGIN_CONTINUE;
  2169.        
  2170.     new vaultkey[128],vaultdata[256], ID_igraca[64];
  2171.     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]);
  2172.    
  2173.     get_user_authid(id, ID_igraca, charsmax(ID_igraca))
  2174.    
  2175.     formatex(vaultkey, charsmax(vaultkey),"%s-%i-cod", ID_igraca, klasa_igraca[id]);
  2176.     nvault_set(g_vault,vaultkey,vaultdata);
  2177.    
  2178.     return PLUGIN_CONTINUE;
  2179. }
  2180.  
  2181. public UcitajPodatke(id, klasa)
  2182. {
  2183.     new vaultkey[128],vaultdata[256], ID_igraca[64];
  2184.    
  2185.     get_user_authid(id, ID_igraca, charsmax(ID_igraca))
  2186.    
  2187.     formatex(vaultkey, charsmax(vaultkey),"%s-%i-cod", ID_igraca, klasa);
  2188.     nvault_get(g_vault,vaultkey,vaultdata,255);
  2189.  
  2190.     replace_all(vaultdata, 255, "#", " ");
  2191.  
  2192.     new playerdata[6][32];
  2193.  
  2194.     parse(vaultdata, playerdata[0], 31, playerdata[1], 31, playerdata[2], 31, playerdata[3], 31, playerdata[4], 31, playerdata[5], 31);
  2195.  
  2196.     iskustvo_igraca[id] = str_to_num(playerdata[0]);
  2197.     level_igraca[id] = str_to_num(playerdata[1])>0?str_to_num(playerdata[1]):1;
  2198.     inteligencija_igraca[id] = str_to_num(playerdata[2]);
  2199.     energija_igraca[id] = str_to_num(playerdata[3]);
  2200.     snaga_igraca[id] = str_to_num(playerdata[4]);
  2201.     kondicija_igraca[id] = str_to_num(playerdata[5]);
  2202.     poeni_igraca[id] = (level_igraca[id]-1)*2-inteligencija_igraca[id]-energija_igraca[id]-snaga_igraca[id]-kondicija_igraca[id];
  2203.    
  2204.     return PLUGIN_CONTINUE;
  2205. }
  2206.  
  2207. public IzbaciPredmet(id)
  2208. {
  2209.     if(informacije_predmet_igraca[id][0])
  2210.     {
  2211.         ChatColor(id, "%L %L.", id, "ML_BACIO", id, naziv_predmeta[informacije_predmet_igraca[id][0]]);
  2212.         Obrisipredmet(id);
  2213.     }
  2214.     else
  2215.         ChatColor(id, "%L", id, "ML_NEMA_PREDMET");
  2216. }
  2217.  
  2218. public Obrisipredmet(id)
  2219. {
  2220.     informacije_predmet_igraca[id][0] = 0;
  2221.     informacije_predmet_igraca[id][1] = 0;
  2222.     if(g_isAlive[id])
  2223.     {
  2224.         set_user_footsteps(id, 0);
  2225.         set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, 255);
  2226.         PromeniModel(id, 1);
  2227.     }
  2228. }
  2229.  
  2230. public DajPredmet(id, predmet)
  2231. {
  2232.     Obrisipredmet(id);
  2233.     informacije_predmet_igraca[id][0] = predmet;
  2234.     ChatColor(id, "%L %L.", id, "ML_DOBIO_PREDMET", id, naziv_predmeta[informacije_predmet_igraca[id][0]]);
  2235.    
  2236.     switch(predmet)
  2237.     {
  2238.         case 1:
  2239.         {
  2240.             set_user_footsteps(id, 1);
  2241.         }
  2242.         case 2:
  2243.         {
  2244.             informacije_predmet_igraca[id][1] = random_num(3,6);
  2245.         }
  2246.         case 3:
  2247.         {
  2248.             informacije_predmet_igraca[id][1] = random_num(6, 11);
  2249.         }
  2250.         case 5:
  2251.         {
  2252.             informacije_predmet_igraca[id][1] = random_num(6, 9);
  2253.         }
  2254.         case 6:
  2255.         {
  2256.             if(klasa_igraca[id] == Partizan || klasa_igraca[id] == Assassin )
  2257.             {
  2258.                 DajPredmet(id, random_num(1, sizeof naziv_predmeta-1));
  2259.             }
  2260.             else
  2261.             {
  2262.                 informacije_predmet_igraca[id][1] = random_num(100, 150);
  2263.                 set_rendering(id,kRenderFxGlowShell,0,0,0 ,kRenderTransAlpha, informacije_predmet_igraca[id][1]);
  2264.             }
  2265.         }
  2266.         case 7:
  2267.         {
  2268.             if(klasa_igraca[id] == Rambo)
  2269.                 DajPredmet(id, random_num(1, sizeof naziv_predmeta-1));
  2270.         }
  2271.         case 8:
  2272.         {
  2273.             if(klasa_igraca[id] == Marinac || klasa_igraca[id] == Assassin)
  2274.                 DajPredmet(id, random_num(1, sizeof naziv_predmeta-1));
  2275.         }
  2276.         case 9:
  2277.         {
  2278.             informacije_predmet_igraca[id][1] = random_num(1, 3);
  2279.             PromeniModel(id, 0);
  2280.             give_item(id, "weapon_hegrenade");
  2281.         }
  2282.         case 10:
  2283.         {
  2284.             informacije_predmet_igraca[id][1] = random_num(4, 8);
  2285.             give_item(id, "weapon_hegrenade");
  2286.         }
  2287.         case 12:
  2288.         {
  2289.             informacije_predmet_igraca[id][1] = random_num(1, 4);
  2290.         }
  2291.         case 13:
  2292.         {
  2293.             give_item(id, "weapon_awp");
  2294.         }
  2295.         case 15:
  2296.         {
  2297.             if(klasa_igraca[id] == Rambo)
  2298.                 DajPredmet(id, random_num(1, sizeof naziv_predmeta-1));
  2299.         }
  2300.         case 16:
  2301.         {
  2302.             if(informacije_predmet_igraca[id][1] == 16)
  2303.                 give_item(id, "weapon_deagle")
  2304.         }
  2305.         case 19:
  2306.         {
  2307.             informacije_predmet_igraca[id][1] = 1;
  2308.         }
  2309.         case 24:
  2310.         {
  2311.             informacije_predmet_igraca[id][1] = 1;
  2312.         }
  2313.         case 26:
  2314.         {
  2315.             informacije_predmet_igraca[id][1] = random_num(3, 6);
  2316.         }
  2317.         case 27:
  2318.         {
  2319.             informacije_predmet_igraca[id][1] = 3;
  2320.         }
  2321.     }
  2322. }
  2323.  
  2324. public OpisPredmeta(id)
  2325. {
  2326.     new opis_predmeta[128];
  2327.     new slucajne_vrednosti[3];
  2328.     num_to_str(informacije_predmet_igraca[id][1], slucajne_vrednosti, 2);
  2329.     formatex(opis_predmeta, 127, "%L", id, opis_predmet[informacije_predmet_igraca[id][0]]);
  2330.     replace_all(opis_predmeta, 127, "X", slucajne_vrednosti);
  2331.    
  2332.     new opispr[512];
  2333.     formatex(opispr, charsmax(opispr), "%L: ^1%L.^n%s", id, "ML_PREDMET", id, naziv_predmeta[informacije_predmet_igraca[id][0]], opis_predmeta);
  2334.     show_menu(id, charsmax(opispr), opispr);
  2335. }
  2336.  
  2337.  
  2338. GetPosition(iPlayer)
  2339. {
  2340.     static Position, Size, SteamID[32];
  2341.  
  2342.     for (Position = 0, Size = ArraySize(g_SteamID); Position < Size; Position++)
  2343.     {
  2344.         ArrayGetString(g_SteamID, Position, SteamID, 31);
  2345.  
  2346.         if (equal(SteamID, g_Data[iPlayer][Data_SteamID]))
  2347.             return Position + 1;
  2348.     }
  2349.     return 0;
  2350. }  
  2351.  
  2352. WriteTop15()
  2353. {          
  2354.     static Length, Position, Size, SteamID[32], Name[32], iLevel;
  2355.    
  2356.     Length = formatex(g_Top15[Length], 2047 - Length, STATSX_SHELL_DESIGN2_STYLE)
  2357.     Length += formatex(g_Top15[Length], 2047 - Length, "<body><table width=100%% border=0 align=center cellpadding=0 cellspacing=1>")
  2358.     Length += formatex(g_Top15[Length], 2047 - Length, "<body><tr><th>#<th>Nick<th>Najveci Level</tr>")
  2359.    
  2360.     for (Position = 0, Size = min(ArraySize(g_SteamID), 15); Position < Size; Position++)
  2361.     {
  2362.         ArrayGetString(g_SteamID, Position, SteamID, 31);
  2363.         TrieGetString(g_Name, SteamID, Name, 31);
  2364.         TrieGetCell(g_PlayerLevel, SteamID, iLevel);
  2365.        
  2366.         new szFixedName[ charsmax( Name ) * 5 + 1 ];
  2367.         MakeMOTDSafe( Name, szFixedName, charsmax( szFixedName ), 32 );
  2368.    
  2369.         Length += formatex(g_Top15[Length], 2047 - Length, "<tr><td>%d<td>%s<td>%d", Position + 1, Name, iLevel)
  2370.     }
  2371. }
  2372.  
  2373. public ProveriNivo(id)
  2374. {
  2375.     new level_limit = get_pcvar_num(cvar_max_level);
  2376.    
  2377.     if(level_igraca[id] > level_limit)
  2378.     {
  2379.         level_igraca[id] = level_limit;
  2380.         return;
  2381.     }
  2382.    
  2383.     while(iskustvo_igraca[id] >= Uzmixpzalevel(level_igraca[id]) && level_igraca[id] < level_limit)
  2384.     {
  2385.         if(happy_hour_on)
  2386.         {
  2387.             level_igraca[id]+=2;
  2388.             set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
  2389.             ShowSyncHudMsg(id, g_SyncHudObj3, "LEVEL x2");
  2390.             client_cmd(id, "spk QTM_CodMod/levelup");
  2391.             poeni_igraca[id] = (level_igraca[id]-1)*2-inteligencija_igraca[id]-energija_igraca[id]-snaga_igraca[id]-kondicija_igraca[id];
  2392.         }
  2393.         else
  2394.         {
  2395.             level_igraca[id]++;
  2396.             set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2);
  2397.             ShowSyncHudMsg(id, g_SyncHudObj3, "Dobrodosao na %i level!", level_igraca[id]);
  2398.             client_cmd(id, "spk QTM_CodMod/levelup");
  2399.             poeni_igraca[id] = (level_igraca[id]-1)*2-inteligencija_igraca[id]-energija_igraca[id]-snaga_igraca[id]-kondicija_igraca[id];
  2400.         }
  2401.     }
  2402.  
  2403.     if(level_igraca[id] > g_Data[id][Data_Level])
  2404.     {
  2405.         g_Data[id][Data_Level] = level_igraca[id];
  2406.         UpdateRank(id, false);
  2407.         ArraySort(g_SteamID, "SortRanks");
  2408.     }
  2409.     SacuvajPodatke(id);
  2410. }
  2411.  
  2412. public Uzmixpzalevel(level)
  2413.     return level*3*get_pcvar_num(cvar_xp_za_level);
  2414.  
  2415. public FwdThink(entity)
  2416. {
  2417.     if( entity != g_hud_thinker ) return;
  2418.    
  2419.     for(new id = 1; id <= g_iMaxPlayers; id++)
  2420.         PokaziInformacije(id);
  2421.        
  2422.     entity_set_float(g_hud_thinker, EV_FL_nextthink, get_gametime() + 1.0);
  2423. }
  2424.  
  2425. public PokaziInformacije(id)
  2426. {
  2427.     if(IsPlayer(id) && g_isConnected[id])
  2428.     {
  2429.         if(!g_isAlive[id])
  2430.         {
  2431.             new target = entity_get_int(id, EV_INT_iuser2);
  2432.        
  2433.             if(!target)
  2434.                 return PLUGIN_CONTINUE;
  2435.        
  2436.             set_hudmessage(255, 255, 255, - 1.0, 0.0, 0, 6.0, 1.0)
  2437.             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]);
  2438.            
  2439.             return PLUGIN_CONTINUE;
  2440.         }
  2441.         set_hudmessage(0, 255, 0, - 1.0, 0.0, 0, 6.0, 1.0)
  2442.         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]);
  2443.     }
  2444.     return PLUGIN_CONTINUE;
  2445. }  
  2446.  
  2447. public Event_Health(id)
  2448.     g_iHealth[id] = read_data(1)
  2449.  
  2450. public Pomoc(id)
  2451. {
  2452.     new menupomoc[1024]
  2453.     formatex(menupomoc, charsmax(menupomoc), "%L", id, "ML_POMOC")
  2454.     show_menu(id, charsmax(menupomoc), menupomoc, -1, "Pomoc");
  2455. }
  2456.  
  2457. public PostaviBrzinu(id)
  2458. {      
  2459.     id -= id>32? ZADATAK_POSTAVI_brzinu: 0;
  2460.  
  2461.     if(klasa_igraca[id])
  2462.         set_user_maxspeed(id, brzina_igraca[id]);
  2463. }
  2464.  
  2465. public PromeniModel(id,reset)
  2466. {
  2467.     if (!IsPlayer(id) || !g_isConnected[id])
  2468.         return PLUGIN_HANDLED;
  2469.    
  2470.     if (reset)
  2471.     {
  2472.         fm_reset_user_model(id);
  2473.         DefaultModel(id);
  2474.     }
  2475.     else
  2476.     {
  2477.         new CsTeams:iTeam;
  2478.         iTeam = cs_get_user_team(id)
  2479.         switch(iTeam)
  2480.         {
  2481.             case CS_TEAM_T:fm_set_user_model(id, Ubrania_CT[random(sizeof(Ubrania_CT))])
  2482.             case CS_TEAM_CT:fm_set_user_model(id, Ubrania_Terro[random(sizeof(Ubrania_Terro))])
  2483.         }
  2484.     }
  2485.     return PLUGIN_CONTINUE;
  2486. }
  2487.  
  2488. public DefaultModel(id)
  2489. {
  2490.     if (!g_isConnected[id])
  2491.         return PLUGIN_CONTINUE;
  2492.    
  2493.     new CsTeams:iTeam;
  2494.     iTeam = cs_get_user_team(id)
  2495.     switch(iTeam)
  2496.     {
  2497.         case CS_TEAM_T:fm_set_user_model(id, Ubrania_Terro[random(sizeof(Ubrania_Terro))])
  2498.         case CS_TEAM_CT:fm_set_user_model(id, Ubrania_CT[random(sizeof(Ubrania_CT))])
  2499.     }
  2500.     return PLUGIN_CONTINUE;
  2501. }
  2502.  
  2503. public DodirOruzija(weapon, id)
  2504. {      
  2505.     new model[23];
  2506.     pev(weapon, pev_model, model, 22);
  2507.     if (pev(weapon, pev_owner) == id || containi(model, "w_backpack") != -1)
  2508.         return HAM_IGNORED;
  2509.  
  2510.     return HAM_SUPERCEDE;
  2511. }
  2512.  
  2513.  
  2514. public client_infochanged(iPlayer)
  2515. {
  2516.     if (!g_isConnected[iPlayer])
  2517.         return;
  2518.  
  2519.     static Name[32];
  2520.     get_user_info(iPlayer, "name", Name, 31);
  2521.  
  2522.     if (equal(Name, g_Data[iPlayer][Data_Name]))
  2523.         return;
  2524.  
  2525.     copy(g_Data[iPlayer][Data_Name], 31, Name);
  2526.     UpdateRank(iPlayer, true);
  2527. }
  2528.  
  2529.  
  2530. public SetClientKeyValue(id, szInfoBuffer[], szKey[], szValue[])
  2531. {
  2532.     if(equal(szKey, "model") && !equal(szValue, g_szModel[id]))
  2533.     {
  2534.         set_user_info(id, "model", g_szModel[id])
  2535.         return FMRES_SUPERCEDE
  2536.     }
  2537.     return FMRES_IGNORED
  2538. }
  2539.  
  2540. public CmdSay( iPlayer )
  2541. {
  2542.     if( !g_isConnected[iPlayer])
  2543.         return PLUGIN_HANDLED_MAIN;
  2544.    
  2545.     new szArgs[ 194 ];
  2546.    
  2547.     if( !IsValidMessage( iPlayer, false, szArgs, charsmax( szArgs ) ) )
  2548.         return PLUGIN_HANDLED_MAIN;
  2549.    
  2550.     new iAlive = g_isAlive[ iPlayer ];
  2551.     new CsTeams:iTeam = cs_get_user_team( iPlayer );
  2552.    
  2553.     new iPlayers[ 32 ], iNum;
  2554.     get_players( iPlayers, iNum );
  2555.    
  2556.     new szName[ 32 ];
  2557.     get_user_name( iPlayer, szName, charsmax( szName ) );
  2558.    
  2559.     new const szPrefixes[ 2 ][ CsTeams ][ ] =
  2560.     {
  2561.         {
  2562.             "^1*DEAD*",
  2563.             "^1*DEAD*",
  2564.             "^1*DEAD*",
  2565.             "^1*SPEC*"
  2566.         },
  2567.         {
  2568.             "",
  2569.             "",
  2570.             "",
  2571.             ""
  2572.         }
  2573.     };
  2574.    
  2575.     new szMessage[ 192 ];
  2576.     formatex( szMessage, charsmax( szMessage ), "%s^4 [Lvl. %i]^3 %s^1 :  %s", szPrefixes[ iAlive ][ iTeam ], level_igraca[iPlayer], szName, szArgs );
  2577.        
  2578.     new iTarget;
  2579.     for( new i = 0; i < iNum; i++ )
  2580.     {
  2581.         iTarget = iPlayers[ i ];
  2582.        
  2583.         if( iTarget == iPlayer || ( iAlive || g_isConnected[ iTarget ] ) && g_isAlive[ iTarget ] == iAlive )
  2584.         {
  2585.             message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, iTarget );
  2586.             write_byte( iPlayer );
  2587.             write_string( szMessage );
  2588.             message_end( );
  2589.         }
  2590.     }
  2591.     return PLUGIN_HANDLED_MAIN;
  2592. }
  2593.  
  2594. public CmdSayTeam( iPlayer )
  2595. {
  2596.     if( !g_isConnected[ iPlayer ] )
  2597.         return PLUGIN_HANDLED_MAIN;
  2598.    
  2599.     new szArgs[ 194 ];
  2600.    
  2601.     if( !IsValidMessage( iPlayer, true, szArgs, charsmax( szArgs ) ) )
  2602.         return PLUGIN_HANDLED_MAIN;
  2603.    
  2604.     new iAlive = g_isAlive[ iPlayer ];
  2605.     new CsTeams:iTeam = cs_get_user_team( iPlayer );
  2606.    
  2607.     new iPlayers[ 32 ], iNum;
  2608.     get_players( iPlayers, iNum );
  2609.    
  2610.     new szName[ 32 ];
  2611.     get_user_name( iPlayer, szName, charsmax( szName ) );
  2612.    
  2613.     new const szPrefixes[ 2 ][ CsTeams ][ ] =
  2614.     {
  2615.         {
  2616.             "(Spectator)",
  2617.             "*DEAD*(Terrorist)",
  2618.             "*DEAD*(Counter-Terrorist)",
  2619.             "(Spectator)"
  2620.         },
  2621.         {
  2622.             "(Spectator)",
  2623.             "(Terrorist)",
  2624.             "(Counter-Terrorist)",
  2625.             "(Spectator)"
  2626.         }
  2627.     };
  2628.    
  2629.     new szMessage[ 192 ];
  2630.     formatex( szMessage, charsmax( szMessage ), "^1%s^4 [Lvl. %i]^3 %s^1 :  %s", szPrefixes[ iAlive ][ iTeam ], level_igraca[iPlayer], szName, szArgs );
  2631.        
  2632.     for( new i = 0, iTeammate; i < iNum; i++ )
  2633.     {
  2634.         iTeammate = iPlayers[ i ];
  2635.        
  2636.         if( iTeammate == iPlayer || ( iAlive || g_isConnected[ iTeammate ] ) && g_isAlive[ iTeammate ] == iAlive && cs_get_user_team( iTeammate ) == iTeam )
  2637.         {
  2638.             message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, iTeammate );
  2639.             write_byte( iPlayer );
  2640.             write_string( szMessage );
  2641.             message_end( );
  2642.         }
  2643.     }
  2644.     return PLUGIN_HANDLED_MAIN;
  2645. }
  2646.  
  2647. bool:IsValidMessage( iPlayer, bool:bTeamSay, szMessage[ ], iLen )
  2648. {
  2649.     read_args( szMessage, iLen );
  2650.     remove_quotes( szMessage );
  2651.    
  2652.     new iPos, cChar, i;
  2653.     while( ( cChar = szMessage[ iPos++ ] ) == '@' )
  2654.     {
  2655.         i++;
  2656.     }
  2657.    
  2658.     if( ( bTeamSay ? ( i == 1 ) : ( 1 <= i <= 3 ) ) && !access( iPlayer, g_iAdminChatFlag ) )
  2659.         return false;
  2660.    
  2661.     while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 )
  2662.     {
  2663.         if( cChar != ' ' && cChar != '%' )
  2664.             return true;
  2665.     }
  2666.     return false;
  2667. }
  2668.  
  2669. public BlokirajKomande()
  2670.     return PLUGIN_HANDLED;
  2671.  
  2672. public plugin_end()
  2673. {
  2674.     nvault_close( g_vault )
  2675.    
  2676.     ArraySort(g_SteamID, "SortRanks");
  2677.     SaveRanks();
  2678.  
  2679.     ArrayDestroy(g_SteamID)
  2680. }
  2681.  
  2682. MakeMOTDSafe( const szInput[ ], szOutput[ ], const iOutputLen, const iMaxChars = 0 )
  2683. {
  2684.     new iMax = iOutputLen / 5;
  2685.    
  2686.     copy( szOutput, iMax, szInput );
  2687.    
  2688.     replace_all( szOutput, iOutputLen, "&", "&amp;" );
  2689.     replace_all( szOutput, iOutputLen, "<", "&lt;" );
  2690.     replace_all( szOutput, iOutputLen, ">", "&gt;" );
  2691.    
  2692.     new iLastIndex, i, cChar;
  2693.     while( ( cChar = szOutput[ i ] ) )
  2694.     {
  2695.         if( cChar == '&' )
  2696.         {
  2697.             if( equali( szOutput[ i ], "&lt;", 4 ) || equali( szOutput[ i ], "&gt;", 4 ) )
  2698.                 i += 3;
  2699.             else if( equali( szOutput[ i ], "&amp;", 5 ) )
  2700.                 i += 4;
  2701.         }
  2702.         i++;
  2703.        
  2704.         if( 0 < iMaxChars < i )
  2705.             break;
  2706.  
  2707.         iLastIndex = i;
  2708.     }
  2709.     szOutput[ iLastIndex ] = 0;
  2710. }
  2711.  
  2712. stock UTIL_SetBarTime(id, time, startprogress=0)
  2713. {
  2714.     message_begin(MSG_ONE, get_user_msgid("BarTime2"), _, id)
  2715.     write_short(time);
  2716.     write_short(startprogress);
  2717.     message_end();
  2718. }
  2719.  
  2720. stock UTIL_PlayWeaponAnimation(id, anim)
  2721. {
  2722.     set_pev(id, pev_weaponanim, anim)
  2723.     message_begin(MSG_ONE, SVC_WEAPONANIM, {0, 0, 0}, id)
  2724.     write_byte(anim)
  2725.     write_byte(pev(id, pev_body))
  2726.     message_end()
  2727. }  
  2728.  
  2729. stock fm_trace_target(ignoreent, const Float:start[3], distance)
  2730. {
  2731.     new Float:fAim[3], Float:end[3];
  2732.     velocity_by_aim(ignoreent, distance, fAim);
  2733.    
  2734.     end[0] = start[0] + fAim[0];
  2735.     end[1] = start[1] + fAim[1];
  2736.     end[2] = start[2] + fAim[2];
  2737.    
  2738.     engfunc(EngFunc_TraceLine, start, end, ignoreent == -1 ? 1 : 0, ignoreent, 0);
  2739.    
  2740.     new ent = get_tr2(0, TR_pHit);
  2741.    
  2742.     return pev_valid(ent) ? ent : 0;
  2743. }
  2744.  
  2745. stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
  2746. {
  2747.     message_begin( MSG_ONE, g_msgScreenFade,{0,0,0},id );
  2748.     write_short( duration );    // Duration of fadeout
  2749.     write_short( holdtime );    // Hold time of color
  2750.     write_short( fadetype );    // Fade type
  2751.     write_byte ( red );     // Red
  2752.     write_byte ( green );       // Green
  2753.     write_byte ( blue );        // Blue
  2754.     write_byte ( alpha );   // Alpha
  2755.     message_end();
  2756. }
  2757.  
  2758. stock set_user_clip(id, ammo)
  2759. {
  2760.     new weaponname[32], weaponid = -1, weapon = get_user_weapon(id, _, _);
  2761.     get_weaponname(weapon, weaponname, 31);
  2762.     while ((weaponid = find_ent_by_class(weaponid, weaponname)) != 0)
  2763.     {
  2764.         if(entity_get_edict(weaponid, EV_ENT_owner) == id)
  2765.         {
  2766.             set_pdata_int(weaponid, 51, ammo, 4);
  2767.             return weaponid;
  2768.         }
  2769.     }
  2770.     return 0;
  2771. }
  2772.  
  2773. stock ChangeModelsSatchel(id)
  2774. {
  2775.     set_pev(id, pev_viewmodel2, "models/v_dynamite.mdl")
  2776.     set_pev(id, pev_weaponmodel2, "models/p_dynamite.mdl")
  2777. }
  2778.  
  2779. stock fm_set_user_model(id, const szModelName[])
  2780. {
  2781.     copy(g_szModel[id], sizeof g_szModel[] - 1, szModelName)
  2782.     set_user_info(id, "model", szModelName)
  2783. }
  2784.  
  2785. stock fm_get_user_model(id, model[], len )
  2786.     get_user_info(id, "model", model, len)
  2787.  
  2788. stock fm_reset_user_model( player )
  2789.     dllfunc( DLLFunc_ClientUserInfoChanged, player, engfunc( EngFunc_GetInfoKeyBuffer, player ) );
  2790.  
  2791. stock ChatColor(const id, const input[], any:...)
  2792. {
  2793.     new count = 1, players[32]
  2794.     static msg[191]
  2795.     vformat(msg, 190, input, 3)
  2796.    
  2797.     replace_all(msg, 190, "!g", "^4") // Green Color
  2798.     replace_all(msg, 190, "!y", "^1") // Default Color
  2799.     replace_all(msg, 190, "!t", "^3") // Team Color
  2800.    
  2801.     new index
  2802.     if (id) players[0] = id; else get_players(players, count, "ch")
  2803.     {
  2804.         for (new i = 0; i < count; i++)
  2805.         {
  2806.             index = players[i]
  2807.            
  2808.             message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, index)
  2809.             write_byte(index);
  2810.             write_string(msg);
  2811.             message_end();
  2812.         }
  2813.     }
  2814. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement