Zplague
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Zplague Entrar

Seu portal de Zombie Plague no Brasil


NPC - Witch

power_settings_newInicie sessão para responder
+7
Feelipe::
Sergio #
Taledo12
devil-square
Dexter
Lucas157
romulonp
11 participantes

descriptionNPC - Witch  EmptyNPC - Witch

more_horiz


Download

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
so uma coisa , quando atiramos nela , ganha packs ?

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
testei aki e n deu pack nenhum

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Lucas157 escreveu:
testei aki e n deu pack nenhum
configuro para ganhar packs , witch oberon e o Golias


Foto do golias 

NPC - Witch  Hl+2012-12-21+12-57-35-09

NPC - Witch  Hl+2012-12-21+13-00-40-82

é pago :)

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Golias e pago?
eu tenho a sma dele aki

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Dexter escreveu:
Golias e pago?
eu tenho a sma dele aki
cara to falando que é pago quem quiser configurado pra ganhar packs

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
wilian159 escreveu:
Dexter escreveu:
Golias e pago?
eu tenho a sma dele aki
cara to falando que é pago quem quiser configurado pra ganhar packs
ata!

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Dexter se vc quiser eu coloco pra ganha pack pra vc e sem cobrar nada !

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
devil-square escreveu:
Dexter se vc quiser eu coloco pra ganha pack pra vc e sem cobrar nada !
Devil-Square poderia colocar pra min ? pro boss ?

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Sim pow vou colocar para todos nao vou querer dinheiro nenhum !

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
devil-square escreveu:
Sim pow vou colocar para todos nao vou querer dinheiro nenhum !
Ok ja dei Rep + :)

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
devil-square escreveu:
Sim pow vou colocar para todos nao vou querer dinheiro nenhum !
Boa ;)
Faz um tutorial, assim fica bem facinho ^^

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Cara tutorial eu nao vou fazer pq eu nao sei fazer direito !

Mais se vcs quiserem é só me passa a sma do boss que vcs querem que eu coloque !

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
devil-square escreveu:
Cara tutorial eu nao vou fazer pq eu nao sei fazer direito !

Mais se vcs quiserem é só me passa a sma do boss que vcs querem que eu coloque !
Faz ai do Oberon que é o mais pedido ^^


Código:

#include <amxmodx> 


#include <engine> 


#include <fakemeta> 


#include <hamsandwich> 


#include <  xs > 





#define OBERON_CLASSNAME "oberon" 


#define OBERON_HEALTH 235000.0 





#define TASK_SKILL 123123123 


#define TASK_HOOKINGUP 123312312 


#define TASK_HOOKINGDOWN 123312313 





new const oberon_model[] = "models/oberon/zbs_bossl_big02.mdl" 


new const oberon_knife_effect[] = "models/oberon/ef_knife.mdl" 


new const oberon_hole_effect[] = "models/oberon/ef_hole.mdl" 


new const oberon_bomb_model[] = "models/oberon/zbs_bossl_big02_bomb.mdl" 





new const oberon_appear_sound[] = "oberon/appear.wav" 


new const oberon_death_sound[] = "oberon/death.wav" 


new const oberon_evolution_sound[] = "oberon/knife.wav" 


new const oberon_attack_sound[8][] =  





    "oberon/attack1.wav", 


    "oberon/attack2.wav", 


    "oberon/attack3_jump.wav", 


    "oberon/attack3.wav", 


    "oberon/knife_attack1.wav", 


    "oberon/knife_attack2.wav", 


    "oberon/knife_attack3_jump.wav", 


    "oberon/knife_attack3.wav" 





new const oberon_hole_sound[] = "oberon/hole.wav" 


new const oberon_bomb_sound[] = "oberon/attack_bomb.wav" 





new oberon_model_id, g_reg, m_iBlood[2], exp_spr_id 


new Float:g_cur_origin[3], Float:g_cur_angles[3], Float:g_cur_v_angle[3] 


new g_evolution, g_evoluting, g_doing_other, g_attacking3, Float:g_attacking3_origin[3] 





public plugin_init() 





    register_plugin("Oberon", "1.0", "Dias") 


     


    register_event("HLTV", "event_newround", "a", "1=0", "2=0") 


    register_touch(OBERON_CLASSNAME, "*", "fw_touch") 


     


    register_clcmd("say /oberon_nacer", "get_origin") 


    register_clcmd("say /oberon_criar", "create_oberon") 








public plugin_precache() 





    oberon_model_id = precache_model(oberon_model) 


    precache_model(oberon_knife_effect) 


    precache_model(oberon_hole_effect) 


    precache_model(oberon_bomb_model) 


     


    precache_sound(oberon_appear_sound) 


    precache_sound(oberon_death_sound) 


    precache_sound(oberon_evolution_sound) 


    for(new i = 0; i < sizeof(oberon_attack_sound); i++) 


    { 


        precache_sound(oberon_attack_sound[i]) 


    } 


    precache_sound(oberon_hole_sound) 


    precache_sound(oberon_bomb_sound) 


     


    m_iBlood[0] = precache_model("sprites/blood.spr") 


    m_iBlood[1] = precache_model("sprites/bloodspray.spr")     


    exp_spr_id = precache_model("sprites/zerogxplode.spr") 








public event_newround() 





    static ent 


    ent = find_ent_by_class(-1, OBERON_CLASSNAME) 


     


    if(task_exists(ent+TASK_SKILL)) remove_task(ent+TASK_SKILL) 








public get_origin(id) 





    pev(id, pev_origin, g_cur_origin) 


    pev(id, pev_angles, g_cur_angles) 


    pev(id, pev_v_angle, g_cur_v_angle) 


     


    client_print(id, print_chat, "[ZP] O Oberon aparecera aqui") 








public create_oberon(id) 





    new ent = create_entity("info_target") 


     


    entity_set_origin(ent, g_cur_origin) 


    entity_set_vector(ent, EV_VEC_angles, g_cur_angles) 


    //entity_set_vector(ent, EV_VEC_v_angle, g_cur_v_angle) 


     


    entity_set_float(ent, EV_FL_takedamage, 1.0) 


    entity_set_float(ent, EV_FL_health, OBERON_HEALTH + 1000.0) 


     


    entity_set_string(ent,EV_SZ_classname, OBERON_CLASSNAME) 


    entity_set_model(ent, oberon_model) 


    entity_set_int(ent, EV_INT_solid, SOLID_SLIDEBOX) 


    entity_set_int(ent, EV_INT_movetype, MOVETYPE_PUSHSTEP) 


     


    new Float:maxs[3] = {100.0, 100.0, 100.0} 


    new Float:mins[3] = {-100.0, -100.0, -30.0} 


    entity_set_size(ent, mins, maxs) 


    entity_set_int(ent, EV_INT_modelindex, oberon_model_id) 


     


    set_entity_anim(ent, 1) 


     


    set_pev(ent, pev_iuser4, 0) 


     


    entity_set_float(ent, EV_FL_nextthink, halflife_time() + 6.0) 


    set_task(5.0, "start_oberon", ent) 


     


    set_task(15.0, "do_random_skill", ent, _, _, "b") 


     


    if(!g_reg) 


    { 


        RegisterHamFromEntity(Ham_TakeDamage, ent, "fw_takedmg", 1) 


        RegisterHamFromEntity(Ham_Think, ent, "fw_think") 


        g_reg = 1 


    }     


     


    g_evolution = 0 


    g_evoluting = 0 


    g_doing_other = 0 


     


    drop_to_floor(ent) 


    emit_sound(ent, CHAN_BODY, oberon_appear_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) 








public start_oberon(ent) 





    set_entity_anim(ent, 2) 








public fw_think(ent) 





    if(!is_valid_ent(ent)) 


        return HAM_IGNORED 


         


    if(pev(ent, pev_iuser4) == 1) // Oberon is dead 


        return HAM_IGNORED 


         


    if(g_evoluting || g_doing_other) 


        return HAM_IGNORED 


         


    if(pev(ent, pev_health) - 1000.0 <= 0.0) 


    { 


        set_pev(ent, pev_iuser4, 1) 


        set_entity_anim(ent, 20) 


        set_task(15.0, "move_entity", ent) 


        entity_set_int(ent, EV_INT_solid, SOLID_NOT) 


        entity_set_float(ent, EV_FL_takedamage, 0.0) 


         


        emit_sound(ent, CHAN_BODY, oberon_death_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) 


         


        return HAM_IGNORED 


    } 


    if((pev(ent, pev_health) - 1000.0 <= OBERON_HEALTH / 2.0) && !g_evolution) 


    { 


        g_evoluting = 1 


        set_entity_anim(ent, 11) 


         


        emit_sound(ent, CHAN_BODY, oberon_evolution_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) 


        set_task(8.0, "set_new_idle", ent) 


         


        return HAM_IGNORED 


    }     


     


    static victim 


    static Float:Origin[3], Float:VicOrigin[3], Float:distance 


     


    victim = FindClosesEnemy(ent) 


    pev(ent, pev_origin, Origin) 


    pev(victim, pev_origin, VicOrigin) 


     


    distance = get_distance_f(Origin, VicOrigin) 


     


    if(is_user_alive(victim)) 


    { 


        if(distance <= 250.0) 


        { 


            if(!is_valid_ent(ent)) 


                return FMRES_IGNORED     


         


            new Float:Ent_Origin[3], Float:Vic_Origin[3] 


             


            pev(ent, pev_origin, Ent_Origin) 


            pev(victim, pev_origin, Vic_Origin)             


         


            npc_turntotarget(ent, Ent_Origin, victim, Vic_Origin) 


             


            static Attack_Type, attack_anim, attack_sound 


            Attack_Type = random_num(1, 2) 


             


            if(Attack_Type == 1) 


            { 


                if(g_evolution) 


                { 


                    attack_anim = 14 


                    attack_sound = 4 


                } else { 


                    attack_anim = 6 


                    attack_sound = 0 


                } 


                 


                set_entity_anim(ent, attack_anim) 


                emit_sound(ent, CHAN_BODY, oberon_attack_sound[attack_sound], 1.0, ATTN_NORM, 0, PITCH_NORM) 


                 


                set_task(1.0, "do_takedmg", ent) 


                 


                entity_set_float(ent, EV_FL_nextthink, get_gametime() + 3.0) 


            } else { 


                if(g_evolution) 


                { 


                    attack_anim = 15 


                    attack_sound = 5 


                } else {  


                    attack_anim = 7 


                    attack_sound = 1 


                } 


                     


                set_entity_anim(ent, attack_anim)     


                emit_sound(ent, CHAN_BODY, oberon_attack_sound[attack_sound], 1.0, ATTN_NORM, 0, PITCH_NORM) 


                 


                set_task(0.5, "do_takedmg", ent)             


                 


                entity_set_float(ent, EV_FL_nextthink, get_gametime() + 3.0) 


            } 


             


        } else { 


            static moving_anim 


             


            if(g_evolution) 


                moving_anim = 13 


            else  


                moving_anim = 3         


         


            if(pev(ent, pev_sequence) != moving_anim) 


            { 


                entity_set_float(ent, EV_FL_animtime, get_gametime()) 


                entity_set_float(ent, EV_FL_framerate, 1.0) 


                entity_set_int(ent, EV_INT_sequence, moving_anim) 


            } 


                 


            new Float:Ent_Origin[3], Float:Vic_Origin[3] 


             


            pev(ent, pev_origin, Ent_Origin) 


            pev(victim, pev_origin, Vic_Origin) 


             


            npc_turntotarget(ent, Ent_Origin, victim, Vic_Origin) 


            hook_ent(ent, victim, 100.0) 


             


            entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.1) 


        } 


    } else { 


        static idle_anim 


         


        if(g_evolution) 


            idle_anim = 12 


        else  


            idle_anim = 2 


             


        if(pev(ent, pev_sequence) != idle_anim) 


        { 


            set_entity_anim(ent, idle_anim) 


        }     


             


        entity_set_float(ent, EV_FL_nextthink, get_gametime() + 1.0) 


    }     


         


    return HAM_HANDLED 








public do_random_skill(ent) 





    if(!pev_valid(ent)) 


        return PLUGIN_HANDLED 


         


    if(g_evoluting) 


        return PLUGIN_HANDLED 


         


    if(pev(ent, pev_health) - 1000.0 <= 0.0) 


        return PLUGIN_HANDLED 


     


    static random_skill 


    random_skill = random_num(0, 100)  


     


    g_doing_other = 1 


     


    switch(random_skill) 


    { 


        case 0..37: { 


            do_attack3(ent) 


             


        } 


        case 38..72: { 


            do_hole(ent) 


        } 


        case 73..100: { 


            do_bomb(ent) 


        }         


    }     


     


    return PLUGIN_CONTINUE 








public do_bomb(oberon) 





    g_doing_other = 1 


     


    static bomb_anim 


    if(g_evolution) 


        bomb_anim = 18 


    else 


        bomb_anim = 9 


         


    set_entity_anim(oberon, bomb_anim) 


     


    set_task(3.0, "do_skill_bomb", oberon+2015, _, _, "b") 


    set_task(10.0, "stop_skill_bomb", oberon) 








public stop_skill_bomb(oberon) 





    remove_task(oberon+2015) 


     


    static idle_anim 


     


    if(g_evolution) 


        idle_anim = 12 


    else  


        idle_anim = 2 


         


    set_entity_anim(oberon, idle_anim) 


    set_task(2.0, "reset_think", oberon) 








public do_skill_bomb(oberon) 





    oberon -= 2015 


    static Float:StartOrigin[3], Float:TempOrigin[6][3], Float:VicOrigin[6][3], Float:Random1 


     


    pev(oberon, pev_origin, StartOrigin) 


    emit_sound(oberon, CHAN_BODY, oberon_bomb_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) 


     


    // 1st Bomb 


    Random1 = random_float(100.0, 500.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.0, 500.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.0, 500.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 i = 0; i < 6; i++) 


    { 


        make_bomb(StartOrigin, TempOrigin[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(ent, StartOrigin) 


     


    entity_set_string(ent,EV_SZ_classname, "oberon_bomb") 


    entity_set_model(ent, oberon_bomb_model) 


    entity_set_int(ent, EV_INT_solid, SOLID_NOT) 


    entity_set_int(ent, EV_INT_movetype, MOVETYPE_BOUNCE) 


     


    new Float:maxs[3] = {10.0,10.0,10.0} 


    new Float:mins[3] = {-10.0,-10.0,-5.0} 


    entity_set_size(ent, mins, maxs) 


     


    entity_set_float(ent, EV_FL_animtime, get_gametime()) 


    entity_set_float(ent, EV_FL_framerate, 1.0)     


    entity_set_int(ent, EV_INT_sequence, 0)         


     


    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_HOOKINGUP, arg, sizeof(arg), "b") 


    set_task(1.0, "do_hook_bomb_down", _, arg2, sizeof(arg2)) 


    set_task(2.0, "bomb_explode", ent) 








public bomb_explode(ent) 





    remove_task(TASK_HOOKINGUP) 


    remove_task(TASK_HOOKINGDOWN) 


     


    static Float:Origin[3] 


    pev(ent, pev_origin, Origin) 


     


    message_begin(MSG_BROADCAST ,SVC_TEMPENTITY) 


    write_byte(TE_EXPLOSION) 


    engfunc(EngFunc_WriteCoord, Origin[0]) 


    engfunc(EngFunc_WriteCoord, Origin[1]) 


    engfunc(EngFunc_WriteCoord, Origin[2]) 


    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 i = 1; i < get_maxplayers(); i++) 


    { 


        if(is_user_alive(i) && entity_range(i, ent) <= 300.0) 


        { 


            static Float:Damage 


            Damage = random_float(10.0, 30.0) 


             


            if(g_evolution) 


                Damage *= 2.0 


                 


            ExecuteHam(Ham_TakeDamage, i, 0, i, Damage, DMG_BLAST) 


            hit_screen(i) 


        } 


    }     


     


    remove_entity(ent) 








public do_hook_bomb_down(arg[4]) 





    remove_task(TASK_HOOKINGUP) 


    set_task(0.01, "do_hook_bomb_down2", TASK_HOOKINGDOWN, arg, sizeof(arg), "b") 








public do_hook_bomb_down2(arg[4]) 





    static ent, Float:VicOrigin[3] 


     


    ent = arg[0] 


    VicOrigin[0] = float(arg[1]) 


    VicOrigin[1] = float(arg[2]) 


    VicOrigin[2] = float(arg[3])     


     


    hook_ent2(ent, VicOrigin, 500.0) 








public do_hook_bomb_up(arg[4]) 





    static ent, Float:TempOrigin[3] 


     


    ent = arg[0] 


    TempOrigin[0] = float(arg[1]) 


    TempOrigin[1] = float(arg[2]) 


    TempOrigin[2] = float(arg[3]) 


     


    hook_ent2(ent, TempOrigin, 500.0) 








public do_hole(oberon) 





    static hole_anim 


     


    if(g_evolution) 


        hole_anim = 19 


    else 


        hole_anim = 10 


         


    set_entity_anim(oberon, hole_anim) 


    emit_sound(oberon, CHAN_BODY, oberon_hole_sound, 1.0, ATTN_NORM, 0, PITCH_NORM) 


     


    new ent = create_entity("info_target") 


     


    static Float:Origin[3] 


    pev(oberon, pev_origin, Origin) 


     


    Origin[2] -= 10.0 


     


    entity_set_origin(ent, Origin) 


     


    entity_set_string(ent,EV_SZ_classname, "hole_hook") 


    entity_set_model(ent, oberon_hole_effect) 


    entity_set_int(ent, EV_INT_solid, SOLID_NOT) 


    entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE) 


     


    new Float:maxs[3] = {1.0,1.0,1.0} 


    new Float:mins[3] = {-1.0,-1.0,-1.0} 


    entity_set_size(ent, mins, maxs) 


     


    entity_set_float(ent, EV_FL_animtime, get_gametime()) 


    entity_set_float(ent, EV_FL_framerate, 1.0)     


    entity_set_int(ent, EV_INT_sequence, 0)     


     


    set_pev(ent, pev_rendermode, kRenderTransAdd) 


    set_pev(ent, pev_renderamt, 255.0)     


     


    drop_to_floor(ent) 


     


    for(new i = 0; i < get_maxplayers(); i++) 


    { 


        if(is_user_alive(i) && entity_range(oberon, i) <= 1000.0) 


        { 


            static arg[2] 


            arg[0] = oberon 


            arg[1] = i 


             


            set_task(0.01, "do_hook_player", 512512, arg, sizeof(arg), "b") 


        } 


    } 


     


    set_task(5.0, "stop_hook", oberon+2012)     








public do_hook_player(arg[2]) 





    static Float:Origin[3], Float:Speed 


    pev(arg[0], pev_origin, Origin) 


     


    Speed = (1000.0 / entity_range(arg[0], arg[1])) * 75.0 


     


    hook_ent2(arg[1], Origin, Speed) 








public stop_hook(oberon) 





    oberon -= 2012 


     


    static ent 


    ent = find_ent_by_class(-1, "hole_hook") 


     


    remove_entity(ent) 


    remove_task(512512) 


     


    do_takedmg(oberon) 


    set_task(1.0, "reset_think", oberon) 








public do_attack3(ent) 





    static attack3_anim, attack3_sound 


     


    if(g_evolution) 


    { 


        attack3_anim = 16 


        attack3_sound = 6 


    } else { 


        attack3_anim = 8 


        attack3_sound = 2 


    }     


     


    g_attacking3 = 1 


     


    set_entity_anim(ent, attack3_anim) 


     


    emit_sound(ent, CHAN_BODY, oberon_attack_sound[attack3_sound], 1.0, ATTN_NORM, 0, PITCH_NORM) 


    set_task(0.1, "attack3_jump", ent) 








public attack3_jump(ent) 





    set_task(0.01, "hookingup", ent+TASK_HOOKINGUP, _, _, "b") 


    set_task(1.0, "hookingdown", ent+TASK_HOOKINGDOWN)     


     


    static Enemy 


    Enemy = FindClosesEnemy(ent)     


     


    pev(Enemy, pev_origin, g_attacking3_origin) 








public hookingup(ent) 





    ent -= TASK_HOOKINGUP 


     


    static Float:Origin[3] 


    pev(ent, pev_origin, Origin) 


     


    Origin[2] += 1000.0 


     


    hook_ent2(ent, Origin, 1000.0) 


     


    static Enemy 


    Enemy = FindClosesEnemy(ent)     


     


    new Float:Ent_Origin[3], Float:Vic_Origin[3] 


     


    pev(ent, pev_origin, Ent_Origin) 


    pev(Enemy, pev_origin, Vic_Origin) 


     


    npc_turntotarget(ent, Ent_Origin, Enemy, Vic_Origin)     








public hookingdown(ent) 





    ent -= TASK_HOOKINGDOWN 


     


    remove_task(ent+TASK_HOOKINGUP) 


    set_task(0.5, "set_func1", ent) 


     


    set_task(0.01, "hookingdown2", ent+TASK_HOOKINGDOWN, _, _, "b") 








public set_func1(ent) 





    set_pev(ent, pev_iuser3, 1) 








public hookingdown2(ent) 





    ent -= TASK_HOOKINGDOWN 


     


    static Enemy 


    Enemy = FindClosesEnemy(ent) 


     


    hook_ent2(ent, g_attacking3_origin, 1000.0) 


     


    new Float:Ent_Origin[3], Float:Vic_Origin[3] 


     


    pev(ent, pev_origin, Ent_Origin) 


    pev(Enemy, pev_origin, Vic_Origin) 


     


    npc_turntotarget(ent, Ent_Origin, Enemy, Vic_Origin)         








public fw_touch(ent, touch) 





    if(!pev_valid(ent)) 


        return FMRES_IGNORED 


         


    if(g_attacking3 && pev(ent, pev_iuser3) == 1) 


    { 


        remove_task(ent+TASK_HOOKINGDOWN) 


         


        if(is_user_alive(touch)) 


            user_kill(touch) 


             


        g_attacking3 = 0 


        set_pev(ent, pev_iuser3, 0) 


         


        set_task(0.75, "reset_think", ent) 


         


        for(new i = 1; i < get_maxplayers(); i++) 


        { 


            if(is_user_alive(i) && entity_range(ent, i) <= 300.0) 


            { 


                hit_screen(i) 


                 


                static Float:Damage 


                Damage = random_float(10.0, 25.0) 


                 


                if(g_evolution) 


                    Damage *= 1.5 


                 


                ExecuteHam(Ham_TakeDamage, i, 0, i, Damage, DMG_BLAST) 


            } 


        }     


         


        static attack3_sound 


        if(g_evolution) 


            attack3_sound = 7 


        else 


            attack3_sound = 3 


         


        emit_sound(ent, CHAN_BODY, oberon_attack_sound[attack3_sound], 1.0, ATTN_NORM, 0, PITCH_NORM)         


             


        drop_to_floor(ent) 


    } 


         


    return FMRES_HANDLED 








public do_takedmg(ent2) 





    if(g_evolution) 


    { 


        new ent = create_entity("info_target") 


     


        static Float:Origin[3], Float:Angles[3] 


        pev(ent2, pev_origin, Origin) 


        pev(ent2, pev_angles, Angles) 


         


        entity_set_origin(ent, Origin) 


        entity_set_vector(ent, EV_VEC_angles, Angles) 


         


        entity_set_string(ent,EV_SZ_classname, "knife_effect") 


        entity_set_model(ent, oberon_knife_effect) 


        entity_set_int(ent, EV_INT_solid, SOLID_NOT) 


        entity_set_int(ent, EV_INT_movetype, MOVETYPE_NONE) 


         


        new Float:maxs[3] = {40.0, 40.0, 1.0} 


        new Float:mins[3] = {-40.0, -40.0, -1.0} 


        entity_set_size(ent, mins, maxs) 


         


        drop_to_floor(ent) 


         


        set_task(1.0, "remove_knife_effect", ent) 


    } 


     


    for(new i = 1; i < get_maxplayers(); i++) 


    { 


        if(is_user_alive(i) && entity_range(ent2, i) <= 300.0) 


        { 


            hit_screen(i) 


             


            static Float:Damage 


            Damage = random_float(7.5, 15.0) 


             


            if(g_evolution) 


                Damage *= 2.0 


             


            ExecuteHam(Ham_TakeDamage, i, 0, i, Damage, DMG_BLAST) 


        } 


    }     








public remove_knife_effect(ent) 





    remove_entity(ent) 








public set_new_idle(ent) 





    g_evoluting = 0 


    g_evolution = 1 


    set_entity_anim(ent, 12) 


     


    entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.1) 








public move_entity(ent) 





    static Float:Origin[3] 


     


    Origin[0] = 4290.0 


    Origin[1] = 4290.0 


    Origin[2] = 4290.0 


     


    set_pev(ent, pev_origin, Origin) 


    entity_set_float(ent, EV_FL_nextthink, halflife_time() + 99999999.0) 








public fw_takedmg(victim, inflictor, attacker, Float:damage, damagebits) 





    static Float:Origin[3] 


    fm_get_aimorigin(attacker, Origin) 


     


    client_print(attacker, print_center, "Vida Do Oberon: %i", floatround(pev(victim, pev_health) - 1000.0)) 


     


    create_blood(Origin)     








stock set_entity_anim(ent, anim) 





    entity_set_float(ent, EV_FL_animtime, get_gametime()) 


    entity_set_float(ent, EV_FL_framerate, 1.0) 


    entity_set_int(ent, EV_INT_sequence, anim)     








stock create_blood(const Float:origin[3]) 





    // Show some blood :) 


    message_begin(MSG_BROADCAST, SVC_TEMPENTITY)  


    write_byte(TE_BLOODSPRITE) 


    engfunc(EngFunc_WriteCoord, origin[0]) 


    engfunc(EngFunc_WriteCoord, origin[1]) 


    engfunc(EngFunc_WriteCoord, origin[2]) 


    write_short(m_iBlood[1]) 


    write_short(m_iBlood[0]) 


    write_byte(75) 


    write_byte(5) 


    message_end() 








stock fm_get_aimorigin(index, Float:origin[3]) 





    new Float:start[3], Float:view_ofs[3]; 


    pev(index, pev_origin, start); 


    pev(index, pev_view_ofs, view_ofs); 


    xs_vec_add(start, view_ofs, start); 


     


    new Float:dest[3]; 


    pev(index, pev_v_angle, dest); 


    engfunc(EngFunc_MakeVectors, dest); 


    global_get(glb_v_forward, dest); 


    xs_vec_mul_scalar(dest, 9999.0, dest); 


    xs_vec_add(start, dest, dest); 


     


    engfunc(EngFunc_TraceLine, start, dest, 0, index, 0); 


    get_tr2(0, TR_vecEndPos, origin); 


     


    return 1; 


}   





public FindClosesEnemy(entid) 





    new Float:Dist 


    new Float:maxdistance=4000.0 


    new indexid=0     


    for(new i=1;i<=get_maxplayers();i++){ 


        if(is_user_alive(i) && is_valid_ent(i) && can_see_fm(entid, i)) 


        { 


            Dist = entity_range(entid, i) 


            if(Dist <= maxdistance) 


            { 


                maxdistance=Dist 


                indexid=i 


                 


                return indexid 


            } 


        }     


    }     


    return 0 








public npc_turntotarget(ent, Float:Ent_Origin[3], target, Float:Vic_Origin[3])  





    if(target)  


    { 


        new Float:newAngle[3] 


        entity_get_vector(ent, EV_VEC_angles, newAngle) 


        new Float:x = Vic_Origin[0] - Ent_Origin[0] 


        new Float:z = Vic_Origin[1] - Ent_Origin[1] 





        new Float:radians = floatatan(z/x, radian) 


        newAngle[1] = radians * (180 / 3.14) 


        if (Vic_Origin[0] < Ent_Origin[0]) 


            newAngle[1] -= 180.0 


         


        entity_set_vector(ent, EV_VEC_angles, newAngle) 


    } 








public bool:can_see_fm(entindex1, entindex2) 





    if (!entindex1 || !entindex2) 


        return false 





    if (pev_valid(entindex1) && pev_valid(entindex1)) 


    { 


        new flags = pev(entindex1, pev_flags) 


        if (flags & EF_NODRAW || flags & FL_NOTARGET) 


        { 


            return false 


        } 





        new Float:lookerOrig[3] 


        new Float:targetBaseOrig[3] 


        new Float:targetOrig[3] 


        new Float:temp[3] 





        pev(entindex1, pev_origin, lookerOrig) 


        pev(entindex1, pev_view_ofs, temp) 


        lookerOrig[0] += temp[0] 


        lookerOrig[1] += temp[1] 


        lookerOrig[2] += temp[2] 





        pev(entindex2, pev_origin, targetBaseOrig) 


        pev(entindex2, pev_view_ofs, temp) 


        targetOrig[0] = targetBaseOrig [0] + temp[0] 


        targetOrig[1] = targetBaseOrig [1] + temp[1] 


        targetOrig[2] = targetBaseOrig [2] + temp[2] 





        engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the had of seen player 


        if (get_tr2(0, TraceResult:TR_InOpen) && get_tr2(0, TraceResult:TR_InWater)) 


        { 


            return false 


        }  


        else  


        { 


            new Float:flFraction 


            get_tr2(0, TraceResult:TR_flFraction, flFraction) 


            if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) 


            { 


                return true 


            } 


            else 


            { 


                targetOrig[0] = targetBaseOrig [0] 


                targetOrig[1] = targetBaseOrig [1] 


                targetOrig[2] = targetBaseOrig [2] 


                engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the body of seen player 


                get_tr2(0, TraceResult:TR_flFraction, flFraction) 


                if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) 


                { 


                    return true 


                } 


                else 


                { 


                    targetOrig[0] = targetBaseOrig [0] 


                    targetOrig[1] = targetBaseOrig [1] 


                    targetOrig[2] = targetBaseOrig [2] - 17.0 


                    engfunc(EngFunc_TraceLine, lookerOrig, targetOrig, 0, entindex1, 0) //  checks the legs of seen player 


                    get_tr2(0, TraceResult:TR_flFraction, flFraction) 


                    if (flFraction == 1.0 || (get_tr2(0, TraceResult:TR_pHit) == entindex2)) 


                    { 


                        return true 


                    } 


                } 


            } 


        } 


    } 


    return false 








public hook_ent(ent, victim, Float:speed) 





    static Float:fl_Velocity[3] 


    static Float:VicOrigin[3], Float:EntOrigin[3] 





    pev(ent, pev_origin, EntOrigin) 


    pev(victim, pev_origin, VicOrigin) 


     


    static Float:distance_f 


    distance_f = get_distance_f(EntOrigin, VicOrigin) 





    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(ent, EV_VEC_velocity, fl_Velocity) 








public hook_ent2(ent, Float:VicOrigin[3], Float:speed) 





    static Float:fl_Velocity[3] 


    static Float:EntOrigin[3] 





    pev(ent, pev_origin, EntOrigin) 


     


    static Float:distance_f 


    distance_f = get_distance_f(EntOrigin, VicOrigin) 





    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(ent, EV_VEC_velocity, fl_Velocity) 








public hit_screen(id) 





    message_begin(MSG_ONE, get_user_msgid("ScreenShake"),{0,0,0}, id) 


    write_short(1<<14) 


    write_short(1<<13) 


    write_short(1<<13) 


    message_end()     








public reset_think(ent) 





    g_doing_other = 0 


    entity_set_float(ent, EV_FL_nextthink, get_gametime() + 0.1) 


}

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
PQP TA TUDO BUGADA ESSA SMA VOU ARRANJAR UMA QUE NAO ESTEJA BUGADA AI EU TE PASSO !

god 

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
wilian159 escreveu:
Lucas157 escreveu:
testei aki e n deu pack nenhum
configuro para ganhar packs , witch oberon e o Golias


Foto do golias 

NPC - Witch  Hl+2012-12-21+12-57-35-09

NPC - Witch  Hl+2012-12-21+13-00-40-82

é pago :)
isso e pago eu tenho sma e models dela kkkkkkk e ja configurada pra ganhar pack kkkkkkkkkkkk

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
devil-square escreveu:
PQP TA TUDO BUGADA ESSA SMA VOU ARRANJAR UMA QUE NAO ESTEJA BUGADA AI EU TE PASSO !

god 
devil vai skype que eu te passo uma

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Devil , se possivel assim que por para ganhar packs , poste aqui fazendo favor ou um topico , seria mais facil de voce ganhar mais creditos

OBS : SE POSSIVEL O OBERON .

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Devil  encina a colocar pra ganhar Packs :), mais bom

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
romulonp escreveu:
Devil , se possivel assim que por para ganhar packs , poste aqui fazendo favor ou um topico , seria mais facil de voce ganhar mais creditos

OBS : SE POSSIVEL O OBERON .
Faço das minhas palavras as suas.

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Calma ai galera sou só um !

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Como eu disse , sem pressa .

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
KKK willian ninguém aqui vai pagar pra tu modificar plugin não, tem que ser muito burro pra fazer isso.

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Leozinho escreveu:
KKK willian ninguém aqui vai pagar pra tu modificar plugin não, tem que ser muito burro pra fazer isso.
boa..nem o leozinho q e ele axo q n saber imagine o willian

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Dexter escreveu:
Leozinho escreveu:
KKK willian ninguém aqui vai pagar pra tu modificar plugin não, tem que ser muito burro pra fazer isso.
boa..nem o leozinho q e ele axo q n saber imagine o willian

Saber eu sei mais e falta de tempo é foda, to indo pra casa agora, pra chegar jantar e descansar.

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Esse willian mal sabe traduzir um plugin e vai saber fazer um ou editar ?

kkk tinha que ter a área piada aqui na zplague para que o palhaço possa postar lá para agente rir.

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Biel-oGrande escreveu:
Esse willian mal sabe traduzir um plugin e vai saber fazer um ou editar ?

kkk tinha que ter a área piada aqui na zplague para que o palhaço possa postar lá para agente rir.

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk Zplague19 

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Biel-oGrande escreveu:
Esse willian mal sabe traduzir um plugin e vai saber fazer um ou editar ?

kkk tinha que ter a área piada aqui na zplague para que o palhaço possa postar lá para agente rir.
boa! se eu fosse o willian depois dessa eu ia dormi

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
www.4shared.com/file/iRskremk/dias_npc_oberon.html Disponibilizando ai pra todos se quiserem, oberon que da packs, creditos por ter editado não sao meus, todos os creditos ao [P]erfec[T] [S]cr[@]s[H] por ter editado

tem cvars ai pra facilitar pra vc que quer mudar o valor da quantia de ammo que ira ganhar ee  o valor do dmg necessario para ganhar ammo pack

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
ZORO escreveu:
www.4shared.com/file/iRskremk/dias_npc_oberon.html Disponibilizando ai pra todos se quiserem, oberon que da packs, creditos por ter editado não sao meus, todos os creditos ao [P]erfec[T] [S]cr[@]s[H] por ter editado

tem cvars ai pra facilitar pra vc que quer mudar o valor da quantia de ammo que ira ganhar ee  o valor do dmg necessario para ganhar ammo pack
BOA!

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Agoraa simmmmmmmmmmmmmmmmmmmmm !!! +rep

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
Só pra constar o oberon do perfect tem um bug nas bolinhas que o oberon "caga".
No meu zm foi fixado, boa sorte pra quem for usar.

descriptionNPC - Witch  EmptyRe: NPC - Witch

more_horiz
privacy_tip Permissões neste sub-fórum
Não podes responder a tópicos
power_settings_newInicie sessão para responder