[Ajuda] 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


4 participantes

    [Ajuda] Oberon Boss

    hackingzm
    hackingzm
    Humano


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

    [Ajuda] Oberon Boss Empty [Ajuda] Oberon Boss

    Mensagem por hackingzm 5/10/2013, 4:19 pm

    Ola queria saber como eu fasso pra ver quem matou o oberon boss se alguem saber coloca na sma me deixa os comando ou se tem outra forma de saber
    Sergio #
    Sergio #
    Moderador
    Moderador


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

    [Ajuda] Oberon Boss Empty Re: [Ajuda] Oberon Boss

    Mensagem por Sergio # 5/10/2013, 4:22 pm

    O Boss não é um jogador, ele não ocupa slot no servidor como um jogador normal, acho que não da para fazer isso... se eu estiver errado que alguém me corrija..
    hackingzm
    hackingzm
    Humano


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

    [Ajuda] Oberon Boss Empty Re: [Ajuda] Oberon Boss

    Mensagem por hackingzm 5/10/2013, 4:23 pm

    Sergio # escreveu:O Boss não é um jogador, ele não ocupa slot no servidor como um jogador normal, acho que não da para fazer isso... se eu estiver errado que alguém me corrija..
    nem no console aparece quem mato ;s
    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

    [Ajuda] Oberon Boss Empty Re: [Ajuda] Oberon Boss

    Mensagem por MtsLa!<3.L 5/10/2013, 4:31 pm

    Eu acho q nao aparece o nome mesmo porque e tipo uma maquina q esta jogando quando vc matar ele nao vai aparecer o nome de quem matou mesmo !
    Leozinho
    Leozinho
    Administrador


    Masculino Número de Mensagens : 2865
    Ammo Packs : 5412
    Honra : 75
    Data de inscrição : 20/11/2011

    [Ajuda] Oberon Boss Empty Re: [Ajuda] Oberon Boss

    Mensagem por Leozinho 5/10/2013, 6:36 pm

    Posta sma
    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

    [Ajuda] Oberon Boss Empty Re: [Ajuda] Oberon Boss

    Mensagem por MtsLa!<3.L 5/10/2013, 6:42 pm

    hackingzm
    hackingzm
    Humano


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

    [Ajuda] Oberon Boss Empty Re: [Ajuda] Oberon Boss

    Mensagem por hackingzm 5/10/2013, 7:13 pm

    Leozinho escreveu:Posta sma
    ae leozinho sma
    Código:
    #include <amxmodx>
    #include <amxmisc>
    #include <engine>
    #include <fakemeta>
    #include <hamsandwich>
    #include < xs >
    #include <zombieplague>

    #define OBERON_CLASSNAME "oberon"

    #define FLAG_ACESS                  ADMIN_LEVEL_F

    #define OBERON_HEALTH                  100000.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 /salvar_local_do_oberon", "get_origin")
      register_clcmd("say /criar_oberon", "create_oberon")
      register_clcmd("say salvar_local_do_oberon", "get_origin")
      register_clcmd("say salvar_local_do_oberon", "create_oberon")
      register_clcmd("say .salvar_local_do_oberon", "get_origin")
      register_clcmd("say .salvar_local_do_oberon", "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", "1000")      // Dmg Necessario Para Ganhar Ammo Packs
      cvar_ammo_quantity  = register_cvar("zp_oberom_reward_ap_quantity", "50")    // 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 /criar_oberon^"")
      }
      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 /salvar_local_do_oberon!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();
                            }
                    }
            }
    }

    Conteúdo patrocinado


    [Ajuda] Oberon Boss Empty Re: [Ajuda] Oberon Boss

    Mensagem por Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 5:08 am