AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   i need help to xp save (https://forums.alliedmods.net/showthread.php?t=77275)

tuty 09-09-2008 12:11

i need help to xp save
 
Hi,:up: ,

how can i make in diablo mod , when you say /savexp automatically to save xp on your name... please, i run diablo mod on my server and if i get retry xp is to 0 ..jut item is saved.. :(

maplebest 09-09-2008 12:21

Re: i need help to xp save
 
Check the code from wc3? Thats the best thing I could figure out right now.

[X]-RayCat 09-09-2008 15:28

Re: i need help to xp save
 
Quote:

Originally Posted by tuty (Post 683490)
Hi,:up: ,

how can i make in diablo mod , when you say /savexp automatically to save xp on your name... please, i run diablo mod on my server and if i get retry xp is to 0 ..jut item is saved.. :(

Attack the source code of diablo mod you're running in your server. :)

anakin_cstrike 09-10-2008 19:07

Re: i need help to xp save
 
Or you can use nvault for get an ideea of how to do this.

tuty 09-11-2008 08:27

Re: i need help to xp save
 
the final question..


Annybody know to make this command or NOT!?:evil:

[X]-RayCat 09-11-2008 10:00

Re: i need help to xp save
 
Quote:

Originally Posted by tuty (Post 684318)
the final question..


Annybody know to make this command or NOT!?:evil:

When i fast viewed that code it loads player items from file (if i looked correctly) so then i could create that loads exp from file. But now i dont have the time. Also you can try to make your self following the "Xpmod tutorial".

tuty 09-11-2008 10:53

Re: i need help to xp save
 
when you have time can you make it?:D ..also , i will try but i'm not sure i can meke it

hleV 09-11-2008 10:56

Re: i need help to xp save
 
Try this (I hope I didn't write any mistakes in it). It loads exp by SteamID:
PHP Code:

#include <nvault>
 
public plugin_init()
        
register_clcmd("say /savexp""cmdSaveExp")
 
public 
cmdSaveExp(id// Save exp
{
        new 
auth[32], key[64], data[64]
        
get_user_authid(idauth31)
 
        
exp get_user_exp(id// Change get_user_exp(id) to whatever what gets the exp of the user
 
        
format(key63"XP-%s"auth// Saves the info like this: XP-SteamID
        
format(data63"%d"exp// Gets/saves player's current exp
}
 
public 
client_authorized(id// Load exp
{
        new 
auth[32], key[64], data[64]
        
get_user_authid(idauth31)
 
        
format(key63"XP-%s"auth// Gets the line which contains XP-SteamID
        
get_vaultdata(keydata63)
 
        
data str_to_num(data// Transforms string (exp is string) to a number
 
        
if (data != 0// If loaded exp isn't equal to 0 (exp was not yet for this user), set back user's exp
                
set_user_exp(iddata// Change this to the function which gives player exp points



tuty 09-11-2008 12:04

Re: i need help to xp save
 
whats wrong ?
img x(


here is the code
Code:

new Basepath[50] = "addons/amxmodx/diablo/"   

#include <amxmodx>
#include <engine>
#include <fakemeta>
#include <fun>
#include <cstrike>
#include <nvault>
#include <amxmisc>

#define RESTORETIME 30.0   
#define MAX 32           
//#define CHEAT 1       
#define CS_PLAYER_HEIGHT 72.0
#define GLOBAL_COOLDOWN 0.5
#define TASK_GREET 240
#define TASK_HUD 120
#define TASK_HOOK 360

#define x 0
#define y 1
#define z 2

new Float:version = 7.0

new gmsgFade
new gmsgDeathMsg
new gmsgStatusText
new gmsgBartimer
new gmsgScoreInfo

new bool:freeze_ended
new c4state[33]
new c4bombc[33][3]
new c4fake[33]
new fired[33]
new bool:ghost_check
new ghosttime[33]
new ghoststate[33]
new sversion[16]

new sprite_blood_drop = 0
new sprite_blood_spray = 0
new sprite_gibs = 0
new sprite_white = 0
new sprite_fire = 0
new sprite_beam = 0
new sprite_boom = 0
new sprite_line = 0
new sprite_lgt = 0
new sprite_laser = 0
new sprite_ignite = 0
new sprite_smoke = 0

new player_xp[33] = 0       
new player_lvl[33] = 1       
new player_point[33] = 0       
new player_item_id[33] = 0   
new player_item_name[33][128] 
new player_intelligence[33]
new player_strength[33]
new player_agility[33]
new Float:player_damreduction[33]
new player_dextery[33]
new player_class[33]       
new Float:player_huddelay[33]

new player_b_vampire[33] = 0   
new player_b_damage[33] = 0   
new player_b_money[33] = 0   
new player_b_gravity[33] = 0   
new player_b_inv[33] = 0       
new player_b_grenade[33] = 0   
new player_b_reduceH[33] = 0   
new player_b_theif[33] = 0   
new player_b_respawn[33] = 0   
new player_b_explode[33] = 0   
new player_b_heal[33] = 0   
new player_b_gamble[33] = 0   
new player_b_blind[33] = 0   
new player_b_fireshield[33] = 0   
new player_b_meekstone[33] = 0   
new player_b_teamheal[33] = 0   
new player_b_redirect[33] = 0   
new player_b_fireball[33] = 0   
new player_b_ghost[33] = 0   
new player_b_eye[33] = 0       
new player_b_blink[33] = 0   
new player_b_windwalk[33] = 0   
new player_b_usingwind[33] = 0   
new player_b_reverse[33] = 0   
new player_b_froglegs[33] = 0   
new player_b_silent[33]    = 0   
new player_b_dagon[33] = 0   
new player_b_sniper[33] = 0   
new player_b_jumpx[33] = 0   
new player_b_smokehit[33] = 0   
new player_b_extrastats[33] = 0   
new player_b_firetotem[33] = 0   
new player_b_hook[33] = 0   
new player_b_darksteel[33] = 0       
new player_b_illusionist[33] = 0   
new player_b_mine[33] = 0   

new player_dc_name[33][99]   
new player_dc_item[33]       
new player_c_name[33][50]   
new player_c_item[33]       
new Float:player_b_oldsen[33]   


new bool:itemrestore = true   
new bool:updatedtable = false   
new bool:player_b_dagfired[33]   
new bool:used_item[33]
new jumps[33]           
new bool:dojump[33]       
new item_boosted[33]       
new earthstomp[33]
new bool:falling[33]
new gravitytimer[33]
new item_durability[33]       

new LeaderCT = -1
new LeaderT = -1

enum { NONE = 0, SORC, MONK, PALADIN, ASSASSIN, NECROMANCER, BARBARIAN }
new Race[7][16] = { "None","Sorcerer","Monk","Paladin","Assassin","Necrom","Barbarian" }

new LevelXP[25] = { 0,25,85,185,300,450,700,850,1000,1335,1500,1800,2100,2400,2800,3200,3600,4000,
            4500,5000,5500,6000,6500,100000000}

new CTstart[3]
new Tstart[3]
new NextPowerup[3]
new bool:spawnset = false
new bool:havespawn = false
new bool:powerup_taken = false

new hooked[33]
new Float:player_global_cooldown[33]

new last_update_xp[33]
new Float:last_update_perc[33]
new bool:use_addtofullpack

enum
{
    Flag_Ignite = 0,
    Flag_Hooking,
    Flag_Rot,
    Flag_Dazed,
    Flag_Illusion,
    Flag_Moneyshield,
    Flag_Teamshield,
    Flag_Teamshield_Target,
    num_of_flags
}


new afflicted[33][num_of_flags]


public plugin_init()
{
    float_to_str(version,sversion,15)
    register_plugin("DiabloMod",sversion,"Morten")
    register_cvar("diablomod_version",sversion,FCVAR_SERVER)
    register_event("CurWeapon","CurWeapon","be")
    register_event("ResetHUD", "ResetHUD", "abe")
    register_event("DeathMsg","DeathMsg","ade")
    register_event("Damage", "Damage", "b", "2!0")
    register_event("SendAudio","freeze_over","b","2=%!MRAD_GO","2=%!MRAD_MOVEOUT","2=%!MRAD_LETSGO","2=%!MRAD_LOCKNLOAD")
    register_event("SendAudio","freeze_begin","a","2=%!MRAD_terwin","2=%!MRAD_ctwin","2=%!MRAD_rounddraw")
    register_event("SendAudio", "award_defuse", "a", "2&%!MRAD_BOMBDEF")     
    register_logevent("award_plant", 3, "2=Planted_The_Bomb");   
    register_event("TextMsg", "award_hostageALL", "a", "2&#All_Hostages_R" );
    register_event("TextMsg","host_killed","b","2&#Killed_Hostage")
    register_event("SendAudio","eventGrenade","bc","2=%!MRAD_FIREINHOLE")
    register_event("TextMsg", "freeze_begin", "a", "2=#Game_will_restart_in")
    register_clcmd("say /arunca","dropitem")
    register_clcmd("say_team /arunca", "dropitem")
    register_clcmd("say /item","iteminfo")
    register_clcmd("say_team /item", "iteminfo")
    register_clcmd("say /detalii", "shit")
    register_clcmd("say_team /detalii", "shit")
    register_clcmd("say /diabloinfo","helpme")
    register_clcmd("say_team /diabloinfo", "helpme")
    register_clcmd("say /rasa","changerace")
    register_clcmd("say_team /rasa", "changerace")
    register_clcmd("say /abilitati", "showskills")
    register_clcmd("say_team /abilitati", "showskills")
    register_clcmd("say /meniu","showmenu")
    register_clcmd("say_team /meniu","showmenu")
    register_clcmd("say /shop","buyrune")
    register_clcmd("say /xp", "cmdSaveExp")
    register_clcmd("say_team /xp", "cmdSaveExp")
    register_clcmd("say_team /shop","buyrune")
    register_menucmd(register_menuid("Select skill"), 1023, "skill_menu")
    register_menucmd(register_menuid("Options"), 1023, "option_menu")
    register_menucmd(register_menuid("Select Class "), 1023, "select_class_menu")
    register_menucmd(register_menuid("Select Rune "), 1023, "select_rune_menu")
    gmsgDeathMsg = get_user_msgid("DeathMsg")
    gmsgStatusText = get_user_msgid("StatusText")
    gmsgFade = get_user_msgid("ScreenFade")
    gmsgBartimer = get_user_msgid("BarTime")
    gmsgScoreInfo = get_user_msgid("ScoreInfo")
    register_cvar("diablo_saveitems","1",0)
    register_cvar("diablo_xpbonus","25",0)
    register_cvar("diablo_durability","10",0)
    register_cvar("diablo_spawnchance","2",0)
    set_msg_block ( gmsgDeathMsg, BLOCK_SET )
    set_task(5.0, "Timed_Healing", 0, "", 0, "b")
    set_task(1.0, "Timed_Ghost_Check", 0, "", 0, "b")
    set_task(0.8, "UpdateHUD",0,"",0,"b")
    set_task(RESTORETIME, "DisableItemRestore",0,"",0,"a")
    register_think("PlayerCamera","Think_PlayerCamera");
    register_think("PowerUp","Think_PowerUp")
    register_think("Effect_Rot","Effect_Rot_Think")
    register_logevent("RoundStart", 2, "0=World triggered", "1=Round_Start")
    register_clcmd("fullupdate","fullupdate")
    register_forward(FM_WriteString, "FW_WriteString")
    register_think("Effect_Ignite_Totem", "Effect_Ignite_Totem_Think")
    register_think("Effect_Ignite", "Effect_Ignite_Think")
    register_think("Effect_Slow","Effect_Slow_Think")
    register_think("Effect_Timedflag","Effect_Timedflag_Think")
    register_think("Effect_MShield","Effect_MShield_Think")
    register_think("Mine","Mine_Think")
    register_think("Effect_Teamshield","Effect_Teamshield_Think")
    register_think("Effect_Healing_Totem","Effect_Healing_Totem_Think")
    register_forward(FM_AddToFullPack, "client_AddToFullPack")
    set_task(60.0, "INFOO", 0, "", 0, "be", 0)

    #if defined CHEAT
    register_clcmd("giveitem","giveitem")
    register_clcmd("bm","benchmark")
    #endif
   
    return PLUGIN_CONTINUE 
}

public plugin_precache()
{
    precache_model("models/rpgrocket.mdl")
    precache_model("models/bag.mdl")
    precache_model("models/zombie.mdl")
    precache_model("models/mine.mdl")
    precache_model("models/totem_ignite.mdl")
    precache_model("models/totem_heal.mdl")
    precache_sound("weapons/xbow_hit2.wav")
    precache_sound("weapons/xbow_fire1.wav")
    precache_sound("buttons/blip1.wav")
    precache_sound("houndeye/he_hunt2.wav")
    precache_sound("fvox/warning.wav")
    precache_sound("misc/powerup.wav")
    precache_sound("vox/bizwarn.wav")
    precache_sound("debris/beamstart4.wav")
    sprite_blood_drop = precache_model("sprites/blood.spr")
    sprite_blood_spray = precache_model("sprites/bloodspray.spr")
    sprite_ignite = precache_model("sprites/flame.spr")
    sprite_smoke = precache_model("sprites/steam1.spr")
    sprite_laser = precache_model("sprites/laserbeam.spr")
    sprite_boom = precache_model("sprites/zerogxplode.spr")
    sprite_line = precache_model("sprites/dot.spr")
    sprite_lgt = precache_model("sprites/lgtning.spr")
    sprite_white = precache_model("sprites/white.spr")
    sprite_fire = precache_model("sprites/explode1.spr")
    sprite_gibs = precache_model("models/hgibs.mdl")
    sprite_beam = precache_model("sprites/zbeam4.spr")

}
public INFOO(id)
{
    set_hudmessage(0, 255, 0, -1.0, 0.70, 2, 10.0, 5.0, 0.1, 0.5, 11)
    show_hudmessage(0, "Scrie /detalii pentru a afla comenzile disponibile tie!")
}
public cmdSaveExp(id) // Save exp
{
        new auth[32], key[64], data[64]
        get_user_authid(id, auth, 31)
 
        exp = Give_Xp(id)// Change get_user_exp(id) to whatever what gets the exp of the user
 
        format(key, 63, "XP-%s", auth) // Saves the info like this: XP-SteamID
        format(data, 63, "%d", exp) // Gets/saves player's current exp
}
public shit(id)
{
    show_motd(id,"/addons/amxmodx/configs/detalii.txt","Detalii Comenzi")
   
    return PLUGIN_HANDLED
}
public freeze_over()
{
    freeze_ended = true
}
public freeze_begin()
{
    freeze_ended = false
}
public RoundStart()
{
    Findleader()
    SpawnPowerup()
    Bot_Setup()
   
    for (new i=0; i < 33; i++)
        used_item[i] = false
       
    ghost_check = false
    use_addtofullpack = false
}
#if defined CHEAT
public giveitem(id)
{
    award_item(id, 25)
    return PLUGIN_HANDLED
}
public benchmark(id)
{
    new Float:nowtime = halflife_time();
    new iterations = 10
   
    for (new i=0; i < iterations; i++)
    {
        UpdateHUD()
    }
   
    new Float:timespent = halflife_time()-nowtime
   
    client_print(id,print_chat,"[GameStarCS] Benchmark activat: UpdateHUD() cu %i interatiuni facute in %f secunde",iterations,timespent)
}
#endif

public CurWeapon(id)
{
    if (is_user_connected(id))
    {
        new clip, ammo
        new weapon = get_user_weapon(id,clip,ammo)
       
        if (player_item_id[id] == 17 || player_b_usingwind[id] == 1) engclient_cmd(id,"weapon_knife")   
        if ((player_dextery[id] > 0 || player_class[id] == ASSASSIN) && freeze_ended)
        {
            if (weapon != CSW_KNIFE )
            {
                new bonus = 0
                if (player_class[id] == ASSASSIN) bonus = 5
                set_user_maxspeed(id,250.0+player_dextery[id]+ bonus)
            }
            else
            {
                set_user_maxspeed(id,252.0+player_dextery[id])
            }
        }
       
        add_inv_bonus(id)
        write_hud(id)
    }
}
public ResetHUD(id)
{
    if (is_user_connected(id))
    {   
        add_strength_bonus(id)
        if (c4fake[id] > 0)
        {
            remove_entity(c4fake[id])
            c4fake[id] = 0
        }
       
        fired[id] = 0
        player_b_dagfired[id] = false
        ghoststate[id] = 0
        earthstomp[id] = 0
       
        if (player_b_blink[id] > 0)
            player_b_blink[id] = 1
       
        if (player_b_usingwind[id] > 0)
        {
            player_b_usingwind[id] = 0
            set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,255)
        }
       
        if (player_point[id] > 0 ) skilltree(id)
        if (player_class[id] == 0) select_class(id)
       
        add_bonus_gamble(id)       
        c4state[id] = 0
        client_cmd(id,"hud_centerid 0") 
        auto_help(id)
        add_money_bonus(id)
        add_gravity_bonus(id)
        add_redhealth_bonus(id)
        SelectBotRace(id)
    }
}
public DeathMsg()
{
    new weaponname[20]
    new kid = read_data(1)
    new vid = read_data(2)
    new headshot = read_data(3)
    read_data(4,weaponname,31)

    if (is_user_connected(kid) && is_user_connected(vid) && get_user_team(kid) != get_user_team(vid))
    {
        show_deadmessage(kid,vid,headshot,weaponname)
        award_item(kid,0)
        award_kill(kid,vid)
        add_respawn_bonus(vid)
        add_bonus_explode(vid)
        add_barbarian_bonus(kid)
        register_place(kid)
    }
}
public Damage(id)
{
    if (is_user_connected(id))
    {
        new damage = read_data(2)
        new weapon
        new bodypart
        new attacker_id = get_user_attacker(id,weapon,bodypart)
        new starthealth = get_user_health(id)
        if (is_user_connected(attacker_id) && attacker_id != id)
        {
               
            add_damage_bonus(id,damage,attacker_id)
            add_vampire_bonus(id,damage,attacker_id)
            add_grenade_bonus(id,attacker_id,weapon)
            add_theif_bonus(id,attacker_id)
            add_bonus_blind(id,attacker_id,weapon,damage)
            add_bonus_confuse(id,attacker_id)
            add_bonus_redirect(id)
            add_bonus_necromancer(attacker_id,id)
            add_bonus_scoutdamage(attacker_id,id,weapon)   
            add_bonus_darksteel(attacker_id,id,damage)
            add_bonus_illusion(attacker_id,id,weapon)
            item_take_damage(id,damage)
           
            if (HasFlag(attacker_id,Flag_Ignite))
                RemoveFlag(attacker_id,Flag_Ignite)
           
            if((HasFlag(id,Flag_Illusion) || HasFlag(id,Flag_Teamshield))&& get_user_health(id) - damage > 0)
            {
                new weaponname[32]; get_weaponname( weapon, weaponname, 31 ); replace(weaponname, 31, "weapon_", "")
                UTIL_Kill(attacker_id,id,weaponname)
            }
           
            if (HasFlag(id,Flag_Moneyshield))
            {
                if (get_user_health(id)+3*damage/4 < 100+player_strength[id])
                    set_user_health(id,get_user_health(id)+3*damage/4)
            }
               
            if (damage > 0 && player_agility[id] > 0)
            {   
                new heal = floatround(player_damreduction[id]*damage)
                if (get_user_health(id)+heal < starthealth && is_user_alive(id))
                    set_user_health(id,get_user_health(id)+heal)
            }   
           
            if (HasFlag(id,Flag_Teamshield_Target))
            {
                new owner = find_owner_by_euser(id,"Effect_Teamshield")
                if (is_user_alive(owner))
                    Hurt_Entity(owner,attacker_id,damage+0.0)
            }
        }
           
        #if defined CHEAT
        new name[32]
        get_user_name(id,name,31)
        if (equal(name,"Admin"))
        {
            set_user_health(id,100+player_strength[id])
            set_user_hitzones(0, id, 0)
        }

        #endif
           
    }
}
public client_PreThink ( id )
{

    if ((player_b_silent[id] > 0 || player_class[id] == ASSASSIN) && is_user_alive(id))
        entity_set_int(id, EV_INT_flTimeStepSound, 999)
   
   
    if (!freeze_ended)
        return PLUGIN_CONTINUE
   
    if (earthstomp[id] != 0 && is_user_alive(id))
    {
        static Float:fallVelocity;
        pev(id,pev_flFallVelocity,fallVelocity);

        if(fallVelocity) falling[id] = true
        else falling[id] = false;
    }

   
    if (player_b_jumpx[id] > 0) Prethink_Doublejump(id)
    if (player_b_blink[id] > 0) Prethink_Blink(id)   
    if (player_b_usingwind[id] == 1) Prethink_usingwind(id)
    if (player_b_oldsen[id] > 0) Prethink_confuseme(id)
    if (player_b_froglegs[id] > 0) Prethink_froglegs(id)

   
    if (pev(id,pev_button) & IN_USE )
        Use_Spell(id)
   
    return PLUGIN_CONTINUE   
   
}
public client_PostThink( id )
{
    if (player_b_jumpx[id] > 0) Postthink_Doubeljump(id)
    if (earthstomp[id] != 0 && is_user_alive(id))
    {
            if (!falling[id]) add_bonus_stomp(id)
            else set_pev(id,pev_watertype,-3)
    }
}
public client_AddToFullPack(ent_state,e,edict_t_ent,edict_t_host,hostflags,player,pSet)
{
    if (!use_addtofullpack)
        return FMRES_HANDLED
       
    if (!pev_valid(e)|| !pev_valid(edict_t_ent) || !pev_valid(edict_t_host))
        return FMRES_HANDLED
           
    new classname[32]
    pev(e,pev_classname,classname,31)
   
    new hostclassname[32]
    pev(edict_t_host,pev_classname,hostclassname,31)
       
   
    if (equal(classname,"player") && equal(hostclassname,"player") && player)
    {
        if (is_user_alive(e) && is_user_alive(edict_t_host) && e != edict_t_host)
        {
            if (HasFlag(e,Flag_Illusion))
                return FMRES_SUPERCEDE
                       
            if (HasFlag(edict_t_host,Flag_Illusion))
                return FMRES_SUPERCEDE           
        }
                   
    }
   
    if (equal(classname,"Mine") && !player && equal(hostclassname,"player"))
    {
        new owner = pev(e,pev_owner)
                   
        if (get_user_team(owner) != get_user_team(edict_t_host))
            set_rendering(e,kRenderFxNone, 0,0,0, kRenderTransTexture,60)   
    }
       
    return FMRES_HANDLED
       
}
public skilltree(id)
{
    new text[513]
    new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)
   
   
    format(text, 512, "\ySelect skill - \rPoints: %i^n^n\w1. Intelligence [%i] [More Spell Damage]^n\w2. Strength [%i] [More Hitpoints]^n\w3. Agility [%i] [Improved Magic find and Damage reduction]^n\w4. Dextery [%i] [Improved Speed and Magic damage reduction]",player_point[id],player_intelligence[id],player_strength[id],player_agility[id],player_dextery[id])
   
    keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)
    show_menu(id, keys, text)
    return PLUGIN_HANDLED 
}
public skill_menu(id, key)
{
    switch(key)
    {
        case 0:
        {   
            player_point[id]-=1
            player_intelligence[id]+=1
           
        }
        case 1:
        {   
            player_point[id]-=1   
            player_strength[id]+=1
           
            if (is_user_alive(id))
                set_user_health(id,get_user_health(id)+2)
        }
        case 2:
        {   
            player_point[id]-=1
            player_agility[id]+=1
            player_damreduction[id] = (47.3057*(1.0-floatpower( 2.7182, -0.06798*float(player_agility[id])))/100)   
           
           
        }
        case 3:
        {   
            player_point[id]-=1
            player_dextery[id]+=1
        }
    }
   
    if (player_point[id] > 0)
        skilltree(id)
   
   
    return PLUGIN_HANDLED
}
public show_deadmessage(killer_id,victim_id,headshot,weaponname[])
{
    if (!(killer_id==victim_id && !headshot && equal(weaponname,"world")))
    {
        message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
        write_byte(killer_id)
        write_byte(victim_id)
        write_byte(headshot)
        write_string(weaponname)
        message_end()
    }
}
public award_plant()
{
    new Players[32], playerCount, id
    get_players(Players, playerCount, "aeh", "TERRORIST")
       
    for (new i=0; i<playerCount; i++)
    {
        id = Players[i]
        Give_Xp(id,get_cvar_num("diablo_xpbonus"))   
        client_print(id,print_chat,"[GameStarCS] Ai primit *%i* experienta pentru plantarea bombei",get_cvar_num("diablo_xpbonus"))
    }   
}
public award_defuse()
{
    new Players[32], playerCount, id
    get_players(Players, playerCount, "aeh", "CT")
       
    for (new i=0; i<playerCount; i++)
    {
        id = Players[i]
        Give_Xp(id,get_cvar_num("diablo_xpbonus"))   
        client_print(id,print_chat,"[GameStarCS] Ai primit *%i* experienta pentru dezamorsarea bombei",get_cvar_num("diablo_xpbonus"))
    }
}
public award_hostageALL(id)
{
    if (is_user_connected(id) == 1)
        Give_Xp(id,get_cvar_num("diablo_xpbonus"))   
}
public award_kill(killer_id,victim_id)
{
    if (!is_user_connected(killer_id) || !is_user_connected(victim_id))
        return PLUGIN_CONTINUE
       
    new xp_award = get_cvar_num("diablo_xpbonus")
       
    new Team[32]
    get_user_team(killer_id,Team,31)
   
    if (LeaderCT > 0 && equal(Team,"CT") && !is_user_alive(LeaderCT))
        xp_award-= get_cvar_num("diablo_xpbonus")/4
   
    if (LeaderT > 0 && equal(Team,"TERRORIST") && !is_user_alive(LeaderT))
        xp_award-= get_cvar_num("diablo_xpbonus")/4
   
    if (player_class[killer_id] == MONK)
        xp_award+=get_cvar_num("diablo_xpbonus")/2
   
    if (player_xp[killer_id]<player_xp[victim_id])
        xp_award+=get_cvar_num("diablo_xpbonus")/4
   
    Give_Xp(killer_id,xp_award)
   
    return PLUGIN_CONTINUE
   
}
public Give_Xp(id,amount)
{
    player_xp[id]+=amount
    if (player_xp[id] > LevelXP[player_lvl[id]])
    {
        player_lvl[id]+=1
        player_point[id]+=2
        set_hudmessage(60, 200, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 2)
        show_hudmessage(id, "Ai avansat la nivel %i", player_lvl[id])
        client_cmd(id, "spk misc/powerup.wav")
    }
    write_hud(id)
}
public client_connect(id)
{
    new auth[32], key[64], data[64]
    get_user_authid(id, auth, 31)
 
        format(key, 63, "XP-%s", auth) // Gets the line which contains XP-SteamID
        get_vaultdata(key, data, 63)
 
        data = str_to_num(data) // Transforms string (exp is string) to a number
 
        if (data != 0) // If loaded exp isn't equal to 0 (exp was not yet for this user), set back user's exp
                Give_Xp(id, data) // Change this to the function which gives player exp points
       
    reset_item_skills(id)
    player_xp[id] = 0       
    player_lvl[id] = 1       
    player_point[id] = 0   
    player_item_id[id] = 0           
    player_agility[id] = 0
    player_strength[id] = 0
    player_intelligence[id] = 0
    player_dextery[id] = 0
    player_b_oldsen[id] = 0.0
    player_class[id] = 0
    player_damreduction[id] = 0.0
    last_update_xp[id] = -1
    player_item_name[id] = "None"
   
   
    handle_mapchange(id)
   
    set_task(10.0, "Greet_Player", id+TASK_GREET, "", 0, "a", 1)
}
public client_disconnect(id)
{
    new playername[40]
    get_user_name(id,playername,39)
    player_dc_name[id] = playername
    player_dc_item[id] = player_item_id[id]
   
    if (player_b_oldsen[id] > 0.0)
        client_cmd(id,"sensitivity %f",player_b_oldsen[id])
}
public write_hud(id)
{
    if (player_lvl[id] == 0)
        player_lvl[id] = 1
           
    new tpstring[512]
   
    new Float:xp_now
    new Float:xp_need
    new Float:perc
   
    if (last_update_xp[id] == player_xp[id])
    {
        perc = last_update_perc[id]
    }
    else
    {
       
        if (player_lvl[id] == 1)
        {
            xp_now = float(player_xp[id])
            xp_need = float(LevelXP[player_lvl[id]])
            perc = xp_now*100.0/xp_need
        }
        else
        {
            xp_now = float(player_xp[id])-float( LevelXP[player_lvl[id]-1])
            xp_need = float(LevelXP[player_lvl[id]])-float(LevelXP[player_lvl[id]-1])
            perc = xp_now*100.0/xp_need
        }
    }
   
    last_update_xp[id] = player_xp[id]
    last_update_perc[id] = perc
   
   
    format(tpstring,511,"[Rasa: %s Lvl: %i (%0.0f%s) Item: %s]", Race[player_class[id]], player_lvl[id], perc,"%%",player_item_name[id])
   
    message_begin(MSG_ONE,gmsgStatusText,{0,0,0}, id)
    write_byte(0)
    write_string(tpstring)
    message_end()
}
public UpdateHUD()

    for (new id=0; id < 32; id++)
    {   
        if (!is_user_connected(id))
            continue
       
       
        if (is_user_alive(id)) write_hud(id)
        else
        {
            new index,bodypart
            get_user_aiming(id,index,bodypart) 
           
            if(index >= 0 && index < MAX && is_user_connected(index) && is_user_alive(index))
            {
                new pname[32]
                get_user_name(index,pname,31)
               
                new Msg[512]
                set_hudmessage(255, 255, 255, 0.02, 0.63, 0, 6.0, 3.0)
                format(Msg,511,"Nume: %s^nNivel: %i^nRasa: %s^nItem: %s^nInteligenta: %i^nPutere: %i^nAgilitate: %i^nDexteritate: %i",pname,player_lvl[index],Race[player_class[index]],player_item_name[index], player_intelligence[index],player_strength[index], player_agility[index], player_dextery[index])       
                show_hudmessage(id, Msg)
               
            }
        }
    }
}
public check_magic(id)           
{
    if (player_b_meekstone[id] > 0) item_c4fake(id)
    if (player_b_fireball[id] > 0) item_fireball(id)
    if (player_b_ghost[id] > 0) item_ghost(id)
    if (player_b_eye[id] != 0) item_eye(id)
    if (player_b_windwalk[id] > 0) item_windwalk(id)
    if (player_b_dagon[id] > 0) item_dagon(id)
    if (player_b_theif[id] > 0) item_convertmoney(id)
    if (player_b_firetotem[id] > 0) item_firetotem(id)
    if (player_b_hook[id] > 0) item_hook(id)
    if (player_b_gravity[id] > 0) item_gravitybomb(id)
    if (player_b_fireshield[id] > 0) item_rot(id)
    if (player_b_illusionist[id] > 0) item_illusion(id)
    if (player_b_money[id] > 0) item_money_shield(id)
    if (player_b_mine[id] > 0) item_mine(id)
    if (player_b_teamheal[id] > 0) item_teamshield(id)
    if (player_b_heal[id] > 0) item_totemheal(id)
   
    return PLUGIN_HANDLED
}
public dropitem(id)
{
    if (player_item_id[id] == 0)
    {
        hudmsg(id,2.0,"Nu ai niciun Item de aruncat!")
        client_cmd(id, "spk vox/bizwarn.wav")
        return PLUGIN_HANDLED
    }
   
   
    if (item_durability[id] <= 0)
    {
        hudmsg(id,3.0,"S-a pierdut durabilitatea Itemului!")
        client_cmd(id, "spk buttons/blip1.wav")
    }
    else
    {
        set_hudmessage(100, 200, 55, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
        show_hudmessage(id, "Item aruncat!")
        client_cmd(id, "spk buttons/blip1.wav")
    }
   
    set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,16) 
    player_item_id[id] = 0
    player_item_name[id] = "None"
    player_b_gamble[id] = 0   
    if (player_b_extrastats[id] > 0)
    {
        SubtractStats(id,player_b_extrastats[id])
    }
    reset_item_skills(id)
    write_hud(id)
    if (player_b_oldsen[id] > 0.0)
    {
        client_cmd(id,"sensitivity %f",player_b_oldsen[id])
        player_b_oldsen[id] = 0.0
    }
    set_user_gravity(id,1.0)
   
    return PLUGIN_HANDLED
}
public pfn_touch ( ptr, ptd )
{   
    if (ptd == 0)
        return PLUGIN_CONTINUE
       
    new szClassName[32]
    entity_get_string(ptd, EV_SZ_classname, szClassName, 31)
   
    if (ptr != 0)
    {
        new szClassNameOther[32]
        entity_get_string(ptr, EV_SZ_classname, szClassNameOther, 31)
       
       
        if(equal(szClassName, "PowerUp") && equal(szClassNameOther, "player"))
        {
            entity_set_int(ptd,EV_INT_iuser2,1)
            award_powerup(ptr)
        }
       
        if(equal(szClassName, "Mine") && equal(szClassNameOther, "player"))
        {
            new owner = pev(ptd,pev_owner)
           
            if (get_user_team(owner) != get_user_team(ptr))
            {
                new Float:origin[3]
                pev(ptd,pev_origin,origin)
                Explode_Origin(owner,origin,55+player_intelligence[owner],150)
                remove_entity(ptd)
            }
        }
       
        if(equal(szClassName, "grenade") && equal(szClassNameOther, "player"))
        {
            new greModel[64]
            entity_get_string(ptd, EV_SZ_model, greModel, 63)
           
            if(equali(greModel, "models/w_smokegrenade.mdl" ))   
            {
                new id = entity_get_edict(ptd,EV_ENT_owner)
               
                if (is_user_connected(id)
                && is_user_alive(id)
                && is_user_connected(ptr)
                && is_user_alive(ptr)
                && player_b_smokehit[id] > 0
                && get_user_team(id) != get_user_team(ptr))
                UTIL_Kill(id,ptr,"grenade")
            }
           
           
        }
       
    }
   
   
    if(equal(szClassName, "fireball"))
    {
        new Float:origin[3]
        pev(ptd,pev_origin,origin)
        new id = pev(ptd,pev_owner)
        Explode_Origin(id,origin,100,player_b_fireball[id] + player_intelligence[id])
        remove_entity(ptd)
    }
   
    return PLUGIN_CONTINUE
}
public Explode_Origin(id,Float:origin[3],damage,dist)
{
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(3)
    write_coord(floatround(origin[0]))
    write_coord(floatround(origin[1]))
    write_coord(floatround(origin[2]))
    write_short(sprite_boom)
    write_byte(50)
    write_byte(15)
    write_byte(0)
    message_end()
   
    new Players[32], playerCount, a
    get_players(Players, playerCount, "ah")
   
    for (new i=0; i<playerCount; i++)
    {
        a = Players[i]
       
        new Float:aOrigin[3]
        pev(a,pev_origin,aOrigin)
               
        if (get_user_team(id) != get_user_team(a) && get_distance_f(aOrigin,origin) < dist+0.0)
        {
            new dam = damage-player_dextery[a]*2
                   
            if (get_user_health(a)-dam < 5)
                UTIL_Kill(id,a,"grenade")
            else
            {
                set_user_health(a,get_user_health(a)-dam)
                Effect_Bleed(a,248)
            }
                   
        }
       
    }
}
public Timed_Healing()
{
    new Players[32], playerCount, a
    get_players(Players, playerCount, "ah")
   
    for (new i=0; i<playerCount; i++)
    {
        a = Players[i]
        if (player_b_heal[a] <= 0)
            continue
       
        if (get_user_health(a)+player_b_heal[a] <= 100+player_strength[a]*2)
            set_user_health(a,get_user_health(a) + player_b_heal[a])
        else
            set_user_health(a,100+player_strength[a]*2)
    }
}
public Timed_Ghost_Check(id)
{
    if (ghost_check == true)
    {   
        new Globaltime = floatround(halflife_time())
       
        new Players[32], playerCount, a
        get_players(Players, playerCount, "h")
       
        for (new i=0; i<playerCount; i++)
        {
            a = Players[i]
           
            if (ghoststate[a] == 2 && Globaltime - player_b_ghost[a] > ghosttime[a])
            {
                ghoststate[a] = 3
                ghosttime[a] = 0
                set_user_noclip(a,0)
                ghost_check = false
                new Float:aOrigin[3]
                entity_get_vector(a,EV_VEC_origin,aOrigin)   
               
                if (PointContents (aOrigin) != -1)
                {
                    user_kill(a,1)   
                }
                else
                {
                    aOrigin[2]+=10
                    entity_set_vector(a,EV_VEC_origin,aOrigin)
                }
               
               
               
            }
           
        }
       
    }
}
public reset_item_skills(id)
{
    player_b_vampire[id] = 0   
    player_b_damage[id] = 0       
    player_b_money[id] = 0       
    player_b_gravity[id] = 0   
    player_b_inv[id] = 0       
    player_b_grenade[id] = 0   
    player_b_reduceH[id] = 0   
    player_b_theif[id] = 0       
    player_b_respawn[id] = 0   
    player_b_explode[id] = 0   
    player_b_heal[id] = 0       
    player_b_blind[id] = 0       
    player_b_fireshield[id] = 0   
    player_b_meekstone[id] = 0   
    player_b_teamheal[id] = 0   
    player_b_redirect[id] = 0   
    player_b_fireball[id] = 0   
    player_b_ghost[id] = 0       
    player_b_eye[id] = 0           
    player_b_blink[id] = 0   
    player_b_windwalk[id] = 0   
    player_b_usingwind[id] = 0   
    player_b_reverse[id] = 0
    player_b_froglegs[id] = 0
    player_b_silent[id] = 0
    player_b_dagon[id] = 0   
    player_b_sniper[id] = 0       
    player_b_jumpx[id] = 0
    player_b_smokehit[id] = 0
    player_b_extrastats[id] = 0
    player_b_firetotem[id] = 0
    player_b_hook[id] = 0
    player_b_darksteel[id] = 0
    player_b_illusionist[id] = 0
    player_b_mine[id] = 0
   
    item_boosted[id] = 0
    item_durability[id] = 0   
    jumps[id] = 0
    gravitytimer[id] = 0
}
public auto_help(id)
{
    new rnd = random_num(1,5+player_lvl[id])
    if (rnd <= 5)
        set_hudmessage(0, 180, 0, -1.0, 0.70, 1, 10.0, 5.0, 0.1, 0.5, 11)   
    if (rnd == 1)
        show_hudmessage(id, "Poti arunca un Item scriind /arunca sau sa vezi puterea Itemului scriind /item")
    if (rnd == 2)
        show_hudmessage(id, "Poti folosi multe dintre Iteme apasand tasta E")
    if (rnd == 3)
        show_hudmessage(id, "Poti avea mult ajutor scriind /diabloinfo")
    if (rnd == 4)
        show_hudmessage(id, "Scriind /meniu deschizi un meniu cu informatiile despre DiabloMod!")
    if (rnd == 5)
        show_hudmessage(id, "Sunt iteme care pot fi upgradate. Scrie /shop pentru lista de shop")
}
public helpme(id)
{   
    showitem(id,"Meniu de ajutor","Common","None","Primesti iteme si XP ucigand inamicii<br><br>Ca sa vezi ce face Itemul scrie  /item sau arunca-l scriind /arunca<br><br>Multe iteme pot fi folosite apasand tasta E<br> Scrie /abilitati ca sa vezi ce abilitati ai<br><br>Scrie /detalii pentru o lista cu comenzi!<br><br>Tasteaza /clase pentru informatii despre fiecare rasa!<br><br>Ca sa iti schimbi rasa scrie /rasa, si ca sa cumperi un item sau 50%XP scrie /shop")
}
public showitem(id,itemname[],itemvalue[],itemeffect[],Durability[])
{
    new diabloDir[64]   
    new g_ItemFile[64]
    new amxbasedir[64]
    get_basedir(amxbasedir,63)
   
    format(diabloDir,63,"%s/diablo",amxbasedir)
   
    if (!dir_exists(diabloDir))
    {
        new errormsg[512]
        format(errormsg,511,"Error: The folder %s/diablo could not be found. Please copy this folder from the install package to the amxmodx folder",amxbasedir)
        show_motd(id, errormsg, "An error has occured")   
        return PLUGIN_HANDLED
    }
   
   
    format(g_ItemFile,63,"%s/diablo/item.txt",amxbasedir)
    if(file_exists(g_ItemFile))
        delete_file(g_ItemFile)
   
    new Data[768]
   
    format(Data,767,"<html><head><title>Informatii despre Iteme</title></head>")
    write_file(g_ItemFile,Data,-1)
   
    format(Data,767,"<body text=^"#FFFF00^" bgcolor=^"#000000^" background=^"http://i34.tinypic.com/2yo3c3q.jpg^">")
    write_file(g_ItemFile,Data,-1)
   
    format(Data,767,"<table border=^"0^" cellpadding=^"0^" cellspacing=^"0^" style=^"border-collapse: collapse^" width=^"100%s^"><tr><td width=^"0^">","^%")
    write_file(g_ItemFile,Data,-1)
   
    format(Data,767,"<p align=^"center^"><img border=^"0^" src=^"http://i36.tinypic.com/24fh27c.gif^"></td>")
    write_file(g_ItemFile,Data,-1)
   
    format(Data,767,"<td width=^"0^"><p align=^"center^"><font face=^"Arial^"><font color=^"#FFCC00^"><b>Item: </b>%s</font><br>",itemname)
    write_file(g_ItemFile,Data,-1)
   
    format(Data,767,"<font color=^"#FFCC00^"><b><br>Valoare: </b>%s</font><br>",itemvalue)
    write_file(g_ItemFile,Data,-1)
   
    format(Data,767,"<font color=^"#FFCC00^"><b><br>Durabilitate: </b>%s</font><br><br>",Durability)
    write_file(g_ItemFile,Data,-1)
   
    format(Data,767,"<font color=^"#FFCC00^"><b>Efect:</b> %s</font></font></td>",itemeffect)
    write_file(g_ItemFile,Data,-1)
   
    format(Data,767,"<td width=^"0^"><p align=^"center^"><img border=^"0^" src=^"http://i35.tinypic.com/25poiz5.gif^"></td>")
    write_file(g_ItemFile,Data,-1)
   
    format(Data,767,"</tr></table></body></html>")
    write_file(g_ItemFile,Data,-1)
   
    show_motd(id, g_ItemFile, "Informatii despre Iteme")
   
    return PLUGIN_HANDLED
   
}
public iteminfo(id)
{
    new itemvalue[100]
   
    if (player_item_id[id] <= 10) itemvalue = "Common"
    if (player_item_id[id] <= 30)
        itemvalue = "Uncommon"
    else
        itemvalue = "Rare"
   
    if (player_item_id[id] > 42) itemvalue = "Unique"
   
    new itemEffect[200]
   
    new TempSkill[11]       
   
    if (player_b_vampire[id] > 0)
    {
        num_to_str(player_b_vampire[id],TempSkill,10)
        add(itemEffect,199,"Furaciuni: ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," puncte de lovitura cand lovesti un inamic<br>")
    }
    if (player_b_damage[id] > 0)
    {
        num_to_str(player_b_damage[id],TempSkill,10)
        add(itemEffect,199,"Face: ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," Daune extra de fiecare data cand lovesti un inamic<br>")
    }
    if (player_b_money[id] > 0)
    {
        num_to_str(player_b_money[id],TempSkill,10)
        add(itemEffect,199,"Iti da $:")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," + inteligenta*50 bani bonus la fiecare inceput de runda. Apasa E pentru a activa scutul care iti reduce din daunele normale la 50%<br>")
    }
    if (player_b_gravity[id] > 0)
    {
        num_to_str(player_b_gravity[id],TempSkill,10)
        add(itemEffect,199,"Gravitatia e redusa cu ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199,". Apasa E ca sa aterizezi repede pe pamant. Daunele se fac depinzand la ce distanta esti si de puterea pe care o ai<br>")
    }
    if (player_b_inv[id] > 0)
    {
        num_to_str(player_b_inv[id],TempSkill,10)
        add(itemEffect,199,"Vizibilitatea ta este redusa de la 255 la ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199,"<br>")
    }
    if (player_b_grenade[id] > 0)
    {
        num_to_str(player_b_grenade[id],TempSkill,10)
        add(itemEffect,199,"Ai un 1/")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," sansa ca GRENADA ta sa-l omoare instantaneu<br>")
    }
    if (player_b_reduceH[id] > 0)
    {
        num_to_str(player_b_reduceH[id],TempSkill,10)
        add(itemEffect,199,"Viata ta este redusa de :")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," puterea de la fiecare runda nu conteaza aici<br>")
    }
    if (player_b_theif[id] > 0)
    {
        num_to_str(player_b_theif[id],TempSkill,10)
        add(itemEffect,199,"Ai 1/7 sanse sa furi $")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," de fiecare data cand lovesti un inamic. Mai poti apasa E si as convertesti 1000$ in 15 puncte de viata<br>")
    }
    if (player_b_respawn[id] > 0)
    {
        num_to_str(player_b_respawn[id],TempSkill,10)
        add(itemEffect,199,"Ai 1/")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," sanse sa iei respawm cand mori<br>")
    }
    if (player_b_explode[id] > 0)
    {
        num_to_str(player_b_explode[id],TempSkill,10)
        add(itemEffect,199,"Cand mori vei exploda in radius de ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," dandu-le 75 damage la cei care se afla langa tine - inteligenta stimuleaza aceasta putere<br>")
    }
    if (player_b_heal[id] > 0)
    {
        num_to_str(player_b_heal[id],TempSkill,10)
        add(itemEffect,199,"Vei primi +")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," puncte de lovitura la fiecare 5 secunde. Apasa E ca sa pui jos o vindecare totala la fiecare 7 secunde<br>")
    }
    if (player_b_gamble[id] > 0)
    {
        num_to_str(player_b_gamble[id],TempSkill,10)
        add(itemEffect,199,"Vei primi skill aleatoriu la fiecare inceput de runda atata timp cat vararitatea este 1/")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199,"<br>")
    }
    if (player_b_blind[id] > 0)
    {
        num_to_str(player_b_blind[id],TempSkill,10)
        add(itemEffect,199,"Ai 1/")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," sa blindezi inamicul cand il lovesti<br>")
    }
    if (player_b_fireshield[id] > 0)
    {
        num_to_str(player_b_fireshield[id],TempSkill,10)
        add(itemEffect,199,"Nu poti fi ucis de chaos orb, hell orb sau firerope<br>")
        add(itemEffect,199,"Apasa E pentru daune,incetinit sau sa blindezi toti inamicii care te inconjoara<br>")
    }
    if (player_b_meekstone[id] > 0)
    {
        num_to_str(player_b_meekstone[id],TempSkill,10)
        add(itemEffect,199,"Poti pune un c4 fals apasand E si sa-i arunci in aer apasand inca odata E<br>")
    }
    if (player_b_teamheal[id] > 0)
    {
        num_to_str(player_b_teamheal[id],TempSkill,10)
        add(itemEffect,199,"Apasa E ca sa activezi un scut pe un jucator.<br>")
        add(itemEffect,199," Orice atac pe scut este reflectat, vei muri adca il ataci")
    }
    if (player_b_redirect[id] > 0)
    {
        num_to_str(player_b_redirect[id],TempSkill,10)
        add(itemEffect,199,"Vei primi o reducere a pagubelor de pana la ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," , al punctelor de lovitura<br>")
    }
    if (player_b_fireball[id] > 0)
    {
        num_to_str(player_b_fireball[id],TempSkill,10)
        add(itemEffect,199,"Poti arunca o minge de foc apasand E - Iti trebuie inteligenta la acest item. Ii va omori pe toti in radius de ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199,"<br>")
    }
    if (player_b_ghost[id] > 0)
    {
        num_to_str(player_b_ghost[id],TempSkill,10)
        add(itemEffect,199,"Apasa E ca sa mergi pe pereti o perioada de ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," secunde<br>")
    }
    if (player_b_eye[id] > 0)
    {
        add(itemEffect,199,"Apasa E sa plasezi un ochi magic (doar o plasare este voie) si apasa iar E ca sa il folosesti sau sa-l opresti ")
       
    }
    if (player_b_blink[id] > 0)
    {
        add(itemEffect,199,"Poti clipi folosind atacul alternativ al cutitului tau. Inteligenta cauzeaza distanta clipirii")
    }
   
    if (player_b_windwalk[id] > 0)
    {
        num_to_str(player_b_windwalk[id],TempSkill,10)
        add(itemEffect,199,"Apasa E ca sa devii invizibil si imun la atacuri si vei incasa viteza pentru ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," secunde.<br>")
    }
   
    if (player_b_reverse[id] > 0)
    {
        num_to_str(player_b_reverse[id],TempSkill,10)
        add(itemEffect,199,"Ai 1/")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," ca sa confuzi victima cand o ataci<br>")
    }
    if (player_b_froglegs[id] > 0)
    {
        add(itemEffect,199,"Poti tine apasat CTRL  timp de 3 secunde pentru a executa un longjump! ")
    }
    if (player_b_dagon[id] == 1)
    {
        add(itemEffect,199,"Apasa E ca sa tragi cu foc in inamicul apropiat - poti upgrada acest item cu shop")
        add(itemEffect,199,"Ti se va da inteligenta la acest item")
    }
    if (player_b_sniper[id] > 0)
    {
        num_to_str(player_b_sniper[id],TempSkill,10)
        add(itemEffect,199,"Ai 1/")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," sansa la o ucidere instanta cu scutul<br>")
    }
    if (player_b_jumpx[id] > 0)
    {
        num_to_str(player_b_jumpx[id],TempSkill,10)
        add(itemEffect,199,"Poti sari ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," de cateva ori in aer apasand SPACE(butonul de sarit)<br>")   
    }
    if (player_b_smokehit[id] > 0)
    {
        add(itemEffect,199,"Smoke-ul tau va ucide instantaneu inamicul daca il va atinge")
    }
    if (player_b_extrastats[id] > 0)
    {
        num_to_str(player_b_extrastats[id],TempSkill,10)
        add(itemEffect,199,"Ai primit +")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," pentru fiecare statut cat timp ti acest item")
    }
    if (player_b_firetotem[id] > 0)
    {
        num_to_str(player_b_firetotem[id],TempSkill,10)
        add(itemEffect,199,"Apasa E sa pui jos un firetotem care va exploda tot la  7s. Va rani pe oricine care sta in radius de ")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," .")
    }
    if (player_b_hook[id] > 0)
    {
        num_to_str(player_b_hook[id],TempSkill,10)
        add(itemEffect,199,"Apasa E pentru a arunca un carlig cu un interval de 600 de a trage pe oricine este in fata ta. Inteligenta face carligul sa traga mai rapid")
    }
    if (player_b_darksteel[id] > 0)
    {       
        new ddam = floatround(player_strength[id]*2*player_b_darksteel[id]/10.0)*3

        num_to_str(player_b_darksteel[id],TempSkill,10)
        add(itemEffect,199,"Ai primit 15 + 0.")
        add(itemEffect,199,TempSkill)
        add(itemEffect,199,"*putere: ")
        num_to_str(ddam,TempSkill,10)
        add(itemEffect,199,TempSkill)
        add(itemEffect,199," bonus la daune daca lovesti un inamic pe la spate ")
    }
    if (player_b_illusionist[id] > 0)
    {
        add(itemEffect,199,"Apasa E sa devii invizibil pentru toti in interval de 7s. Orice dauna incasezi cat timp esti invizibil te va ucide")
    }
    if (player_b_mine[id] > 0)
    {
        add(itemEffect,199,"Apasa E sa pui jos o mina invizibila. Fiecare mina explodeaza pentru 50hp+inteligenta la atingere. 3 mine la fiecare runda sunt permise.")
    }
   
    new Durability[10]
    num_to_str(item_durability[id],Durability,9)
    if (equal(itemEffect,"")) showitem(id,"None","None","Ucide un inamic ca sa castigi Iteme","None")
    if (!equal(itemEffect,"")) showitem(id,player_item_name[id],itemvalue,itemEffect,Durability)
   
}
public award_item(id, itemnum)
{
    if (player_item_id[id] != 0)
        return PLUGIN_HANDLED
   
    set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
    new rannum = random_num(1,57)
   
    new maxfind = player_agility[id]
    if (maxfind > 15) maxfind = 15
   
    new rf = random_num(1,25-maxfind)
   
    if (itemnum > 0) rannum = itemnum
    else if (itemnum < 0) return PLUGIN_HANDLED
       
    if (rf == 3 && itemnum == 0)               
    {
        award_unique_item(id)   
        rannum = -1
    }               
   
    if (rannum == 1)
    {
        player_item_name[id] = "Bronze Amplifier"
        player_item_id[id] = rannum
        player_b_damage[id] = random_num(1,3)
        show_hudmessage(id, "Item gasit: %s :: +%i daune",player_item_name[id],player_b_damage[id])
    }
   
    if (rannum == 2)
    {
        player_item_name[id] = "Silver Amplifier"
        player_item_id[id] = rannum
        player_b_damage[id] = random_num(3,6)
        show_hudmessage(id, "Item gasit: %s :: +%i daune",player_item_name[id],player_b_damage[id])
    }
   
    if (rannum == 3)
    {
        player_item_name[id] = "Gold Amplifier"
        player_item_id[id] = rannum
        player_b_damage[id] = random_num(6,10)
        show_hudmessage(id, "Item gasit: %s :: +%i daune",player_item_name[id],player_b_damage[id])   
    }
    if (rannum == 4)
    {
        player_item_name[id] = "Vampyric Staff"
        player_item_id[id] = rannum
        player_b_vampire[id] = random_num(1,4)
        show_hudmessage(id, "Item gasit: %s :: +%i daune de vampir",player_item_name[id],player_b_vampire[id])   
    }
    if (rannum == 5)
    {
        player_item_name[id] = "Vampyric Amulet"
        player_item_id[id] = rannum
        player_b_vampire[id] = random_num(4,6)
        show_hudmessage(id, "Item gasit: %s :: +%i daune de vampir",player_item_name[id],player_b_vampire[id])   
    }
    if (rannum == 6)
    {
        player_item_name[id] = "Vampyric Scepter"
        player_item_id[id] = rannum
        player_b_vampire[id] = random_num(6,9)
        show_hudmessage(id, "Item gasit: %s :: +%i daune de vampir",player_item_name[id],player_b_vampire[id])   
    }
    if (rannum == 7)
    {
        player_item_name[id] = "Small bronze bag"
        player_item_id[id] = rannum
        player_b_money[id] = random_num(150,500)
        show_hudmessage(id, "Item gasit: %s :: +%i bani la fiecare runda. Apasa E ca sa ii ti in scut.",player_item_name[id],player_b_money[id]+player_intelligence[id]*50)   
    }
    if (rannum == 8)
    {
        player_item_name[id] = "Medium silver bag"
        player_item_id[id] = rannum
        player_b_money[id] = random_num(500,1200)
        show_hudmessage(id, "Item gasit: %s :: +%i bani la fiecare runda. Apasa E ca sa ii ti in scut",player_item_name[id],player_b_money[id]+player_intelligence[id]*50)   
    }
    if (rannum == 9)
    {
        player_item_name[id] = "Large gold bag"
        player_item_id[id] = rannum
        player_b_money[id] = random_num(1200,3000)
        show_hudmessage(id, "Item gasit: %s :: +%i bani la fiecare runda. Apasa E ca sa ii ti in scut",player_item_name[id],player_b_money[id]+player_intelligence[id]*50)   
    }
    if (rannum == 10)
    {
        player_item_name[id] = "Small angel wings"
        player_item_id[id] = rannum
        player_b_gravity[id] = random_num(4,9)
       
        if (is_user_alive(id))
            add_gravity_bonus(id)
        show_hudmessage(id, "Item gasit: %s :: +%i bonus gravitatie - Apasa E sa aterizezi repede",player_item_name[id],10-player_b_gravity[id])   
    }
    if (rannum == 11)
    {
        player_item_name[id] = "Arch angel wings"
        player_item_id[id] = rannum
        player_b_gravity[id] = random_num(1,4)
       
        if (is_user_alive(id))
            add_gravity_bonus(id)
           
        show_hudmessage(id, "Item gasit: %s :: +%i bonus gravitatie - Apasa E sa aterizezi repede",player_item_name[id],10-player_b_gravity[id])   
       
    }
    if (rannum == 12)
    {
        player_item_name[id] = "Invisibility Rope"
        player_item_id[id] = rannum
        player_b_inv[id] = random_num(150,200)
        show_hudmessage(id, "Item gasit: %s :: +%i bonus invizibilitate",player_item_name[id],255-player_b_inv[id])   
    }
    if (rannum == 13)
    {
        player_item_name[id] = "Invisibility Coat"
        player_item_id[id] = rannum
        player_b_inv[id] = random_num(110,150)
        show_hudmessage(id, "Item gasit: %s :: +%i bonus invizibilitate",player_item_name[id],255-player_b_inv[id])   
    }
    if (rannum == 14)
    {
        player_item_name[id] = "Invisibility Armor"
        player_item_id[id] = rannum
        player_b_inv[id] = random_num(70,110)
        show_hudmessage(id, "Item gasit: %s :: +%i bonus invizibilitate",player_item_name[id],255-player_b_inv[id])   
    }
    if (rannum == 15)
    {
        player_item_name[id] = "Firerope"
        player_item_id[id] = rannum
        player_b_grenade[id] = random_num(3,6)
        show_hudmessage(id, "Item gasit: %s :: +1/%i sansa de a omori din prima cu o GRENADA",player_item_name[id],player_b_grenade[id])   
    }
    if (rannum == 16)
    {
        player_item_name[id] = "Fire Amulet"
        player_item_id[id] = rannum
        player_b_grenade[id] = random_num(2,4)
        show_hudmessage(id, "Item gasit: %s :: +1/%i sansa de a omori din prima cu o GRENADA",player_item_name[id],player_b_grenade[id])   
    }
    if (rannum == 17)
    {
        player_item_name[id] = "Stalkers ring"
        player_item_id[id] = rannum
        player_b_reduceH[id] = 95
        player_b_inv[id] = 9   
       
        if (is_user_alive(id)) set_user_health(id,5)       
        show_hudmessage(id, "Item gasit: %s :: 5 viata - cu cutitul esti invizibil",player_item_name[id])   
    }
    if (rannum == 18)
    {
        player_item_name[id] = "Arabian Boots"
        player_item_id[id] = rannum
        player_b_theif[id] = random_num(500,1000)
        show_hudmessage(id, "Item gasit: %s :: 1/5 sansa ca sa furi $%i de fiecare adta cand lovesti. Apasa E ca sa convertesti banii cu viata",player_item_name[id],player_b_theif[id])   
    }
    if (rannum == 19)
    {
        player_item_name[id] = "Phoenix Ring"
        player_item_id[id] = rannum
        player_b_respawn[id] = random_num(3,6)
        show_hudmessage(id, "Item gasit: %s :: 1/%i sansa de a primi respawm cand mori",player_item_name[id],player_b_respawn[id])   
    }
    if (rannum == 20)
    {
        player_item_name[id] = "Sorcerers ring"
        player_item_id[id] = rannum
        player_b_respawn[id] = random_num(2,3)
        show_hudmessage(id, "Item gasit: %s :: 1/%i sansa de a primi respawm cand mori",player_item_name[id],player_b_respawn[id])   
    }
    if (rannum == 21)
    {
        player_item_name[id] = "Chaos Orb"
        player_item_id[id] = rannum
        player_b_explode[id] = random_num(150,275)
        show_hudmessage(id, "Item gasit: %s :: Explodezi intr-un radius de %i cand mori",player_item_name[id],player_b_explode[id])   
    }
    if (rannum == 22)
    {
        player_item_name[id] = "Hell Orb"
        player_item_id[id] = rannum
        player_b_explode[id] = random_num(200,400)
        show_hudmessage(id, "Item gasit: %s :: Explodezi intr-un radius de %i cand mori",player_item_name[id],player_b_explode[id])   
    }
    if (rannum == 23)
    {
        player_item_name[id] = "Gold statue"
        player_item_id[id] = rannum
        player_b_heal[id] = random_num(5,10)
        show_hudmessage(id, "Item gasit: %s :: Vindecari %i hp la fiecare 5 secunde. Apasa E sa pui jos toate acele vindecari %i",player_item_name[id],player_b_heal[id],player_b_heal[id])   
    }
    if (rannum == 24)
    {
        player_item_name[id] = "Daylight Diamond"
        player_item_id[id] = rannum
        player_b_heal[id] = random_num(10,20)
        show_hudmessage(id, "Item gasit: %s :: Vindecari %i hp la fiecare 5 secunde. Apasa E sa pui jos toate acele vindecari %i",player_item_name[id],player_b_heal[id],player_b_heal[id])   
    }
    if (rannum == 25)
    {
        player_item_name[id] = "Blood Diamond"
        player_item_id[id] = rannum
        player_b_heal[id] = random_num(20,35)
        show_hudmessage(id, "Item gasit: %s :: Vindecari %i hp la fiecare 5 secunde. Apasa E sa pui jos toate acele vindecari %i",player_item_name[id],player_b_heal[id],player_b_heal[id])   
    }
    if (rannum == 26)
    {
        player_item_name[id] = "Wheel of Fortune"
        player_item_id[id] = rannum
        player_b_gamble[id] = random_num(2,3)
        show_hudmessage(id, "Item gasit: %s :: +%i un bonus aleatoriu la fiecare runda",player_item_name[id],player_b_gamble[id])   
    }
    if (rannum == 27)
    {
        player_item_name[id] = "Four leaf Clover"
        player_item_id[id] = rannum
        player_b_gamble[id] = random_num(4,5)
        show_hudmessage(id, "Item gasit: %s :: +%i un bonus aleatoriu la fiecare runda",player_item_name[id],player_b_gamble[id])   
    }
    if (rannum == 28)
    {
        player_item_name[id] = "Amulet of the sun"
        player_item_id[id] = rannum
        player_b_blind[id] = random_num(6,9)
        show_hudmessage(id, "Item gasit: %s :: 1/%i pentru a blinda un inamic cand il ataci",player_item_name[id],player_b_blind[id])   
    }
    if (rannum == 29)
    {
        player_item_name[id] = "Sword of the sun"
        player_item_id[id] = rannum
        player_b_blind[id] = random_num(2,5)
        show_hudmessage(id, "Item gasit: %s :: 1/%i pentru a blinda un inamic cand il ataci",player_item_name[id],player_b_blind[id])   
    }
    if (rannum == 30)
    {
        player_item_name[id] = "Fireshield"
        player_item_id[id] = rannum
        player_b_fireshield[id] = 1
        show_hudmessage(id, "Item gasit: %s :: Protectie importiva GRENAZILOR instante si orbs. Apasa E pentru a utiliza",player_item_name[id],player_b_fireshield[id])   
    }
    if (rannum == 31)
    {
        player_item_name[id] = "Stealth Shoes"
        player_item_id[id] = rannum
        player_b_silent[id] = 1
        show_hudmessage(id, "Item gasit: %s :: Alergarea ta devine silentioasa",player_item_name[id])   
    }
    if (rannum == 32)
    {
        player_item_name[id] = "Meekstone"
        player_item_id[id] = rannum
        player_b_meekstone[id] = 1
        show_hudmessage(id, "Item gasit: %s :: Apasa E pentru a pune o bomba falsa",player_item_name[id])   
    }
    if (rannum == 33)
    {
        player_item_name[id] = "Medicine Glar"
        player_item_id[id] = rannum
        player_b_teamheal[id] = random_num(10,20)
        show_hudmessage(id, "Item gasit: %s :: trage in coechipieri pentru a-i vindeca %i hp. Apasa E pentru scut",player_item_name[id],player_b_teamheal[id])   
    }
    if (rannum == 34)
    {
        player_item_name[id] = "Medicine Totem"
        player_item_id[id] = rannum
        player_b_teamheal[id] = random_num(25,50)
        show_hudmessage(id, "Item gasit: %s :: trage in coechipieri pentru a-i vindeca %i hp. Apasa E pentru scut",player_item_name[id],player_b_teamheal[id])   
    }
    if (rannum == 35)
    {
        player_item_name[id] = "Iron Armor"
        player_item_id[id] = rannum
        player_b_redirect[id] = random_num(3,6)
        show_hudmessage(id, "Item gasit: %s :: +%i reducere la daune",player_item_name[id],player_b_redirect[id])   
    }
    if (rannum == 36)
    {
        player_item_name[id] = "Mitril Armor"
        player_item_id[id] = rannum
        player_b_redirect[id] = random_num(6,11)
        show_hudmessage(id, "Item gasit: %s :: +%i reducere la daune",player_item_name[id],player_b_redirect[id])   
    }
    if (rannum == 37)
    {
        player_item_name[id] = "Godly Armor"
        player_item_id[id] = rannum
        player_b_redirect[id] = random_num(10,15)
        show_hudmessage(id, "Item gasit: %s :: +%i reducere la daune",player_item_name[id],player_b_redirect[id])   
    }
    if (rannum == 38)
    {
        player_item_name[id] = "Fireball staff"
        player_item_id[id] = rannum
        player_b_fireball[id] = random_num(50,100)
        show_hudmessage(id, "Item gasit: %s :: Le vei produce la toti daune intr-un radius de %i",player_item_name[id],player_b_fireball[id])   
    }
    if (rannum == 39)
    {
        player_item_name[id] = "Fireball scepter"
        player_item_id[id] = rannum
        player_b_fireball[id] = random_num(100,200)
        show_hudmessage(id, "Item gasit: %s :: Le vei produce la toti daune intr-un radius de %i",player_item_name[id],player_b_fireball[id])   
    }
    if (rannum == 40)
    {
        player_item_name[id] = "Ghost Rope"
        player_item_id[id] = rannum
        player_b_ghost[id] = random_num(3,6)
        show_hudmessage(id, "Item gasit: %s :: Cand e activat poti merge pe pereti timp de %i sec",player_item_name[id],player_b_ghost[id])   
    }
    if (rannum == 41)
    {
        player_item_name[id] = "Nicolas Eye"
        player_item_id[id] = rannum
        player_b_eye[id] = -1
        show_hudmessage(id, "Item gasit: %s :: Apasa E pentru a plasa o camera, si inca odata pentru a o activa.opri",player_item_name[id])   
    }
    if (rannum == 42)
    {
        player_item_name[id] = "Knife Ruby"
        player_item_id[id] = rannum
        player_b_blink[id] = floatround(halflife_time())
        show_hudmessage(id, "Item gasit: %s :: Cutitul tau te va face sa clipesti la fiecare 3 secunde",player_item_name[id])   
    }
    if (rannum == 43)
    {
        player_item_name[id] = "Lothars Edge"
        player_item_id[id] = rannum
        player_b_windwalk[id] = random_num(4,7)
        show_hudmessage(id, "Item gasit: %s :: Apasa E sa devii invizibil  %i secunde, imun la atac si vei incasa viteza",player_item_name[id],player_b_windwalk[id])   
    }
    if (rannum == 44)
    {
        player_item_name[id] = "Staff of the Earth"
        player_item_id[id] = rannum
        player_b_reverse[id] = random_num(2,4)
        show_hudmessage(id, "Item gasit: %s :: 1/%i sansa de a confuza un inamic cand il lovesti",player_item_name[id],player_b_reverse[id])   
    }
    if (rannum == 45)
    {
        player_item_name[id] = "Magic Booster"
        player_item_id[id] = rannum
        player_b_froglegs[id] = 1
        show_hudmessage(id, "Item gasit: %s :: Tine apasat CTRL timp de 3 secunde pentru a executa un longjump",player_item_name[id])   
    }
    if (rannum == 46)
    {
        player_item_name[id] = "Dagon I"
        player_item_id[id] = rannum
        player_b_dagon[id] = 1
        show_hudmessage(id, "Item gasit: %s :: Apasa E ca sa tragi un foc in oponent",player_item_name[id],player_b_reverse[id])   
    }
    if (rannum == 47)
    {
        player_item_name[id] = "Scout Extender"
        player_item_id[id] = rannum
        player_b_sniper[id] = random_num(3,4)
        show_hudmessage(id, "Item gasit: %s :: 1/%i sansa de a il omori instantaneu cu scut",player_item_name[id],player_b_sniper[id])   
    }
    if (rannum == 48)
    {
        player_item_name[id] = "Scout Amplifier"
        player_item_id[id] = rannum
        player_b_sniper[id] = random_num(2,3)
        show_hudmessage(id, "Item gasit: %s :: 1/%i sansa de a il omori instantaneu cu scut",player_item_name[id],player_b_sniper[id])   
    }
    if (rannum == 49)
    {
        player_item_name[id] = "Air booster"
        player_item_id[id] = rannum
        player_b_jumpx[id] = 1
        show_hudmessage(id, "Item gasit: %s :: Poti face acum saritura dubla in aer",player_item_name[id],player_b_sniper[id])   
    }
    if (rannum == 50)
    {
        player_item_name[id] = "Iron Spikes"
        player_item_id[id] = rannum
        player_b_smokehit[id] = 1
        show_hudmessage(id, "Item gasit: %s :: Daca lovesti un inamic cu smoke, va muri instantaneu",player_item_name[id])   
    }
    if (rannum == 51)
    {
        player_item_name[id] = "Point Booster"
        player_item_id[id] = rannum
        player_b_extrastats[id] = random_num(1,3)
        BoostStats(id,player_b_extrastats[id])
        show_hudmessage(id, "Item gasit: %s :: Ai primit +%i pentru fiecare frag, daca ti acest item",player_item_name[id],player_b_extrastats[id])   
    }
    if (rannum == 52)
    {
        player_item_name[id] = "Totem amulet"
        player_item_id[id] = rannum
        player_b_firetotem[id] = random_num(250,400)
        show_hudmessage(id, "Item gasit: %s :: Apasa E ca sa lasi jos un explosiv fire totem",player_item_name[id])   
    }
    if (rannum == 53)
    {
        player_item_name[id] = "Magic Hook"
        player_item_id[id] = rannum
        player_b_hook[id] = 1
        show_hudmessage(id, "Item gasit: %s :: Apasa E ca sa tragi un inamic agatat",player_item_name[id])   
    }
    if (rannum == 54)
    {
        player_item_name[id] = "Darksteel Glove"
        player_item_id[id] = rannum
        player_b_darksteel[id] = random_num(1,5)
        show_hudmessage(id, "Item gasit: %s :: Extra daune daca lovesti un inamic din spate",player_item_name[id])   
    }
    if (rannum == 55)
    {
        player_item_name[id] = "Darksteel Gaunlet"
        player_item_id[id] = rannum
        player_b_darksteel[id] = random_num(7,9)
        show_hudmessage(id, "Item gasit: %s :: Extra daune daca lovesti un inamic din spate",player_item_name[id])   
    }
    if (rannum == 56)
    {
        player_item_name[id] = "Illusionists Cape"
        player_item_id[id] = rannum
        player_b_illusionist[id] = 1
        show_hudmessage(id, "Item gasit: %s :: Apasa E ca sa devii invizibil pentru toti",player_item_name[id])   
    }
    if (rannum == 57)
    {
        player_item_name[id] = "Techies scepter"
        player_item_id[id] = rannum
        player_b_mine[id] = 3
        show_hudmessage(id, "Item gasit: %s :: Apasa E ca sa lasi jos mine",player_item_name[id])
    }
   
    item_durability[id] = 250
   
   
    return PLUGIN_CONTINUE
}
public award_unique_item(id)
{
    new Unique_names_Suffix[10][100]
    new Unique_names_Prefix[10][100]
   
    Unique_names_Suffix[1] = "Saintly amulet "
    Unique_names_Suffix[2] = "Holy sword "
    Unique_names_Suffix[3] = "Small staff "
    Unique_names_Suffix[4] = "Bright rope "
    Unique_names_Suffix[5] = "Shiny scepter "
   
    Unique_names_Prefix[1] = "of the stars"
    Unique_names_Prefix[2] = "of power"
    Unique_names_Prefix[3] = "of zod"
    Unique_names_Prefix[4] = "of life"
    Unique_names_Prefix[5] = "of the sun"
   
    new roll_1 = random_num(1,4)
    new roll_2 = random_num(1,4)
   
    new Unique_name[100]
    add(Unique_name,99,Unique_names_Suffix[roll_1])
    add(Unique_name,99,Unique_names_Prefix[roll_2])
   
    player_item_name[id] = Unique_name
    player_item_id[id] = 100               
   
   
    if (roll_1 == 1) player_b_damage[id] = random_num(1,5)
    if (roll_1 == 2) player_b_vampire[id] = random_num(1,5)
    if (roll_1 == 3) player_b_money[id] = random_num(2500,5000)
    if (roll_1 == 4) player_b_reduceH[id] = random_num(20,50)
    if (roll_1 == 5) player_b_blind[id] = random_num(3,5)
   
   
   
    if (roll_2 == 1) player_b_grenade[id] = random_num(1,4)
    if (roll_2 == 2) player_b_respawn[id] = random_num(2,4)
    if (roll_2 == 3) player_b_explode[id] = random_num(150,400)
    if (roll_2 == 4) player_b_redirect[id] = random_num(5,10)
    if (roll_2 == 5) player_b_heal[id] = random_num(1,15)
   
    item_durability[id] = 350
   
    set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
    show_hudmessage(id, "Uniqie Item gasit: %s", Unique_name)
    client_cmd(id, "spk houndeye/he_hunt2.wav")
   
}
public add_damage_bonus(id,damage,attacker_id)
{
    if (player_b_damage[attacker_id] > 0)
    {
        if (get_user_health(id) > player_b_damage[attacker_id])
        {
            set_user_health(id,get_user_health(id) - player_b_damage[attacker_id])
           
            if (random_num(1,2) == 1) Effect_Bleed(id,248)
        }
        else
        {
            set_user_health(id,random_num(1,5))
        }
    }
}
public add_vampire_bonus(id,damage,attacker_id)
{
    if (player_b_vampire[attacker_id] > 0)
    {
        new maxhealth = 100+player_strength[attacker_id]*2
       
       
        if (get_user_health(attacker_id)+player_b_vampire[attacker_id] <= maxhealth)
        {
            set_user_health(attacker_id,get_user_health(attacker_id)+player_b_vampire[attacker_id])
        }
        else
        {
            set_user_health(attacker_id,maxhealth)
        }
    }
}
public add_money_bonus(id)
{
    if (player_b_money[id] > 0)
    {
        if (cs_get_user_money(id) < 16000 - player_b_money[id]+player_intelligence[id]*50)
        {
            cs_set_user_money(id,cs_get_user_money(id)+ player_b_money[id]+player_intelligence[id]*50)
        }
        else
        {
            cs_set_user_money(id,16000)
        }
    }
}
public add_gravity_bonus(id)
{
    if (player_b_gravity[id] > 0)
    {
        if (player_b_gravity[id] > 6)
            set_user_gravity(id,0.8)       
        if (player_b_gravity[id] > 4)
        {
            set_user_gravity(id,0.6)       
        }
        if (player_b_gravity[id] >= 1)
        {
            set_user_gravity(id,0.4)       
        }
    }
}
public add_inv_bonus(id)
{
    if (player_b_inv[id] > 0)
        set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,player_b_inv[id])
}
public add_grenade_bonus(id,attacker_id,weapon)
{
    if (player_b_grenade[attacker_id] > 0 && weapon == CSW_HEGRENADE && player_b_fireshield[id] == 0)   
    {
        new roll = random_num(1,player_b_grenade[attacker_id])
        if (roll == 1)
        {
            set_user_health(id, 0)
            message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
            write_byte(attacker_id)
            write_byte(id)
            write_byte(0)
            write_string("grenade")
            message_end()
            set_user_frags(attacker_id, get_user_frags(attacker_id)+1)
            set_user_frags(id, get_user_frags(id)+1)
            cs_set_user_money(attacker_id, cs_get_user_money(attacker_id)+150)
        }
    }
}
public add_redhealth_bonus(id)
{
    if (player_b_reduceH[id] > 0)
        set_user_health(id,100-player_b_reduceH[id])
}
public add_theif_bonus(id,attacker_id)
{
    if (player_b_theif[attacker_id] > 0)
    {
        new roll1 = random_num(1,5)
        if (roll1 == 1)
        {
            if (cs_get_user_money(id) > player_b_theif[attacker_id])
            {
                cs_set_user_money(id,cs_get_user_money(id)-player_b_theif[attacker_id])
                if (cs_get_user_money(attacker_id) + player_b_theif[attacker_id] <= 16000)
                {
                    cs_set_user_money(attacker_id,cs_get_user_money(id)+player_b_theif[attacker_id])       
                }
            }
            else
            {
                new allthatsleft = cs_get_user_money(id)
                cs_set_user_money(id,0)
                if (cs_get_user_money(attacker_id) + allthatsleft <= 16000)
                {
                    cs_set_user_money(attacker_id,cs_get_user_money(id) + allthatsleft)           
                }
            }
        }
    }
}
public add_respawn_bonus(id)
{
    if (player_b_respawn[id] > 0)
    {
        new svIndex[32]
        num_to_str(id,svIndex,32)
        new roll = random_num(1,player_b_respawn[id])
        if (roll == 1)
        {
            new maxpl,players[32]
            get_players(players, maxpl)
            if (maxpl > 2)
            {
                cs_set_user_money(id,cs_get_user_money(id)+4000)
                set_task(0.5,"respawn",0,svIndex,32)       
            }
            else
            {
                set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
                show_hudmessage(id, "Mai multi de 2 jucatori sunt necesari pentru un respawm cu succes")
                client_cmd(id, "spk buttons/blip1.wav")
               
            }
           
        }
    }
}
public respawn(svIndex[])
{
    new vIndex = str_to_num(svIndex)
    spawn(vIndex);
}
public add_bonus_explode(id)
{
    if (player_b_explode[id] > 0)
    {
       
        new origin[3]
        get_user_origin(id,origin)
        explode(origin,id,0)
       
       
        for(new a = 0; a < MAX; a++)
        {
            if (!is_user_connected(a) || !is_user_alive(a) || player_b_fireshield[a] != 0 ||  get_user_team(a) == get_user_team(id))
                continue   
           
            new origin1[3]
            get_user_origin(a,origin1)
           
            if(get_distance(origin,origin1) < player_b_explode[id] + player_intelligence[id]*2)
            {
                new dam = 75-(player_dextery[a]*2)
               
                if (get_user_health(a) - dam < 5)
                    UTIL_Kill(id,a,"grenade")   
                else
                {
                    set_user_health(a,get_user_health(a)-dam)
                    Display_Fade(id,2600,2600,0,255,0,0,15)
                }
            }
        }
    }
}
public explode(vec1[3],playerid, trigger)
{
    message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1)
    write_byte( 21 )
    write_coord(vec1[0])
    write_coord(vec1[1])
    write_coord(vec1[2] + 32)
    write_coord(vec1[0])
    write_coord(vec1[1])
    write_coord(vec1[2] + 1000)
    write_short( sprite_white )
    write_byte( 0 )
    write_byte( 0 )
    write_byte( 3 )
    write_byte( 10 )
    write_byte( 0 )
    write_byte( 188 )
    write_byte( 220 )
    write_byte( 255 )
    write_byte( 255 )
    write_byte( 0 )
    message_end()
   
    message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte( 12 )
    write_coord(vec1[0])
    write_coord(vec1[1])
    write_coord(vec1[2])
    write_byte( 188 )
    write_byte( 10 )
    message_end()
   
    message_begin( MSG_BROADCAST,SVC_TEMPENTITY,vec1)
    write_byte( 3 )
    write_coord(vec1[0])
    write_coord(vec1[1])
    write_coord(vec1[2])
    write_short( sprite_fire )
    write_byte( 65 )
    write_byte( 10 )
    write_byte( 0 )
    message_end()
   
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY,{0,0,0},playerid)
    write_byte(107)
    write_coord(vec1[0])
    write_coord(vec1[1])
    write_coord(vec1[2])
    write_coord(175)
    write_short (sprite_gibs)
    write_short (25) 
    write_byte (10)
    message_end()
    if (trigger == 1)
    {
        set_user_rendering(playerid,kRenderFxNone, 0,0,0, kRenderTransAdd,0)
    }
}
public add_bonus_gamble(id)
{   
    if (player_b_gamble[id] > 0 && is_user_alive(id))
    {
        reset_item_skills(id)
        set_hudmessage(220, 115, 70, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
        new roll = random_num(1,player_b_gamble[id])
        if (roll == 1)
        {
            show_hudmessage(id, "Bonusul rundei: +5 daune")
            player_b_damage[id] = 5
        }
        if (roll == 2)
        {
            show_hudmessage(id, "Bonusul rundei: +5 gravitatie bonus")
            player_b_gravity[id] = 5
        }
        if (roll == 3)
        {
            show_hudmessage(id, "Bonusul rundei: +5 daune de vampiri")
            player_b_vampire[id] = 5
        }
        if (roll == 4)
        {
            show_hudmessage(id, "Bonusul rundei: +10 bonus de vindecare la fiecare 5 secunde")
            player_b_heal[id] = 10
        }
        if (roll == 5)
        {
            show_hudmessage(id, "Bonusul rundei: 1/3 sansa de a omori un inamic cu GRENADA")
            player_b_grenade[id] = 3
        }
    }
}
public add_bonus_blind(id,attacker_id,weapon,damage)
{
    if (player_b_blind[attacker_id] > 0 && weapon != 4)
    {
        new roll = random_num(1,player_b_blind[attacker_id])
        if (roll == 1)
        {
            message_begin(MSG_ONE,gmsgFade,{0,0,0},id)
            write_short( 1<<14 )
            write_short( 1<<14 )
            write_short( 1<<16 )
            write_byte( 255 )
            write_byte( 155 )
            write_byte( 50 )
            write_byte( 230 )
            message_end()
        }
       
    }
}
public item_c4fake(id)
{
    if (c4state[id] > 1)
    {
        hudmsg(id,2.0,"Poti folosi meekstone odata la fiecare runda")
        client_cmd(id, "spk buttons/blip1.wav")
       
        return PLUGIN_CONTINUE
    }
   
    if (player_b_meekstone[id] > 0 && c4state[id] == 1 && is_user_alive(id) == 1 && freeze_ended == true)
    {
        explode(c4bombc[id],id,0)
       
        for(new a = 0; a < MAX; a++)
        {
            if (is_user_connected(a) && is_user_alive(a))
            {           
                new origin1[3]
                get_user_origin(a,origin1)
               
                if(get_distance(c4bombc[id],origin1) < 300 && get_user_team(a) != get_user_team(id))
                {
                    UTIL_Kill(id,a,"grenade")
                }
            }
        }
       
        c4state[id] = 2
        remove_entity(c4fake[id])
        c4fake[id] = 0
    }
   
    if (player_b_meekstone[id] > 0 && c4state[id] == 0 && c4fake[id] == 0 && is_user_alive(id) == 1 && freeze_ended == true)
    {
        new Float:pOrigin[3]
        entity_get_vector(id,EV_VEC_origin, pOrigin)
        c4fake[id] = create_entity("info_target")
       
        entity_set_model(c4fake[id],"models/w_backpack.mdl")
        entity_set_origin(c4fake[id],pOrigin)
        entity_set_string(c4fake[id],EV_SZ_classname,"fakec4")
        entity_set_edict(c4fake[id],EV_ENT_owner,id)
        entity_set_int(c4fake[id],EV_INT_movetype,6)
       
       
        new Float:aOrigin[3]
        entity_get_vector(c4fake[id],EV_VEC_origin, aOrigin)
        c4bombc[id][0] = floatround(aOrigin[0])
        c4bombc[id][1] = floatround(aOrigin[1])
        c4bombc[id][2] = floatround(aOrigin[2])
        c4state[id] = 1
    }
   
    return PLUGIN_CONTINUE
}
public item_fireball(id)
{
    if (fired[id] > 0)
    {
        hudmsg(id,2.0,"Poti folosi mingea de foc odata la fiecare runda")
        client_cmd(id, "spk buttons/blip1.wav")
       
        return PLUGIN_HANDLED
    }
   
    if (fired[id] == 0 && player_b_fireball[id] > 0 && is_user_alive(id) == 1)
    {
        fired[id] = 1
        new Float:vOrigin[3]
        new fEntity
        entity_get_vector(id,EV_VEC_origin, vOrigin)
        fEntity = create_entity("info_target")
        entity_set_model(fEntity, "models/rpgrocket.mdl")
        entity_set_origin(fEntity, vOrigin)
        entity_set_int(fEntity,EV_INT_effects,64)
        entity_set_string(fEntity,EV_SZ_classname,"fireball")
        entity_set_int(fEntity,EV_INT_movetype,5)
        entity_set_edict(fEntity,EV_ENT_owner,id)

        client_cmd(id, "spk debris/beamstart4.wav")
       
        new Float:fl_iNewVelocity[3]
        VelocityByAim(id, 400, fl_iNewVelocity)
        entity_set_vector(fEntity, EV_VEC_velocity, fl_iNewVelocity)
       
       
        message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
        write_byte(22)
        write_short(fEntity)
        write_short(sprite_beam)
        write_byte(45)
        write_byte(4)
        write_byte(255)
        write_byte(0)
        write_byte(0)
        write_byte(25)
        message_end()
    }   
    return PLUGIN_HANDLED
}
public add_bonus_redirect(id)
{
    if (player_b_redirect[id] > 0)
    {
        if (get_user_health(id)+player_b_redirect[id] <= 100)
        {
            set_user_health(id,get_user_health(id)+player_b_redirect[id])
        }
       
    }
}
public item_ghost(id)
{
    if (ghoststate[id] == 0 && player_b_ghost[id] > 0 && is_user_alive(id) && !ghost_check)
    {
        set_user_noclip(id,1)
        ghoststate[id] = 2
        ghosttime[id] = floatround(halflife_time())
        ghost_check = true
       
        message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id )
        write_byte( player_b_ghost[id]+1 )
        write_byte( 0 )
        message_end()
    }
    else
    {
        hudmsg(id,3.0,"Doar odata la fiecare runda se poate folosi acest Item")
        client_cmd(id, "spk buttons/blip1.wav")
       
    }
}
public add_strength_bonus(id)
{
    set_user_health(id,100+player_strength[id]*2)
}
public add_bonus_darksteel(attacker,id,damage)
{
    if (player_b_darksteel[attacker] > 0)
    {
        if (UTIL_In_FOV(attacker,id) && !UTIL_In_FOV(id,attacker))
        {
           
            new dam = floatround (15+player_strength[id]*2*player_b_darksteel[id]/10.0)
           
            Effect_Bleed(id,248)
            Hurt_Entity(attacker,id,dam+0.0)
        }
    }
}
public item_eye(id)
{
    if (player_b_eye[id] == -1)
    {
        new Float:playerOrigin[3]
        entity_get_vector(id,EV_VEC_origin,playerOrigin)
        new ent = create_entity("info_target")
        entity_set_string(ent, EV_SZ_classname, "PlayerCamera")
        entity_set_int(ent, EV_INT_movetype, MOVETYPE_NOCLIP)
        entity_set_int(ent, EV_INT_solid, SOLID_NOT)
        entity_set_edict(ent, EV_ENT_owner, id)
        entity_set_model(ent, "models/rpgrocket.mdl")                 
        entity_set_origin(ent,playerOrigin)
        entity_set_int(ent,EV_INT_iuser1,0)                           
        set_rendering (ent,kRenderFxNone, 0,0,0, kRenderTransTexture,0)
        entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01)
        player_b_eye[id] = ent
    }
    else
    {
        new ent = player_b_eye[id]
        if (!is_valid_ent(ent))
        {
            attach_view(id,id)
            return PLUGIN_HANDLED
        }
        new viewing = entity_get_int(ent,EV_INT_iuser1)
       
        if (viewing)
        {   
            entity_set_int(ent,EV_INT_iuser1,0)
            attach_view(id,id)
        }   
        else
        {
            entity_set_int(ent,EV_INT_iuser1,1)
            attach_view(id,ent)
        }
    }
   
    return PLUGIN_HANDLED
}
public Think_PlayerCamera(ent)
{
    new id = entity_get_edict(ent,EV_ENT_owner)
   
    if (!is_valid_ent(id) || player_b_eye[id] == 0 || !is_user_connected(id))
    {
        if (is_valid_ent(id) && is_user_connected(id)) attach_view(id,id)
        remove_entity(ent)
    }
    else
    {
        if (!is_user_alive(id))
        {
            entity_set_float(ent,EV_FL_nextthink,halflife_time() + 3.0)
            return PLUGIN_HANDLED
        }
       
        if (!entity_get_int(ent,EV_INT_iuser1))
        {
            entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.5)
            return PLUGIN_HANDLED
        }
       
        entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01)
       
        new Float:pOrigin[3],Float:plOrigin[3],Float:ret[3]
        entity_get_vector(ent,EV_VEC_origin,plOrigin)
        new Float:distrec = 2000.0, winent = -1
       
        for (new i=0; i<MAX; i++)
        {
            if (is_user_connected(i) && is_user_alive(i))
            {
                entity_get_vector(i,EV_VEC_origin,pOrigin)
                pOrigin[2]+=10.0
                if (trace_line ( 0, plOrigin, pOrigin, ret ) == i && vector_distance(pOrigin,plOrigin) < distrec)
                {
                    winent = i
                    distrec = vector_distance(pOrigin,plOrigin)
                }
            }   
        }
       
        if (winent > -1)
        {
            new Float:toplayer[3], Float:ideal[3],Float:pOrigin[3]
            entity_get_vector(winent,EV_VEC_origin,pOrigin)
            pOrigin[2]+=10.0
            toplayer[0] = pOrigin[0]-plOrigin[0]
            toplayer[1] = pOrigin[1]-plOrigin[1]
            toplayer[2] = pOrigin[2]-plOrigin[2]
            vector_to_angle ( toplayer, ideal )
            ideal[0] = ideal[0]*-1
            entity_set_vector(ent,EV_VEC_angles,ideal)
        }
    }
   
    return PLUGIN_CONTINUE
}
public Create_Line(id,origin1[3],origin2[3],bool:draw)
{
    if (draw)
    {
        message_begin(MSG_ONE,SVC_TEMPENTITY,{0,0,0},id)
        write_byte(0)
        write_coord(origin1[0])
        write_coord(origin1[1])
        write_coord(origin1[2])
        write_coord(origin2[0])   
        write_coord(origin2[1])
        write_coord(origin2[2])
        write_short(sprite_line)   
        write_byte(1)       
        write_byte(5)       
        write_byte(2)       
        write_byte(3)       
        write_byte(0)       
        write_byte(255)   
        write_byte(50)   
        write_byte(50)                   
        write_byte(155)       
        write_byte(5)       
        message_end()
    }
   
    new Float:ret[3],Float:fOrigin1[3],Float:fOrigin2[3]
    origin1[2]+=50
    IVecFVec(origin1,fOrigin1)
    IVecFVec(origin2,fOrigin2)
    new hit = trace_line ( 0, fOrigin1, fOrigin2, ret )
    return hit
   
}
public Prethink_Blink(id)
{
    if( get_user_button(id) & IN_ATTACK2 && !(get_user_oldbutton(id) & IN_ATTACK2) && is_user_alive(id))
    {           
        new clip, ammo
        new weapon = get_user_weapon(id,clip,ammo)
       
        if (weapon == CSW_KNIFE)
        {
            if (halflife_time()-player_b_blink[id] <= 3) return PLUGIN_HANDLED       
            player_b_blink[id] = floatround(halflife_time())   
            UTIL_Teleport(id,300+15*player_intelligence[id])           
        }
    }
    return PLUGIN_CONTINUE
}
public plugin_end()
{
    new Datafile[64], amxbasedir[64]
   
    get_basedir(amxbasedir,63)
    format(Datafile,63,"%s/diablo/datafile.txt",amxbasedir)
   
    if(file_exists(Datafile)) delete_file(Datafile)
   
    for (new i=0; i < MAX; i++)
    {
        if (player_dc_item[i] > 0 && player_dc_item[i] != 100)
        {
            new data[100]
            format(data,99,"%s^"%i^"",player_dc_name[i],player_dc_item[i])
            write_file(Datafile,data)
        }
    }
}
public handle_mapchange(id)
{
    if (!itemrestore)
        return PLUGIN_HANDLED
   
    if (!updatedtable)
        updateitemtable()
   
    new currentname[32]
    get_user_name(id,currentname,31)
   
    for (new i=0; i < MAX; i++)
    {
        if (player_c_item[i] > 0)
        {
            if (equal(currentname,player_c_name[i]))
                award_item(id,player_c_item[i])
        }
    }
   
    return PLUGIN_CONTINUE
}
public DisableItemRestore()
{
    itemrestore = false
}
public updateitemtable()
{
    if (get_cvar_num("diablo_saveitems") == 0)
        return PLUGIN_HANDLED
   
    new Datafile[64], amxbasedir[64]
   
    get_basedir(amxbasedir,63)
    format(Datafile,63,"%s/diablo/datafile.txt",amxbasedir)
   
   
    if(file_exists(Datafile))
    {
        new linenum = 0
        new linedata[100]
        new readlen = 0
        while (read_file ( Datafile, linenum, linedata, 99, readlen ) != 0)
        {
            linenum++
           
            if (linenum > MAX+1)
            {
                log_amx("More than %i entries in Datafile, aborting table update",linenum)
                return PLUGIN_HANDLED
            }
           
            new linebreak = contain ( linedata, "^"" )
           
            if (strlen(linedata) < linebreak+1)
                continue
           
            new itembreak = contain (linedata[linebreak+1], "^"")
           
            if (linebreak > -1 && itembreak > -1)
            {
               
                new name[50]
                new item[50]
               
                copyc ( name, linebreak, linedata, '"' )
                copyc ( item, itembreak, linedata[linebreak+1],'"')
               
                player_c_name[linenum-1] = name
                player_c_item[linenum-1] = str_to_num(item)   
            }
        }
       
        updatedtable = true
    }
   
    return PLUGIN_CONTINUE
}
public item_convertmoney(id)
{
    new maxhealth = 100+player_strength[id]*2
   
    if (cs_get_user_money(id) < 1000)
        hudmsg(id,2.0,"Nu ai destui bani ca sa-i convertesti in viata")
    else if (get_user_health(id) == maxhealth)
        hudmsg(id,2.0,"Ai deja limita maxima de viata")
    else
    {
        cs_set_user_money(id,cs_get_user_money(id)-1000)
       
        if (get_user_health(id)+15<= maxhealth)
            set_user_health(id,get_user_health(id)+15)
        else
            set_user_health(id,maxhealth)   
       
        Display_Fade(id,2600,2600,0,0,255,0,15)
    }
}
public item_windwalk(id)
{
    if (player_b_usingwind[id] == 0)
    {
        new szId[10]
        num_to_str(id,szId,9)
        player_b_usingwind[id] = 1
        set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,75)
        engclient_cmd(id,"weapon_knife")
        set_user_maxspeed(id,500.0)
       
        new Float:val = player_b_windwalk[id] + 0.0
        set_task(val,"resetwindwalk",0,szId,32)
       
        message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id )
        write_byte( player_b_windwalk[id])
        write_byte( 0 )
        message_end()
    }
   
    else if (player_b_usingwind[id] == 1)
    {
        set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,255)
        player_b_usingwind[id] = 2
        set_user_maxspeed(id,270.0)
        message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id )
        write_byte( 0)
        write_byte( 0 )
        message_end()
    }
   
    else if (player_b_usingwind[id] == 2)
    {
        set_hudmessage(220, 30, 30, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
        show_hudmessage(id, "Poti folosi acest item odata la fiecare runda")
        client_cmd(id, "spk buttons/blip1.wav")
       
    }
   
}
public resetwindwalk(szId[])
{
    new id = str_to_num(szId)
    if (id < 0 || id > MAX)
    {
        log_amx("Error in resetwindwalk, id: %i out of bounds", id)
    }
   
    if (player_b_usingwind[id] == 1)
    {
        player_b_usingwind[id] = 2
        set_user_rendering(id,kRenderFxNone, 0,0,0, kRenderTransTexture,255)   
        set_user_maxspeed(id,270.0)
        message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id )
        write_byte( 0)
        write_byte( 0 )
        message_end()
    }
   
}
public Prethink_usingwind(id)
{
   
    if( get_user_button(id) & IN_ATTACK && is_user_alive(id))
    {
        new buttons = pev(id,pev_button)
        set_pev(id,pev_button,(buttons & ~IN_ATTACK));
        return FMRES_HANDLED;   
    }
   
    if( get_user_button(id) & IN_ATTACK2 && is_user_alive(id))
    {
        new buttons = pev(id,pev_button)
        set_pev(id,pev_button,(buttons & ~IN_ATTACK2));
        return FMRES_HANDLED;   
    }
   
    return PLUGIN_CONTINUE
}
public add_bonus_confuse(id,attacker_id)
{
    if (player_b_reverse[attacker_id] > 0 && !is_user_bot(id) && player_b_oldsen[id] == 0.0)
    {
        if (random_num(1,player_b_reverse[attacker_id]) == 1)
        {
            query_client_cvar(id, "sensitivity", "cvar_result_func");
           
           
            message_begin( MSG_ONE, get_user_msgid("StatusIcon"), {0,0,0}, id )
            write_byte( 1 )   
            write_string( "dmg_chem")
            write_byte( 100 )
            write_byte( 100 )
            write_byte( 100 )
            message_end() 
           
        }
       
    }
}
public cvar_result_func(id, const cvar[], const value[])
{
    player_b_oldsen[id] = str_to_float(value)
    new svIndex[32]
    num_to_str(id,svIndex,32)
    set_task(2.5,"resetsens",0,svIndex,32)       
   
   
}
public resetsens(svIndex[])
{
    new id = str_to_num(svIndex)
   
    if (player_b_oldsen[id] > 0.0)
    {
        client_cmd(id,"sensitivity %f",player_b_oldsen[id])
        player_b_oldsen[id] = 0.0
    }
   
    message_begin( MSG_ONE, get_user_msgid("StatusIcon"), {0,0,0}, id )
    write_byte( 0 )   
    write_string( "dmg_chem")
    write_byte( 100 )
    write_byte( 100 )
    write_byte( 100 )
    message_end() 
   
   
}
public Prethink_confuseme(id)
{
    if (player_b_oldsen[id] > 0.0)
        client_cmd(id,"sensitivity %f", 25.0)
   
}
public Findleader()
{
    new numCT, numT, IDSCT[MAX], IDST[MAX]
   
    for (new i=0; i < MAX; i++)
    {
        if (is_user_connected(i) && is_user_alive(i))
        {
            new team[32]
            get_user_team(i,team,31)
            if (equal(team,"TERRORIST"))
            {
                IDST[numT] = i
                numT++
            }
            else if (equal(team,"CT"))
            {
                IDSCT[numCT] = i
                numCT++
            }
        }
    }
   
    LeaderCT = IDSCT[random_num(0,numCT)]
    LeaderT = IDST[random_num(0,numT)]
   
    if (is_user_connected(LeaderCT) && is_user_connected(LeaderT))
    {
        get_user_origin(LeaderCT,CTstart,0)
        get_user_origin(LeaderT,Tstart,0)
        spawnset = true
    }
   
    set_hudmessage(60, 100, 25, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.2, 10)
    show_hudmessage(LeaderCT, "Esti selectat ca lider. Tu si coechipierii tai veti primi extra hp cat timp sunteti in viata")
    show_hudmessage(LeaderT, "Esti selectat ca lider. Tu si coechipierii tai veti primi extra hp cat timp sunteti in viata")
   
}
public Bot_Setup()
{
    for (new id=0; id < MAX; id++)
    {
        if (is_user_connected(id) && is_user_bot(id))
        {
            if (random_num(1,3) == 1 && player_item_id[id] > 0)
                client_cmd(id,"say /arunca")
           
            while (player_point[id] > 0)
            {
                player_point[id]--
                switch(random_num(1,4))
                {
                    case 1: {
                        player_agility[id]++
                    }
                    case 2: {
                        player_strength[id]++
                    }
                    case 3: {
                        player_intelligence[id]++
                    }
                    case 4: {
                        player_dextery[id]++
                    }
                }
            }
        }
    }
}
public host_killed(id)
{
    if (player_lvl[id] > 1)
    {
        hudmsg(id,2.0,"Vei pierde experienta ucigand ostatecii")
        client_cmd(id, "spk fvox/warning.wav")
       
        if (player_xp[id]-get_cvar_num("diablo_xpbonus") < LevelXP[player_lvl[id]]-1)
            player_xp[id] = LevelXP[player_lvl[id]]-1
        else
            player_xp[id]-=get_cvar_num("diablo_xpbonus")
    }
   
}
public showmenu(id)
{
    new text[513]
    new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)
   
   
    format(text, 512, "\yOptions - ^n\w1. Item Information^n\w2. Drop Current Item^n\w3. Show Help^n\w4. Use items ultimate^n\w5. Buy Rune^n\w6. Skills Information^n\w7. Exit")
   
    show_menu(id, keys, text)
    return PLUGIN_HANDLED 
}
public option_menu(id, key)
{
    switch(key)
    {
        case 0:
        {   
            iteminfo(id)
           
        }
        case 1:
        {   
            dropitem(id)
        }
        case 2:
        {   
            helpme(id)
        }
        case 3:
        {
            Use_Spell(id)
        }
        case 4:
        {
            buyrune(id)
        }
        case 5:
        {
            showskills(id)
        }
        case 6:
        {
            return PLUGIN_HANDLED
        }
    }
   
    return PLUGIN_HANDLED
}
public Prethink_froglegs(id)
{
    if (get_user_button(id) & IN_DUCK)
    {
        if (player_b_froglegs[id] == 1)
        {
            player_b_froglegs[id] = floatround(halflife_time())
        }
        else
        {
            if (floatround(halflife_time())-player_b_froglegs[id] >= 2.0)
            {
                new Float:fl_iNewVelocity[3]
                VelocityByAim(id, 1000, fl_iNewVelocity)
                fl_iNewVelocity[2] = 210.0
                entity_set_vector(id, EV_VEC_velocity, fl_iNewVelocity)
                player_b_froglegs[id] = 1
            }
        }
    }
    else
    {
        player_b_froglegs[id] = 1
    }
}
public select_class(id)
{
    new text[513]
    new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)
   
    format(text, 512, "\ySelect Class - ^n\w1. Sorcerer [Increased effect of spells]^n\w2. Paladin [Bonus to strength]^n\w3. Monk [More Experienced gained]^n\w4. Assassin [Faster and no footsteps]^n\w5. Barbarian [Regain hitpoint upon kill]^n\w6. Necromancer [Returns some of the damage taken]")
   
    keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)
    show_menu(id, keys, text)
    return PLUGIN_HANDLED 
}
public select_class_menu(id, key)
{
    switch(key)
    {
        case 0:
        {   
            player_class[id] = SORC
            player_intelligence[id]+=4
           
           
        }
        case 1:
        {   
            player_class[id] = PALADIN
            player_strength[id]+=4
            if (is_user_alive(id))
                set_user_health(id,get_user_health(id)+8)

        }
        case 2:
        {   
            player_class[id] = MONK
           
        }
        case 3:
        {   
            player_class[id] = ASSASSIN
           
        }
        case 4:
        {   
            player_class[id] = BARBARIAN

        }
        case 5:
        {   
            player_class[id] = NECROMANCER
           
        }
    }
   
    if (player_class[id] == 0) select_class(id)
    return PLUGIN_HANDLED
}
public add_barbarian_bonus(id)
{
    if (player_class[id] == BARBARIAN)
    {   
        new maxhealth = 100+player_strength[id]*2
       
       
        if (get_user_health(id)+50 <= maxhealth)
        {
            set_user_health(id,get_user_health(id)+50)
        }
        else
        {
            set_user_health(id,maxhealth)
        }
    }
}
public add_bonus_necromancer(attacker_id,id)
{
    if (player_class[attacker_id] == NECROMANCER)
    {
        if (get_user_health(id) - 10 <= 0)
        {
            set_user_health(id,random_num(1,3))
        }
        else
        {
            set_user_health(id,get_user_health(id)-10)
        }
    }
}
public plugin_modules()
{
    require_module("engine")
    require_module("cstrike")
    require_module("fun")
    require_module("fakemeta")
}
public UTIL_FindNearestOpponent(id,maxdist)
{
    new best = 99999
    new entfound = -1
    new MyOrigin[3]
    get_user_origin(id,MyOrigin)
   
    for (new i=1; i < MAX; i++)
    {
        if (i == id || !is_user_connected(i) || !is_user_alive(i) || get_user_team(id) == get_user_team(i))
            continue
       
        new TempOrigin[3],Float:fTempOrigin[3]
        get_user_origin(i,TempOrigin)
        IVecFVec(TempOrigin,fTempOrigin)
       
        if (!UTIL_IsInView(id,i))
            continue
       
       
        new dist = get_distance ( MyOrigin,TempOrigin )
       
        if ( dist < maxdist && dist < best)
        {
            best = dist
            entfound = i
        }       
    }
   
    return entfound
}
public bool:UTIL_IsInView(id,target)
{
    new Float:IdOrigin[3], Float:TargetOrigin[3], Float:ret[3]
    new iIdOrigin[3], iTargetOrigin[3]
   
    get_user_origin(id,iIdOrigin,1)
    get_user_origin(target,iTargetOrigin,1)
   
    IVecFVec(iIdOrigin,IdOrigin)
    IVecFVec(iTargetOrigin, TargetOrigin)
   
    if ( trace_line ( 1, IdOrigin, TargetOrigin, ret ) == target)
        return true
   
    if ( get_distance_f(TargetOrigin,ret) < 10.0)
        return true
   
    return false
   
}
public item_dagon(id)
{
    if (player_b_dagfired[id])
    {
        set_hudmessage(220, 30, 30, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
        show_hudmessage(id, "Poti folosi acest item odata la fiecare runda")
        client_cmd(id, "spk buttons/blip1.wav")
       
        return PLUGIN_HANDLED
    }
    new target = UTIL_FindNearestOpponent(id,600+player_intelligence[id]*20)
   
    if (target == -1)
        return PLUGIN_HANDLED
   
    new DagonDamage = 0
    new Red = 0
   
    if (player_b_dagon[id] == 1)
    {
        DagonDamage = 20
        Red = 175
    }
    else if (player_b_dagon[id] == 2)
    {
        DagonDamage = 35
        Red = 225
    }
    else if (player_b_dagon[id] == 3)
    {
        DagonDamage = 50
        Red = 255
    }
   
    DagonDamage-=player_dextery[target]*2
   
    if (DagonDamage < 0)
        DagonDamage = 0
   
   
    new Hit[3]
    get_user_origin(target,Hit)
   
    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
    write_byte(1)
    write_short(id)
    write_coord(Hit[0])
    write_coord(Hit[1])
    write_coord(Hit[2])
    write_short(sprite_lgt)
    write_byte(0)
    write_byte(1)
    write_byte(3)
    write_byte(10)   
    write_byte(60)
    write_byte(Red)
    write_byte(0)
    write_byte(0)
    write_byte(100)   
    write_byte(0)
    message_end()
   
    player_b_dagfired[id] = true
   
    if (get_user_health(target) - DagonDamage <= 0)
        UTIL_Kill(id,target,"world")
    else
    {
        set_user_health(target,get_user_health(target)-DagonDamage)
        Display_Fade(target,2600,2600,0,255,0,0,15)
        hudmsg(id,2.0,"Loviturile Dagonului %i, %i absorbite", DagonDamage, player_dextery[target]*2)
    }
   
   
    return PLUGIN_HANDLED
   
   
}
public UTIL_Kill(attacker,id,weapon[])
{
   
    if(get_user_team(attacker)!=get_user_team(id))
        set_user_frags(attacker,get_user_frags(attacker) +1);
    if(get_user_team(attacker)==get_user_team(id))
        set_user_frags(attacker,get_user_frags(attacker) -1);
       
    if (cs_get_user_money(attacker) + 150 <= 16000)
        cs_set_user_money(attacker,cs_get_user_money(attacker)+150)
    else
        cs_set_user_money(attacker,16000)
   
    award_kill(attacker,id)
    user_kill(id,1)
    message_begin( MSG_ALL, gmsgDeathMsg,{0,0,0},0)
    write_byte(attacker)
    write_byte(id)
    write_byte(0)
    write_string(weapon)
    message_end()
   
    message_begin(MSG_ALL,gmsgScoreInfo)
    write_byte(attacker)
    write_short(get_user_frags(attacker))
    write_short(get_user_deaths(attacker))
    write_short(0)
    write_short(get_user_team(attacker))
    message_end()
   
    message_begin(MSG_ALL,gmsgScoreInfo)
    write_byte(id)
    write_short(get_user_frags(id))
    write_short(get_user_deaths(id))
    write_short(0)
    write_short(get_user_team(id))
    message_end()
   
    new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10];
   
    get_user_name(attacker, kname, 31);
    get_user_team(attacker, kteam, 9);
    get_user_authid(attacker, kauthid, 31);
   
    get_user_name(id, vname, 31);
    get_user_team(id, vteam, 9);
    get_user_authid(id, vauthid, 31);
   
    log_message("^"%s<%d><%s><%s>^" ucis ^"%s<%d><%s><%s>^" cu ^"%s^"",
    kname, get_user_userid(attacker), kauthid, kteam,
    vname, get_user_userid(id), vauthid, vteam, weapon);
   
   
}
public bool:UTIL_Buyformoney(id,amount)
{
    if (cs_get_user_money(id) >= amount)
    {
        cs_set_user_money(id,cs_get_user_money(id)-amount)
        return true
    }
    else
    {
        hudmsg(id,2.0,"Nu ai destui bani")
        client_cmd(id, "spk vox/bizwarn.wav")
       
        return false
    }
   
    return false
}
public buyrune(id)
{
    new text[513]
   
    format(text, 512, "\ySelect Rune - ^n\w1. Tir [Can boost Dagon to Level III] - \r$7000^n\w2. Vex [Can boost Point Booster] - \r$5000^n\w3. Eth [Can Upgrade Air Booster] \r$6500^n\w4. Ral [Can Upgrade Gold Amplifier] \r$7000^n\w5. Sol [You get an item] \r$5000^n\w6. Zal [You get 50 xp] \r$4500^n\w7. Exit")
   
    new keys = (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)
    show_menu(id, keys, text)
    return PLUGIN_HANDLED 
}
public select_rune_menu(id, key)
{
    switch(key)
    {
        case 0:
        {   
           
            if (player_b_dagon[id] > 0 && player_b_dagon[id] < 3)
            {
                if (!UTIL_Buyformoney(id,7000))
                    return PLUGIN_HANDLED
               
                player_b_dagon[id]++
                if (player_b_dagon[id] == 2) player_item_name[id] = "Dagon II"
                else if (player_b_dagon[id] == 3) player_item_name[id] = "Dagon III"   
                   
                set_hudmessage(100, 200, 55, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
                show_hudmessage(id, "Dagon Upgradat")
                client_cmd(id, "spk buttons/blip1.wav")
            }
           
        }
        case 1:
        {
           
            if (item_boosted[id] == 0 && player_item_id[id] == 51)
            {
                if (!UTIL_Buyformoney(id,5000))
                    return PLUGIN_HANDLED
               
                item_boosted[id]++
                player_item_name[id] = "Vitality Booster"
               
                SubtractStats(id,player_b_extrastats[id])
                player_b_extrastats[id]+=2
                BoostStats(id,player_b_extrastats[id])
                set_hudmessage(100, 200, 55, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
                show_hudmessage(id, "Punctele de lovitura upgradate")
                client_cmd(id, "spk buttons/blip1.wav")
               
            }
        }
        case 2:
        {
           
            if (item_boosted[id] == 0 && player_item_id[id] == 49)
            {
                if (!UTIL_Buyformoney(id,6500))
                    return PLUGIN_HANDLED
               
                item_boosted[id]++
                player_item_name[id] = "Elemental Booster"
                player_b_jumpx[id]++
                set_hudmessage(100, 200, 55, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
                show_hudmessage(id, "Saritura Dubla upgradat")
                client_cmd(id, "spk buttons/blip1.wav")
               
            }
           
           
        }
        case 3:
        {
           
            if (item_boosted[id] == 0 && player_item_id[id] == 3)
            {
                if (!UTIL_Buyformoney(id,7000))
                    return PLUGIN_HANDLED
               
                item_boosted[id]++
                player_item_name[id] = "Diamond Amplifier"
                player_b_damage[id]+=random_num(5,8)
                set_hudmessage(100, 200, 55, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
                show_hudmessage(id, "Gold Amplifier upgradat")
                client_cmd(id, "spk buttons/blip1.wav")
               
            }
        }
       
        case 4:
        {   
            if (!UTIL_Buyformoney(id,5000))
                return PLUGIN_HANDLED
            award_item(id,0)
            return PLUGIN_HANDLED
        }
        case 5:
        {
            if (!UTIL_Buyformoney(id,4500))
                return PLUGIN_HANDLED
            Give_Xp(id,50)
            return PLUGIN_HANDLED
        }
       
        case 6:
        {   
            return PLUGIN_HANDLED
        }
    }
   
    return PLUGIN_HANDLED
}
public fullupdate(id)
{
    return PLUGIN_HANDLED
}
public add_bonus_scoutdamage(attacker_id,id,weapon)
{
    if (player_b_sniper[attacker_id] > 0 && get_user_team(attacker_id) != get_user_team(id) && weapon == CSW_SCOUT)
    {
       
        if (!is_user_alive(id))
            return PLUGIN_HANDLED
       
        if (random_num(1,player_b_sniper[attacker_id]) == 1)
            UTIL_Kill(attacker_id,id,"scout")
       
    }
   
    return PLUGIN_HANDLED
}
public add_bonus_illusion(attacker_id,id,weapon)
{
    if(HasFlag(id,Flag_Illusion))
    {
        new weaponname[32]
        get_weaponname( weapon, weaponname, 31 )
        replace(weaponname, 31, "weapon_", "")
        UTIL_Kill(attacker_id,id,weaponname)
    }
}
public item_take_damage(id,damage)
{
    new itemdamage = get_cvar_num("diablo_durability")
   
    if (player_item_id[id] > 0 && item_durability[id] > 0 && itemdamage> 0 && damage > 5)
    {
        if (item_durability[id] - itemdamage <= 0)
        {
            item_durability[id]-=itemdamage
            dropitem(id)
        }
        else
        {
            item_durability[id]-=itemdamage
        }
       
    }
}
public Prethink_Doublejump(id)
{
    if(!is_user_alive(id))
        return PLUGIN_HANDLED
   
    if((get_user_button(id) & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(get_user_oldbutton(id) & IN_JUMP))
    {
        if(jumps[id] < player_b_jumpx[id])
        {
            dojump[id] = true
            jumps[id]++
            return PLUGIN_HANDLED
        }
    }
    if((get_user_button(id) & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
    {
        jumps[id] = 0
        return PLUGIN_CONTINUE
    }
   
    return PLUGIN_HANDLED
}
public Postthink_Doubeljump(id)
{
    if(!is_user_alive(id))
        return PLUGIN_HANDLED
   
    if(dojump[id] == true)
    {
        new Float:velocity[3]   
        entity_get_vector(id,EV_VEC_velocity,velocity)
        velocity[2] = random_float(265.0,285.0)
        entity_set_vector(id,EV_VEC_velocity,velocity)
        dojump[id] = false
        return PLUGIN_CONTINUE
    }
   
    return PLUGIN_HANDLED
}
public spawn_powerup(Float:sOrigin[3])
{
    new ent = create_entity("info_target")
    entity_set_string(ent, EV_SZ_classname, "PowerUp")
    entity_set_int(ent, EV_INT_movetype, MOVETYPE_TOSS)
    entity_set_int(ent, EV_INT_solid, SOLID_BBOX)
    entity_set_model(ent, "models/bag.mdl")             
    set_rendering(ent, kRenderFxGlowShell, 0,0,0, kRenderNormal, 255)
    entity_set_origin(ent,sOrigin)
    entity_set_int(ent,EV_INT_iuser1,0)
    new Float:maxs[3] = {16.0,16.0,6.0}
    new Float:mins[3] = {-16.0,-16.0,-6.0}
    entity_set_size(ent,mins,maxs)
    powerup_taken = false
    entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01)
   
}
public award_powerup(id)
{
    if (is_user_connected(id) && is_user_alive(id) && !powerup_taken)
    {
        if (random_num(1,2) == 1)
        {
            if (cs_get_user_money(id) < 5000)
                cs_set_user_money(id,5000)
            else if (cs_get_user_money(id) < 10000)
                cs_set_user_money(id,10000)
            else if (cs_get_user_money(id) < 16000)
                cs_set_user_money(id,16000)
           
            set_hudmessage(100, 200, 55, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
            show_hudmessage(id, "Powerup: Sac de Bani")
            client_cmd(id, "spk buttons/blip1.wav")
           
        }
        else
        {
            Give_Xp(id,get_cvar_num("diablo_xpbonus")*2)
            set_hudmessage(100, 200, 55, -1.0, 0.40, 0, 3.0, 2.0, 0.2, 0.3, 5)
            show_hudmessage(id, "Powerup: Experienta")
            client_cmd(id, "spk buttons/blip1.wav")
           
        }
       
        powerup_taken = true
    }
}
public Think_PowerUp(ent)
{
    if (entity_get_int(ent,EV_INT_iuser2) == 1)
    {
        remove_entity(ent)
        return PLUGIN_HANDLED
    }
   
    new glow = entity_get_int(ent,EV_INT_iuser1)
   
    if (glow < 255)
    {
        glow++
        entity_set_int(ent,EV_INT_iuser1,glow)
    }
   
    set_rendering(ent, kRenderFxGlowShell, 0,glow,0, kRenderNormal, 255)
    entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.5)
   
    return PLUGIN_CONTINUE
}
public register_place(kid)
{
    if (!spawnset)
        return PLUGIN_HANDLED
   
    new Place[3]
    get_user_origin(kid,Place,0)
   
    new distCTstart = get_distance(Place,CTstart)
    new distTstart = get_distance(Place,Tstart)
   
    if (distCTstart > 300 && distTstart > 300 && abs(distCTstart - distTstart) < 150)
    {
        if (havespawn)
        {
            if (random_num(1,3) == 3)
                NextPowerup = Place
        }
        else
        {
            havespawn = true
            NextPowerup = Place
        }
       
    }
   
    return PLUGIN_CONTINUE
   
   
}
public SpawnPowerup()
{
    if (!spawnset || !havespawn)
        return PLUGIN_HANDLED
   
    new chance = get_cvar_num("diablo_spawnchance")
   
    if (random_num(1,chance) == 1)
    {   
       
        if (find_ent_by_class(-1,"PowerUp") > 0)
            return PLUGIN_HANDLED
       
        new Float:spawnplace[3]
        IVecFVec(NextPowerup,spawnplace)
        spawn_powerup(spawnplace)
    }
   
    return PLUGIN_CONTINUE
   
   
}
public eventGrenade(id)
{
    new id = read_data(1)
    if (player_b_grenade[id] > 0 || player_b_smokehit[id] > 0)
    {
        set_task(0.1, "makeGlow", id)
    }
}
public makeGlow(id)
{
    new grenade
    new greModel[100]
    grenade = get_grenade(id)
   
    if( grenade )
    {   
        entity_get_string(grenade, EV_SZ_model, greModel, 99)
       
        if(equali(greModel, "models/w_hegrenade.mdl" ) && player_b_grenade[id] > 0 )   
            set_rendering(grenade, kRenderFxGlowShell, 255,0,0, kRenderNormal, 255)
       
        if(equali(greModel, "models/w_smokegrenade.mdl" ) && player_b_smokehit[id] > 0 )   
        {
            set_rendering(grenade, kRenderFxGlowShell, 0,255,255, kRenderNormal, 255)
        }
    }
}
public BoostStats(id,amount)
{
    player_strength[id]+=amount
    player_dextery[id]+=amount
    player_agility[id]+=amount
    player_intelligence[id]+=amount
}
public SubtractStats(id,amount)
{
    player_strength[id]-=amount
    player_dextery[id]-=amount
    player_agility[id]-=amount
    player_intelligence[id]-=amount
}
public SelectBotRace(id)
{
    if (!is_user_bot(id))
        return PLUGIN_HANDLED
   
    if (player_class[id] == 0)
        player_class[id] = random_num(1,5)
   
    return PLUGIN_CONTINUE
}
public showskills(id)
{
    new Skillsinfo[768]
    format(Skillsinfo,767,"Ai %i putere - acesta iti va da %i extra puncte de lovitura<br><br>Ai %i Dexteritate - aceasta iti va da raped de viteza la %i% si reduce daunele magice luate de %i%%<br><br>Ai %i Agilitate - Te ajuta sa gasesti iteme unice si reduce daunele de la atacurile normale la %0.0f%%<br><br>Ai %i inteligenta - acesta poate ajuta sa ca itemele sa fie mult mai eficiente<br>",
    player_strength[id],
    player_strength[id]*2,
    player_dextery[id],
    player_dextery[id],
    player_dextery[id]*3,
    player_agility[id],
    player_damreduction[id]*100,
    player_intelligence[id])
   
    showitem(id,"Skills","None","None", Skillsinfo)
}
public UTIL_Teleport(id,distance)
{   
    Set_Origin_Forward(id,distance)
   
    new origin[3]
    get_user_origin(id,origin)
       
    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY)
    write_byte(TE_PARTICLEBURST )
    write_coord(origin[0])
    write_coord(origin[1])
    write_coord(origin[2])
    write_short(20)
    write_byte(1)
    write_byte(4)
    message_end()
   
   
}
stock Set_Origin_Forward(id, distance)
{
    new Float:origin[3]
    new Float:angles[3]
    new Float:teleport[3]
    new Float:heightplus = 10.0
    new Float:playerheight = 64.0
    new bool:recalculate = false
    new bool:foundheight = false
    pev(id,pev_origin,origin)
    pev(id,pev_angles,angles)
   
    teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
    teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
    teleport[2] = origin[2]+heightplus
   
    while (!Can_Trace_Line_Origin(origin,teleport) || Is_Point_Stuck(teleport,48.0))
    {   
        if (distance < 10)
            break;
       
        for (new i=1; i < playerheight+20.0; i++)
        {
            teleport[2]+=i
            if (Can_Trace_Line_Origin(origin,teleport) && !Is_Point_Stuck(teleport,48.0))
            {
                foundheight = true
                heightplus += i
                break
            }
           
            teleport[2]-=i
        }
       
        if (foundheight)
            break
       
        recalculate = true
        distance-=10
        teleport[0] = origin[0] + (distance+32) * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
        teleport[1] = origin[1] + (distance+32) * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
        teleport[2] = origin[2]+heightplus
    }
   
    if (!recalculate)
    {
        set_pev(id,pev_origin,teleport)
        return PLUGIN_CONTINUE
    }
   
    teleport[0] = origin[0] + distance * floatcos(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
    teleport[1] = origin[1] + distance * floatsin(angles[1],degrees) * floatabs(floatcos(angles[0],degrees));
    teleport[2] = origin[2]+heightplus
    set_pev(id,pev_origin,teleport)
   
    return PLUGIN_CONTINUE
}
stock bool:Can_Trace_Line_Origin(Float:origin1[3], Float:origin2[3])
{   
    new Float:Origin_Return[3]   
    new Float:temp1[3]
    new Float:temp2[3]
   
    temp1[x] = origin1[x]
    temp1[y] = origin1[y]
    temp1[z] = origin1[z]-30
   
    temp2[x] = origin2[x]
    temp2[y] = origin2[y]
    temp2[z] = origin2[z]-30
   
    trace_line(-1, temp1, temp2, Origin_Return)
   
    if (get_distance_f(Origin_Return,temp2) < 1.0)
        return true
   
    return false
}
stock bool:Is_Point_Stuck(Float:Origin[3], Float:hullsize)
{
    new Float:temp[3]
    new Float:iterator = hullsize/3
   
    temp[2] = Origin[2]
   
    for (new Float:i=Origin[0]-hullsize; i < Origin[0]+hullsize; i+=iterator)
    {
        for (new Float:j=Origin[1]-hullsize; j < Origin[1]+hullsize; j+=iterator)
        {
            for (new Float:k=Origin[2]-CS_PLAYER_HEIGHT; k < Origin[2]+CS_PLAYER_HEIGHT; k+=6)
            {
                temp[0] = i
                temp[1] = j
                temp[2] = k
               
                if (point_contents(temp) != -1)
                    return true
            }
        }
    }
   
    return false
}
stock Effect_Bleed(id,color)
{
    new origin[3]
    get_user_origin(id,origin)
   
    new dx, dy, dz
   
    for(new i = 0; i < 3; i++)
    {
        dx = random_num(-15,15)
        dy = random_num(-15,15)
        dz = random_num(-20,25)
       
        for(new j = 0; j < 2; j++)
        {
            message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
            write_byte(TE_BLOODSPRITE)
            write_coord(origin[0]+(dx*j))
            write_coord(origin[1]+(dy*j))
            write_coord(origin[2]+(dz*j))
            write_short(sprite_blood_spray)
            write_short(sprite_blood_drop)
            write_byte(color)
            write_byte(8)
            message_end()
        }
    }
}
public Use_Spell(id)
{
    if (player_global_cooldown[id] + GLOBAL_COOLDOWN >= halflife_time())
        return PLUGIN_CONTINUE
    else
        player_global_cooldown[id] = halflife_time()
       
    if (!is_user_alive(id) || !freeze_ended)
        return PLUGIN_CONTINUE
   
   
    new Float:origin[3]
    pev(id, pev_origin, origin)
   
    new aimid, body
    get_user_aiming ( id, aimid, body )
   
    if (aimid > 0)
    {
        new classname[32]
        pev(aimid,pev_classname,classname,31)
       
        if (equal(classname,"func_door_rotating") || equal(classname,"func_door") || equal(classname,"func_button"))
        {
            new Float:doororigin[3]
            pev(aimid, pev_origin, doororigin)
           
            if (get_distance_f(origin, doororigin) < 70 && UTIL_In_FOV(id,aimid))
                return PLUGIN_CONTINUE
        }
       
    }
   
    new bomb
    if ((bomb = find_ent_by_model(-1, "grenade", "models/w_c4.mdl")))
    {
        new Float:bombpos[3]
        pev(bomb, pev_origin, bombpos)
           
        if (get_distance_f(origin, bombpos) < 100 && UTIL_In_FOV(id,bomb))
            return PLUGIN_CONTINUE
    }

    new hostage = engfunc(EngFunc_FindEntityByString, -1,"classname", "hostage_entity")
   
    while (hostage)
    {
        new Float:hospos[3]
        pev(hostage, pev_origin, hospos)
        if (get_distance_f(origin, hospos) < 70 && UTIL_In_FOV(id,hostage))
            return PLUGIN_CONTINUE
       
        hostage = engfunc(EngFunc_FindEntityByString, hostage,"classname", "hostage_entity")
    }
   
    check_magic(id)
   
   
    return PLUGIN_CONTINUE
}
stock Float:Find_Angle(Core,Target,Float:dist)
{
    new Float:vec2LOS[2]
    new Float:flDot   
    new Float:CoreOrigin[3]
    new Float:TargetOrigin[3]
    new Float:CoreAngles[3]
   
    pev(Core,pev_origin,CoreOrigin)
    pev(Target,pev_origin,TargetOrigin)
   
    if (get_distance_f(CoreOrigin,TargetOrigin) > dist)
        return 0.0
   
    pev(Core,pev_angles, CoreAngles)
   
    for ( new i = 0; i < 2; i++ )
        vec2LOS[i] = TargetOrigin[i] - CoreOrigin[i]
   
    new Float:veclength = Vec2DLength(vec2LOS)
   
    if (veclength <= 0.0)
    {
        vec2LOS[x] = 0.0
        vec2LOS[y] = 0.0
    }
    else
    {
        new Float:flLen = 1.0 / veclength;
        vec2LOS[x] = vec2LOS[x]*flLen
        vec2LOS[y] = vec2LOS[y]*flLen
    }
   
    engfunc(EngFunc_MakeVectors,CoreAngles)
   
    new Float:v_forward[3]
    new Float:v_forward2D[2]
    get_global_vector(GL_v_forward, v_forward)
   
    v_forward2D[x] = v_forward[x]
    v_forward2D[y] = v_forward[y]
   
    flDot = vec2LOS[x]*v_forward2D[x]+vec2LOS[y]*v_forward2D[y]
   
    if ( flDot > 0.5 )
    {
        return flDot
    }
   
    return 0.0   
}
stock Float:Vec2DLength( Float:Vec[2] ) 
{
    return floatsqroot(Vec[x]*Vec[x] + Vec[y]*Vec[y] )
}
stock bool:UTIL_In_FOV(id,target)
{
    if (Find_Angle(id,target,9999.9) > 0.0)
        return true
   
    return false
}
public Greet_Player(id)
{
    id-=TASK_GREET
    new name[32]
    get_user_name(id,name,31)
    client_print(id,print_chat, "[GameStarCS] Bun Venit %s pe server. Scrie /diabloinfo pentru a te ajuta cum sa joci", name)
}
stock Display_Fade(id,duration,holdtime,fadetype,red,green,blue,alpha)
{
    message_begin( MSG_ONE,get_user_msgid("ScreenFade"),{0,0,0},id )
    write_short( duration )   
    write_short( holdtime )   
    write_short( fadetype )   
    write_byte ( red )       
    write_byte ( green )       
    write_byte ( blue )       
    write_byte ( alpha )   
    message_end()
}
public changerace(id)
{
    set_user_health(id,0)
    client_connect(id)
    select_class(id)
}
public FW_WriteString(string[])
{
    if (equal(string,""))
        return FMRES_IGNORED
   
    if (equal(string,"#Hint_press_buy_to_purchase") || equal(string,"#Hint_press_buy_to_purchase "))
    {
        write_string( "" );
        return FMRES_SUPERCEDE
    }
   
    if (equal(string, "#Hint_spotted_a_friend") || equal(string, "#Hint_you_have_the_bomb"))
    {
        write_string( "" );
        return FMRES_SUPERCEDE
    }
   
    return FMRES_IGNORED
   
}
stock hudmsg(id,Float:display_time,const fmt[], {Float,Sql,Result,_}:...)
{   
    if (player_huddelay[id] >= 0.03*4)
        return PLUGIN_CONTINUE
   
    new buffer[512]
    vformat(buffer, 511, fmt, 4)
   
    set_hudmessage ( 255, 0, 0, -1.0, 0.4 + player_huddelay[id], 0, display_time/2, display_time, 0.1, 0.2, -1 )   
    show_hudmessage(id, buffer)
   
    player_huddelay[id]+=0.03
   
    remove_task(id+TASK_HUD)
    set_task(display_time, "hudmsg_clear", id+TASK_HUD, "", 0, "a", 3)
   
   
    return PLUGIN_CONTINUE
   
}
public hudmsg_clear(id)
{
    new pid = id-TASK_HUD
    player_huddelay[pid]=0.0
}
public item_firetotem(id)
{
    if (used_item[id])
    {
        hudmsg(id,2.0,"Poti sa folosesti fire totem odata la fiecare runda")
        client_cmd(id, "spk buttons/blip1.wav")
       
    }
    else
    {
        used_item[id] = true
        Effect_Ignite_Totem(id,7)
    }
}
stock Effect_Ignite_Totem(id,seconds)
{
    new origin[3]
    pev(id,pev_origin,origin)
   
    new ent = Spawn_Ent("info_target")
    set_pev(ent,pev_classname,"Effect_Ignite_Totem")
    set_pev(ent,pev_owner,id)
    set_pev(ent,pev_solid,SOLID_TRIGGER)
    set_pev(ent,pev_origin,origin)
    set_pev(ent,pev_ltime, halflife_time() + seconds + 0.1)
   
    engfunc(EngFunc_SetModel, ent, "models/totem_ignite.mdl")     
    set_rendering ( ent, kRenderFxGlowShell, 250,150,0, kRenderFxNone, 255 )   
    engfunc(EngFunc_DropToFloor,ent)
   
    set_pev(ent,pev_euser3,0)
    set_pev(ent,pev_nextthink, halflife_time() + 0.1)
}
public Effect_Ignite_Totem_Think(ent)
{
    if (!freeze_ended)
        remove_entity(ent)
   
    if (!is_valid_ent(ent))
        return PLUGIN_CONTINUE
   
    new id = pev(ent,pev_owner)
   
    if (pev(ent,pev_euser3) == 1)
    {
        new entlist[513]
        new numfound = find_sphere_class(ent,"player",player_b_firetotem[id]+0.0,entlist,512)
       
        for (new i=0; i < numfound; i++)
        {       
            new pid = entlist[i]
           
            if (pid == id && is_user_alive(id))
            {
                Effect_Ignite(pid,id,4)
                hudmsg(pid,3.0,"Arzi. Fa daune la cineva ca sa faci focul sa se opreasca!")
                continue
            }
           
            if (!is_user_alive(pid) || get_user_team(id) == get_user_team(pid))
                continue
           
            if (player_dextery[pid] > 20)
                Effect_Ignite(pid,id,1)
            else if (player_dextery[pid] > 15)
                Effect_Ignite(pid,id,2)
            else if (player_dextery[pid] > 10)
                Effect_Ignite(pid,id,3)
            else
                Effect_Ignite(pid,id,4)
           
            hudmsg(pid,3.0,"Arzi. Fa daune la cineva ca sa faci focul sa se opreasca!")
        }
       
        remove_entity(ent)
        return PLUGIN_CONTINUE
    }
   
   
    if (pev(ent,pev_ltime) < halflife_time())
    {
        set_pev(ent,pev_euser3,1)
       
       
        new Float:forigin[3], origin[3]
        pev(ent,pev_origin,forigin)   
        FVecIVec(forigin,origin)
       
        message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin );
        write_byte( TE_BEAMCYLINDER );
        write_coord( origin[0] );
        write_coord( origin[1] );
        write_coord( origin[2] );
        write_coord( origin[0] );
        write_coord( origin[1] + player_b_firetotem[id]);
        write_coord( origin[2] + player_b_firetotem[id]);
        write_short( sprite_white );
        write_byte( 0 );
        write_byte( 0 );
        write_byte( 10 );
        write_byte( 10 );
        write_byte( 255 );
        write_byte( 150 );
        write_byte( 150 );
        write_byte( 0 );
        write_byte( 128 );
        write_byte( 5 );
        message_end();
       
        set_pev(ent,pev_nextthink, halflife_time() + 0.2)
       
    }
    else   
    {
        set_pev(ent,pev_nextthink, halflife_time() + 1.5)
    }
   
    return PLUGIN_CONTINUE
}
stock Spawn_Ent(const classname[])
{
    new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, classname))
    set_pev(ent, pev_origin, {0.0, 0.0, 0.0})   
    dllfunc(DLLFunc_Spawn, ent)
    return ent
}
stock Effect_Ignite(id,attacker,damage)
{
    new ent = Spawn_Ent("info_target")
    set_pev(ent,pev_classname,"Effect_Ignite")
    set_pev(ent,pev_owner,id)
    set_pev(ent,pev_ltime, halflife_time() + 99 + 0.1)
    set_pev(ent,pev_solid,SOLID_NOT)
    set_pev(ent,pev_euser1,attacker)
    set_pev(ent,pev_euser2,damage)
    set_pev(ent,pev_nextthink, halflife_time() + 0.1)   
   
    AddFlag(id,Flag_Ignite)
}
public Effect_Ignite_Think(ent)
{
    new id = pev(ent,pev_owner)
    new attacker = pev(ent,pev_euser1)
    new damage = pev(ent,pev_euser2)
   
    if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id) || !HasFlag(id,Flag_Ignite))
    {
        RemoveFlag(id,Flag_Ignite)
        Remove_All_Tents(id)
        Display_Icon(id,200,0,0,"dmg_heat",0)
        remove_entity(ent)       
        return PLUGIN_CONTINUE
    }
   
    Display_Tent(id,sprite_ignite,2)
    Display_Icon(id,200,0,0,"dmg_heat",1)
   
    new origin[3]
    get_user_origin(id,origin)
   
    message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte( TE_SMOKE )
    write_coord(origin[0])
    write_coord(origin[1])
    write_coord(origin[2])
    write_short( sprite_smoke )
    write_byte( 22 ) 
    write_byte( 10 ) 
    message_end()
   
    message_begin( MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte( TE_GUNSHOTDECAL )
    write_coord( origin[0] )
    write_coord( origin[1] )
    write_coord( origin[2] )
    write_short (0)
    write_byte (random_num(199,201))
    message_end()
   
    Hurt_Entity(attacker,id,damage+0.0)
   
    set_pev(ent,pev_nextthink, halflife_time() + 1.5)
   
   
    return PLUGIN_CONTINUE
}
stock AddFlag(id,flag)
{
    afflicted[id][flag] = 1   
}
stock RemoveFlag(id,flag)
{
    afflicted[id][flag] = 0
}
stock bool:HasFlag(id,flag)
{
    if (afflicted[id][flag])
        return true
   
    return false
}
stock Display_Tent(id,sprite, seconds)
{
    message_begin(MSG_ALL,SVC_TEMPENTITY)
    write_byte(TE_PLAYERATTACHMENT)
    write_byte(id)
    write_coord(40)
    write_short(sprite)
    write_short(seconds*10)
    message_end()
}
stock Remove_All_Tents(id)
{
    message_begin(MSG_ALL ,SVC_TEMPENTITY)
    write_byte(TE_KILLPLAYERATTACHMENTS)
    write_byte(id)
    message_end()
}
stock Display_Icon(id,red,green,blue,name[], enable)
{
    if (!pev_valid(id))
    {
        return PLUGIN_HANDLED
    }
   
    message_begin( MSG_ONE, get_user_msgid("StatusIcon"), {0,0,0}, id )
    write_byte( enable )   
    write_string( name )
    write_byte( red )
    write_byte( green )
    write_byte( blue )
    message_end()
   
    return PLUGIN_CONTINUE
}
stock Hurt_Entity(attacker,victim,Float:amount)
{
    if (get_user_health(victim)-amount <= 1)
    {
        UTIL_Kill(attacker,victim,"world")
    }
    else
    {
        fakedamage(victim,"player",amount,DMG_ENERGYBEAM)
    }
}
stock Find_Best_Angle(id,Float:dist, same_team = false)
{
    new Float:bestangle = 0.0
    new winner = -1
   
    for (new i=0; i < MAX; i++)
    {
        if (!is_user_alive(i) || i == id || (get_user_team(i) == get_user_team(id) && !same_team))
            continue
       
        if (get_user_team(i) != get_user_team(id) && same_team)
            continue
       
        new Float:c_angle = Find_Angle(id,i,dist)
       
        if (c_angle > bestangle && Can_Trace_Line(id,i))
        {
            winner = i
            bestangle = c_angle
        }
       
    }
   
    return winner
}
stock bool:Can_Trace_Line(id, target)
{   
    for (new i=-35; i < 60; i+=35)
    {       
        new Float:Origin_Id[3]
        new Float:Origin_Target[3]
        new Float:Origin_Return[3]
       
        pev(id,pev_origin,Origin_Id)
        pev(target,pev_origin,Origin_Target)
       
        Origin_Id[z] = Origin_Id[z] + i
        Origin_Target[z] = Origin_Target[z] + i
       
        trace_line(-1, Origin_Id, Origin_Target, Origin_Return)
       
        if (get_distance_f(Origin_Return,Origin_Target) < 25.0)
            return true
       
    }
   
    return false
}
public item_hook(id)
{
    if (used_item[id])
    {
        hudmsg(id,2.0,"Poti folosi agatarea unui inamic odata la fiecare runda")
        client_cmd(id, "spk buttons/blip1.wav")
       
        return PLUGIN_CONTINUE   
    }
   
    new target = Find_Best_Angle(id,1000.0,false)
   
    if (!is_valid_ent(target))
    {
        hudmsg(id,2.0,"Nu sunt tinte in linie ca sa le agheti")
        client_cmd(id, "spk buttons/blip1.wav")
       
        return PLUGIN_CONTINUE
    }
   
    AddFlag(id,Flag_Hooking)
   
    set_user_gravity(target,0.0)
    set_task(0.1,"hook_prethink",id+TASK_HOOK,"",0,"b")
    hooked[id] = target
    hook_prethink(id+TASK_HOOK)
    emit_sound(id,CHAN_VOICE,"weapons/xbow_hit2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)
   
    used_item[id] = true   
    return PLUGIN_HANDLED
   
}
public hook_prethink(id)
{
    id -= TASK_HOOK
    if(!is_user_alive(id) || !is_user_alive(hooked[id]))
    {
        RemoveFlag(id,Flag_Hooking)
        return PLUGIN_HANDLED
    }
    if (get_user_button(id) & ~IN_USE)
    {
        RemoveFlag(id,Flag_Hooking)
        return PLUGIN_HANDLED   
    }
    if(!HasFlag(id,Flag_Hooking))
    {
        if (is_user_alive(hooked[id]))
            set_user_gravity(id,1.0)
        remove_task(id+TASK_HOOK)
        return PLUGIN_HANDLED
    }
   
    static origin1[3]
    get_user_origin(id,origin1)
   
    static origin2[3]
    get_user_origin(hooked[id],origin2)
   
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte(1)       
    write_short(id)       
    write_coord(origin2[0])
    write_coord(origin2[1])
    write_coord(origin2[2])
    write_short(sprite_line)
    write_byte(1)       
    write_byte(1)       
    write_byte(2)       
    write_byte(5)       
    write_byte(0)       
    write_byte(0)       
    write_byte(0)       
    write_byte(255)       
    write_byte(200)       
    write_byte(0)       
    message_end()
   
    new Float:velocity[3]
    velocity[0] = (float(origin1[0]) - float(origin2[0])) * 3.0
    velocity[1] = (float(origin1[1]) - float(origin2[1])) * 3.0
    velocity[2] = (float(origin1[2]) - float(origin2[2])) * 3.0
   
    new Float:dy
    dy = velocity[0]*velocity[0] + velocity[1]*velocity[1] + velocity[2]*velocity[2]
   
    new Float:dx
    dx = (4+player_intelligence[id]/2) * 120.0 / floatsqroot(dy)
   
    velocity[0] *= dx
    velocity[1] *= dx
    velocity[2] *= dx
   
    set_pev(hooked[id],pev_velocity,velocity)
   
    return PLUGIN_CONTINUE
}
public item_gravitybomb(id)
{   
    if (pev(id,pev_flags) & FL_ONGROUND)
    {
        hudmsg(id,2.0,"Trebuie sa fi in aer ca sa aterizei repede")
        client_cmd(id, "spk buttons/blip1.wav")
       
        return PLUGIN_CONTINUE
    }
   
    if (halflife_time()-gravitytimer[id] <= 3)
    {
        hudmsg(id,2.0,"Aceasta abilitate poate fi folosita la fiecare 3 secunde")
        client_cmd(id, "spk buttons/blip1.wav")
       
        return PLUGIN_CONTINUE
    }
   
    gravitytimer[id] = floatround(halflife_time())
   
    new origin[3]
    get_user_origin(id,origin)
   
    if (origin[2] == 0)
        earthstomp[id] = 1
    else
        earthstomp[id] = origin[2]
   
    set_user_gravity(id,5.0)
    falling[id] = true
   
       
    return PLUGIN_CONTINUE
   
}
public add_bonus_stomp(id)
{
    add_gravity_bonus(id)
   
    new origin[3]
    get_user_origin(id,origin)
   
    new dam = earthstomp[id]-origin[2]
   
    earthstomp[id] = 0
   
    if (dam < 80)
        return PLUGIN_CONTINUE
       
    dam = dam-80
   
    message_begin(MSG_ONE , get_user_msgid("ScreenShake") , {0,0,0} ,id)
    write_short( 1<<14 );
    write_short( 1<<12 );
    write_short( 1<<14 );
    message_end();
       
    new entlist[513]
    new numfound = find_sphere_class(id,"player",230.0+player_strength[id]*2,entlist,512)
   

    for (new i=0; i < numfound; i++)
    {       
        new pid = entlist[i]
           
        if (pid == id || !is_user_alive(pid))
            continue
           
        if (get_user_team(id) == get_user_team(pid))
            continue
           
        new Float:id_origin[3]
        new Float:pid_origin[3]
        new Float:delta_vec[3]
       
        pev(id,pev_origin,id_origin)
        pev(pid,pev_origin,pid_origin)
       
       
        delta_vec[x] = (pid_origin[x]-id_origin[x])+10
        delta_vec[y] = (pid_origin[y]-id_origin[y])+10
        delta_vec[z] = (pid_origin[z]-id_origin[z])+200
       
        set_pev(pid,pev_velocity,delta_vec)
                       
        message_begin(MSG_ONE , get_user_msgid("ScreenShake") , {0,0,0} ,pid)
        write_short( 1<<14 );
        write_short( 1<<12 );
        write_short( 1<<14 );
        message_end();
       
        if (get_user_health(pid) - dam <= 0)
            UTIL_Kill(id,pid,"world")
        else
            set_user_health(pid,get_user_health(pid)-dam)
           
               
               
    }
       
    return PLUGIN_CONTINUE
}
public item_rot(id)
{
    if (used_item[id])
    {
        RemoveFlag(id,Flag_Rot)
        used_item[id] = false
    }
    else
    {
        if (find_ent_by_owner(-1,"Effect_Rot",id) > 0)
            return PLUGIN_CONTINUE
           
        Create_Rot(id)
        used_item[id] = true
    }
   
    return PLUGIN_CONTINUE
}
public Create_Rot(id)
{       
    new ent = Spawn_Ent("info_target")
    set_pev(ent,pev_classname,"Effect_Rot")
    set_pev(ent,pev_owner,id)
    set_pev(ent,pev_solid,SOLID_NOT)
    AddFlag(id,Flag_Rot)
    set_pev(ent,pev_nextthink, halflife_time() + 0.1)   
           
}
public Effect_Rot_Think(ent)
{
    new id = pev(ent,pev_owner)
    if (!is_user_alive(id) || !HasFlag(id,Flag_Rot) || !freeze_ended)
    {
        Display_Icon(id,255,255,0,"dmg_bio",0)   
        set_user_maxspeed(id,245.0+player_dextery[id])
        set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,16) 
        remove_entity(ent)
        return PLUGIN_CONTINUE
    }
   
    set_user_maxspeed(id,252.0+player_dextery[id]+15)
    Display_Icon(id,255,150,0,"dmg_bio",1)   
    set_rendering ( id, kRenderFxGlowShell, 255,255,0, kRenderFxNone, 10 )
   
    new entlist[513]
    new numfound = find_sphere_class(id,"player",250.0,entlist,512)
   
    for (new i=0; i < numfound; i++)
    {       
        new pid = entlist[i]
           
        if (pid == id || !is_user_alive(pid))
            continue
           
        if (get_user_team(id) == get_user_team(pid))
            continue
       
        if (random_num(1,2) == 1)
        {
            message_begin(MSG_ONE,gmsgFade,{0,0,0},pid)
            write_short( 1<<14 )
            write_short( 1<<14 )
            write_short( 1<<16 )
            write_byte( 255 )
            write_byte( 155 )
            write_byte( 50 )
            write_byte( 230 )
            message_end()
        }
       
        Hurt_Entity(id,pid,45.0)
        Effect_Bleed(pid,100)
        Create_Slow(pid,3)
       
    }
   
    if (get_user_health(id)-10 <= 0)
        UTIL_Kill(id,id,"world")
    else
        set_user_health(id,get_user_health(id)-10)
       
    set_pev(ent,pev_nextthink, halflife_time() + 0.8)
    return PLUGIN_CONTINUE
}
stock Create_Slow(id,seconds)
{       
    new ent = Spawn_Ent("info_target")
    set_pev(ent,pev_classname,"Effect_Slow")
    set_pev(ent,pev_owner,id)
    set_pev(ent,pev_ltime, halflife_time() + seconds + 0.1)
    set_pev(ent,pev_solid,SOLID_NOT)
    set_pev(ent,pev_nextthink, halflife_time() + 0.1)   
           
    AddFlag(id,Flag_Dazed)
}
public Effect_Slow_Think(ent)
{
    new id = pev(ent,pev_owner)
    if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id))
    {
        Display_Icon(id,255,255,0,"dmg_heat",0)   
        RemoveFlag(id,Flag_Dazed)
        set_user_maxspeed(id,245.0+player_agility[id])
        remove_entity(ent)
        return PLUGIN_CONTINUE
    }
   
    set_user_maxspeed(id,245.0-50)
    Display_Icon(id,255,255,0,"dmg_heat",1)   
    set_pev(ent,pev_nextthink, halflife_time() + 1.0)
    return PLUGIN_CONTINUE
}
stock AddTimedFlag(id,flag,seconds)
{       
    new ent = Spawn_Ent("info_target")
    set_pev(ent,pev_classname,"Effect_Timedflag")
    set_pev(ent,pev_owner,id)
    set_pev(ent,pev_ltime, halflife_time() + seconds + 0.1)
    set_pev(ent,pev_solid,SOLID_NOT)
    set_pev(ent,pev_euser3,flag)           
    AddFlag(id,flag)   
    set_pev(ent,pev_nextthink, halflife_time() + 0.1)
}
public Effect_Timedflag_Think(ent)
{
    new id = pev(ent,pev_owner)
    if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id))
    {
        RemoveFlag(id,pev(ent,pev_euser3))
        remove_entity(ent)
        return PLUGIN_CONTINUE
    }
   
    set_pev(ent,pev_nextthink, halflife_time() + 1.0)
    return PLUGIN_CONTINUE
}
public item_illusion(id)
{
    if (used_item[id])
    {
        hudmsg(id,2.0,"Poti folosi acest item odata la fiecare runda")
        client_cmd(id, "spk buttons/blip1.wav")
       
        return PLUGIN_CONTINUE
    }

    AddTimedFlag(id,Flag_Illusion,7)
    message_begin( MSG_ONE, gmsgBartimer, {0,0,0}, id )
    write_byte( 7)
    write_byte( 0 )
    message_end()
    used_item[id] = true
    use_addtofullpack = true
    return PLUGIN_CONTINUE
   
}
public item_money_shield(id)
{
    if (used_item[id])
    {
        RemoveFlag(id,Flag_Moneyshield)
        used_item[id] = false
    }
    else
    {
        if (find_ent_by_owner(-1,"Effect_MShield",id) > 0)
            return PLUGIN_CONTINUE
           
        new ent = Spawn_Ent("info_target")
        set_pev(ent,pev_classname,"Effect_MShield")
        set_pev(ent,pev_owner,id)
        set_pev(ent,pev_solid,SOLID_NOT)       
        AddFlag(id,Flag_Moneyshield)   
        set_pev(ent,pev_nextthink, halflife_time() + 0.1)
        used_item[id] = true
    }
   
    return PLUGIN_CONTINUE
}
public Effect_MShield_Think(ent)
{
    new id = pev(ent,pev_owner)
    if (!is_user_alive(id) || cs_get_user_money(id) <= 0 || !HasFlag(id,Flag_Moneyshield) || !freeze_ended)
    {
        RemoveFlag(id,Flag_Moneyshield)
        set_user_rendering(id,kRenderFxGlowShell,0,0,0,kRenderNormal,16) 
        Display_Icon(id,255,255,255,"suithelmet_empty",0)
        remove_entity(ent)
        return PLUGIN_CONTINUE
    }
   
    if (cs_get_user_money(id)-250 < 0)
        cs_set_user_money(id,0)
    else
        cs_set_user_money(id,cs_get_user_money(id)-250)
       
    set_rendering ( id, kRenderFxGlowShell, 255,255,255, kRenderFxNone, 10 )
    Display_Icon(id,255,255,255,"suithelmet_empty",1)
   
    set_pev(ent,pev_nextthink, halflife_time() + 1.0)
    return PLUGIN_CONTINUE
}
public item_mine(id)
{
    new count = 0
    new ents = -1
    ents = find_ent_by_owner(ents,"Mine",id)
    while (ents > 0)
    {
        count++
        ents = find_ent_by_owner(ents,"Mine",id)
    }
   
    if (count > 2)
    {
        hudmsg(id,2.0,"Maxim 3 mine la fiecare runda")
        client_cmd(id, "spk buttons/blip1.wav")
       
        return PLUGIN_CONTINUE
    }
   
   
    new origin[3]
    pev(id,pev_origin,origin)
       
    new ent = Spawn_Ent("info_target")
    set_pev(ent,pev_classname,"Mine")
    set_pev(ent,pev_owner,id)
    set_pev(ent,pev_movetype,MOVETYPE_TOSS)
    set_pev(ent,pev_origin,origin)
    set_pev(ent,pev_solid,SOLID_BBOX)
   
    engfunc(EngFunc_SetModel, ent, "models/mine.mdl") 
    engfunc(EngFunc_SetSize,ent,Float:{-16.0,-16.0,0.0},Float:{16.0,16.0,2.0})
   
    drop_to_floor(ent)
   
    entity_set_float(ent,EV_FL_nextthink,halflife_time() + 0.01)
   
    use_addtofullpack = true
   
    return PLUGIN_CONTINUE
}
public Mine_Think(ent)
{
    if (!freeze_ended)
        remove_entity(ent)
    else
        entity_set_float(ent,EV_FL_nextthink,halflife_time() + 1.0)
}
public item_teamshield(id)
{
    if (used_item[id])
    {
        RemoveFlag(id,Flag_Teamshield)
        used_item[id] = false
    }
    else
    {
        new target = Find_Best_Angle(id,1000.0,true)
       
        if (!is_valid_ent(target))
        {
            hudmsg(id,2.0,"Nici o tinta in linie ca sa protejezi")
            client_cmd(id, "spk buttons/blip1.wav")
           
            return PLUGIN_CONTINUE
        }
       
        if (pev(target,pev_rendermode) == kRenderTransTexture || player_item_id[target] == 17)
        {
            hudmsg(id,2.0,"Nu poti pune scut pe jucatorii invizibili")
            client_cmd(id, "spk fvox/warning.wav")
           
            return PLUGIN_CONTINUE
        }
       
        if (find_ent_by_owner(-1,"Effect_Teamshield",id) > 0)
            return PLUGIN_CONTINUE
       
        new ent = Spawn_Ent("info_target")
        set_pev(ent,pev_classname,"Effect_Teamshield")
        set_pev(ent,pev_owner,id)
        set_pev(ent,pev_solid,SOLID_NOT)
        set_pev(ent,pev_nextthink, halflife_time() + 0.1)   
        set_pev(ent,pev_euser2, target)   
               
        AddFlag(id,Flag_Teamshield)
        AddFlag(target,Flag_Teamshield_Target)
        used_item[id] = true
    }
   
    return PLUGIN_CONTINUE
}
public Effect_Teamshield_Think(ent)
{
    new id = pev(ent,pev_owner)
    new victim = pev(ent,pev_euser2)
               
    if (!is_user_alive(id) || !is_user_alive(victim) || !Can_Trace_Line(id,victim) || !UTIL_In_FOV(id,victim) || !HasFlag(id,Flag_Teamshield) || !freeze_ended)
    {
        set_rendering (victim, kRenderFxNone, 0,0,0, kRenderFxNone, 0 )
        RemoveFlag(id,Flag_Teamshield)
        RemoveFlag(victim,Flag_Teamshield_Target)
        remove_entity(ent)
        return PLUGIN_CONTINUE
    }
    else       
        set_pev(ent,pev_nextthink, halflife_time() + 0.3)
               
    new origin1[3]
    new origin2[3]
   
    get_user_origin(id,origin1)
    get_user_origin(victim,origin2)
   
    message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
    write_byte (TE_BEAMPOINTS)
    write_coord(origin1[0])
    write_coord(origin1[1])
    write_coord(origin1[2]+8)
    write_coord(origin2[0])
    write_coord(origin2[1])
    write_coord(origin2[2]+8)
    write_short(sprite_laser);
    write_byte(1)
    write_byte(1)
    write_byte(3)
    write_byte(5)
    write_byte(10)
    write_byte(0)
    write_byte(255)
    write_byte(0)
    write_byte(45) 
    write_byte(5)
    message_end()   
   
    set_rendering ( victim, kRenderFxGlowShell, 0,200,0, kRenderFxNone, 0 )
   
    return PLUGIN_CONTINUE
}
public find_owner_by_euser(target,classname[])
{
    new ent = -1
    ent = find_ent_by_class(ent,classname)

    while (ent > 0)
    {
        if (pev(ent,pev_euser2) == target)
            return pev(ent,pev_owner)
        ent = find_ent_by_class(ent,classname)
    }
   
    return -1
}
public item_totemheal(id)
{
    if (used_item[id])
    {
        hudmsg(id,2.0,"Poti plasa un totem de vindecare odata la fiecare runda")
        client_cmd(id, "spk buttons/blip1.wav")
       
        return PLUGIN_CONTINUE
    }
   
    used_item[id] = true
   
    new origin[3]
    pev(id,pev_origin,origin)
       
    new ent = Spawn_Ent("info_target")
    set_pev(ent,pev_classname,"Effect_Healing_Totem")
    set_pev(ent,pev_owner,id)
    set_pev(ent,pev_solid,SOLID_TRIGGER)
    set_pev(ent,pev_origin,origin)
    set_pev(ent,pev_ltime, halflife_time() + 7 + 0.1)
   
    engfunc(EngFunc_SetModel, ent, "models/totem_heal.mdl")     
    set_rendering ( ent, kRenderFxGlowShell, 255,0,0, kRenderFxNone, 255 )   
    engfunc(EngFunc_DropToFloor,ent)
   
    set_pev(ent,pev_nextthink, halflife_time() + 0.1)
   
    return PLUGIN_CONTINUE   
}
public Effect_Healing_Totem_Think(ent)
{
    new id = pev(ent,pev_owner)
    new totem_dist = 300
    new amount_healed = player_b_heal[id]
   
    if (pev(ent,pev_euser2) == 1)
    {       
        new Float:forigin[3], origin[3]
        pev(ent,pev_origin,forigin)   
        FVecIVec(forigin,origin)
       
        new entlist[513]
        new numfound = find_sphere_class(0,"player",totem_dist+0.0,entlist,512,forigin)
       
        for (new i=0; i < numfound; i++)
        {       
            new pid = entlist[i]
           
            if (get_user_team(pid) != get_user_team(id))
                continue
               
               
            if (is_user_alive(pid) && get_user_health(pid) + amount_healed < 100+player_strength[pid]*2)
                set_user_health(pid,get_user_health(pid)+amount_healed)
            else
                set_user_health(pid,100+player_strength[pid]*2)               
        }
       
       
        set_pev(ent,pev_euser2,0)
        set_pev(ent,pev_nextthink, halflife_time() + 1.5)
       
        return PLUGIN_CONTINUE
    }
   
    if (pev(ent,pev_ltime) < halflife_time() || !is_user_alive(id))
    {
        remove_entity(ent)
        return PLUGIN_CONTINUE
    }
   
   
    if (pev(ent,pev_ltime)-2.0 < halflife_time())
        set_rendering ( ent, kRenderFxNone, 255,255,255, kRenderTransAlpha, 100 )
       
       
   
    new Float:forigin[3], origin[3]
    pev(ent,pev_origin,forigin)   
    FVecIVec(forigin,origin)
   
   
    message_begin( MSG_BROADCAST, SVC_TEMPENTITY, origin );
    write_byte( TE_BEAMCYLINDER );
    write_coord( origin[0] );
    write_coord( origin[1] );
    write_coord( origin[2] );
    write_coord( origin[0] );
    write_coord( origin[1] + totem_dist );
    write_coord( origin[2] + totem_dist );
    write_short( sprite_white );
    write_byte( 0 );
    write_byte( 0 );
    write_byte( 10 );
    write_byte( 10 );
    write_byte( 255 );
    write_byte( 255 );
    write_byte( 100 );
    write_byte( 100 );
    write_byte( 128 );
    write_byte( 5 );
    message_end();
       
    set_pev(ent,pev_euser2,1)
    set_pev(ent,pev_nextthink, halflife_time() + 0.5)
   
       
    return PLUGIN_CONTINUE

}



All times are GMT -4. The time now is 03:12.

Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.