Mensajes: 538
Temas: 13
Registro en: Oct 2013
Reputación:
16
25/07/2014, 09:12 PM
(Última modificación: 28/07/2014, 02:27 PM por Milashkasiya .)
Descripción:
Esta vez me puse a debugear un efecto que me gustó mucho del Half-Life Singleplayer y preparé un Stock un poco limitado pero funcional.
Video:
Imagen del efecto hecho con el plugin de ejemplo:
Video (El stock no incluye los efectos de ScreenFade ni ScreenShake)
http://youtu.be/BQKD6V1aBPU
Modulos requeridos:
- Engine
Sintaxis:
stock create_beamspot( Float:origin[3], color[3], const classname[] )
origin : Es punto centro del efecto.
color : Color RGB del efecto.
classname : Classname asignado al info_target centro que pueden utilizar en otras funciones o plugins
Stock:
Código PHP:
stock create_beamspot ( Float : origin [ 3 ], color [ 3 ], const classname [] ) { #define MAX_CORNERS 8 static const Float : corners [ MAX_CORNERS ][ 3 ] = { // 3 top corners { 36.0 , 0.0 , 51.0 }, { 0.0 , 0.0 , 51.0 }, { - 36.0 , 0.0 , 51.0 }, // 3 bottom corners { - 36.0 , 0.0 , - 51.0 }, { 0.0 , 0.0 , - 51.0 }, { 36.0 , 0.0 , - 51.0 }, // left - right { 51.0 , 0.0 , 0.0 }, { - 51.0 , 0.0 , 0.0 } }; static j ; new tname [ 4 ] = "t" ; formatex ( tname [ 1 ], charsmax ( tname ) - 1 , "%i" , ++ j ); new cname [ 10 ]; new pos = formatex ( cname , charsmax ( cname ), "%s_spin1" , tname ) - 1 ; new main = create_entity ( "info_target" ); DispatchKeyValue ( main , "targetname" , tname ); entity_set_string ( main , EV_SZ_classname , classname ); entity_set_size ( main , Float :{- 16.0 ,- 16.0 ,- 16.0 }, Float :{ 16.0 , 16.0 , 16.0 } ); entity_set_int ( main , EV_INT_solid , SOLID_TRIGGER ); entity_set_origin ( main , origin ); new Float : vcolor [ 3 ]; vcolor [ 0 ] = float ( color [ 0 ] ); vcolor [ 1 ] = float ( color [ 1 ] ); vcolor [ 2 ] = float ( color [ 2 ] ); new entity ; new Float : corner [ 3 ]; for( new i ; i < MAX_CORNERS ; i ++ ) { corner [ 0 ] = origin [ 0 ] + corners [ i ][ 0 ]; corner [ 1 ] = origin [ 1 ] + corners [ i ][ 1 ]; corner [ 2 ] = origin [ 2 ] + corners [ i ][ 2 ]; entity = create_entity ( "info_target" ); DispatchKeyValue ( entity , "targetname" , cname ); entity_set_origin ( entity , corner ); entity = create_entity ( "env_beam" ); DispatchKeyValue ( entity , "Radius" , "255" ); DispatchKeyValue ( entity , "StrikeTime" , "1" ); DispatchKeyValue ( entity , "TextureScroll" , "10" ); DispatchKeyValue ( entity , "texture" , spr_lgtning ); DispatchKeyValue ( entity , "NoiseAmplitude" , "2" ); DispatchKeyValue ( entity , "BoltWidth" , "200" ); DispatchKeyValue ( entity , "renderamt" , "255" ); DispatchKeyValue ( entity , "LightningEnd" , cname ); DispatchKeyValue ( entity , "LightningStart" , tname ); entity_set_vector ( entity , EV_VEC_rendercolor , vcolor ); entity_set_int ( entity , EV_INT_spawnflags , SF_BEAM_STARTON | SF_BEAM_SHADEOUT ); DispatchSpawn ( entity ); cname [ pos ] = 50 + i ; } return main ; }
En este stock, el valor de spr_lgtning es:
Código PHP:
new const spr_lgtning [ ] = "sprites/lgtning.spr"
NOTAS: Si deseas cambiar el ángulo del efecto en conjunto, será necesario jugar con los valores de corners . Pensaba hacerlo más dinámico, pero lamentablemente no sé cómo :/.
Archivos adjuntos
Descargar AMXX / beamspot_ejemplo.sma (Tamaño: 3.87 KB / Descargas: 182)
Hi [R]ak
Mensajes: 965
Temas: 45
Registro en: Oct 2013
Reputación:
19
Disculpa mi ignorancia es cs ? en el video parece HL
Mensajes: 538
Temas: 13
Registro en: Oct 2013
Reputación:
16
(25/07/2014, 09:19 PM) Metrikcz escribió: Disculpa mi ignorancia es cs ? en el video parece HL
Para cualquier mod que soporte env_beam e info_target
Hi [R]ak
Mensajes: 1,182
Temas: 18
Registro en: Oct 2013
Reputación:
16
Esta muy bueno, seguramente le dare una utilidad.
Gracias
Saludos,
cLAANS.-
Mi unico plugin.
Tutorial de niveles.
Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'
(09/11/2017, 09:30 PM) SoundBlaster escribió: Espera y llamo a los power rangers para que me digan la linea de error
Mensajes: 2,571
Temas: 40
Registro en: Feb 2014
Reputación:
72
Bonísimo! Gracias por aportarlo.
Mensajes: 276
Temas: 5
Registro en: Oct 2013
Reputación:
6
Muy bueno, además de que esta hecho con engine :3
Saludos
Mensajes: 3,020
Temas: 49
Registro en: Oct 2013
Reputación:
33
me encanto jeje, porque decis que es algo limitado tu stock?
Ingeniero agrónomo y desarrollador de Software.
tutoriales-allied
buscas un zp?
"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"
Merci Alliedmodders pour m'introduire dans la programmation.
Mensajes: 538
Temas: 13
Registro en: Oct 2013
Reputación:
16
(26/07/2014, 02:17 PM) roccoxx escribió: me encanto jeje, porque decis que es algo limitado tu stock?
Como ves en la imagen:
La entidad esta en direccion hacia a mi, se podria decir que esta "mirandome", pero si quiero que mire a la pared de la izquierda o derecha, tendria que modificar los
corners del stock :/
Hi [R]ak
Mensajes: 2,870
Temas: 13
Registro en: Oct 2013
Reputación:
24
deberias retornar el id de la entidad y dejarle el classname con el name que le pasas;
btw.. buen aporte
Mensajes: 3,020
Temas: 49
Registro en: Oct 2013
Reputación:
33
(26/07/2014, 03:53 PM) [R]ak escribió: deberias retornar el id de la entidad y dejarle el classname con el name que le pasas;
btw.. buen aporte
si porque para removerlos se complica jajaja, son muchas entidades.
Ingeniero agrónomo y desarrollador de Software.
tutoriales-allied
buscas un zp?
"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"
Merci Alliedmodders pour m'introduire dans la programmation.
Mensajes: 538
Temas: 13
Registro en: Oct 2013
Reputación:
16
28/07/2014, 02:54 PM
(Última modificación: 28/07/2014, 02:55 PM por Milashkasiya .)
Stock y Plugin de ejemplo actualizado.
Ahora el stock devuelve la entidad principal (centro del efecto).
El color es RGB simple (ya no en Float)
Si quieren remover todas las entidades, no podran
asi que tendran que armar su propia funcion
Hi [R]ak
Mensajes: 3,020
Temas: 49
Registro en: Oct 2013
Reputación:
33
Ingeniero agrónomo y desarrollador de Software.
tutoriales-allied
buscas un zp?
"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"
Merci Alliedmodders pour m'introduire dans la programmation.
Mensajes: 262
Temas: 10
Registro en: Dec 2013
Reputación:
3
Mensajes: 965
Temas: 45
Registro en: Oct 2013
Reputación:
19
Quiero hacer un efecto de aparición en el portal, los creo y los hago invisibles, lo que quiero es que paresca que algo sale del portal entonces lo hago visible y quiero que se vaya haciendo mas grande, osea lo hago visible, lo hago chiquito, lo hago mediano, lo hago ya normal y respawneo ya la entidad o player y vuelvo a hacer invisible el portal, pero como hago lo de chiquito a mas grande ?
Mensajes: 538
Temas: 13
Registro en: Oct 2013
Reputación:
16
(28/08/2014, 03:34 PM) Metrikcz escribió: Quiero hacer un efecto de aparición en el portal, los creo y los hago invisibles, lo que quiero es que paresca que algo sale del portal entonces lo hago visible y quiero que se vaya haciendo mas grande, osea lo hago visible, lo hago chiquito, lo hago mediano, lo hago ya normal y respawneo ya la entidad o player y vuelvo a hacer invisible el portal, pero como hago lo de chiquito a mas grande ?
Prueba con pev_scale
Hi [R]ak
Mensajes: 1
Temas: 0
Registro en: Mar 2020
Reputación:
0
i think this better, it can be created in anytime.
https://forums.alliedmods.net/showthread...light=beam
Código:
stock create_beamspot2( Float:origin[3] )
{
#define MAX_CORNERS 8
static const Float:corners[ MAX_CORNERS ][ 3 ] =
{
// 3 top corners
{ 36.0, 0.0, 51.0 },
{ 0.0, 0.0, 51.0 },
{ -36.0, 0.0, 51.0 },
// 3 bottom corners
{ -36.0, 0.0, -51.0 },
{ 0.0, 0.0, -51.0 },
{ 36.0, 0.0, -51.0 },
// left - right
{ 51.0, 0.0, 0.0 },
{ -51.0, 0.0, 0.0 }
};
new Float:corner[ 3 ];
for( new i; i < MAX_CORNERS; i++ )
{
new beam = Beam_Create(spr_lgtning, 200.0)
if(beam == FM_NULLENT)
continue
corner[ 0 ] = origin[ 0 ] + corners[ i ][ 0 ];
corner[ 1 ] = origin[ 1 ] + corners[ i ][ 1 ];
corner[ 2 ] = origin[ 2 ] + corners[ i ][ 2 ];
Beam_SetColor(beam, {155.0, 0.0, 155.0})
Beam_SetNoise(beam, 2)
Beam_SetBrightness(beam, 255.0)
Beam_SetScrollRate(beam, 10.0)
Beam_SetFlags(beam, BEAM_FSHADEOUT)
Beam_PointsInit(beam, origin, corner)
}
}