Raised This Month: $51 Target: $400
 12% 

[ZP] Efecto al ser transformado en zombie 4.3


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
Sidix
Senior Member
Join Date: Feb 2011
Location: Limbo City
Old 04-16-2012 , 11:07   [ZP] Efecto al ser transformado en zombie 4.3
#1

Bueno, yo aquí les voy a explicar como hacer un efecto al ser transformado en zombie 4.3

con un model.

Utilizado en la versión: 4.3

PHP Code:

#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <xs>

new g_efecto_index[33], g_tuvo_efecto[33// creamos las varibles para llamar el evento y terminarlo
new const efecto_spr[] = "sprites/infeccion_efecto.spr" // creamos una constante para el sprite.

new cvar_escalacvar_tiemposprcvar_nivelefecto // creamos tres cvars

// cvar_scale: Para cambiar la escala o nivel del efecto
// cvar_showtime: El tiempo en mostrar en efecto
// cvar_lightlevel: el nivel de luz del efecto.

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
    
// Llamo a la forward de la libreria Ham Sandwich: Ham_Spawn
        // estamos registrando la entidad llamada al player
    
RegisterHam(Ham_Spawn"player""fw_spawn_post"1)
    
register_forward(FM_AddToFullPack"fw_WhatTheFuck_Post"1// Registramos la forward del evento
    
    // Cvars
    
cvar_escala register_cvar("zp_in-ef_scale""0.035"// registramos la cvar
    
cvar_tiempospr register_cvar("zp_in-ef_showtime""2.0")  // registramos la cvar
    
cvar_nivelefecto register_cvar("zp_in-ef_lightlevel""100.0")  // registramos la cvar
}

public 
plugin_precache()
{
    
precache_model(efecto_spr// Precacheamos

PHP Code:
// Creamos el public "Ham_Spawn"
public fw_spawn_post(id)
{
    if(
g_tuvo_efecto[id])  // termina el efecto despues de la infeccion
        
remover_efecto(id// remueve el efecto.
}

public 
zp_user_infected_post(idattacker)
{
    if(
is_user_alive(attacker)) // chekeamos al jugador conectado
    
{
        
show_effect(id// muestra el efecto
    
}

PHP Code:
// Creamos el public de la entidad que mostrará el efecto.
public show_effect(id)
{
    
g_efecto_index[id] = engfunc(EngFunc_CreateNamedEntityengfunc(EngFunc_AllocString"env_sprite")) // la llamamos
    
    
if (!pev_valid(g_efecto_index[id]))
        return 
// hacemos return
    
    
g_tuvo_efecto[id] = 1
    
    set_pev
(g_efecto_index[id], pev_solidSOLID_NOT//
    
set_pev(g_efecto_index[id], pev_movetypeMOVETYPE_NONE// creamos el movimiento del evento

    
engfunc(EngFunc_SetModelg_efecto_index[id], efecto_spr)
    
    
set_pev(g_efecto_index[id], pev_rendermodekRenderTransAlpha)
    
set_pev(g_efecto_index[id], pev_renderamt0.0)
    
set_pev(g_efecto_index[id], pev_ownerid)
    
set_pev(g_efecto_index[id], pev_scaleget_pcvar_float(cvar_escala)) // setea la escala
    
set_pev(g_efecto_index[id], pev_light_levelget_pcvar_float(cvar_nivelefecto)) // setea el nivel de efecto
    
    
set_task(get_pcvar_float(cvar_tiempospr), "remover_efecto"g_efecto_index[id]) // task para remover el efecto en "x" tiempo.

PHP Code:
// creamos public del evento
public fw_WhatTheFuck_Post(eseenthosthost_flagsplayerp_set)
{
    if(!(
host 33))
        return 
FMRES_IGNORED
        
    
if(ent != g_efecto_index[host] || !pev_valid(ent))
        return 
FMRES_IGNORED
        
    
if(pev(entpev_owner) != host)
        return 
FMRES_IGNORED
        
    
if(!is_user_alive(host))
        return 
FMRES_IGNORED
        
    
static Float:origin[3], Float:forvec[3], Float:voffsets[3], Float:Angles[3]
    
    
pev(hostpev_originorigin)
    
pev(hostpev_view_ofsvoffsets)
    
pev(hostpev_anglesAngles)
    
    
xs_vec_add(originvoffsetsorigin)
    
    
// Vector hacia adelante en la dirección de la victima
    
velocity_by_aim(host10forvec)
    
    
// Setea el sprite en el origin
    
xs_vec_add(originforvecorigin)
    
    
engfunc(EngFunc_SetOriginentorigin)
    
set_es(esES_Originorigin)
    
set_es(esES_AnglesAngles)
    
    
// Hace visible el sprite
    
set_es(esES_RenderModekRenderTransAdd)
    
set_es(esES_RenderAmt200)
        
    return 
FMRES_HANDLED

PHP Code:
// esta remueve la entidad del efecto despues de la infeccion
public remover_efecto(ent)
{
    
g_tuvo_efecto[pev(entpev_owner)] = 0
    
    
if(pev_valid(ent))
        
engfunc(EngFunc_RemoveEntityent// remueve la entidad.

espero que les haya gustado...

se pueden comentar sugerencias constructivas. !

pd: falta explicar un poco pero ahora añado más explicación...

[IMG]http://img560.**************/img560/9900/infeccionefecto.png[/IMG]


Allí varios efectos... !

Creditos a : Dias
Attached Files
File Type: zip infeccion_efecto.zip (20.4 KB, 238 views)
File Type: zip bla33.zip (9.6 KB, 195 views)
File Type: zip bla2.zip (10.0 KB, 222 views)
__________________
[IMG]http://img839.**************/img839/1879/dmcdanteprofile.png[/IMG]

Last edited by Sidix; 03-16-2013 at 02:26.
Sidix is offline
 



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 15:23.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode