AlliedModders

AlliedModders (https://forums.alliedmods.net/index.php)
-   Scripting Help (https://forums.alliedmods.net/forumdisplay.php?f=11)
-   -   coordination (https://forums.alliedmods.net/showthread.php?t=220177)

indradullanov 07-07-2013 23:02

coordination
 
can help me? where coordination boss Oberon create​​?



PHP Code:

#include <amxmodx> 
#include <engine> 
#include <fakemeta> 
#include <cstrike> 
#include <hamsandwich> 
#include <xs> 

// NRS includes 
#include <nrs_main> 
#include <nrs_const> 


#define PLUGIN                             "[NRS] : Oberon" 
#define    TITLE                            "[NRS]" 
#define VERSION                         "1.3" 
#define AUTHOR                             "Good_Hash + Dias" 
#define MAP_NEXT                        "cs_italy" 
#define    MAX_ZOMBIE_ID                        4 


#define OBERON_HEALTH                        150000.0 
#define MONEY_DMG                        1000.0 
#define MONEY_REWARD                        1000 
#define CLASS_NAME                        "npc_oberon" 
#define CLASS_TIP                        "Oberon Boss" 
#define OBERON_ATTACK_WAITIME                     3.0 
     
// Some defines for tasks 
#define TASK_INIT                        1000 
#define TASK_SPELL                        1001 
#define TASK_RESET                        1002 
#define TASK_BERSERKER                        1003 
#define TASK_EFFECT                        1004 
#define TASK_HOOKINGUP                        1005 
#define TASK_HOOKINGDOWN                    1006 
#define TASK_BOMBING                        1007 
#define TASK_SWARM                        1008 
#define TASK_CREATE                        1009 

// Animations.. 
#define ANIMATION_SPAWN                        1 
#define ANIMATION_SPAWN_TIME                    6.2 

#define OBERON_ATTACK2_DAMAGE                    10.0 
#define ANIMATION_ATTACK_2                    7 
#define ANIMATION_ATTACK_2_TIME                    2.03 
#define ANIMATION_ATTACK_2_BERSERKER                15 
#define ANIMATION_ATTACK_2_BERSERKER_TIME            1.53 

#define ANIMATION_ATTACK_3                    8 
#define ANIMATION_ATTACK_3_TIME                    4.0 
#define ANIMATION_ATTACK_3_BERSERKER                16 
#define ANIMATION_ATTACK_3_BERSERKER_TIME            4.0 

#define ANIMATION_ATTACK_BOMB                    9 
#define ANIMATION_ATTACK_BOMB_TIME                11.2 
#define ANIMATION_ATTACK_BOMB_BERSERKER                18 
#define ANIMATION_ATTACK_BOMB_BERSERKER_TIME            11.2 


#define ANIMATION_ATTACK_HOLE                    10 
#define ANIMATION_ATTACK_HOLE_TIME                6.02 
#define ANIMATION_ATTACK_HOLE_BERSERKER                19 
#define ANIMATION_ATTACK_HOLE_BERSERKER_TIME            6.02 

#define ANIMATION_BERSERKER                    11 
#define ANIMATION_BERSERKER_TIME                8.7 


                    // IMPALE STRIKE 
new Float:g_poison_touch[33
new const 
skill_tentacle[][] = {  
    
"models/dione/ef_tentacle_sign.mdl",  
    
"models/dione/tentacle.mdl",  
    
"models/dione/ef_tentacle.mdl"  
}  
#define TENACLE_TASK        42141 
                    // IMPALE STRIKE 


new last_entg_npc_idg_Counter 
new g_class_modelindexexp_spr_id 
new g_class_pmodel[164] = "models/oberon/zbs_bossl_big02.mdl" 
new const oberon_bomb_model[] = "models/oberon/zbs_bossl_big02_bomb.mdl" 
new const oberon_hole_effect[] = "models/oberon/ef_hole.mdl" 
new const oberon_knife_effect[] = "models/oberon/ef_knife.mdl" 

new const oberon_appear_sound[] = "oberon/appear.wav" 
new const oberon_attack1_sound[] = "oberon/attack1.wav" 
new const oberon_attack2_sound[] = "oberon/attack2.wav" 
new const oberon_berserk_attack1_sound[] = "oberon/knife_attack1.wav" 
new const oberon_berserk_attack2_sound[] = "oberon/knife_attack2.wav" 
new const oberon_berserker_sound[] = "oberon/knife.wav" 
new const oberon_attack_hole_sound[] = "oberon/hole.wav" 
new const oberon_bomb_sound[] = "oberon/attack_bomb.wav" 

new const oberon_jump_sound[] = "oberon/attack3_jump.wav" 
new const oberon_jumpdamage_sound[] = "oberon/attack3.wav" 
new const oberon_bjump_sound[] = "oberon/knife_attack3_jump.wav" 
new const oberon_bjumpdamage_sound[] = "oberon/knife_attack3.wav" 

new bool:g_incast[516], bool:g_berserker[516], bool:g_already_bombingg_oberons_aliveFloat:zombie_timer[516], g_created_zombie 
new Float:Damage_Money[33], g_damage_done[33

public 
plugin_init() 

    
register_plugin(PLUGINVERSIONAUTHOR
    
register_touch("tentacle2""*""fw_tentacle_touch"
     
    
RegisterHam(Ham_TakeDamage"player""Block_Doing_Damage"
    
RegisterHam(Ham_Spawn"player""PlayerSpawn"1
     
    
//register_clcmd("say /god", "test_attack2") 
    
register_concmd("oberon_tentakle""test_tentakle"
    
register_concmd("oberon_hole""test_hole"
    
register_concmd("oberon_bomb""test_bomb"



FindBuyZones( ) { 
    new 
iEntity = -1
     
    while( ( 
iEntity find_ent_by_classiEntity"func_buyzone" ) ) > 
    { 
        return 
iEntity 
    

    return 




public 
event_gamestarted() 

    
g_Counter 25 
     
    
if ( task_exists(TASK_CREATE) ) 
    { 
        
remove_task(TASK_CREATE
    } 
    
Start_Creating() 


public 
Start_Creating() 

    
g_Counter-- 
    if ( 
g_Counter 
    { 
        
set_task(1.0"Start_Creating"TASK_CREATE
        
set_hudmessage(02550, -1.0, -0.67
        
show_hudmessage(0"Start in %i sec"g_Counter
    } 
    else 
    { 
        
set_task(1.0"Double_Oberon"TASK_CREATE
        
set_hudmessage(25500, -1.0, -0.672
        
show_hudmessage(0"SUPERNOVA IYI EGLENCELER DILER!!!!!!"
    } 

     
public 
Double_Oberon() 

    new 
Float:fOrigin[3
    
create_npc(fOriging_npc_id
    
create_npc(fOriging_npc_id
    
g_oberons_alive 



public 
PlayerSpawn(id
    if ( 
is_user_alive(id) ) 
        
cs_set_user_money(id16000
     
public 
Block_Doing_Damage(victiminflictorattackerFloat:damagedamagetype

    if(
damagetype DMG_GENERIC || victim == attacker || !is_user_alive(victim) || !is_user_connected(attacker)) 
        return 
HAM_IGNORED 
     
    
if ( is_user_connected(victim) && is_user_connected(attacker) ) 
        return 
HAM_SUPERCEDE 
         
    
return HAM_IGNORED 



public 
test_attack2(id

    
set_pev(idpev_health1012.0

public 
test_hole(id

    if ( 
g_incast[last_ent] ) 
        return 
PLUGIN_HANDLED 
    g_incast
[last_ent] = true 
    set_task
(0.3"oberon_skill_hole"last_ent TASK_SPELL
    return 
PLUGIN_HANDLED 

public 
test_tentakle(id

    if ( 
g_incast[last_ent] ) 
        return 
PLUGIN_HANDLED 
    g_incast
[last_ent] = true 
    set_task
(0.3"oberon_skill_impale"last_ent TASK_SPELL
    return 
PLUGIN_HANDLED 

public 
test_bomb(id

    if ( 
g_incast[last_ent] ) 
        return 
PLUGIN_HANDLED 
    g_incast
[last_ent] = true 
    set_task
(0.3"oberon_skill_bombs"last_ent TASK_SPELL
    return 
PLUGIN_HANDLED 



public 
event_npc_damage_start(ent

    if ( !
pev_valid(ent) ) 
        return 
PLUGIN_CONTINUE
         
    if ( 
get_npc_id(ent) == g_npc_id 
    { 
        if ( 
g_incast[ent] ) 
            return 
PLUGIN_HANDLED 
             
        
if ( g_berserker[ent] ) 
            
emit_sound(entCHAN_BODYoberon_berserk_attack1_sound1.0ATTN_NORM0PITCH_NORM
        else 
            
emit_sound(entCHAN_BODYoberon_attack1_sound1.0ATTN_NORM0PITCH_NORM
         
        
g_incast[ent] = true 
        
new Float:timed
        if ( !
g_berserker[ent] ) 
            
timed OBERON_ATTACK_WAITIME 
        
else 
            
timed 2.0 
         
        set_task
(timed+0.3"oberon_reset"ent TASK_RESET
    } 
     
    return 
PLUGIN_CONTINUE


public 
event_npc_damage_delayed(ent
    
oberon_berser_effects(ent
     

public 
event_npc_damage(entattackerFloat:damage

    if ( !
pev_valid(ent) ) 
        return; 
    if ( 
get_npc_id(ent) != g_npc_id 
        return 
         
    
Damage_Money[attacker] += damage
    
g_damage_done[attacker] += floatround(damage
         
    if(
Damage_Money[attacker] >= MONEY_DMG
    { 
        
Damage_Money[attacker] -= MONEY_DMG 
                 
        cs_set_user_money
(attackercs_get_user_money(attacker) + MONEY_REWARD
    } 
             
    if ( 
pev(entpev_health) <= get_npc_data(g_npc_idDATA_HEALTH)*0.5 
        if ( !
g_berserker[ent] ) 
        { 
            if ( 
g_incast[ent] ) 
            { 
                
set_task(3.0"oberon_berserker_on"ent+TASK_BERSERKER__"b"
            } 
            else 
            { 
                
oberon_berserker_on(ent
            } 
        } 



public 
oberon_berserker_on(ent

    if ( 
ent TASK_BERSERKER 
        
ent -= TASK_BERSERKER 
    
if ( !pev_valid(ent) || g_incast[ent] ) 
        return 
     
    
task_exists(ent TASK_BERSERKER) ? remove_task(ent TASK_BERSERKER) : 
    g_incast
[ent] = true 
    g_berserker
[ent] = true 
    npc_reset_animation
(ent
    
set_npc_events(entEVENT_CUSTOM
    
npc_set_berserker(ent1
    
npc_set_animation(entANIMATION_BERSERKERANIMATION_BERSERKER_TIME
     
    
emit_sound(entCHAN_BODYoberon_berserker_sound1.0ATTN_NORM0PITCH_NORM
    
set_task(ANIMATION_BERSERKER_TIME"oberon_reset"ent TASK_RESET


     
public 
event_npc_init(ent

    if ( !
pev_valid(ent) ) 
        return; 
         
    if ( 
get_npc_id(ent) == g_npc_id 
    { 
        
last_ent ent 
        set_npc_boss
(enttrue
        
npc_reset_move(ent
        
g_berserker[ent] = false 
        g_incast
[ent] = true 
        set_npc_events
(entEVENT_CUSTOM
        
npc_set_animation(entANIMATION_SPAWNANIMATION_SPAWN_TIME
        
set_task(ANIMATION_SPAWN_TIME"npc_start"ent+TASK_INIT
        
//set_task(30.0, "oberon_call_zombie", ent+TASK_SWARM, _,_,"b") 
        
emit_sound(entCHAN_BODYoberon_appear_sound1.0ATTN_NORM0PITCH_NORM
    } 




public 
oberon_call_zombie(ent

    
ent -= TASK_SWARM 
    
if ( !pev_valid(ent) ) 
    { 
        
remove_task(ent TASK_SWARM
        return 
    } 
     
    if (
zombie_timer[ent] <= get_gametime() ) 
    { 
        new 
zombie_calls random_num(1,10)*g_oberons_alive 
        
new zombie_online 5*g_oberons_alive 
        
new parm[3
        
parm[0] = zombie_calls 
        parm
[1] = zombie_online 
        parm
[2] = ent 
        set_task
(1.0"_oberon_call_zombie"ent+TASK_SWARMparm3
         
    } 


public 
_oberon_call_zombie(parm[3]) 

    new 
zombie_calls parm[0
    new 
zombie_online parm[1
    new 
ent parm[2
    new 
random_zombie[50
    
formatex(random_zombie49"npc_cso_zm%i"random_num(1,MAX_ZOMBIE_ID)) 
    if ( 
g_created_zombie zombie_online 
    { 
        if ( 
zombie_calls 
        { 
            new 
Float:fOrigin[3
            
create_npc(fOriginget_npc_classname_id(random_zombie)) 
            
zombie_calls-- 
            
g_created_zombie++ 
             
            
parm[0] = zombie_calls 
            parm
[1] = zombie_online 
            set_task
(1.0"_oberon_call_zombie"ent+TASK_SWARMparm3
        } 
    } 



public 
event_npc_death(entkiller

    if ( 
get_npc_id(ent) == g_npc_id 
    { 
        
g_oberons_alive-- 
        new 
kkname[33], biggest_damage 0biggest_damage_id 
             
        
for (k=1k<33k++) 
        { 
            if ( 
g_damage_done[k] > biggest_damage 
            { 
                
biggest_damage g_damage_done[k]; 
                
biggest_damage_id k
            } 
        } 
        
get_user_name(biggest_damage_idkname32
             
        if (
g_oberons_alive 
        { 
            new 
name[33
            
get_user_name(killername32
            
client_print(0print_chat"%s Killer: %s | Damager: %s ( %i )"TITLEnameknamebiggest_damage
             
            
#if defined WAR3FT_SUPPORT 
            
for (new =033i++ ) 
                if  ( 
is_user_connected(i) ) 
                    
give_user_xp(iWIN_GAMEfalsetrue"GIFT"
            
#endif 
        

        else 
        { 
            new 
name[33
            
get_user_name(killername32
            
client_print(0print_chat"%s Game end, thank you! Killer: %s | Damager: %s ( %i )"TITLEnameknamebiggest_damage
            
client_print(0print_chat"Next map: %s"MAP_NEXT
            
set_task(15.0"changelevel_pls"
             
            
#if defined WAR3FT_SUPPORT 
            
for (new =033i++ ) 
                if  ( 
is_user_connected(i) ) 
                    
give_user_xp(iWIN_GAMEfalsetrue"GIFT"
            
#endif 
        

        return 
    } 
    
// add award later! 
    
g_created_zombie-- 


public 
changelevel_pls() 

    
server_cmd("changelevel ^"%s^""MAP_NEXT



public 
npc_start(ent

    
ent -= TASK_INIT 
    
if ( !pev_valid(ent) ) 
        return 
         
    
g_incast[ent] = false 
    set_npc_events
(entEVENT_AGRESSION
    
set_task(random_float(1.010.0), "oberon_spell_casting"ent TASK_SPELL 



public 
oberon_reset(ent

    
ent -= TASK_RESET 
    
if ( !pev_valid(ent) ) 
        return 
    
set_npc_events(entEVENT_AGRESSION
    
g_incast[ent] = false
    
task_exists(ent+TASK_HOOKINGDOWN) ? remove_task(ent+TASK_HOOKINGDOWN):0



public 
oberon_spell_casting(ent

    if ( 
ent TASK_SPELL 
        
ent -= TASK_SPELL 
    
if ( !pev_valid(ent) || !pev(entpev_health)) 
        return 
         
    
set_task(random_float(1.05.0), "oberon_spell_casting"ent TASK_SPELL 
     
    if ( 
g_incast[ent] ) 
    { 
        return 
    } 
     
    
npc_reset_animation(ent
    
npc_reset_move(ent
    new 
SPELL_ID random_num(0,7
    switch (
SPELL_ID
    { 
        case 
: return 
        case 

        { 
            if ( 
oberon_skill_attack2_check(ent) ) 
            { 
                
g_incast[ent] = true 
                set_task
(0.3"oberon_skill_attack2"ent TASK_SPELL
            } 
        } 
        case 
2
        { 
            
g_incast[ent] = true 
            set_task
(0.3"oberon_skill_hole"ent TASK_SPELL
        } 
        case 
3
        { 
            
g_incast[ent] = true 
            set_task
(0.3"oberon_skill_impale"ent TASK_SPELL
        } 
        case 
4
        { 
            
g_incast[ent] = true 
            
if ( g_already_bombing 
                
set_task(0.3"oberon_skill_impale"ent TASK_SPELL
            else 
            { 
                
g_already_bombing true 
                set_task
(0.3"oberon_skill_bombs"ent TASK_SPELL
            } 
        } 
        case 
5
        { 
            
g_incast[ent] = true 
            set_task
(0.3"oberon_skill_hole"ent TASK_SPELL
        } 
        case 
6..7
        { 
            
g_incast[ent] = true 
            set_task
(0.3"oberon_skill_hole"ent TASK_SPELL
            
//bad tests... not working yet! set_task(0.3, "oberon_skill_jump", ent + TASK_SPELL) 
        

    } 

/* 
public oberon_skill_jump(ent) 

    if ( ent > TASK_SPELL ) 
        ent -= TASK_SPELL 
    if ( !pev_valid(ent) ) 
    { 
        remove_task(ent + TASK_SPELL) 
        return 
    } 
         
    set_npc_events(ent, EVENT_CUSTOM) 
    new Float:timed; 
    if ( !g_berserker[ent] ) 
    { 
        emit_sound(ent, CHAN_BODY, oberon_jump_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) 
        timed = ANIMATION_ATTACK_3_TIME 
        npc_set_animation(ent, ANIMATION_ATTACK_3, 0.01) 
    } 
    else 
    { 
        emit_sound(ent, CHAN_BODY, oberon_bjump_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) 
        timed = ANIMATION_ATTACK_3_BERSERKER_TIME 
        npc_set_animation(ent, ANIMATION_ATTACK_3_BERSERKER, 0.01) 
    } 
     
    static Float:target[3] 
    pev(get_npc_target(ent), pev_origin, target) 
    npc_set_move(ent, target) 
     
    set_task(0.01, "hookingup", ent+TASK_HOOKINGUP, _, _, "b") 
    set_task(2.0, "hookingdown", ent+TASK_HOOKINGDOWN) 
    set_task(2.0, "oberon_jump_damage", ent+TASK_SPELL) 
    set_task(timed, "oberon_reset", ent + TASK_RESET) 



public oberon_jump_damage(ent) 

    if ( ent > TASK_SPELL ) 
        ent -= TASK_SPELL 
    if ( !pev_valid(ent) ) 
        return 
     
    static Float:Ent_orig[3], Float:Enemy[3], Float:Aim[3] 
    velocity_by_aim(ent, 300, Aim) 
    xs_vec_mul_scalar(Aim, 3.0, Aim) ; Aim[2] = 300.0 
    pev(ent, pev_origin, Ent_orig) 
     
    if ( !g_berserker[ent] ) 
    { 
        emit_sound(ent, CHAN_BODY, oberon_jumpdamage_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) 
    } 
    else 
    { 
        emit_sound(ent, CHAN_BODY, oberon_bjumpdamage_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) 
    } 
     
    for(new i = 1; i <= get_maxplayers(); i++) 
    { 
        if(!is_user_alive(i)) continue 
         
        pev(i, pev_origin, Enemy) 
        if(get_distance_f(Ent_orig, Enemy) <= 300.0) 
        { 
            set_pev(i, pev_velocity, Aim) 
            npc_do_damage(ent, i, OBERON_ATTACK2_DAMAGE) 
            ScreenShake(i, ((1<<12) * 8), ((2<<12) * 7)) 
            ScreenFade(i, 6, 255, 0, 0, 90) 
        } 
    } 



public hookingup(ent) 

    ent -= TASK_HOOKINGUP 
     
    if ( !pev_valid(ent) ) 
    { 
        remove_task( ent+TASK_HOOKINGUP ) 
        return 
    } 
     
    static Float:Origin[3] 
    pev(ent, pev_origin, Origin) 
     
    Origin[2] += 1000.0 
     
    hook_ent2(ent, Origin, 1000.0)     


public hookingdown(ent) 

    ent -= TASK_HOOKINGDOWN 
     
    remove_task(ent+TASK_HOOKINGUP) 
     
    set_task(0.01, "hookingdown2", ent+TASK_HOOKINGDOWN, _, _, "b") 


public hookingdown2(ent) 

    ent -= TASK_HOOKINGDOWN 
     
    static Float:target[3] 
    pev(get_npc_target(ent), pev_origin, target) 
     
    hook_ent2(ent, target, 1000.0)     

*/ 

public oberon_skill_bombs(ent

    if ( 
ent TASK_SPELL 
        
ent -= TASK_SPELL 
    
if ( !pev_valid(ent) ) 
    { 
        
remove_task(ent TASK_SPELL
        return 
    } 
         
    
set_npc_events(entEVENT_CUSTOM
    new 
Float:timed
    if ( !
g_berserker[ent] ) 
    { 
        
emit_sound(entCHAN_BODYoberon_attack2_sound1.0ATTN_NORM0PITCH_NORM
        
timed ANIMATION_ATTACK_BOMB_TIME 
        npc_set_animation
(entANIMATION_ATTACK_BOMBtimed
    } 
    else 
    { 
        
emit_sound(entCHAN_BODYoberon_berserk_attack2_sound1.0ATTN_NORM0PITCH_NORM
        
timed ANIMATION_ATTACK_BOMB_BERSERKER_TIME 
        npc_set_animation
(entANIMATION_ATTACK_BOMB_BERSERKERtimed
    } 
     
    
set_task(3.0"do_skill_bomb"ent+TASK_BOMBING__"b"
    
set_task(timed-0.1"stop_skill_bomb"ent+TASK_RESET
    
set_task(timed"oberon_reset"ent TASK_RESET


public 
stop_skill_bomb(ent

    if ( 
ent TASK_RESET 
        
ent -= TASK_RESET 
    remove_task
(ent TASK_BOMBING
    
g_already_bombing false 


     
public 
do_skill_bomb(ent

    if ( 
ent TASK_BOMBING 
        
ent -= TASK_BOMBING 
    
if ( !pev_valid(ent) ) 
    { 
        
remove_task(ent TASK_BOMBING
        return 
    } 
         
    static 
Float:StartOrigin[3], Float:TempOrigin[6][3], Float:VicOrigin[6][3], Float:Random1 
     
    pev
(entpev_originStartOrigin
    
StartOrigin[2] += 50 
    emit_sound
(entCHAN_BODYoberon_bomb_sound1.0ATTN_NORM0PITCH_NORM
     
    
// 1st Bomb 
    
Random1 random_float(100.0500.0
    
VicOrigin[0][0] = StartOrigin[0] + Random1 
    VicOrigin
[0][1] = StartOrigin[1
    
VicOrigin[0][2] = StartOrigin[2
     
    
TempOrigin[0][0] = VicOrigin[0][0] - (Random1 2.0
    
TempOrigin[0][1] = VicOrigin[0][1
    
TempOrigin[0][2] = VicOrigin[0][2] + 500.0 
     
    
// 2nd Bomb 
    
Random1 random_float(100.0500.0
    
VicOrigin[1][0] = StartOrigin[0
    
VicOrigin[1][1] = StartOrigin[1] + Random1 
    VicOrigin
[1][2] = StartOrigin[2
     
    
TempOrigin[1][0] = VicOrigin[1][0
    
TempOrigin[1][1] = VicOrigin[1][1] - (Random1 2.0
    
TempOrigin[1][2] = VicOrigin[1][2] + 500.0     
     
    
// 3rd Bomb 
    
Random1 random_float(100.0500.0
    
VicOrigin[2][0] = StartOrigin[0] - Random1 
    VicOrigin
[2][1] = StartOrigin[1
    
VicOrigin[2][2] = StartOrigin[2
     
    
TempOrigin[2][0] = VicOrigin[2][0] - (Random1 2.0
    
TempOrigin[2][1] = VicOrigin[2][1
    
TempOrigin[2][2] = VicOrigin[2][2] + 500.0     
     
    
// 4th Bomb 
    
VicOrigin[3][0] = StartOrigin[0
    
VicOrigin[3][1] = StartOrigin[1] - Random1 
    VicOrigin
[3][2] = StartOrigin[2
     
    
TempOrigin[3][0] = VicOrigin[3][0
    
TempOrigin[3][1] = VicOrigin[3][1] - (Random1 2.0
    
TempOrigin[3][2] = VicOrigin[3][2] + 500.0 
     
    
// 5th Bomb 
    
VicOrigin[4][0] = StartOrigin[0] + Random1 
    VicOrigin
[4][1] = StartOrigin[1] + Random1 
    VicOrigin
[4][2] = StartOrigin[2
     
    
TempOrigin[4][0] = VicOrigin[4][0] - (Random1 2.0
    
TempOrigin[4][1] = VicOrigin[4][1] - (Random1 2.0
    
TempOrigin[4][2] = VicOrigin[4][2] + 500.0 
     
    
// 6th Bomb 
    
VicOrigin[5][0] = StartOrigin[0] + Random1 
    VicOrigin
[5][1] = StartOrigin[1] - Random1 
    VicOrigin
[5][2] = StartOrigin[2
     
    
TempOrigin[5][0] = VicOrigin[5][0] + (Random1 2.0
    
TempOrigin[5][1] = VicOrigin[5][1] - (Random1 2.0
    
TempOrigin[5][2] = VicOrigin[5][2] + 500.0     
     
    
for(new 06i++) 
    { 
        
make_bomb(StartOriginTempOrigin[i], VicOrigin[i]) 
    }     



public 
make_bomb(Float:StartOrigin[3], Float:TempOrigin[3], Float:VicOrigin[3]) 

    new 
ent create_entity("info_target"
     
    
StartOrigin[2] += 20.0 
     
    entity_set_origin
(entStartOrigin
     
    
entity_set_string(ent,EV_SZ_classname"oberon_bomb"
    
entity_set_model(entoberon_bomb_model
    
entity_set_int(entEV_INT_solidSOLID_NOT
    
entity_set_int(entEV_INT_movetypeMOVETYPE_BOUNCE
     
    new 
Float:maxs[3] = {10.0,10.0,10.0
    new 
Float:mins[3] = {-10.0,-10.0,-5.0
    
entity_set_size(entminsmaxs
     
    
entity_set_float(entEV_FL_animtimeget_gametime()) 
    
entity_set_float(entEV_FL_framerate1.0)     
    
entity_set_int(entEV_INT_sequence0)         
     
    static 
arg[4], arg2[4
     
    
arg[0] = ent 
    arg
[1] = floatround(TempOrigin[0]) 
    
arg[2] = floatround(TempOrigin[1]) 
    
arg[3] = floatround(TempOrigin[2]) 

    
arg2[0] = ent 
    arg2
[1] = floatround(VicOrigin[0]) 
    
arg2[2] = floatround(VicOrigin[1]) 
    
arg2[3] = floatround(VicOrigin[2])     
     
    
set_task(0.01"do_hook_bomb_up"TASK_HOOKINGUPargsizeof(arg), "b"
    
set_task(1.0"do_hook_bomb_down"_arg2sizeof(arg2)) 
    
set_task(2.0"bomb_explode"ent

public 
do_hook_bomb_up(arg[4]) 

    static 
entFloat:TempOrigin[3
     
    
ent arg[0
    if ( !
pev_valid(ent) ) 
    { 
        
remove_task(TASK_HOOKINGUP
        return 
    } 
    
TempOrigin[0] = float(arg[1]) 
    
TempOrigin[1] = float(arg[2]) 
    
TempOrigin[2] = float(arg[3]) 
     
    
hook_ent2(entTempOrigin500.0

public 
do_hook_bomb_down(arg[4]) 

    
remove_task(TASK_HOOKINGUP
    
set_task(0.01"do_hook_bomb_down2"TASK_HOOKINGDOWNargsizeof(arg), "b"

public 
do_hook_bomb_down2(arg[4]) 

    static 
entFloat:VicOrigin[3
     
    
ent arg[0
    if ( !
pev_valid(ent) ) 
    { 
        
remove_task(TASK_HOOKINGUP
        return 
    } 
    
VicOrigin[0] = float(arg[1]) 
    
VicOrigin[1] = float(arg[2]) 
    
VicOrigin[2] = float(arg[3])     
     
    
hook_ent2(entVicOrigin500.0

public 
bomb_explode(ent

    
remove_task(TASK_HOOKINGUP
    
remove_task(TASK_HOOKINGDOWN
     
    if ( !
pev_valid(ent) ) 
    { 
        return 
    } 
     
    static 
Float:Origin[3
    
pev(entpev_originOrigin
     
    
message_begin(MSG_BROADCAST ,SVC_TEMPENTITY
    
write_byte(TE_EXPLOSION
    
engfunc(EngFunc_WriteCoordOrigin[0]) 
    
engfunc(EngFunc_WriteCoordOrigin[1]) 
    
engfunc(EngFunc_WriteCoordOrigin[2]) 
    
write_short(exp_spr_id)    // sprite index 
    
write_byte(20)    // scale in 0.1's 
    
write_byte(30)    // framerate 
    
write_byte(0)    // flags 
    
message_end()     
     
    for(new 
1get_maxplayers(); i++) 
    { 
        if(
is_user_alive(i) && entity_range(ient) <= 300.0
        { 
            static 
Float:Damage 
            Damage 
random_float(30.060.0
             
            if(
g_berserker[ent]) 
                
Damage *= 2.0 
                 
            npc_do_damage
(entiDamage)//ExecuteHam(Ham_TakeDamage, i, 0, i, Damage, DMG_BLAST) 
            
ScreenShake(i, ((1<<12) * 3), ((2<<12) * 3)) 
            
ScreenFade(i3255255090
        } 
    }     
     
    
remove_entity(ent



public 
oberon_skill_impale(ent

    if ( 
ent TASK_SPELL 
        
ent -= TASK_SPELL 
    
if ( !pev_valid(ent) ) 
        return 
     
    static 
Float:Origin[3], Float:Angles[3]  
      
    
entity_get_vector(entEV_VEC_originOrigin)  
    
entity_get_vector(entEV_VEC_anglesAngles//EV_VEC_v_angle 
     
    
set_npc_events(entEVENT_CUSTOM
    new 
Float:timed
    if ( !
g_berserker[ent] ) 
    { 
        
emit_sound(entCHAN_BODYoberon_attack2_sound1.0ATTN_NORM0PITCH_NORM
        
timed ANIMATION_ATTACK_2_TIME 
        npc_set_animation
(entANIMATION_ATTACK_2timed
    } 
    else 
    { 
        
emit_sound(entCHAN_BODYoberon_berserk_attack2_sound1.0ATTN_NORM0PITCH_NORM
        
timed ANIMATION_ATTACK_2_BERSERKER_TIME 
        npc_set_animation
(entANIMATION_ATTACK_2_BERSERKERtimed
    } 
     
    
set_task(timed"oberon_reset"ent TASK_RESET
    
//set_task(timed*0.3, "_oberon_skill_attack2", ent + TASK_SPELL) 
         
    
Origin[2] -= 15  
    
for(new i=110i++)   
    {  
        
make_tentacle(entiOriginAngles)  
    } 



public 
make_tentacle(idiFloat:Origin[3], Float:Angles[3])//), Float:Angles[3])  
{  
    new 
ent create_entity("info_target")  

    
drop_to_floor(ent)  
     
    
Origin[2] += 5.0  
      
    entity_set_origin
(entOrigin)  
    
entity_set_vector(entEV_VEC_v_angleAngles)  
      
    
//new Float: flAngles[ 3 ]; 
    //pev( id, pev_angles, flAngles );     
    
new FloatConAngles]; 
    
ConAngles] = Angles]; 
    
ConAngles] = Angles]; 
    
entity_set_vectorentEV_VEC_anglesConAngles ); 
    
//set_pev(ent, pev_owner, id) 
    
set_pev(entpev_v_angleConAngles)             
    
// addon 
    
set_pev(entpev_anglesConAngles
    
set_pev(entpev_view_ofsConAngles
                 
                 
    
entity_set_string(ent,EV_SZ_classname"tentacle")  
    
entity_set_model(entskill_tentacle[0])  
    
entity_set_int(entEV_INT_solidSOLID_NOT)  
    
entity_set_int(entEV_INT_movetypeMOVETYPE_FLY)  
      
    new 
Float:maxs[3] = {1.0,1.0,1.0}  
    new 
Float:mins[3] = {-1.0,-1.0,-1.0}  
    
entity_set_size(entminsmaxs)  
      
    
entity_set_float(entEV_FL_animtimeget_gametime())  
    
entity_set_float(entEV_FL_framerate2.0)      
    
entity_set_int(entEV_INT_sequence0)      
      
    
set_pev(entpev_rendermodekRenderTransAdd)  
    
set_pev(entpev_renderamt255.0)          
     
    static 
Float:Direction[3], Float:Endirection[3
     
    
angle_vector(ConAnglesANGLEVECTOR_FORWARDDirection); 
    
xs_vec_mul_scalar(Direction190.0*iDirection
     
    
Endirection] = Direction
    
Endirection] = Direction
    
Endirection] = Direction
     
    
set_pev(entpev_velocityEndirection
      
    
set_task(0.3"tentacle_change"ent+TENACLE_TASK
}  

public 
tentacle_change(ent)  
{  
    
ent -= TENACLE_TASK 
    
if ( !pev_valid(ent) ) 
        return 
         
    
entity_set_model(entskill_tentacle[1])  
          
    
entity_set_string(ent,EV_SZ_classname"tentacle2")  
     
    
entity_set_int(entEV_INT_solidSOLID_TRIGGER
    
entity_set_int(entEV_INT_movetypeMOVETYPE_PUSH
         
    new  
Float:Direction[3] = { 0.00.00.0 
    
set_pev(entpev_velocityDirection
         
    new 
Float:maxs[3] = {26.0,26.0,56.0}  
    new 
Float:mins[3] = {-26.0,-26.0,-56.0}  
    
entity_set_size(entminsmaxs)      
          
    
entity_set_float(entEV_FL_animtimeget_gametime())  
    
entity_set_float(entEV_FL_framerate1.0)      
    
entity_set_int(entEV_INT_sequence0)      
          
    
set_pev(entpev_rendermodekRenderNormal)  
    
set_pev(entpev_renderamt255.0)          
              
    
set_task(1.0"tentacle_change2"ent+TENACLE_TASK)  
}  

public 
tentacle_change2(ent)  
{  
    
ent -= TENACLE_TASK 
    
if ( !pev_valid(ent) ) 
        return 
    
entity_set_model(entskill_tentacle[2])  
    
entity_set_int(entEV_INT_solidSOLID_NOT)  
    
entity_set_string(ent,EV_SZ_classname"tentacle")  
          
    new 
Float:maxs[3] = {1.0,1.0,1.0}  
    new 
Float:mins[3] = {-1.0,-1.0,-1.0}  
    
entity_set_size(entminsmaxs)  
          
    
entity_set_float(entEV_FL_animtimeget_gametime())  
    
entity_set_float(entEV_FL_framerate1.0)      
    
entity_set_int(entEV_INT_sequence0)      
          
    
set_pev(entpev_rendermodekRenderTransAdd)  
    
set_pev(entpev_renderamt255.0)          
          
    
set_task(0.8"remove_tentacle"ent+TENACLE_TASK)  
}  

public 
remove_tentacle(ent)  
{  
    
ent -= TENACLE_TASK 
    
if ( !pev_valid(ent) ) 
        return 
    
remove_entity(ent)  
}  

public 
fw_tentacle_touch(tentacletouch)  
{  
    if(
is_user_alive(touch))  
    {  
        static 
Float:CurTime  
        CurTime 
get_gametime()  

         
        if(
CurTime 0.1 g_poison_touch[touch])  
        {  
            
/*ExecuteHamB(Ham_TakeDamage, touch, ent, touch, 5.0, DMG_BLAST)*/ 
            
static ent  
            ent 
find_ent_by_owner(-1"weapon_knife"touch
            
npc_do_damage(enttouch35.0
                  
            
g_poison_touch[touch] = CurTime  
                 
            
new Float:vVelocity[3]; 
            
entity_get_vectortouchEV_VEC_velocityvVelocity ); 

            
vVelocity[0] = random_float30.090.0 ); 
            
vVelocity[1] = random_float30.090.0 ); 
            
vVelocity[2] = random_float250.0500.0 ); 

            
entity_set_vectortouchEV_VEC_velocityvVelocity ); 
        }  
        }      
}  


public 
oberon_skill_hole(ent

    if ( 
ent TASK_SPELL 
        
ent -= TASK_SPELL 
    
if ( !pev_valid(ent) ) 
        return 
     
    
set_npc_events(entEVENT_CUSTOM
    new 
Float:timed
    if ( !
g_berserker[ent] ) 
    { 
        
timed ANIMATION_ATTACK_HOLE_TIME 
        npc_set_animation
(entANIMATION_ATTACK_HOLEtimed
    } 
    else 
    { 
        
timed ANIMATION_ATTACK_HOLE_BERSERKER_TIME 
        npc_set_animation
(entANIMATION_ATTACK_HOLE_BERSERKERtimed
    } 
     
    
emit_sound(entCHAN_BODYoberon_attack_hole_sound1.0ATTN_NORM0PITCH_NORM
    
set_task(timed"oberon_reset"ent TASK_RESET
    
set_task(5.0"_oberon_skill_hole"ent TASK_SPELL
     
    new 
Hole create_entity("info_target"
     
    static 
Float:Origin[3
    
pev(entpev_originOrigin
     
    
Origin[2] -= 10.0 
     
    entity_set_origin
(HoleOrigin
     
    
entity_set_string(Hole,EV_SZ_classname"hole_hook"
    
entity_set_model(Holeoberon_hole_effect
    
entity_set_int(HoleEV_INT_solidSOLID_NOT
    
entity_set_int(HoleEV_INT_movetypeMOVETYPE_NONE
     
    new 
Float:maxs[3] = {1.0,1.0,1.0
    new 
Float:mins[3] = {-1.0,-1.0,-1.0
    
entity_set_size(Holeminsmaxs
     
    
entity_set_float(HoleEV_FL_animtimeget_gametime()) 
    
entity_set_float(HoleEV_FL_framerate1.0)     
    
entity_set_int(HoleEV_INT_sequence0)     
     
    
set_pev(Holepev_rendermodekRenderTransAdd
    
set_pev(Holepev_renderamt255.0)     
     
    
drop_to_floor(Hole
     
    static 
arg[2
    for(new 
0get_maxplayers(); i++) 
    { 
        if(
is_user_alive(i) && entity_range(enti) <= 1000.0
        { 
            
arg[0] = ent 
            arg
[1] = 
             
            set_task
(0.01"do_hook_player"512512argsizeof(arg), "b"
        } 
    }     


public 
do_hook_player(arg[2]) // thnx to dias 

    static 
Float:Origin[3], Float:Speedenttarget 
    ent 
arg[0
    
target arg[1
    if ( !
pev_valid(ent) || !is_user_connected(target)) 
    { 
        
remove_task(512512
        return 
    } 
     
    
pev(entpev_originOrigin
     
    
Speed = (1000.0 entity_range(enttarget)) * 75.0 
     
    hook_ent2
(targetOriginSpeed

public 
hook_ent2(entFloat:VicOrigin[3], Float:speed)//credits to dias 

    static 
Float:fl_Velocity[3
    static 
Float:EntOrigin[3

    
pev(entpev_originEntOrigin
     
    static 
Float:distance_f 
    distance_f 
get_distance_f(EntOriginVicOrigin

    if (
distance_f 60.0
    { 
        new 
Float:fl_Time distance_f speed 

        fl_Velocity
[0] = (VicOrigin[0] - EntOrigin[0]) / fl_Time 
        fl_Velocity
[1] = (VicOrigin[1] - EntOrigin[1]) / fl_Time 
        fl_Velocity
[2] = (VicOrigin[2] - EntOrigin[2]) / fl_Time 
    
} else 
    { 
        
fl_Velocity[0] = 0.0 
        fl_Velocity
[1] = 0.0 
        fl_Velocity
[2] = 0.0 
    


    
entity_set_vector(entEV_VEC_velocityfl_Velocity



public 
_oberon_skill_hole(ent

    if ( 
ent TASK_SPELL 
        
ent -= TASK_SPELL 
         
    
static hole 
    hole 
find_ent_by_class(-1"hole_hook"
    if ( 
pev_valid(hole ) ) remove_entity(hole
    
remove_task(512512
     
    if ( !
pev_valid(ent) ) 
        return 
     
    
oberon_berser_effects(ent
     
    static 
Float:Ent_orig[3], Float:Enemy[3
    
pev(entpev_originEnt_orig
    for(new 
1<= get_maxplayers(); i++) 
    { 
        if(!
is_user_alive(i)) continue 
         
        
pev(ipev_originEnemy
        if(
get_distance_f(Ent_origEnemy) <= 250.0
        { 
            
npc_do_damage(entiOBERON_ATTACK2_DAMAGE
            
ScreenShake(i, ((1<<12) * 8), ((2<<12) * 7)) 
            
ScreenFade(i62550090
        } 
    } 


public 
oberon_skill_attack2(ent

    if ( 
ent TASK_SPELL 
        
ent -= TASK_SPELL 
    
if ( !pev_valid(ent) ) 
        return 
     
    
set_npc_events(entEVENT_CUSTOM
    new 
Float:timed
    if ( !
g_berserker[ent] ) 
    { 
        
emit_sound(entCHAN_BODYoberon_attack2_sound1.0ATTN_NORM0PITCH_NORM
        
timed ANIMATION_ATTACK_2_TIME 
        npc_set_animation
(entANIMATION_ATTACK_2timed
    } 
    else 
    { 
        
emit_sound(entCHAN_BODYoberon_berserk_attack2_sound1.0ATTN_NORM0PITCH_NORM
        
timed ANIMATION_ATTACK_2_BERSERKER_TIME 
        npc_set_animation
(entANIMATION_ATTACK_2_BERSERKERtimed
    } 
     
    
set_task(timed"oberon_reset"ent TASK_RESET
    
set_task(timed*0.3"_oberon_skill_attack2"ent TASK_SPELL


public 
_oberon_skill_attack2(ent

    if ( 
ent TASK_SPELL 
        
ent -= TASK_SPELL 
    
if ( !pev_valid(ent) ) 
        return 
     
    static 
Float:Ent_orig[3], Float:Enemy[3], Float:Aim[3
    
velocity_by_aim(ent300Aim
    
xs_vec_mul_scalar(Aim3.0Aim) ; Aim[2] = 300.0 
    pev
(entpev_originEnt_orig
    for(new 
1<= get_maxplayers(); i++) 
    { 
        if(!
is_user_alive(i)) continue 
         
        
pev(ipev_originEnemy
        if(
get_distance_f(Ent_origEnemy) <= 250.0
        { 
            
set_pev(ipev_velocityAim
            
npc_do_damage(entiOBERON_ATTACK2_DAMAGE
            
ScreenShake(i, ((1<<12) * 8), ((2<<12) * 7)) 
            
ScreenFade(i62550090
        } 
    } 


stock oberon_skill_attack2_check(ent

    static 
Float:Ent_orig[3], Float:Enemy[3
    
pev(entpev_originEnt_orig
    for(new 
1<= get_maxplayers(); i++) 
    { 
        if(!
is_user_alive(i)) continue 
         
        
pev(ipev_originEnemy
        if(
get_distance_f(Ent_origEnemy) <= 250.0
        { 
            return 

        

    } 
    return 





stock ScreenFade(idTimerColors1Colors2Colors3Alpha

    if(!
is_user_connected(id)) return 
     
    
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("ScreenFade"), _id); 
    
write_short((1<<12) * Timer
    
write_short(1<<12
    
write_short(0
    
write_byte(Colors1
    
write_byte(Colors2
    
write_byte(Colors3
    
write_byte(Alpha
    
message_end() 


stock ScreenShake(iddurationfrequency

    if(!
is_user_alive(id)) return 
     
    
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("ScreenShake"), _id); 
    
write_short(1<<14
    
write_short(duration
    
write_short(frequency
    
message_end(); 




public 
plugin_precache() 

    
Check_Map() 
     
    
g_class_modelindex precache_model(g_class_pmodel); 
    
exp_spr_id precache_model("sprites/zerogxplode.spr"); 
    
precache_model(oberon_bomb_model
    
precache_model(oberon_hole_effect
    
precache_model(oberon_knife_effect
     
     
    
g_npc_id register_npc(CLASS_NAMECLASS_TIP
    
precache_sound(oberon_appear_sound
    
precache_sound(oberon_attack1_sound
    
precache_sound(oberon_attack2_sound
    
precache_sound(oberon_berserk_attack1_sound
    
precache_sound(oberon_berserk_attack2_sound
    
precache_sound(oberon_berserker_sound
    
precache_sound(oberon_attack_hole_sound
    
precache_sound(oberon_bomb_sound
    
precache_sound(oberon_jump_sound
    
precache_sound(oberon_jumpdamage_sound
    
precache_sound(oberon_bjump_sound
    
precache_sound(oberon_bjumpdamage_sound

     
    for(new 
0sizeof(skill_tentacle); i++)  
    {  
        
engfunc(EngFunc_PrecacheModelskill_tentacle[i])  
    }      
     
    if(
g_npc_id != -1
    { 
        
set_npc_data(g_npc_idDATA_HEALTHOBERON_HEALTH
        
set_npc_data(g_npc_idDATA_SPEED250.0
        
set_npc_data(g_npc_idDATA_ATTACK99.0
        
set_npc_data(g_npc_idDATA_KNOCKBACK0.0
        
set_npc_data(g_npc_idDATA_ANI_DEATH_HEADSHOT20.0
        
set_npc_data(g_npc_idDATA_ANI_DEATH_NORMAL_SIMPLE20.0
        
set_npc_data(g_npc_idDATA_ANI_DEATH_NORMAL_BACK20.0
        
set_npc_data(g_npc_idDATA_ANI_DEATH_NORMAL_FORWARD20.0
        
set_npc_data(g_npc_idDATA_ANI_DEATH_NORMAL_SPECIAL20.0
        
set_npc_data(g_npc_idDATA_ANI_ATTACKED2.0
        
set_npc_data(g_npc_idDATA_ANI_IDLE2.0
        
set_npc_data(g_npc_idDATA_ANI_MADNESS2.0)//10.0) 
        
set_npc_data(g_npc_idDATA_ANI_ATTACK6.0
        
set_npc_data(g_npc_idDATA_ANI_RUN4.0
        
set_npc_data(g_npc_idDATA_ANI_WALK3.0
        
set_npc_data(g_npc_idDATA_EVENTEVENT_SLEEP
        
set_npc_data(g_npc_idDATA_ATTACK_RELOADING2.7
        
set_npc_data(g_npc_idDATA_MODEL_INDEXfloat(g_class_modelindex)) 
        
set_npc_data(g_npc_idDATA_ATTACK_WAITTIMEOBERON_ATTACK_WAITIME
        
set_npc_data(g_npc_idDATA_ATTACK_DISTANCE250.0
         
        
// New! Set Size! 
        
set_npc_data(g_npc_idDATA_MIN_MAX_XY_MIN, -100.0
        
set_npc_data(g_npc_idDATA_MIN_MAX_XY_MAX100.0
        
set_npc_data(g_npc_idDATA_MIN_MAX_Z_MIN, -30.0
        
set_npc_data(g_npc_idDATA_MIN_MAX_Z_MAX100.0

        
// Berserker ability.. 
        
set_npc_data(g_npc_idDATA_MADANI_ATTACK14.0
        
set_npc_data(g_npc_idDATA_MADANI_ATTACK_TIME1.8
        
set_npc_data(g_npc_idDATA_MADANI_ATTACK_WAIT2.0
        
set_npc_data(g_npc_idDATA_MADANI_IDLE12.0
        
set_npc_data(g_npc_idDATA_MADANI_WALK13.0
        
set_npc_data(g_npc_idDATA_MADANI_RUN13.0
         
        
set_npc_model(g_npc_idg_class_pmodel
    } 



public 
Check_Map() 

    new 
MapName[64
    
get_mapname(MapName63
    if(
contain(MapName"npc_dangerous" ) == -1
    { 
        
server_cmd("mp_roundtime 6"
        
server_cmd("mp_autoteambalance 1"
        
server_cmd("mp_limitteams 1"
        
pause("ad"
    } 
    else 
    { 
        
server_cmd("mp_roundtime 9"
        
server_cmd("mp_autoteambalance 0"
        
server_cmd("mp_limitteams 0"
        new 
bz FindBuyZones( ) 
        new 
Float:absmin[3] = {-8191.0, -8191.0, -8191.0
        new 
Float:absmax[3] = {8191.08191.08191.0
        if ( !
bz 
        { 
            new 
buyzone create_entity("func_buyzone"// create buyzone entity and set it max size of map 
            
DispatchSpawn(buyzone
            
entity_set_size(buyzoneabsminabsmax
        } 
        else 
        { 
            
entity_set_size(bzabsminabsmax
        } 
    } 



public 
oberon_berser_effects(ent2

    if ( !
g_berserker[ent2] ) 
        return 
     
    new 
ent create_entity("info_target"
     
    static 
Float:Origin[3], Float:Angles[3
    
pev(ent2pev_originOrigin
    
pev(ent2pev_anglesAngles
         
    
entity_set_origin(entOrigin
    
entity_set_vector(entEV_VEC_anglesAngles
         
    
entity_set_string(ent,EV_SZ_classname"knife_effect"
    
entity_set_model(entoberon_knife_effect
    
entity_set_int(entEV_INT_solidSOLID_NOT
    
entity_set_int(entEV_INT_movetypeMOVETYPE_NONE
         
    new 
Float:maxs[3] = {40.040.01.0
    new 
Float:mins[3] = {-40.0, -40.0, -1.0
    
entity_set_size(entminsmaxs
         
    
drop_to_floor(ent
         
    
set_task(1.0"remove_knife_effect"ent+TASK_EFFECT


public 
remove_knife_effect(ent

    
ent -= TASK_EFFECT 
    
if ( pev_valid(ent) ) 
        
remove_entity(ent



baneado 07-08-2013 09:54

Re: coordination
 
search create_entity in the plugin


All times are GMT -4. The time now is 06:27.

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