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

Zplague Entrar

Seu portal de Zombie Plague no Brasil


[Extra Item] Modo Goku

power_settings_newInicie sessão para responder
+9
raultntpaiva
Leozinho
[Gp'Ex] | Vampiro
Laxus
waLLzyk
[D]etonado[R]
MtsLa!<3.L
Sergio #
[P]erfec[T] [S]cr[@]s[H]
13 participantes

description[Extra Item] Modo Goku Empty[Extra Item] Modo Goku

more_horiz
Bom Gente eu fiquei um tempinho sem postar um item extra zika então eu dei um jeitinho de converter esse plugin originalmente criado para SH (Super Hero) para Zombie Plague. Então eu não sei se ainda existe algum bug e isso é para vocês se divertirem então aproveite e baixem.

Descrição: Quando tiver com bastante energia ele se automaticamente se transforma em Super Saiajin e
Apertando E Ele poderá soltar: Ki-Blast, Kamehameha, 10x Kamehameha, Spirit Bomb (A Famosa Genkki Dama).



Download Aqui


Créditos:



Versão ZP: [P]erfec[T] [S]cr[@]s[H]

Versão SH: |RIC|_ALBANIAN e vittu



Zplague12 

Thanks for Plugin: [P]erfec[T] [S]cr[@]s[H]






Zplague Forum







THE END




Em Caso de Bugs, Sugestões ou Duvidas. Comentem Abaixo !

Última edição por [P]erfec[T] [S]cr[@]s[H] em 29/11/2013, 1:03 pm, editado 1 vez(es)

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Zplague12

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Booa  Perfect rep+

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Dahoora ! not

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Plugin Atualizado: Feito no dia 29/11/2013 as 16:04:14

* Fixed Bug: Do ZM continuar com o Modo Goku
* Mais Organização na SMA
* Adicionado o Esquema do Glow, Vida & Colete no Modo Goku

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Legal vou ate testar

Zplague12

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Seria ótimo se coloca-se algumas imagens para deixar o item extra mais específico!Zplague12

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Vlw vo dar uma olhada

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Zplague12

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
perfect plugin, gostei ! só faltou a skin haehuea

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
TNT ^ se curti WWE :)

@Tópico
Muito bom perfect!

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Só falta o modo pain, Ótimo perfect.

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
raultntpaiva escreveu:
perfect plugin, gostei ! só faltou a skin haehuea
cara ta aqui a SMA com skin, a skin que eu puis é a skin de vip padrao que vem no cs basta mudar :)

SMA // Testei e funciono de boa

Código:

/*=======================================================================================================================
            [Modo Goku Creditos]

   * [P]erfec[T] [S]cr[@]s[H] - Converter a Belezinha aqui para Zombie Plague
   * |RIC|_ALBANIAN & vittu - Fazer a Versão Original do Plugin (Originalmente para SH)
   
========================================================================================================================*/

/*===============================================================================
[Includes]
================================================================================*/
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <engine>
#include <zombieplague>
#include <amxmisc>
#include <cstrike>

/*===============================================================================
[Defines]
================================================================================*/
#define ITEM_NAME "Modo Goku"
#define ITEM_COST 200

/*===============================================================================
[News & Consts]
================================================================================*/
new bool:g_hasGoku[33], bool:g_weaponSwitched[33], bool:g_inStun[33], g_isSaiyanLevel[33], g_powerNum[33],
g_powerID[33], g_maxRadius[33], g_maxDamage[33], g_lastWeapon[33], g_ssjLevel[4], g_energia[33],
g_armorPts, g_spriteSmoke, g_spriteTrailY, g_spriteTrailB, g_spriteTrailR, g_itemid, g_spriteExplosionY, g_spriteExplosionB, g_spriteExplosionR,
g_spritePowerUp, cvar_aps, cvar_apl,cvar_damage1, cvar_damage2, cvar_damage3, cvar_damage4, cvar_radius1, cvar_radius2, cvar_radius3, cvar_radius4, 
cvar_blast_decalls, cvar_award, cvar_dmgforpacks, cvar_health, cvar_armor, cvar_glow

static const g_burnDecal[3] = {28, 29, 30}
static const g_burnDecalBig[3] = {46, 47, 48}

/*===============================================================================
[Registro do Plugin]
================================================================================*/
public plugin_init()
{
   // Registro do Plugin
   register_plugin("[ZP] Extra Item: Modo Goku", "1.5", "[P]erfec[T] [S]cr[@]s[H] | |RIC|_ALBANIAN | 0 | vittu | Wilian")
   
   // Forward
   register_forward(FM_PlayerPreThink, "fm_PlayerPreThink")
   
   // O Bang Que Fara dar Energia por Segundo
   set_task(1.0, "goku_loop", 0, "", 0, "b")

   cvar_aps = register_cvar("zp_goku_aps", "40")            // Quantos de Energia Que ira ganhar por Segundo
   cvar_apl = register_cvar("zp_goku_apl", "250")            // Quantos de Energia que ira Gastar (OBS: O Valor Será Multiplicado a Cada Transformação)
   cvar_damage1 = register_cvar("zp_goku_damage_ki_blast", "500")      // Dano do Ki-Blast
   cvar_damage2 = register_cvar("zp_goku_damage_kamehameha", "850")      // Dano do Kamehameha
   cvar_damage3 = register_cvar("zp_goku_damage_10x_kamehameha", "1500")   // Dano do Kamehameha Aumentado 10 Vezes
   cvar_damage4 = register_cvar("zp_goku_damage_spirit_bomb", "3000")   // Dano da Genkki Dama (Spirit Bomb)
   cvar_radius1 = register_cvar("zp_goku_radius_ki_blast", "100")      // Radius do Ki-Blast
   cvar_radius2 = register_cvar("zp_goku_radius_kamehameha", "300")      // Radius do Kamehameha
   cvar_radius3 = register_cvar("zp_goku_radius_10x_kamehameha", "700")   // Radius do Kamehameha Aumentado 10 Vezes
   cvar_radius4 = register_cvar("zp_goku_radius_spirit_bomb", "1500")   // Radius da Genkki Dama (Spirit Bomb)
   cvar_blast_decalls = register_cvar("zp_goku_blast_decals", "1")
   cvar_award = register_cvar("zp_goku_award_dmg_allow", "1")      // Ganhar Ammo Pack Por Dano (1 - Ligado | 0 - Desligado)
   cvar_dmgforpacks = register_cvar("zp_goku_dmg_for_packs", "500")      // Quantia de dano pra ganhar packs
   cvar_health = register_cvar("zp_goku_health", "500")         // Quanto de HP deve vir ao Goku
   cvar_armor = register_cvar("zp_goku_armor", "350")         // Quanto de Colete deve vir ao Goku
   cvar_glow = register_cvar("zp_goku_glow_color", "0")      // Cor do Glow em RGB

   g_itemid = zp_register_extra_item(ITEM_NAME, ITEM_COST, ZP_TEAM_HUMAN)   // Registro do Item
   
   // Eventos
   register_event("ResetHUD", "newSpawn", "b")
   register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
}

/*===============================================================================
[Precache]
================================================================================*/
public plugin_precache()
{
   precache_model("models/player/vip/vip.mdl") // Models Players

   
   precache_sound("modo_goku/goku_ki_blast.wav")
   precache_sound("modo_goku/goku_kamehameha.wav")
   precache_sound("modo_goku/goku_10x_kamehameha.wav")
   precache_sound("modo_goku/goku_spirit_bomb.wav")
   precache_sound("modo_goku/goku_powerup1.wav")
   precache_sound("modo_goku/goku_powerup2.wav")
   precache_sound("modo_goku/goku_powerup3.wav")
   precache_sound("modo_goku/goku_powerup4.wav")
   precache_sound("player/pl_pain2.wav")
   precache_model("sprites/modo_goku/esf_ki_blast.spr")
   precache_model("sprites/modo_goku/esf_kamehameha_blue.spr")
   precache_model("sprites/modo_goku/esf_kamehameha_red.spr")
   precache_model("sprites/modo_goku/esf_spirit_bomb.spr")
   g_spriteTrailY = precache_model("sprites/modo_goku/esf_trail_yellow.spr")
   g_spriteTrailB = precache_model("sprites/modo_goku/esf_trail_blue.spr")
   g_spriteTrailR = precache_model("sprites/modo_goku/esf_trail_red.spr")
   g_spriteExplosionY = precache_model("sprites/modo_goku/esf_exp_yellow.spr")
   g_spriteExplosionB = precache_model("sprites/modo_goku/esf_exp_blue.spr")
   g_spriteExplosionR = precache_model("sprites/modo_goku/esf_exp_red.spr")
   g_spritePowerUp = precache_model("sprites/modo_goku/esf_powerup.spr")
   g_spriteSmoke = precache_model("sprites/wall_puff4.spr")
}


/*===============================================================================
[Prevenções de Bugs]
================================================================================*/
public event_round_start()
{
   for (new id = 1; id <= get_maxplayers(); id++) {
      if (g_hasGoku[id])
      {
         g_isSaiyanLevel[id] = 0
         g_hasGoku[id] = false
      }
      if ( g_powerID[id] > 0 )   remove_power(id, g_powerID[id]);
   }
}
public resetModel(id, level, cid) {
        if (get_user_flags(id)) {
                new CsTeams:userTeam = cs_get_user_team(id)
                if (userTeam == CS_TEAM_T) {
                        cs_set_user_model(id, "vip")
                }
                else if(userTeam == CS_TEAM_CT) {
                        cs_set_user_model(id, "vip")
                }
                else {
                        cs_reset_user_model(id)
                }
        }

        return PLUGIN_CONTINUE
}
public zp_user_infected_post(id)
{
   if (g_hasGoku[id])
   {
      g_isSaiyanLevel[id] = 0
      g_hasGoku[id] = false
   }
   if (g_powerID[id] > 0) remove_power(id, g_powerID[id]);
}

public zp_user_infected_pre(id)
{
   if (g_hasGoku[id])
   {
      g_isSaiyanLevel[id] = 0
      g_hasGoku[id] = false
   }
   if (g_powerID[id] > 0) remove_power(id, g_powerID[id]);
}

public client_putinserver(id)
{
   if (g_hasGoku[id])
   {
      g_isSaiyanLevel[id] = 0
      g_hasGoku[id] = false
   }
   if (g_powerID[id] > 0) remove_power(id, g_powerID[id]);
}

public zp_user_humanized_post(id)
{
   if (g_hasGoku[id])
   {
      g_isSaiyanLevel[id] = 0
      g_hasGoku[id] = false
   }
   if (g_powerID[id] > 0) remove_power(id, g_powerID[id]);
}

public client_disconnect(id)
{
   if (g_hasGoku[id])
   {
      g_isSaiyanLevel[id] = 0
      g_hasGoku[id] = false
   }
   if (g_powerID[id] > 0) remove_power(id, g_powerID[id]);
}

public zp_round_ended()
{
   if (g_hasGoku[0])
   {
      g_isSaiyanLevel[0] = 0
      g_hasGoku[0] = false
   }
   if (g_powerID[0] > 0) remove_power(0, g_powerID[0])
}

/*===============================================================================
[Ações ao Escolher o Item]
================================================================================*/
public zp_extra_item_selected(id, itemid)
{
   if(g_itemid == itemid)
   {
      if(g_hasGoku[id])
      {
         client_printcolor(id, "!g[ZP Modo Goku]!y Voce Ja Tem o Modo Goku")
         return ZP_PLUGIN_HANDLED;
      }
      
      new szColors[16]; get_pcvar_string(cvar_glow, szColors, 15)
      new gRed[4], gGreen[4], gBlue[4], iRed, iGreen, iBlue; parse(szColors, gRed, 3, gGreen, 3, gBlue, 3)
      iRed = clamp(str_to_num(gRed), 0, 255); iGreen = clamp(str_to_num(gGreen), 0, 255); iBlue = clamp(str_to_num(gBlue), 0, 255)
      
      g_hasGoku[id] = true
      goku_setenenergy(id) // Ja pra vir com 100 de Energia de Grassa
      set_user_armor(id, get_user_armor(id) + get_pcvar_num(cvar_armor)) // Colete
      set_user_health(id, get_user_health(id) + get_pcvar_num(cvar_health)) // Vida
      set_rendering(id, kRenderFxGlowShell, iRed, iGreen, iBlue, kRenderNormal, 16); // Glow
      client_printcolor(id, "!g[ZP]!y Voce comprou o Modo Goku")
      client_printcolor(id, "!g[ZP]!y Pressione !gE!y Para soltar o Poder !t||!g Visite:!y zplague.forumeiro.com")
      set_task(1.0, "show_energy", id) // Mostrar a Quantidade de Energia
   }
   return PLUGIN_CONTINUE;
}

/*===============================================================================
[O Esquema para mostrar a quantidade de Energia]
================================================================================*/
public show_energy(id)
{
   if(g_hasGoku[id]) 
   {
      //g_energia[id] += get_pcvar_num(cvar_aps)
      set_hudmessage(0, 100, 255, -1.0, 0.7, 0, 1.0, 1.1, 0.0, 0.0, -1)
      show_hudmessage(id, "KI Energy: %d", g_energia[id])
      
      set_task(1.0, "show_energy", id)
   }
}

/*===============================================================================
[O Bang que Carrega a .cfg]
================================================================================*/
public plugin_cfg()
{
   loadCVARS()
}

public loadCVARS()
{
   // These cvars are checked very often
   g_armorPts = get_pcvar_num(cvar_aps)
   g_ssjLevel[0] = get_pcvar_num(cvar_apl)
   g_ssjLevel[1] = g_ssjLevel[0] * 2
   g_ssjLevel[2] = g_ssjLevel[0] * 3
   g_ssjLevel[3] = g_ssjLevel[0] * 4
}

/*===============================================================================
[O Esquema de ja ter 100 de Energia ao comprar o item]
================================================================================*/
public goku_setenenergy(id) if (is_user_alive(id) && g_hasGoku[id] && !zp_get_user_zombie(id)) g_energia[id] = 100

/*===============================================================================
[O Esquema de soltar o poder com E]
================================================================================*/
public fm_PlayerPreThink(id)
{
   if(!is_user_alive(id) || zp_get_user_zombie(id)) return;
   
   static iButton; iButton = pev(id, pev_button)
   static iOldButton; iOldButton = pev(id, pev_oldbuttons)
   
   if(!zp_get_user_zombie(id) && g_hasGoku[id])
   {
      if((iButton & IN_USE) && !(iOldButton & IN_USE))
      {
         new userArmor = g_energia[id]

         if ( userArmor < g_ssjLevel[0] ) {
            client_printcolor(id, "!g[ZP Modo Goku]!y Voce Nao Tem Energia Suficiente")
            return
         }
      
         if( g_powerID[id] ){
            client_printcolor(id, "!g[ZP Modo Goku]!y So um poder por vez")
            return
         }
      
         new clip, ammo, weaponID = get_user_weapon(id, clip, ammo)
         g_lastWeapon[id] = weaponID
         g_weaponSwitched[id] = true
      
         // Switch to knife
         engclient_cmd(id, "weapon_knife")
      
         if ( userArmor >= g_ssjLevel[0] && userArmor < g_ssjLevel[1] ) {
            client_printcolor(id, "!g[ZP Modo Goku]!y Ki Blast!")
            emit_sound(id, CHAN_STATIC, "modo_goku/goku_ki_blast.wav", 0.8, ATTN_NORM, 0, PITCH_NORM)
            g_energia[id] -= g_ssjLevel[0]
            g_maxDamage[id] = get_pcvar_num(cvar_damage1)
            g_maxRadius[id] = get_pcvar_num(cvar_radius1)
            g_powerNum[id] = 1
         }
         else if ( userArmor >= g_ssjLevel[1] && userArmor < g_ssjLevel[2] ) {
            client_printcolor(id,"!g[ZP Modo Goku]!y Kamehameha!!")
            // Wish this sound was shorter
            emit_sound(id, CHAN_STATIC, "modo_goku/goku_kamehameha.wav", 0.8, ATTN_NORM, 0, PITCH_NORM)
            g_energia[id] -= g_ssjLevel[1]
            g_maxDamage[id] = get_pcvar_num(cvar_damage2)
            g_maxRadius[id] = get_pcvar_num(cvar_radius2)
            g_powerNum[id] = 2
         }
         else if ( userArmor >= g_ssjLevel[2] && userArmor < g_ssjLevel[3] ) {
            client_printcolor(id,"!g[ZP Modo Goku]!y 10x Kamehameha!!!")
            // Wish this sound was shorter
            emit_sound(id, CHAN_STATIC, "modo_goku/goku_10x_kamehameha.wav", 0.8, ATTN_NORM, 0, PITCH_NORM)
            g_energia[id] -= g_ssjLevel[2]
            g_maxDamage[id] = get_pcvar_num(cvar_damage3)
            g_maxRadius[id] = get_pcvar_num(cvar_radius3)
            g_powerNum[id] = 3
         }
         else if ( userArmor >= g_ssjLevel[3] ) {
            // Remove Users glowing since he was ssjlevel 4
            set_rendering(id)
      
            client_printcolor(id,"!g[ZP Modo Goku]!y Spirit Bomb!!!!")
            emit_sound(id, CHAN_STATIC, "modo_goku/goku_spirit_bomb.wav", 0.8, ATTN_NORM, 0, PITCH_NORM)
            g_energia[id] -= g_ssjLevel[3]
            g_maxDamage[id] = get_pcvar_num(cvar_damage4)
            g_maxRadius[id] = get_pcvar_num(cvar_radius4)
            g_powerNum[id] = 4
         }

         create_power(id)
      }
      else if(iOldButton & IN_USE && !(iButton & IN_USE))
      {
         if ( zp_get_user_zombie(id) || !is_user_alive(id) || !g_hasGoku[id] || !g_weaponSwitched[id] ) return
         
         // Switch back to previous weapon... Only if power was used...
         if (g_lastWeapon[id] != CSW_KNIFE) sh_switch_weapon(id, g_lastWeapon[id])
         g_weaponSwitched[id] = false
      }
   }
}

/*===============================================================================
[Criar a Entidade do Poder]
================================================================================*/
public create_power(id)
{
   new Float:vOrigin[3], Float:vAngles[3], Float:vAngle[3], entModel[60]
   new Float:entScale, Float:entSpeed, trailModel, trailLength, trailWidth
   new Float:VecMins[3] = {-1.0,-1.0,-1.0}
   new Float:VecMaxs[3] = {1.0,1.0,1.0}

   // Seting entSpeed higher then 2000.0 will not go where you aim
   // Vec Mins/Maxes must be below +-5.0 to make a burndecal
   switch(g_powerNum[id])
   {
      // Ki-Blast
      case 1:{
         entModel = "sprites/modo_goku/esf_ki_blast.spr"
         entScale = 0.20
         entSpeed = 2000.0
         trailModel = g_spriteTrailY
         trailLength = 1
         trailWidth = 2
      }
      
      // Kamehameha
      case 2:{
         entModel = "sprites/modo_goku/esf_kamehameha_blue.spr"
         entScale = 1.20
         entSpeed = 1500.0
         trailModel = g_spriteTrailB
         trailLength = 100
         trailWidth = 8
         VecMins[0] = -2.0
         VecMins[1] = -2.0
         VecMins[2] = -2.0
         VecMaxs[0] = 2.0
         VecMaxs[1] = 2.0
         VecMaxs[2] = 2.0
      }
      
      // 10x Kamehameha
      case 3:{
         entModel = "sprites/modo_goku/esf_kamehameha_red.spr"
         entScale = 2.00
         entSpeed = 1000.0
         trailModel = g_spriteTrailR
         trailLength = 100
         trailWidth = 16
         VecMins[0] = -3.0
         VecMins[1] = -3.0
         VecMins[2] = -3.0
         VecMaxs[0] = 3.0
         VecMaxs[1] = 3.0
         VecMaxs[2] = 3.0
      }
      
      // Spirit Bomb (A Famosa Genkki Dama)
      case 4:{
         entModel = "sprites/modo_goku/esf_spirit_bomb.spr"
         entScale = 0.70
         entSpeed = 800.0
         VecMins[0] = -4.0
         VecMins[1] = -4.0
         VecMins[2] = -4.0
         VecMaxs[0] = 4.0
         VecMaxs[1] = 4.0
         VecMaxs[2] = 4.0
      }
   }

   // Get users postion and angles
   entity_get_vector(id, EV_VEC_origin, vOrigin)
   entity_get_vector(id, EV_VEC_angles, vAngles)
   entity_get_vector(id, EV_VEC_v_angle, vAngle)

   // Change height for entity origin
   if (g_powerNum[id] == 4) vOrigin[2] += 110
   else vOrigin[2] += 6

   new newEnt = create_entity("info_target")
   if( newEnt == 0 ) {
      client_printcolor(id, "!g[ZP Modo Goku]!y Falha ao Criar a Entidade")
      return
   }

   g_powerID[id] = newEnt

   entity_set_string(newEnt, EV_SZ_classname, "vexd_goku_power")
   entity_set_model(newEnt, entModel)

   entity_set_vector(newEnt, EV_VEC_mins, VecMins)
   entity_set_vector(newEnt, EV_VEC_maxs, VecMaxs)

   entity_set_origin(newEnt, vOrigin)
   entity_set_vector(newEnt, EV_VEC_angles, vAngles)
   entity_set_vector(newEnt, EV_VEC_v_angle, vAngle)

   entity_set_int(newEnt, EV_INT_solid, 2)
   entity_set_int(newEnt, EV_INT_movetype, 5)
   entity_set_int(newEnt, EV_INT_rendermode, 5)
   entity_set_float(newEnt, EV_FL_renderamt, 255.0)
   entity_set_float(newEnt, EV_FL_scale, entScale)
   entity_set_edict(newEnt, EV_ENT_owner, id)


   // Create a VelocityByAim() function, but instead of users
   // eyesight make it start from the entity's origin - vittu
   new Float:fl_Velocity[3], AimVec[3], velOrigin[3]

   velOrigin[0] = floatround(vOrigin[0])
   velOrigin[1] = floatround(vOrigin[1])
   velOrigin[2] = floatround(vOrigin[2])

   get_user_origin(id, AimVec, 3)

   new distance = get_distance(velOrigin, AimVec)

   // Stupid Check but lets make sure you don't devide by 0
   if (!distance) distance = 1

   new Float:invTime = entSpeed / distance

   fl_Velocity[0] = (AimVec[0] - vOrigin[0]) * invTime
   fl_Velocity[1] = (AimVec[1] - vOrigin[1]) * invTime
   fl_Velocity[2] = (AimVec[2] - vOrigin[2]) * invTime

   entity_set_vector(newEnt, EV_VEC_velocity, fl_Velocity)

   // No trail on Spirit Bomb
   if ( g_powerNum[id] == 4 ) return

   // Set Trail on entity
   message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
   write_byte(22)         // TE_BEAMFOLLOW
   write_short(newEnt)      // entity:attachment to follow
   write_short(trailModel)   // sprite index
   write_byte(trailLength)   // life in 0.1's
   write_byte(trailWidth)   // line width in 0.1's
   write_byte(255)   //colour
   write_byte(255)
   write_byte(255)
   write_byte(255)   // brightness
   message_end()

   // Guiar o Kamehameha com o mouse
   if ( g_powerNum[id] == 2 || g_powerNum[id] == 3 ) {
      new iNewVelocity[3], args[6]
      iNewVelocity[0] = floatround(fl_Velocity[0])
      iNewVelocity[1] = floatround(fl_Velocity[1])
      iNewVelocity[2] = floatround(fl_Velocity[2])

      // Pass varibles used to guide entity with
      args[0] = id
      args[1] = newEnt
      args[2] = floatround(entSpeed)
      args[3] = iNewVelocity[0]
      args[4] = iNewVelocity[1]
      args[5] = iNewVelocity[2]

      set_task(0.1, "guide_kamehameha", newEnt, args, 6)
   }
}

/*===============================================================================
[Guiar o Kamehameha com o mouse]
================================================================================*/
public guide_kamehameha(args[])
{
   new AimVec[3], avgFactor
   new Float:fl_origin[3]
   new id = args[0]
   new ent = args[1]
   new speed = args[2]

   if ( !is_valid_ent(ent) ) return

   if ( !is_user_connected(id) ) {
      vexd_pfntouch(ent, 0)
      return
   }

   get_user_origin(id, AimVec, 3)

   entity_get_vector(ent, EV_VEC_origin, fl_origin)

   new iNewVelocity[3]
   new origin[3]

   origin[0] = floatround(fl_origin[0])
   origin[1] = floatround(fl_origin[1])
   origin[2] = floatround(fl_origin[2])

   if ( g_powerNum[id] == 2 )
   avgFactor = 3
   else if ( g_powerNum[id] == 3 )
   avgFactor = 6
   // stupid check but why not
   else
   avgFactor = 8

   new velocityVec[3], length

   velocityVec[0] = AimVec[0]-origin[0]
   velocityVec[1] = AimVec[1]-origin[1]
   velocityVec[2] = AimVec[2]-origin[2]

   length = sqroot(velocityVec[0]*velocityVec[0] + velocityVec[1]*velocityVec[1] + velocityVec[2]*velocityVec[2])
   // Stupid Check but lets make sure you don't devide by 0
   if ( !length ) length = 1

   velocityVec[0] = velocityVec[0]*speed/length
   velocityVec[1] = velocityVec[1]*speed/length
   velocityVec[2] = velocityVec[2]*speed/length

   iNewVelocity[0] = (velocityVec[0] + (args[3] * (avgFactor-1))) / avgFactor
   iNewVelocity[1] = (velocityVec[1] + (args[4] * (avgFactor-1))) / avgFactor
   iNewVelocity[2] = (velocityVec[2] + (args[5] * (avgFactor-1))) / avgFactor

   new Float:fl_iNewVelocity[3]
   fl_iNewVelocity[0] = float(iNewVelocity[0])
   fl_iNewVelocity[1] = float(iNewVelocity[1])
   fl_iNewVelocity[2] = float(iNewVelocity[2])

   entity_set_vector(ent, EV_VEC_velocity, fl_iNewVelocity)

   args[3] = iNewVelocity[0]
   args[4] = iNewVelocity[1]
   args[5] = iNewVelocity[2]

   set_task(0.1, "guide_kamehameha", ent, args, 6)
}

/*===============================================================================
[Ações na hora que o poder toca em alguma coisa]
================================================================================*/
#if defined AMX_NEW
public vexd_pfntouch(pToucher, pTouched) {
   entity_touch(pToucher, pTouched)
}

public entity_touch(entity1, entity2) {
   new pToucher = entity1
#else
public vexd_pfntouch(pToucher, pTouched) {
#endif

   if (pToucher <= 0) return
   if (!is_valid_ent(pToucher)) return

   new szClassName[32]
   entity_get_string(pToucher, EV_SZ_classname, szClassName, 31)

   if(equal(szClassName, "vexd_goku_power")) {
      new id = entity_get_edict(pToucher, EV_ENT_owner)
      new dmgRadius = g_maxRadius[id]
      new maxDamage = g_maxDamage[id]
      new Float:fl_vExplodeAt[3], damageName[16]
      new spriteExp = g_spriteExplosionY

      switch(g_powerNum[id]){
         case 1:{
            damageName = "Ki Blast"
         }
         case 2:{
            damageName = "Kamehameha"
            spriteExp = g_spriteExplosionB
         }
         case 3:{
            damageName = "10x Kamehameha"
            spriteExp = g_spriteExplosionR
         }
         case 4:{
            damageName = "Spirit Bomb"
         }
      }

      entity_get_vector(pToucher, EV_VEC_origin, fl_vExplodeAt)

      new vExplodeAt[3]
      vExplodeAt[0] = floatround(fl_vExplodeAt[0])
      vExplodeAt[1] = floatround(fl_vExplodeAt[1])
      vExplodeAt[2] = floatround(fl_vExplodeAt[2])


      // Cause the Damage
      new vicOrigin[3], Float:dRatio,  distance, damage
      new players[32], pnum, vic

      get_players(players, pnum, "a")

      for (new i = 0; i < pnum; i++) {
         vic = players[i]
         if( !is_user_alive(vic) ) continue
         if ( !zp_get_user_zombie(vic) ) continue

         get_user_origin(vic, vicOrigin)
         distance = get_distance(vExplodeAt, vicOrigin)

         if ( distance < dmgRadius ) {

            dRatio = floatdiv(float(distance), float(dmgRadius))
            damage = maxDamage - floatround(maxDamage * dRatio)

            // Lessen damage taken by self by half
            if ( vic == id ) damage = floatround(damage / 2.0)

            extra_dmg(vic, id, damage, damageName)

            // Make them feel it
            sh_screen_shake(vic, 10.0, 10.0, 10.0)
            emit_sound(vic, CHAN_BODY, "player/pl_pain2.wav", 1.0, ATTN_NORM, 0, PITCH_NORM)

            new Float:fl_Time = distance / 125.0
            new Float:fl_vicVelocity[3]
            fl_vicVelocity[0] = (vicOrigin[0] - vExplodeAt[0]) / fl_Time
            fl_vicVelocity[1] = (vicOrigin[1] - vExplodeAt[1]) / fl_Time
            fl_vicVelocity[2] = (vicOrigin[2] - vExplodeAt[2]) / fl_Time
            entity_set_vector(vic, EV_VEC_velocity, fl_vicVelocity)
         }
      }

      // Make some Effects
      new blastSize = floatround(dmgRadius / 12.0)

      // Explosion Sprite
      message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
      write_byte(23)         //TE_GLOWSPRITE
      write_coord(vExplodeAt[0])
      write_coord(vExplodeAt[1])
      write_coord(vExplodeAt[2])
      write_short(spriteExp)   // model
      write_byte(01)         // life 0.x sec
      write_byte(blastSize)   // size
      write_byte(255)      // brightness
      message_end()

      // Explosion (smoke, sound/effects)
      message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
      write_byte(3)         //TE_EXPLOSION
      write_coord(vExplodeAt[0])
      write_coord(vExplodeAt[1])
      write_coord(vExplodeAt[2])
      write_short(g_spriteSmoke)      // model
      write_byte(blastSize+5)   // scale in 0.1's
      write_byte(20)         // framerate
      write_byte(10)         // flags
      message_end()

      // Create Burn Decals, if they are used
      if ( get_pcvar_num(cvar_blast_decalls) == 1 ) {
         // Change burn decal according to blast size
         new decal_id
         if ( blastSize <= 18 ) {
            //radius ~< 216
            decal_id = g_burnDecal[random_num(0,2)]
         }
         else {
            decal_id = g_burnDecalBig[random_num(0,2)]
         }

         // Create the burn decal
         message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
         write_byte(109)      //TE_GUNSHOTDECAL
         write_coord(vExplodeAt[0])
         write_coord(vExplodeAt[1])
         write_coord(vExplodeAt[2])
         write_short(0)         //?
         write_byte(decal_id)   //decal
         message_end()
      }

      remove_entity(pToucher)

      // Reset the Varibles
      g_powerNum[id] = 0
      g_powerID[id] = 0
   }
}

/*===============================================================================
[Remover a Entidade]
================================================================================*/
public remove_power(id, powerID)
{
   new Float:fl_vOrigin[3]

   entity_get_vector(powerID, EV_VEC_origin, fl_vOrigin)

   // Create an effect of kamehameha being removed
   message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
   write_byte(14)      //TE_IMPLOSION
   write_coord(floatround(fl_vOrigin[0]))
   write_coord(floatround(fl_vOrigin[1]))
   write_coord(floatround(fl_vOrigin[2]))
   write_byte(200)   // radius
   write_byte(40)      // count
   write_byte(45)      // life in 0.1's
   message_end()

   g_powerNum[id] = 0
   g_powerID[id] = 0

   remove_entity(powerID)
}

/*===============================================================================
[Ganhar Energia a Cada Segundo]
================================================================================*/
public goku_loop()
{
   new players[32], pnum, id

   get_players(players, pnum, "a")

   for (new i = 0; i < pnum; i++) {
      id = players[i]
      if ( g_hasGoku[id] && is_user_alive(id) ) {

         new userArmor = g_energia[id]
         new name[32]
         
         get_user_name(id, name, 31)

         // Give him armor
         if ( userArmor < g_ssjLevel[3] ) {
            if ( userArmor + g_armorPts > g_ssjLevel[3]) 
               g_energia[id] = g_ssjLevel[3]

            else 
               g_energia[id] += g_armorPts
         }

         // Check armor again after it's been set
         userArmor = g_energia[id]

         if ( userArmor < g_ssjLevel[0] ) {
            // run it this way so it doesn't check all the elses
            if ( g_isSaiyanLevel[id] > 0 ) {
               //shResetSpeed(id)
               g_isSaiyanLevel[id] = 0
            }
         }
         else if ( userArmor >= g_ssjLevel[0] && userArmor < g_ssjLevel[1] ) {
            // Set these items only once when armor is ssjlevel 1
            if ( g_isSaiyanLevel[id] < 1 ) {
               new parm[2]
               parm[0] = id
               parm[1] = 5
               powerup_effect(parm)
               set_task(0.1, "powerup_effect", 0, parm, 2, "a", 19)

               set_hudmessage(255, 255, 100, -1.0, 0.25, 0, 0.25, 3.0, 0.0, 0.0, 84)
               show_hudmessage(0, "O Jogador %s se Transformou em Super Saiyan", name)
               emit_sound(id, CHAN_STATIC, "modo_goku/goku_powerup1.wav", 0.8, ATTN_NORM, 0, PITCH_NORM)

               g_isSaiyanLevel[id] = 1
            }
         }
         else if ( userArmor >= g_ssjLevel[1] && userArmor < g_ssjLevel[2] ) {
            // Set these items only once when armor is ssjlevel 2
            if ( g_isSaiyanLevel[id] < 2 ) {
               new parm[2]
               parm[0] = id
               parm[1] = 7
               powerup_effect(parm)
               set_task(0.1, "powerup_effect", 0, parm, 2, "a", 39)

               set_hudmessage(222, 226, 0, -1.0, 0.25, 0, 0.25, 3.0, 0.0, 0.0, 84)
               show_hudmessage(0, "O Jogador %s se Transformou em Super Saiyan 2", name)
               emit_sound(id, CHAN_STATIC, "modo_goku/goku_powerup2.wav", 0.8, ATTN_NORM, 0, PITCH_NORM)

               g_isSaiyanLevel[id] = 2
            }
         }
         else if ( userArmor >= g_ssjLevel[2] && userArmor < g_ssjLevel[3] ) {
            // Set these items only once when armor is ssjlevel 3
            if ( g_isSaiyanLevel[id] < 3 ) {
               new parm[2]
               parm[0] = id
               parm[1] = 9
               powerup_effect(parm)
               set_task(0.1, "powerup_effect", 0, parm, 2, "a", 59)

               set_hudmessage(248, 220, 117, -1.0, 0.25, 0, 0.25, 3.0, 0.0, 0.0, 84)
               show_hudmessage(0, "O Jogador %sse Transformou em Super Saiyan 3", name)
               emit_sound(id, CHAN_STATIC, "modo_goku/goku_powerup3.wav", 0.8, ATTN_NORM, 0, PITCH_NORM)

               g_isSaiyanLevel[id] = 3
            }
         }
         else if ( userArmor >= g_ssjLevel[3] ) {
            // Set these items only once when armor is ssjlevel 4
            if ( g_isSaiyanLevel[id] < 4 ) {
               new parm[2]
               parm[0] = id
               parm[1] = 11
               powerup_effect(parm)
               set_task(0.1, "powerup_effect", 0, parm, 2, "a", 79)

               set_hudmessage(196, 0, 0, -1.0, 0.25, 0, 0.25, 3.0, 0.0, 0.0, 84)
               show_hudmessage(0, "O Jogador %s se Transformou em Super Saiyan 4", name)
               emit_sound(id, CHAN_STATIC, "modo_goku/goku_powerup4.wav", 0.8, ATTN_NORM, 0, PITCH_NORM)

               g_isSaiyanLevel[id] = 4
               shake_n_stun(id)
            }
         }
      }
   }
}

/*===============================================================================
[O Esquema da Tela Tremer quando 1 se Transforma em SSJ4]
================================================================================*/
public shake_n_stun(id)
{
   new idOrigin[3], vicOrigin[3]
   new players[32], pnum, vic

   get_user_origin(id, idOrigin)

   get_players(players, pnum, "a")

   // Shake and Stun all alive users in radius inluding self
   for (new i = 0; i < pnum; i++) {
      vic = players[i]
      if ( !is_user_alive(vic) ) continue

      get_user_origin(vic, vicOrigin)

      new distance = get_distance(idOrigin, vicOrigin)

      if ( distance <= get_pcvar_num(cvar_radius4) ) {
         sh_screen_shake(vic, 14.0, 14.0, 14.0)
         g_inStun[vic] = true

         set_task(5.0, "reset_instun", vic)

         if (vic == id) continue
      }
   }
}

/*===============================================================================
[Efeito do Poder]
================================================================================*/
public powerup_effect(parm[])
{
   new id = parm[0]

   if (!is_user_alive(id) || zp_get_user_zombie(id)) return

   new Size = parm[1]
   new players[32], pnum
   new idOthers, Origin[3]

   get_players(players, pnum, "a")

   // Show a powerup to all alive players except the one being powered up.
   for (new i = 0; i < pnum; i++) {
      idOthers = players[i]
      if ( !is_user_alive(idOthers) || idOthers == id ) continue

      get_user_origin(id, Origin)

      // power up sprite - additive sprite, plays 1 cycle
      message_begin(MSG_ONE, SVC_TEMPENTITY, Origin, idOthers)
      write_byte(17)         // TE_SPRITE
      write_coord(Origin[0])   // center position
      write_coord(Origin[1])
      write_coord(Origin[2]+20)
      write_short(g_spritePowerUp)   // sprite index
      write_byte(Size)      // scale in 0.1's
      write_byte(50)         // brightness
      message_end()

      // power up sprite - additive sprite, plays 1 cycle
      message_begin(MSG_ONE, SVC_TEMPENTITY, Origin, idOthers)
      write_byte(17)         // TE_SPRITE
      write_coord(Origin[0]+5) // center position
      write_coord(Origin[1])
      write_coord(Origin[2]+20)
      write_short(g_spritePowerUp)   // sprite index
      write_byte(Size)      // scale in 0.1's
      write_byte(50)         // brightness
      message_end()

      // power up sprite - additive sprite, plays 1 cycle
      message_begin(MSG_ONE, SVC_TEMPENTITY, Origin, idOthers)
      write_byte(17)         // TE_SPRITE
      write_coord(Origin[0]-5)   // center position
      write_coord(Origin[1])
      write_coord(Origin[2]+20)
      write_short(g_spritePowerUp)   // sprite index
      write_byte(Size)      // scale in 0.1's
      write_byte(50)         // brightness
      message_end()

      // power up sprite - additive sprite, plays 1 cycle
      message_begin(MSG_ONE, SVC_TEMPENTITY, Origin, idOthers)
      write_byte(17)         // TE_SPRITE
      write_coord(Origin[0])   // center position
      write_coord(Origin[1]+5)
      write_coord(Origin[2]+10)
      write_short(g_spritePowerUp)   // sprite index
      write_byte(Size)      // scale in 0.1's
      write_byte(50)         // brightness
      message_end()

      // power up sprite - additive sprite, plays 1 cycle
      message_begin(MSG_ONE, SVC_TEMPENTITY, Origin, idOthers)
      write_byte(17)         // TE_SPRITE
      write_coord(Origin[0])   // center position
      write_coord(Origin[1]-5)
      write_coord(Origin[2]+10)
      write_short(g_spritePowerUp)   // sprite index
      write_byte(Size)      // scale in 0.1's
      write_byte(50)         // brightness
      message_end()
   }
}

/*===============================================================================
[Stocks]
================================================================================*/
stock shRemArmorPower(id) return id;

stock shRemSpeedPower(id) return id;

stock sh_switch_weapon(id, weaponID)
{
   if ( weaponID < CSW_P228 || weaponID > CSW_P90 ) return;

   if ( user_has_weapon(id, weaponID) ) {
      static weaponName[32];
      get_weaponname(weaponID, weaponName, charsmax(weaponName));
      engclient_cmd(id, weaponName);
   }
}

// Causar dano e reconhecer o que matou o zm (Sem isso não conseguia fazer o poder tirar dano)
extra_dmg(id, attacker, damage, weaponDescription[])
{
   new dmgcount[33]

   if ( pev(id, pev_takedamage) == DAMAGE_NO ) return;
   if ( damage <= 0 ) return;
 
   new userHealth = get_user_health(id);
   
   if (userHealth - damage <= 0 ) 
   {
      dmgcount[attacker] += userHealth - damage;
      set_msg_block(get_user_msgid("DeathMsg"), BLOCK_SET);
      ExecuteHamB(Ham_Killed, id, attacker, 2);
      set_msg_block(get_user_msgid("DeathMsg"), BLOCK_NOT);
        
                
      message_begin(MSG_BROADCAST, get_user_msgid("DeathMsg"));
      write_byte(attacker);
      write_byte(id);
      write_byte(0);
      write_string(weaponDescription);
      message_end();
                
      set_pev(attacker, pev_frags, float(get_user_frags(attacker) + 1));
                        
      new kname[32], vname[32], kauthid[32], vauthid[32], kteam[10], vteam[10];
        
      get_user_name(attacker, kname, 31);
      get_user_team(attacker, kteam, 9);
      get_user_authid(attacker, kauthid, 31);
         
      get_user_name(id, vname, 31);
      get_user_team(id, vteam, 9);
      get_user_authid(id, vauthid, 31);
                        
      log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"%s^"", 
      kname, get_user_userid(attacker), kauthid, kteam, 
      vname, get_user_userid(id), vauthid, vteam, weaponDescription);
   }
   else 
   {
      dmgcount[attacker] += damage;
      new origin[3];
      get_user_origin(id, origin);
                
      message_begin(MSG_ONE,get_user_msgid("Damage"),{0,0,0},id);
      write_byte(21);
      write_byte(20);
      write_long(DMG_BLAST);
      write_coord(origin[0]);
      write_coord(origin[1]);
      write_coord(origin[2]);
      message_end();
                
      set_pev(id, pev_health, pev(id, pev_health) - float(damage));
   }
   
   // O Bang de dar Pack pelo dano causado pelo poder (Valeu ai o Fdm que fez a Bazooka de Novos Modos)
   if ( !get_pcvar_num(cvar_award) ) return;
        
   new breaker = get_pcvar_num(cvar_dmgforpacks);
   
   if ( dmgcount[attacker] > breaker )
   {
      new temp = dmgcount[attacker] / breaker
      if ( temp * breaker > dmgcount[attacker] ) return; //should never be possible
      dmgcount[attacker] -= temp * breaker;
      zp_set_user_ammo_packs( attacker, zp_get_user_ammo_packs(attacker) + temp );
   }
}

// Fazer a Tela Tremer
stock sh_screen_shake(id, Float:amplitude, Float:duration, Float:frequency)
{
   static msgScreenShake;

   if ( !msgScreenShake ) {
      msgScreenShake = get_user_msgid("ScreenShake");
   }

   // Check unsigned short range
   new amp, dura, freq;
   amp = clamp(floatround(amplitude * float(1<<12)), 0, 0xFFFF);
   dura = clamp(floatround(duration * float(1<<12)), 0, 0xFFFF);
   freq = clamp(floatround(frequency * float(1<<8)), 0, 0xFFFF);

   message_begin(MSG_ONE_UNRELIABLE, msgScreenShake, _, id);
   write_short(amp);   // amplitude
   write_short(dura);   // duration
   write_short(freq);   // frequency
   message_end();
}

// Mensagem Colorida (client_printcolor)
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();
         }
      }
   }
}

// Comando do Colete (Sem o uso das includes)
stock set_user_armor(index, armor) {
   set_pev(index, pev_armorvalue, float(armor));

   return 1;
}

// Comando do HP (Sem o uso das includes)
stock set_user_health(index, health) {
   health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index);

   return 1;
}

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
vlw will

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Sugestão: ao comprar o item todo mundo ficara de zombie e apenas vc ficara como goku e tambem por uma skin :)

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Mas nisso a maioria das pessoas tem o menu de m2 desativado antes do round;

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
LucasArruda escreveu:
Sugestão: ao comprar o item todo mundo ficara de zombie e apenas vc ficara como goku e tambem por uma skin :)


Legal fera, mais pensa, imagina se alguém compra um item do m2, ai outra pessoa vai la e compra esse goku... Causaria muito transtorno, se fosse pra fazer isso, seria mais fácil pedir pra ele transformar esse item extra em uma game modo.

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
scrash o goku necessita de colete para carregar
o HUMANO precisa de colete para nao ser infectado.
o goku gerar colete a cada segundo entaum o player nunca e pego por 1 zombie ta ai 1 BUG

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
mrmaggie escreveu:
scrash o goku necessita de colete para carregar
o HUMANO precisa de colete para nao ser infectado.
o goku gerar colete a cada segundo entaum o player nunca e pego por 1 zombie ta ai 1 BUG


Cara você acha que eu não tinha pensado nesse bug antes de postar aqui. Então baixa o plugin instala e olha e depois vem fala algo a respeito.

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

more_horiz
Leozinho escreveu:
LucasArruda escreveu:
Sugestão: ao comprar o item todo mundo ficara de zombie e apenas vc ficara como goku e tambem por uma skin :)


Legal fera, mais pensa, imagina se alguém compra um item do m2, ai outra pessoa vai la e compra esse goku... Causaria muito transtorno, se fosse pra fazer isso, seria mais fácil pedir pra ele transformar esse item extra em uma game modo.

mais não teria um bloqueio assim so apenas 1 comprace e ninguem podia comprar mais e o M2 ficaria bloquiado ao tiver no modo goku

ou eu nao entendi .

description[Extra Item] Modo Goku EmptyRe: [Extra Item] Modo Goku

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