PHP Code:
// Includes que Usamos:
#include <amxmodx> // Contiene Funciones Principales.
#include <fakemeta_util> // Contiene Funciones para el Glow - Aura - Particulas.
#include <zombieplague> // Contiene Funciones del ZombiePlague.
// Defines que Usamos:
#define ITEM_NAME "Soldier UqZ" // Definimos el Nombre del Item Extra.
#define ITEM_COST 45 // Definimos cuanto Cuesta el Item Extra.
#define TASK_AURA 27000 // Definimos el TASK para usar el Aura.
#define TASK_PARTICULAS 27777 // Definimos el TASK para usar las Particulas.
// NOTA: Los Numeros pueden ser cualquiera, yo me acostumbre a usar '27000'.
// Todo Tipo de Variables:
new g_maxplayers
new g_uqz
new cvar_uqz_glow_on, cvar_uqz_aura_on, cvar_uqz_aura_size, cvar_uqz_particulas_on
new cvar_uqz_glow_colors[3], cvar_uqz_aura_colors[3] /* Si no me equivoco, el [3] son los Datos que va a tener esa Variable, es decir,
la Variable: cvar_uqz_glow_colors[3], tendra 3 cosas definidas, adentro de 1*/
// Plugin Init
public plugin_init()
{
// Registramos el Plugin y el Item Extra
register_plugin("[ZP] Item Extra: Soldier UqZ", "1.0", "Kiske =D")
g_uqz = zp_register_extra_item(ITEM_NAME, ITEM_COST, ZP_TEAM_HUMAN)
// Registramos un Evento
register_event("HLTV", "event_round_start", "a", "1=0", "2=0") // Este Evento, es llamado cuando empieza una Ronda Nueva.
// Registramos las CVARS
cvar_uqz_glow_on = register_cvar("zp_uqz_glow_enable", "1")
cvar_uqz_aura_on = register_cvar("zp_uqz_aura_enable", "1")
cvar_uqz_aura_size = register_cvar("zp_uqz_aura_size", "50")
cvar_uqz_particulas_on = register_cvar("zp_uqz_particulas_on", "1")
cvar_uqz_glow_colors[0] = register_cvar("zp_uqz_glow_red", "255")
cvar_uqz_glow_colors[1] = register_cvar("zp_uqz_glow_green", "0")
cvar_uqz_glow_colors[2] = register_cvar("zp_uqz_glow_blue", "0")
cvar_uqz_aura_colors[0] = register_cvar("zp_uqz_aura_red", "255")
cvar_uqz_aura_colors[1] = register_cvar("zp_uqz_aura_green", "0")
cvar_uqz_aura_colors[2] = register_cvar("zp_uqz_aura_blue", "0")
// Registramos los MaxPlayers
g_maxplayers = get_maxplayers()
}
// Cuando Seleccionamos el Item Extra, pasara lo Siguiente:
public zp_extra_item_selected(player, itemid)
{
if(itemid == g_uqz) // Preguntamos si el Item que toco el Usuario, es el UqZ. Si es asi, hara todo lo que estan entre estas LLaves '{' '}'
{
// Glow
new red, green, blue // Registramos 3 Nombres: Red - Green - Blue
red = get_pcvar_num(cvar_uqz_glow_colors[0]) // Ponemos que Red es Igual al Numero de la CVAR: cvar_uqz_glow_colors[0] -- Seria 255
green = get_pcvar_num(cvar_uqz_glow_colors[1]) // Ponemos que Green es Igual al Numero de la CVAR: cvar_uqz_glow_colors[1] -- Seria 0
blue = get_pcvar_num(cvar_uqz_glow_colors[2]) // Ponemos que Blue es Igual al Numero de la CVAR: cvar_uqz_glow_colors[2] -- Seria 0
if(get_pcvar_num(cvar_uqz_glow_on)) // Preguntamos si el Glow esta Activado (1 = Activado || 0 = Desactivado)
fm_set_user_rendering(player, kRenderFxGlowShell, red, green, blue, kRenderNormal, 20) /* Funcion del Fakemeta, para agregar Glow a algo,
en este caso, al PLAYER.*/
// Aura
if(get_pcvar_num(cvar_uqz_aura_on)) // Preguntamos si el Aura esta Activada (1 = Activada || 0 = Desactivada)
{
set_task(0.1, "uqz_aura", player + TASK_AURA, _, _, "b") // En 0.1 Segundos, llamamos a la Funcion 'uqz_aura', la cual esta definida abajo de todo.
}
// Particulas
if(get_pcvar_num(cvar_uqz_particulas_on)) // Preguntamos si las Particulas estan Activadas (1 = Activadas || 0 = Desactivadas)
{
set_task(0.1, "uqz_particulas", player + TASK_PARTICULAS, _, _, "b") /* En 0.1 Segundos, llamamos a la Funcion 'uqz_particulas',
la cual esta definida abajo de todo.*/
}
// Damos un Mensaje cuando el Usuario Compra el Item Extra:
new name[32] // Creamos una Variable con el nombre 'name'.
get_user_name(player, name, 31) // Hacemos que la Variable 'name', detecte el Nombre que toco el Item Extra.
set_hudmessage(255, 255, 0, 0.05, 0.45, 1, 0.0, 5.0, 1.0, 1.0, -1) // Seteamos un Color, posicion, efecto y duracion del Mensaje.
show_hudmessage(0, "%s compro un Soldier UqZ", name) // Seteamos lo que va a decir el Mensaje.
// %s = Cuando usamos un String.
// %d = Cuando usamos Numeros.
// %f = Cuando usamos Numeros Decimales. -- Ejemplo: Gravedad
// En este caso usamos %s, porque la variable 'name' es un String, es decir, un Texto.
}
}
// Cuando el Usuario es Infectado:
public zp_user_infected_post(id)
{
remove_task(id + TASK_AURA) // Removemos el TASK del AURA
remove_task(id + TASK_PARTICULAS) // Removemos el TASK de las PARTICULAS
}
// Cuando el Usuario se Desconecta:
public client_disconnect(id)
{
remove_task(id + TASK_AURA) // Removemos el TASK del AURA
remove_task(id + TASK_PARTICULAS) // Removemos el TASK de las PARTICULAS
}
// Cuando empieza una Ronda Nueva:
public event_round_start()
{
for (new id; id <= g_maxplayers; id++)
{
remove_task(id + TASK_AURA) // Removemos el TASK del AURA a TODOS LOS JUGADORES
remove_task(id + TASK_PARTICULAS) // Removemos el TASK de las PARTICULAS a TODOS LOS JUGADORES
}
}
// Funcion del Aura:
public uqz_aura(id)
{
id -= TASK_AURA
// Detectamos si el Usuario esta Vivo:
if (!is_user_alive(id))
return
// Registramos la Posicion del Usuario
static Float:FOrigin[3]
pev(id, pev_origin, FOrigin)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, FOrigin, 0) // Abrmios la Funcion
write_byte(TE_DLIGHT) // TE Id
engfunc(EngFunc_WriteCoord, FOrigin[0]) // Posicion del Player
engfunc(EngFunc_WriteCoord, FOrigin[1]) // Posicion 'Y'
engfunc(EngFunc_WriteCoord, FOrigin[2]) // Posicion 'X'
write_byte(get_pcvar_num(cvar_uqz_aura_size)) // Radio del Aura
write_byte(get_pcvar_num(cvar_uqz_aura_colors[0])) // Color Rojo
write_byte(get_pcvar_num(cvar_uqz_aura_colors[1])) // Color Verde
write_byte(get_pcvar_num(cvar_uqz_aura_colors[2])) // Color Azul
write_byte(2) // Life
write_byte(0) // Delay Rate = Tiempo que tarda en cerrarse el Aura.
message_end() // Cerramos la Funcion.
}
// Funcion de las Particulas:
public uqz_particulas(id)
{
id -= TASK_PARTICULAS
// Detectamos si el Usuario esta Vivo:
if (!is_user_alive(id))
return
// Registramos la Posicion del Usuario
static Float:Origin[3]
pev(id, pev_origin, Origin)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, Origin, 0) // Abrmios la Funcion
write_byte(TE_IMPLOSION) // TE Id
engfunc(EngFunc_WriteCoord, Origin[0]) // Posicion del Player
engfunc(EngFunc_WriteCoord, Origin[1]) // Posicion 'Y'
engfunc(EngFunc_WriteCoord, Origin[2]) // Posicion 'X'
write_byte(128) // Radio de las Particulas
write_byte(48) // Particulas por Segundo
write_byte(2) // Delay Rate = Tiempo que tarda en desaparecer las Particulas.
message_end() // Cerramos la Funcion.
}
// Fin del Tutorial By Kiske =D