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


description[ZP] Classe Balthazar Empty[ZP] Classe Balthazar

more_horiz
Descrição: Uma nova classe de Baltazar zumbi para você. A principal característica está se movendo através do espaço (teletransporte).


Portal de ativação: Cria um portal no local especificado (pressionando F1), nenhum efeito foi acompanhado, exceto o som quando você cria um portal.


A capacidade de teletransporte: Na chave G, ele criou um corpo portado portal (desde que seja criado, caso contrário nada vai acontecer.) Acompanhado pelos efeitos sonoros e bonito.


A habilidade Teleport: Balthazar também é capaz de se teletransportar uma vítima em um portal. HUD mostra a vítima relatou que seu teletransporte através de X segundos, mas não especificou onde.


Em cada teletransporte para o local onde se teletransporta Balthazar ou da vítima, causa danos em um raio pequeno de todas as pessoas (inclusive a vítima).

---------------------------------

.::Configurações::.

zp_portaldemon_cdown 12 / / Cooldown (segundos)
zp_portaldemon_dmg 20,0 / / Damage que vai pessoas que estavam perto do portal como acima
zp_portaldemon_dist 330 / / Distância em que Balthazar pode mover a vítima

---------------------------------

.::SMA::.

Código:

/*================================================================================
   
   -----------------------------------
   -*- [ZP] Zombie Class: Baltazar -*-
   -----------------------------------
   
   ~~~~~~~~~~~~~~~
   - Description -
   ~~~~~~~~~~~~~~~
   New zombie Class teleportator

   ~~~~~~~~~~~~~~~
   - Changelog -
   ~~~~~~~~~~~~~~~
   v. 1.0 - Firs Released. Full Testing plugin
   v. 1.1 - Fix switch bug & no ability item
   v. 1.2 - Added all cvars + visual effects
   v. 1.3 - Optimization code, removed logs errors
   v. 1.4 - Added new abiltiy, and effects to ability
================================================================================*/

#include <amxmodx>
#include <fakemeta_util>
#include <    fun >
#include <hamsandwich>
#include <zombieplague>

#define PLUGIN "[ZP] Zombie Class: Baltazar"
#define VERSION "1.4"
#define AUTHOR "Re.Act!ve"

//#define TASK_ORIGIN 2247
//#define ID_TASK_ORIGIN (taskid - TASK_ORIGIN)
#define TE_SPRITETRAIL 15
// Classic Zombie Attributes
new const zclassT_name[] = { "Baltazar" }
new const zclassT_info[] = { "Teleport ability" }
new const zclassT_model[] = { "Baltazar" }
new const zclassT_clawmodel[] = { "v_baltazar_knife.mdl" }
const zclassT_health = 620
const zclassT_speed = 270
const Float:zclassT_gravity = 0.9
const Float:zclassT_knockback = 1.2
new sound_ability[] = { "baltazar/teleport.wav" }
new g_cdown, g_Switcher, g_damage, g_countdown[33], g_MaxPlayers, g_msgSayText, vOrigin[33][3], sprite_ability, g_SyncHUD, g_time_victim[33], g_portalize[33], g_dist
new timer[33], g_Sprite, g_Sprite_p

public plugin_init()
{
   register_plugin(PLUGIN, VERSION, AUTHOR)
   g_cdown = register_cvar("zp_portaldemon_cdown", "12")         // Перезарядка способности
   g_damage = register_cvar("zp_portaldemon_dmg", "20.0")         // Урон, который получат люди, находившиеся вблизи портала, на который переместился Бальтазар
   g_dist = register_cvar("zp_portaldemon_dist", "330")            // Дистанция, с которой бальтазар можете переместить жертву
   register_plugin(PLUGIN, VERSION, AUTHOR)
   register_event("HLTV", "Round_Start", "a", "1=0", "2=0")
   g_msgSayText = get_user_msgid("SayText")
   g_MaxPlayers = get_maxplayers( )
   g_SyncHUD = CreateHudSyncObj( 1 );   
   register_clcmd( "ability1", "AbilityOrigin" )   
   register_clcmd("ability2", "AbilityPlayerOrigin" )   
   register_clcmd("drop", "AbilityTeleport" )
}

public plugin_precache()
{   
   // Register Class
   g_Switcher = zp_register_zombie_class(zclassT_name, zclassT_info, zclassT_model, zclassT_clawmodel, zclassT_health, zclassT_speed, zclassT_gravity, zclassT_knockback)
   sprite_ability = engfunc(EngFunc_PrecacheModel,"sprites/28weeks_later/flare1.spr")   
   g_Sprite = engfunc(EngFunc_PrecacheModel,"sprites/28weeks_later/teleport.spr")   
   g_Sprite_p = engfunc(EngFunc_PrecacheModel,"sprites/portal1.spr")   
   precache_sound(sound_ability)
   precache_sound("baltazar/portal_on.wav")
}

public Round_Start()
{
   for(new id;id<=g_MaxPlayers;id++)
   {
      if(!is_user_connected(id)) return;

      vOrigin[id][0] =0; vOrigin[id][1] =0; vOrigin[id][2] = 0;
      g_portalize[id] = false;
   }
}

public zp_user_infected_post(id, infector)
{
   if( (zp_get_user_zombie_class(id) == g_Switcher) && !zp_get_user_nemesis(id) )
   {
      g_countdown[id] = true;
      ChatColor( id, "^x04[ZP] ^x01У вас есть способность^x04Создавать порталы^x01. Перезарядка: %d сек.", get_pcvar_num(g_cdown))
      console_cmd(id,"bind v ^"ability2^"")
      console_cmd(id,"bind F1 ability1")   
   }
}

public AbilityOrigin(id)
{
   if( (zp_get_user_zombie_class(id) == g_Switcher) && !zp_get_user_nemesis(id) && zp_get_user_zombie(id) && g_countdown[id])
   {
         get_user_origin(id, vOrigin[id])
         client_cmd(id, "spk baltazar/portal_on")
         client_print(id, print_center, "В этом месте создан портал")
   }
}

public AbilityPlayerOrigin(id)
{
   if( (zp_get_user_zombie_class(id) == g_Switcher) && !zp_get_user_nemesis(id) && zp_get_user_zombie(id) && g_countdown[id])
   {
      new target, body, dist = get_pcvar_num(g_dist);
      get_user_aiming( id, target, body, dist )
      if(vOrigin[id][0] !=0 || vOrigin[id][1] !=0 || vOrigin[id][2] !=0)
      {
         if(is_user_alive(target) && is_user_alive(id) && target != id && !zp_get_user_zombie(target) && !g_portalize[target])
         {
            g_portalize[target] = true;
            g_countdown[id] = false;
            g_time_victim[target] = 4;
            timer[id] = get_pcvar_num(g_cdown)
            vOrigin[target][0] = vOrigin[id][0];   vOrigin[target][1] = vOrigin[id][1];   vOrigin[target][2] = vOrigin[id][2];   
            client_cmd(id, "spk baltazar/portal_on")
            set_hudmessage(255, 255, 0, -1.0, -1.0, _, _, 3.0)
            ShowSyncHudMsg(id, g_SyncHUD, "Жертва перемещается в портал");
            set_task(0.1, "HUDTeleportTarget", target)
            set_task(1.0, "ResetAbility", id)
         }
         else
            client_print(id, print_center, "Жертвы не обнаружено")
      }
   }
}

public HUDTeleportTarget(victim)
{
   if(g_time_victim[victim] > 0)
   {
      set_hudmessage(255, 255, 0, -1.0, -1.0, _, _, 1.1)
      ShowSyncHudMsg(victim, g_SyncHUD, "Бальтазар переместил вас в портал^nПеремещение через %d", g_time_victim[victim]);
      g_time_victim[victim]-=1
      set_task(1.0, "HUDTeleportTarget", victim)
   }
   else
   {
      new Origin[3]
      get_user_origin(victim, Origin)
      message_begin(MSG_PVS, SVC_TEMPENTITY, Origin)
      write_byte(TE_SPRITE) // TE victim
      write_coord(Origin[0]) // x
      write_coord(Origin[1]) // y
      write_coord(Origin[2]+5) // z
      write_short(g_Sprite) // sprite
      write_byte(8) // scale
      write_byte(200) // brightness
      message_end()
      do_screen_fade(victim, 0.5, 0.2, 255, 255, 255, 180);
      emit_sound(victim, CHAN_STREAM, sound_ability, 1.0, ATTN_NORM, 0, PITCH_NORM)
      set_user_origin(victim, vOrigin[victim])
      g_portalize[victim] = false;
      SwitchUpdate(victim)
      remove_task(victim)
   }   
}

public AbilityTeleport(id)
{
   if( (zp_get_user_zombie_class(id) == g_Switcher) && !zp_get_user_nemesis(id) && zp_get_user_zombie(id) && g_countdown[id])
   {
      if(vOrigin[id][0] !=0 || vOrigin[id][1] !=0 || vOrigin[id][2] !=0)
      {
         new Origin[3]
         get_user_origin(id, Origin)
         message_begin(MSG_PVS, SVC_TEMPENTITY, Origin)
         write_byte(TE_SPRITE) // TE id
         write_coord(Origin[0]) // x
         write_coord(Origin[1]) // y
         write_coord(Origin[2]+5) // z
         write_short(g_Sprite) // sprite
         write_byte(8) // scale
         write_byte(200) // brightness
         message_end()
         g_countdown[id] = false;
         timer[id] = get_pcvar_num(g_cdown)
         do_screen_fade(id, 0.5, 0.2, 255, 255, 255, 180);
         emit_sound(id, CHAN_STREAM, sound_ability, 1.0, ATTN_NORM, 0, PITCH_NORM)
         set_user_origin(id, vOrigin[id])
         set_task(1.0, "ResetAbility", id)
         SwitchUpdate(id)
      }
      else client_print(id, print_center, "Сначало создайте портал")
   }
}

public ResetAbility(id)
{
   if(timer[id] > 0)
   {
      set_hudmessage(200, 100, 0, 0.75, 0.93, 0, 1.0, 1.1, 0.0, 0.0, -1)
      show_hudmessage(id, "Восстановление: %d сек.",timer[id])
      timer[id]-=1
      set_task(1.0, "ResetAbility", id)
   }
   else
   {
      g_countdown[id] = true;
      ChatColor( id, "^x04[ZP] ^x01Ваша способность ^x04Порталы^x01 восстановлена")      
      remove_task(id)
   }
}

SwitchUpdate(id)
{
   static Float:flOrigin[3]
   pev(id, pev_origin, flOrigin)
   engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, vOrigin[id], 0)
   write_byte(TE_DLIGHT)
   engfunc(EngFunc_WriteCoord, flOrigin[0]) // x
   engfunc(EngFunc_WriteCoord, flOrigin[1]) // y
   engfunc(EngFunc_WriteCoord, flOrigin[2]) // z
   write_byte(10) // radius
   write_byte(200) // red
   write_byte(200) // green
   write_byte(0) // blue
   write_byte(4) // life
   write_byte(0) // decay rate
   message_end()
   message_begin (MSG_BROADCAST,SVC_TEMPENTITY)
   write_byte( TE_SPRITETRAIL ) // Throws a shower of sprites or models
   write_coord( vOrigin[id][ 0 ] ) // start pos
   write_coord( vOrigin[id][ 1 ] )
   write_coord( vOrigin[id][ 2 ] + 200)
   write_coord( vOrigin[id][ 0 ] ) // velocity
   write_coord( vOrigin[id][ 1 ] )
   write_coord( vOrigin[id][ 2 ] +20)
   write_short(sprite_ability ) // spr
   write_byte(30) // (count)
   write_byte(random_num(27,30)) // (life in 0.1's)
   write_byte(2) // byte (scale in 0.1's)
   write_byte(random_num(30,70)) // (velocity along vector in 10's)
   write_byte(40) // (randomness of velocity in 10's)
   message_end()
   message_begin(MSG_PVS, SVC_TEMPENTITY, vOrigin[id])
   write_byte(TE_SPRITE) // TE id
   write_coord(vOrigin[id][0]) // x
   write_coord(vOrigin[id][1]) // y
   write_coord(vOrigin[id][2]+5) // z
   write_short(g_Sprite_p) // sprite
   write_byte(8) // scale
   write_byte(200) // brightness
   message_end()
   new Float:flVictimOrigin [ 3 ], Float:damage
   for ( new victim = 1; victim < get_maxplayers(); victim++ )
   {
      pev ( victim, pev_origin, flVictimOrigin )
      new Float:flDistance = get_distance_f (flOrigin, flVictimOrigin )
      if ( flDistance <= 250.0 && !zp_get_user_zombie(victim)) //get_pcvar_float(g_distansion
      {
         if (!is_user_alive(victim))
            continue;

         damage = get_pcvar_float(g_damage)
         fm_fakedamage(victim, "player", damage,  DMG_BLAST)
      }
   }
}

stock do_screen_fade(       id, Float:fadeTime, Float:holdTime, red, green, blue, alpha, type = 0x0000       )
{
   static msgScreenFade;
   if (      !msgScreenFade    ) { msgScreenFade = get_user_msgid(    "ScreenFade"           ); }
   new fade, hold;
   fade = clamp(    floatround(     fadeTime * float(1<<12)), 0, 0xFFFF    );
   hold = clamp(     floatround(         holdTime * float(1<<12)), 0, 0xFFFF      );
   message_begin(    MSG_ONE_UNRELIABLE, msgScreenFade, _, id          );
   write_short(          fade    );
   write_short(    hold    );
   write_short(    type   );
   write_byte(      red    );
   write_byte(  green    );
   write_byte(    blue    );
   write_byte(     alpha    );
   message_end(    );
}

ChatColor(target, const message[], any:...)
{
   static buffer[512], i, argscount
   argscount = numargs()
   
   // Send to everyone
   if (!target)
   {
      static player
      for (player = 1; player <= g_MaxPlayers; player++)
      {
         // Not connected
         if (!is_user_connected(player))
            continue;
         
         // Remember changed arguments
         static changed[5], changedcount // [5] = max LANG_PLAYER occurencies
         changedcount = 0
         
         // Replace LANG_PLAYER with player id
         for (i = 2; i < argscount; i++)
         {
            if (getarg(i) == LANG_PLAYER)
            {
               setarg(i, 0, player)
               changed[changedcount] = i
               changedcount++
            }
         }
         
         // Format message for player
         vformat(buffer, charsmax(buffer), message, 3)
         
         // Send it
         message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, player)
         write_byte(player)
         write_string(buffer)
         message_end()
         
         // Replace back player id's with LANG_PLAYER
         for (i = 0; i < changedcount; i++)
            setarg(changed[i], 0, LANG_PLAYER)
      }
   }
   // Send to specific target
   else
   {
      // Format message for player
      vformat(buffer, charsmax(buffer), message, 3)
      
      // Send it
      message_begin(MSG_ONE, g_msgSayText, _, target)
      write_byte(target)
      write_string(buffer)
      message_end()
   }
}

.::Download::.

4Shared - Clique Aqui


.::Créditos::.
Zombie-mod.ru

.::Observação::.
Não vem com models, você tem que colocar.

description[ZP] Classe Balthazar EmptyRe: [ZP] Classe Balthazar

more_horiz
Boa!

description[ZP] Classe Balthazar EmptyRe: [ZP] Classe Balthazar

more_horiz
essa classe e muito boa

description[ZP] Classe Balthazar EmptyRe: [ZP] Classe Balthazar

more_horiz
Yes, aprovei ela, por isso postei aqui ^.^

description[ZP] Classe Balthazar EmptyRe: [ZP] Classe Balthazar

more_horiz
Que zika cara.

description[ZP] Classe Balthazar EmptyRe: [ZP] Classe Balthazar

more_horiz
não compila quando tento trocar : nome da classe , vida , speed =( '

description[ZP] Classe Balthazar EmptyRe: [ZP] Classe Balthazar

more_horiz
Deixa os baguio ae, que eu modifico e compilo pra você '-'

description[ZP] Classe Balthazar EmptyRe: [ZP] Classe Balthazar

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