Oberon - [Plugin] Oberon Boss Hitskin_logo Hitskin.com

Isto é uma pré-visualização de um tema em Hitskin.com
Instalar o temaVoltar para a ficha do tema

Zplague

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

Seu portal de Zombie Plague no Brasil

Zumbis Online

Últimos assuntos

» [ANÚNCIO] Alguem vivo ai?
por Eclipse 17/9/2024, 6:39 pm

» The Fen1xS CLan | Zombie Plague | [XP/LEVELS] #2024
por hevy 5/7/2024, 8:28 pm

»
por Eclipse 29/2/2024, 12:30 am

» [Plugin] /vm Com Status
por Isr7 4/6/2023, 3:24 pm

» Alguém pra manter um servidor comigo?
por Isr7 3/6/2023, 4:52 pm

» Alguém querendo criar um servidor de zp? eu pago a host quem quiser deixar o discord ai Isr7#6920
por Isr7 3/6/2023, 3:18 pm

» PEDIDO: Multijump pros VIP
por Madness 15/3/2023, 3:44 pm

» [ZP] Modo padre para 5.0
por XperitosEspetinho123 15/7/2022, 3:31 pm

» [KZ] Servidores de cs 1.6
por [Dk]Serial-Killer 7/5/2022, 4:12 am

» [PLUGIN BY SKVD & WILLIAN] SHOP DE FANTASIAS
por dushowW 23/7/2020, 5:44 pm

Os membros mais ativos da semana

Nenhum usuário

Frases filosóficas Zplague:

....

Google Adsense

Estatísticas

Os nossos membros postaram um total de 38140 mensagens em 6680 assuntos

Temos 2796 usuários registrados

O último membro registrado é zmplugins - Henrique


+5
hackingzm
Lucas157
Feelipe::
Sergio #
[P]erfec[T] [S]cr[@]s[H]
9 participantes

    [Plugin] Oberon Boss

    [P]erfec[T] [S]cr[@]s[H]
    [P]erfec[T] [S]cr[@]s[H]
    Scripter


    Masculino Número de Mensagens : 564
    Jogador FODA Perfect Scrash entrou na zplague
    Ammo Packs : 4545
    Honra : 177
    Data de inscrição : 04/04/2013

    Oberon - [Plugin] Oberon Boss Empty [Plugin] Oberon Boss

    Mensagem por [P]erfec[T] [S]cr[@]s[H] 20/9/2013, 5:33 pm

    Bom pessoal eu tava pensando em vender esse plugin mas eu vô posta então pegue a SMA. E este esta sem o bug das bolinhas (Pelo menos eu acho que esta):

    Código:
    #include <amxmodx>
    #include <amxmisc>
    #include <engine>
    #include <fakemeta>
    #include <hamsandwich>
    #include < xs >
    #include <zombieplague>

    #define OBERON_CLASSNAME "oberon"

    // Flag De Acesso (Atualmente ta na flag F)
    #define FLAG_ACESS                   ADMIN_LEVEL_F

    #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

    #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], g_damagedealt[33] , g_boss_exists[33], g_position_created[33]
    new cvar_dmg_ap_allow, cvar_ammodamage, cvar_ammo_quantity

    public plugin_init()
    {
       register_plugin("[ZP] Addon: Oberon Boss", "1.0", "Dias | [P]erfec[T] [S]cr[@]s[H]")
       
       register_event("HLTV", "event_newround", "a", "1=0", "2=0")
       register_touch(OBERON_CLASSNAME, "*", "fw_touch")
       
       register_clcmd("say /get_origin", "get_origin")
       register_clcmd("say /make", "create_oberon")
       register_clcmd("say get_origin", "get_origin")
       register_clcmd("say make", "create_oberon")
       register_clcmd("say .get_origin", "get_origin")
       register_clcmd("say .make", "create_oberon")
       
       cvar_dmg_ap_allow = register_cvar("zp_oberon_dmg_ap_reward_allow", "1")      // Ganhar Ammo Packs Por Dano
       cvar_ammodamage = register_cvar("zp_oberon_dmg_for_reward", "250")       // Dmg Necessario Para Ganhar Ammo Packs
       cvar_ammo_quantity  = register_cvar("zp_oberom_reward_ap_quantity", "2")    // Quantia de Ammo Packs que ira ganhar
    }

    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)
    {
       if(get_user_flags(id) & FLAG_ACESS)
       {
          pev(id, pev_origin, g_cur_origin)
          pev(id, pev_angles, g_cur_angles)
          pev(id, pev_v_angle, g_cur_v_angle)
          
          g_position_created[id]++
          
          client_printcolor(id, "!g[ZP Oberon]!y Posicao do Nascimento do Oberon Salva Com Sucesso. Para Invocar digite !t^"say /make^"")
       }
       else
       {
          client_printcolor(id,"!g[ZP Oberon]!y Voce Nao Tem Acesso a esse Comando")
       }
    }

    public create_oberon(id)
    {
       if(get_user_flags(id) & FLAG_ACESS)
       {
       
          if(g_position_created[id] == 0)
          {
             client_printcolor(id, "!g[ZP Oberon]!y Voce Tem que Defenir a Posicao de Nascimento Primeiro !g(Digitando:!t say /get_origin!g)")
             return;
          }
          
          if(g_boss_exists[id] >= 1)
          {
             client_printcolor(id, "!g[ZP Oberon]!y Ja Existe um Oberon no Jogo Nao Pode Criar Mais")
             return;
          }
          
          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_STEP)
          
          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)
          g_boss_exists[id]++
          set_task(15.0, "do_random_skill", ent, _, _, "b")
          set_task(5.0, "creditos", id)
          
          set_hudmessage(255, 0, 0, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
          show_hudmessage(id, "O Oberon Foi Solto. Fuja ou Se Esconda !!")
          
          if(!g_reg)
          {
             RegisterHamFromEntity(Ham_TakeDamage, ent, "fw_takedmg", 1)
             RegisterHamFromEntity(Ham_Think, ent, "fw_think")
             g_reg = 1
          }   
          
          g_boss_exists[id]++
          g_boss_exists[id]++
          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)
       }
       else
       {
          client_printcolor(id, "!g[ZP Oberon]!y Voce Nao Tem Acesso a esse Comando")
       }

    }

    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 *= 5.0
                
             ExecuteHam(Ham_TakeDamage, i, 300, i, Damage, DMG_BLAST)
             hit_screen(i)
          }
       }   
       
       remove_entity(ent)
       remove_entity_name("oberon_bomb")
       
       set_task(1.0, "remove_bomb", ent)
    }

    public remove_bomb(ent)
    {
       remove_entity(ent)
       remove_entity_name("oberon_bomb")
    }

    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)
       
       if(get_pcvar_num(cvar_dmg_ap_allow))
       {
          // Store damage dealt
          g_damagedealt[attacker] += floatround(damage)
             
          // Reward ammo packs for every [ammo damage] dealt
          while (g_damagedealt[attacker] > get_pcvar_num(cvar_ammodamage))
          {
             g_damagedealt[attacker] -= get_pcvar_num(cvar_ammodamage)
             zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(cvar_ammo_quantity))
          }
       }
    }

    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)
    }

    public creditos(id)
    {
       set_hudmessage(0, 255, 255, -1.0, 0.89, 1, 0.0, 5.0, 1.0, 1.0, -1)
       show_hudmessage(id, "Plugin de Boss Editado Por: [P]erfec[T] [S]cr[@]s[H]")
    }
       

    stock client_printcolor(const id, const input[], any:...)
    {
            new count = 1, players[32]
            static msg[191]
            vformat(msg, 190, input, 3)

            replace_all(msg, 190, "!g", "^4")  // Chat Verde
            replace_all(msg, 190, "!y", "^1")  // Chat Normal
            replace_all(msg, 190, "!t", "^3")  // Chat Do Time Tr=Vermelho Ct=Azul Spec=Branco

            if (id) players[0] = id; else get_players(players, count, "ch")
            {
                    for (new i = 0; i < count; i++)
                    {
                            if (is_user_connected(players[i]))
                            {
                                    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                                    write_byte(players[i]);
                                    write_string(msg);
                                    message_end();
                            }
                    }
            }
    }
    Sergio #
    Sergio #
    Moderador
    Moderador


    Masculino Número de Mensagens : 682
    Ammo Packs : 4371
    Honra : 44
    Data de inscrição : 16/02/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por Sergio # 20/9/2013, 7:06 pm

    Quando ele se move, não se meche só faz o movimento das pernas e depois aparece na minha frente, é só aqui ou é assim mesmo?

    Obs: ele não se move igual esse:

    Pelo menos aqui Zplague9
    Feelipe::
    Feelipe::
    Humano


    Nick : FeLiPe-OgRaNdE
    Masculino Número de Mensagens : 203
    Ammo Packs : 4406
    Honra : -4
    Data de inscrição : 28/01/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por Feelipe:: 20/9/2013, 7:20 pm

     ><

    esse e o meu ele e diferente desse. Esse e o video que fizeram do meu server quando soltei ele.
    Lucas157
    Lucas157
    Humano


    Nick : Lucas CB
    Masculino Número de Mensagens : 182
    Ahah venham style zombie plague 4.3 add skype lucas.cb5
    Ammo Packs : 4132
    Honra : -7
    Data de inscrição : 30/08/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por Lucas157 20/9/2013, 8:02 pm

    Video antigo ou vc boto coisas novas ?
    hackingzm
    hackingzm
    Humano


    Masculino Número de Mensagens : 222
    Ammo Packs : 4040
    Honra : -16
    Data de inscrição : 15/08/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por hackingzm 22/9/2013, 2:30 pm

    Scripter fico feliz de ver um plugin legal desse, mais poderia adicionar 1 comando que remove o boss?
    hackingzm
    hackingzm
    Humano


    Masculino Número de Mensagens : 222
    Ammo Packs : 4040
    Honra : -16
    Data de inscrição : 15/08/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por hackingzm 23/9/2013, 4:48 pm

    responde scripter
    Sergio #
    Sergio #
    Moderador
    Moderador


    Masculino Número de Mensagens : 682
    Ammo Packs : 4371
    Honra : 44
    Data de inscrição : 16/02/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por Sergio # 23/9/2013, 4:51 pm

    hackingzm escreveu:responde scripter
    @Cuidado com double post.
    [P]erfec[T] [S]cr[@]s[H]
    [P]erfec[T] [S]cr[@]s[H]
    Scripter


    Masculino Número de Mensagens : 564
    Jogador FODA Perfect Scrash entrou na zplague
    Ammo Packs : 4545
    Honra : 177
    Data de inscrição : 04/04/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por [P]erfec[T] [S]cr[@]s[H] 23/9/2013, 5:00 pm

    Testa ai: O comando é say /remove_oberon

    Código:
    #include <amxmodx>
    #include <amxmisc>
    #include <engine>
    #include <fakemeta>
    #include <hamsandwich>
    #include < xs >
    #include <zombieplague>

    #define OBERON_CLASSNAME "oberon"

    // Flag De Acesso (Atualmente ta na flag F)
    #define FLAG_ACESS                   ADMIN_LEVEL_F

    #define OBERON_HEALTH                  15000.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

    #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], g_damagedealt[33] , g_boss_exists[33], g_position_created[33]
    new cvar_dmg_ap_allow, cvar_ammodamage, cvar_ammo_quantity

    public plugin_init()
    {
       register_plugin("[ZP] Addon: Oberon Boss", "1.0", "Dias | [P]erfec[T] [S]cr[@]s[H]")
       
       register_event("HLTV", "event_newround", "a", "1=0", "2=0")
       register_touch(OBERON_CLASSNAME, "*", "fw_touch")
       
       register_clcmd("say /get_origin", "get_origin")
       register_clcmd("say /make", "create_oberon")
       register_clcmd("say get_origin", "get_origin")
       register_clcmd("say make", "create_oberon")
       register_clcmd("say .get_origin", "get_origin")
       register_clcmd("say .make", "create_oberon")
       register_clcmd("say /remove_oberon", "remove_oberon")
       register_clcmd("say remove_oberon", "remove_oberon")
       register_clcmd("say .remove_oberon", "remove_oberon")
       
       cvar_dmg_ap_allow = register_cvar("zp_oberon_dmg_ap_reward_allow", "1")      // Ganhar Ammo Packs Por Dano
       cvar_ammodamage = register_cvar("zp_oberon_dmg_for_reward", "250")       // Dmg Necessario Para Ganhar Ammo Packs
       cvar_ammo_quantity  = register_cvar("zp_oberon_reward_ap_quantity", "2")    // Quantia de Ammo Packs que ira ganhar
    }

    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)
    {
       if(get_user_flags(id) & FLAG_ACESS)
       {
          pev(id, pev_origin, g_cur_origin)
          pev(id, pev_angles, g_cur_angles)
          pev(id, pev_v_angle, g_cur_v_angle)
          
          g_position_created[id]++
          
          client_printcolor(id, "!g[ZP Oberon]!y Posicao do Nascimento do Oberon Salva Com Sucesso. Para Invocar digite !t^"say /make^"")
       }
       else
       {
          client_printcolor(id,"!g[ZP Oberon]!y Voce Nao Tem Acesso a esse Comando")
       }
    }

    public create_oberon(id)
    {
       if(get_user_flags(id) & FLAG_ACESS)
       {
       
          if(g_position_created[id] == 0)
          {
             client_printcolor(id, "!g[ZP Oberon]!y Voce Tem que Defenir a Posicao de Nascimento Primeiro !g(Digitando:!t say /get_origin!g)")
             return;
          }
          
          if(g_boss_exists[id] >= 1)
          {
             client_printcolor(id, "!g[ZP Oberon]!y Ja Existe um Oberon no Jogo Nao Pode Criar Mais")
             return;
          }
          
          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_STEP)
          
          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")
          set_task(5.0, "creditos", id)
          
          set_hudmessage(255, 0, 0, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
          show_hudmessage(id, "O Oberon Foi Solto. Fuja ou Se Esconda !!")
          
          if(!g_reg)
          {
             RegisterHamFromEntity(Ham_TakeDamage, ent, "fw_takedmg", 1)
             RegisterHamFromEntity(Ham_Think, ent, "fw_think")
             g_reg = 1
          }   
          
          g_boss_exists[id]++
          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)
       }
       else
       {
          client_printcolor(id, "!g[ZP Oberon]!y Voce Nao Tem Acesso a esse Comando")
       }

    }

    public remove_oberon(id)
    {
       if(get_user_flags(id) & FLAG_ACESS)
       {
          remove_entity(id)
          remove_entity_name(OBERON_CLASSNAME)
          client_printcolor(id, "!g[ZP Oberon]!y Oberon Removido com Sucesso")
          g_boss_exists[id] = 0
       }
       else
       {
          client_printcolor(id, "!g[ZP Oberon]!y Voce Nao Tem Acesso a esse Comando")
       }
    }

    public start_oberon(ent)
    {
       set_entity_anim(ent, 2)
    }

    public fw_think(ent, attacker)
    {
       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 *= 5.0
                
             ExecuteHam(Ham_TakeDamage, i, 300, i, Damage, DMG_BLAST)
             hit_screen(i)
          }
       }   
       
       remove_entity(ent)
       remove_entity_name("oberon_bomb")
       
       set_task(1.0, "remove_bomb", ent)
    }

    public remove_bomb(ent)
    {
       remove_entity(ent)
       remove_entity_name("oberon_bomb")
    }

    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)
       
       if(get_pcvar_num(cvar_dmg_ap_allow))
       {
          // Store damage dealt
          g_damagedealt[attacker] += floatround(damage)
             
          // Reward ammo packs for every [ammo damage] dealt
          while (g_damagedealt[attacker] > get_pcvar_num(cvar_ammodamage))
          {
             g_damagedealt[attacker] -= get_pcvar_num(cvar_ammodamage)
             zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(cvar_ammo_quantity))
          }
       }
    }

    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)
    }

    public creditos(id)
    {
       set_hudmessage(0, 255, 255, -1.0, 0.89, 1, 0.0, 5.0, 1.0, 1.0, -1)
       show_hudmessage(id, "Plugin de Boss Editado Por: [P]erfec[T] [S]cr[@]s[H]")
    }
       

    stock client_printcolor(const id, const input[], any:...)
    {
            new count = 1, players[32]
            static msg[191]
            vformat(msg, 190, input, 3)

            replace_all(msg, 190, "!g", "^4")  // Chat Verde
            replace_all(msg, 190, "!y", "^1")  // Chat Normal
            replace_all(msg, 190, "!t", "^3")  // Chat Do Time Tr=Vermelho Ct=Azul Spec=Branco

            if (id) players[0] = id; else get_players(players, count, "ch")
            {
                    for (new i = 0; i < count; i++)
                    {
                            if (is_user_connected(players[i]))
                            {
                                    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                                    write_byte(players[i]);
                                    write_string(msg);
                                    message_end();
                            }
                    }
            }
    }
    @ hackingzm não faça double post cara se não eu mesmo excluo o meu tópico e ninguem mais terá esse oberon.
    hackingzm
    hackingzm
    Humano


    Masculino Número de Mensagens : 222
    Ammo Packs : 4040
    Honra : -16
    Data de inscrição : 15/08/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por hackingzm 25/9/2013, 2:20 pm

    [P]erfec[T] [S]cr[@]s[H] escreveu:Testa ai: O comando é say /remove_oberon

    Código:
    #include <amxmodx>
    #include <amxmisc>
    #include <engine>
    #include <fakemeta>
    #include <hamsandwich>
    #include <  xs >
    #include <zombieplague>

    #define OBERON_CLASSNAME "oberon"

    // Flag De Acesso (Atualmente ta na flag F)
    #define FLAG_ACESS                   ADMIN_LEVEL_F

    #define OBERON_HEALTH                  15000.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

    #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], g_damagedealt[33] , g_boss_exists[33], g_position_created[33]
    new cvar_dmg_ap_allow, cvar_ammodamage, cvar_ammo_quantity

    public plugin_init()
    {
       register_plugin("[ZP] Addon: Oberon Boss", "1.0", "Dias | [P]erfec[T] [S]cr[@]s[H]")
       
       register_event("HLTV", "event_newround", "a", "1=0", "2=0")
       register_touch(OBERON_CLASSNAME, "*", "fw_touch")
       
       register_clcmd("say /get_origin", "get_origin")
       register_clcmd("say /make", "create_oberon")
       register_clcmd("say get_origin", "get_origin")
       register_clcmd("say make", "create_oberon")
       register_clcmd("say .get_origin", "get_origin")
       register_clcmd("say .make", "create_oberon")
       register_clcmd("say /remove_oberon", "remove_oberon")
       register_clcmd("say remove_oberon", "remove_oberon")
       register_clcmd("say .remove_oberon", "remove_oberon")
       
       cvar_dmg_ap_allow = register_cvar("zp_oberon_dmg_ap_reward_allow", "1")      // Ganhar Ammo Packs Por Dano
       cvar_ammodamage = register_cvar("zp_oberon_dmg_for_reward", "250")       // Dmg Necessario Para Ganhar Ammo Packs
       cvar_ammo_quantity  = register_cvar("zp_oberon_reward_ap_quantity", "2")    // Quantia de Ammo Packs que ira ganhar
    }

    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)
    {
       if(get_user_flags(id) & FLAG_ACESS)
       {
          pev(id, pev_origin, g_cur_origin)
          pev(id, pev_angles, g_cur_angles)
          pev(id, pev_v_angle, g_cur_v_angle)
          
          g_position_created[id]++
          
          client_printcolor(id, "!g[ZP Oberon]!y Posicao do Nascimento do Oberon Salva Com Sucesso. Para Invocar digite !t^"say /make^"")
       }
       else
       {
          client_printcolor(id,"!g[ZP Oberon]!y Voce Nao Tem Acesso a esse Comando")
       }
    }

    public create_oberon(id)
    {
       if(get_user_flags(id) & FLAG_ACESS)
       {
       
          if(g_position_created[id] == 0)
          {
             client_printcolor(id, "!g[ZP Oberon]!y Voce Tem que Defenir a Posicao de Nascimento Primeiro !g(Digitando:!t say /get_origin!g)")
             return;
          }
          
          if(g_boss_exists[id] >= 1)
          {
             client_printcolor(id, "!g[ZP Oberon]!y Ja Existe um Oberon no Jogo Nao Pode Criar Mais")
             return;
          }
          
          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_STEP)
          
          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")
          set_task(5.0, "creditos", id)
          
          set_hudmessage(255, 0, 0, -1.0, 0.17, 1, 0.0, 5.0, 1.0, 1.0, -1)
          show_hudmessage(id, "O Oberon Foi Solto. Fuja ou Se Esconda !!")
          
          if(!g_reg)
          {
             RegisterHamFromEntity(Ham_TakeDamage, ent, "fw_takedmg", 1)
             RegisterHamFromEntity(Ham_Think, ent, "fw_think")
             g_reg = 1
          }   
          
          g_boss_exists[id]++
          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)
       }
       else
       {
          client_printcolor(id, "!g[ZP Oberon]!y Voce Nao Tem Acesso a esse Comando")
       }

    }

    public remove_oberon(id)
    {
       if(get_user_flags(id) & FLAG_ACESS)
       {
          remove_entity(id)
          remove_entity_name(OBERON_CLASSNAME)
          client_printcolor(id, "!g[ZP Oberon]!y Oberon Removido com Sucesso")
          g_boss_exists[id] = 0
       }
       else
       {
          client_printcolor(id, "!g[ZP Oberon]!y Voce Nao Tem Acesso a esse Comando")
       }
    }

    public start_oberon(ent)
    {
       set_entity_anim(ent, 2)
    }

    public fw_think(ent, attacker)
    {
       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 *= 5.0
                
             ExecuteHam(Ham_TakeDamage, i, 300, i, Damage, DMG_BLAST)
             hit_screen(i)
          }
       }   
       
       remove_entity(ent)
       remove_entity_name("oberon_bomb")
       
       set_task(1.0, "remove_bomb", ent)
    }

    public remove_bomb(ent)
    {
       remove_entity(ent)
       remove_entity_name("oberon_bomb")
    }

    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)
       
       if(get_pcvar_num(cvar_dmg_ap_allow))
       {
          // Store damage dealt
          g_damagedealt[attacker] += floatround(damage)
             
          // Reward ammo packs for every [ammo damage] dealt
          while (g_damagedealt[attacker] > get_pcvar_num(cvar_ammodamage))
          {
             g_damagedealt[attacker] -= get_pcvar_num(cvar_ammodamage)
             zp_set_user_ammo_packs(attacker, zp_get_user_ammo_packs(attacker) + get_pcvar_num(cvar_ammo_quantity))
          }
       }
    }

    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)
    }

    public creditos(id)
    {
       set_hudmessage(0, 255, 255, -1.0, 0.89, 1, 0.0, 5.0, 1.0, 1.0, -1)
       show_hudmessage(id, "Plugin de Boss Editado Por: [P]erfec[T] [S]cr[@]s[H]")
    }
       

    stock client_printcolor(const id, const input[], any:...)
    {
            new count = 1, players[32]
            static msg[191]
            vformat(msg, 190, input, 3)

            replace_all(msg, 190, "!g", "^4")  // Chat Verde
            replace_all(msg, 190, "!y", "^1")  // Chat Normal
            replace_all(msg, 190, "!t", "^3")  // Chat Do Time Tr=Vermelho Ct=Azul Spec=Branco

            if (id) players[0] = id; else get_players(players, count, "ch")
            {
                    for (new i = 0; i < count; i++)
                    {
                            if (is_user_connected(players[i]))
                            {
                                    message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
                                    write_byte(players[i]);
                                    write_string(msg);
                                    message_end();
                            }
                    }
            }
    }
    @ hackingzm não faça double post cara se não eu mesmo excluo o meu tópico e ninguem mais terá esse oberon.

    vlw (=
    wc_dpz1
    wc_dpz1
    Humano


    Nick : dpzOfficial ;*
    Masculino Número de Mensagens : 62
    Ammo Packs : 4117
    Honra : -2
    Data de inscrição : 22/08/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por wc_dpz1 25/9/2013, 5:30 pm

    muito bom Zplague12 
    Dexter
    Dexter
    Humano


    Nick : Dexter
    Masculino Número de Mensagens : 913
    '-'
    Ammo Packs : 3678
    Honra : -3
    Data de inscrição : 28/04/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por Dexter 26/9/2013, 6:37 pm

    achei 1 erro al digita /remove_oberon esta dando erro olha:
    Oberon - [Plugin] Oberon Boss 0BBsbec
    Lucas157
    Lucas157
    Humano


    Nick : Lucas CB
    Masculino Número de Mensagens : 182
    Ahah venham style zombie plague 4.3 add skype lucas.cb5
    Ammo Packs : 4132
    Honra : -7
    Data de inscrição : 30/08/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por Lucas157 26/9/2013, 7:02 pm

    Feelipe:: escreveu: ><

    esse e o meu ele e diferente desse. Esse e o video que fizeram do meu server quando soltei ele.
    AHAHA MEU BOSS TAMBEM
    hackingzm
    hackingzm
    Humano


    Masculino Número de Mensagens : 222
    Ammo Packs : 4040
    Honra : -16
    Data de inscrição : 15/08/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por hackingzm 26/9/2013, 11:41 pm

    Lucas157 escreveu:
    Feelipe:: escreveu: ><

    esse e o meu ele e diferente desse. Esse e o video que fizeram do meu server quando soltei ele.
    AHAHA MEU BOSS TAMBEM
    passa pra nois (=
    Feelipe::
    Feelipe::
    Humano


    Nick : FeLiPe-OgRaNdE
    Masculino Número de Mensagens : 203
    Ammo Packs : 4406
    Honra : -4
    Data de inscrição : 28/01/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por Feelipe:: 27/9/2013, 2:21 am

    Lucas157 escreveu:
    Feelipe:: escreveu: ><

    esse e o meu ele e diferente desse. Esse e o video que fizeram do meu server quando soltei ele.
    AHAHA MEU BOSS TAMBEM
    O seu e igual ao meu Me diga se vc conseguio tira o bug dele travar os players quando mata ele  e vc conseguio  tira o bug dele dar RR sozinho ??
    moglinh
    moglinh
    Humano


    Nick : Jarobeii
    Masculino Número de Mensagens : 203
    Ammo Packs : 4692
    Honra : -27
    Data de inscrição : 30/01/2012

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por moglinh 27/9/2013, 9:37 pm

    Affs ta dando erroo quando digita /remove_oberon
    olhaa
    Oberon - [Plugin] Oberon Boss 0BBsbec
    hackingzm
    hackingzm
    Humano


    Masculino Número de Mensagens : 222
    Ammo Packs : 4040
    Honra : -16
    Data de inscrição : 15/08/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por hackingzm 28/9/2013, 2:26 pm

    arruma essa porra ae krl
    Dexter
    Dexter
    Humano


    Nick : Dexter
    Masculino Número de Mensagens : 913
    '-'
    Ammo Packs : 3678
    Honra : -3
    Data de inscrição : 28/04/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por Dexter 28/9/2013, 2:31 pm

    hackingzm escreveu:arruma essa porra ae krl
    fika queto
    ele n e obrigado a ajeita plugin pra vc
    hackingzm
    hackingzm
    Humano


    Masculino Número de Mensagens : 222
    Ammo Packs : 4040
    Honra : -16
    Data de inscrição : 15/08/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por hackingzm 28/9/2013, 3:14 pm

    Dexter escreveu:
    hackingzm escreveu:arruma essa porra ae krl
    fika queto
    ele n e obrigado a ajeita plugin pra vc
    fica queto vc lixo , ninguem te chamo aqui fica ae com essa merda de site lixo seu se tem 10 anos mlk seu bosta tudo para zm kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk 10 visualizaçao vo ser obrigado a derruba esse blogspot de merda
    Dexter
    Dexter
    Humano


    Nick : Dexter
    Masculino Número de Mensagens : 913
    '-'
    Ammo Packs : 3678
    Honra : -3
    Data de inscrição : 28/04/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por Dexter 28/9/2013, 3:16 pm

    '-'


    Última edição por Dexter em 8/6/2014, 6:00 pm, editado 1 vez(es)
    MtsLa!<3.L
    MtsLa!<3.L
    Moderador
    Moderador


    Nick : Estelionatario
    Masculino Número de Mensagens : 1237
    InfoBanker
    Ammo Packs : 4771
    Honra : 28
    Data de inscrição : 16/03/2013

    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por MtsLa!<3.L 28/9/2013, 4:06 pm

    vlw aee perfect scrash tava precisando muito desse plugin :D

    Levou meu rep+

    _________________________
    Oberon - [Plugin] Oberon Boss Sing2210

    Conteúdo patrocinado


    Oberon - [Plugin] Oberon Boss Empty Re: [Plugin] Oberon Boss

    Mensagem por Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 9:16 am