Minas láser
#1
Estrella 
Minas láser

Bueno, simple descripción... Son unas minas láser que voy actualizando a medida que me piden que tenga nuevas funcionalidades. El código en sí es medio viejo pero completamente funcional, y me atrevo a decir que funciona mejor que el resto de los lasers publicados por ahí.

Lo que mas destacaría de estos lasers son:
  • Poseen todas las cualidades de los lasers v2.3.
  • Los beams no son temp entities.
  • Se puede configurar casi todo por medio de CVARs.
  • Se puede modificar el máximo de lasers por jugador en particular usando las natives provistas por el plugin.
  • No es necesario implementar código extra para corroborar si un jugador fue asesinado/dañado por un laser.
Las CVARs que mas destacaría son:
  • Evitar que tus compañeros rompan tus lasers.
  • Modificar la fuerza de empuje al romper un laser.
  • Evitar que bugueen los lasers poniendo otro laser encima.
  • Dañar a todos los que estén tocando un laser y no solo al "primero de la fila".
- Changelog

Código:
26/11/2015: Limpié el código, ahora se ve mejor y debería de funcionar mejor también.
31/03/2016: Todos los fix y versión zp.
23/04/2016: Mas "fixs", valores cacheados y archivo de configuraciones.
22/02/2017: Pequeños arreglos a las minas tanto de ZP como comunes.
12/03/2017: Se agregaron algunas cvars para que sean mas configurables.
26/11/2017: Se agregaron nuevas cvars y se hicieron algunos pequeños cambios.
29/11/2017: Pequeños cambios y fixes.
27/05/2020: Unos cuantos cambios al código y nuevas cvars.

- CVARS

Código:
// Estado de las minas.
//
// 0 - Deshabilitadas.
// 1 - Normal.
// 2 - Una vez puestas no se pueden remover.
//
lm_status "1"

// Modo en el que operarán las minas.
//
// [!] Se actualiza al comienzo de una nueva ronda.
//
// 0 - Normal.
// 1 - Tripmine (explotan cuando se toca el laser).
//
lm_tripmine "1"

// Comportamiento del hud.
//
// [!] Se actualiza al comienzo de una nueva ronda.
// [!] Si se elige la opción permanente se mostrará además la vida y el creador de la mina a la que se le esté apuntando.
//
// 0 - Deshabilitado.
// 1 - Permanente (estando vivo).
// 2 - Se muestra temporalmente al comprar/plantar/remover una mina.
//
lm_hud "2"

// Determina si los lasers detendrán su búsqueda al colisionar con un primer objetivo.
//
// [!] Se actualiza al comienzo de una nueva ronda.
// [!] Si esta deshabilitado, todos los jugadores que estén tocando el láser recibirán daño por igual, no solo el primero.
// [!] Esto también evita que una mina quede inutilizada al colocarle otra mina enemiga "por encima" de esta.
//
// 0 - Los lasers no se pueden "buguear".
// 1 - Los lasers pueden "buguearse".
//
lm_bugable "1"

// Permite proteger las minas del daño recibido.
//
// [!] Si se deja en 0, los daños que no provengan de jugadores también dañarán las minas.
// [!] Si se le asigna un valor, los daños que no provengan de jugadores no dañarán las minas.
//
// 0 - Cualquiera les puede hacer daño.
// 1 - Los enemigos pueden hacerles daño.
// 2 - Los dueños pueden hacerles daño.
// 3 - Los dueños y enemigos pueden hacerles daño.
// 4 - Nadie les puede hacer daño.
//
lm_protect "0"

// Tiempo de espera en segundos desde el inicio de la ronda hasta poder plantar minas.
//
lm_wait "10.0"

// Costo de las minas.
//
// [!] En versión ZP este será el costo en ammo-packs que tendrán las minas.
//
// -1 - Las minas no podrán comprarse.
// 0 - Las minas serán gratuitas.
//
lm_cost "100"

// Cantidad de vida que tendrán las minas.
//
lm_health "500.0"

// Daño que sufrirá un enemigo al tocar un láser.
//
// [!] Se actualiza al comienzo de una nueva ronda.
//
lm_damage "300"

// Cantidad de minas por defecto que tendra un jugador.
//
// [!] Se asignará al ingresar al servidor por primera vez.
//
lm_def_amt "1"

// Cantidad maxima de minas por jugador.
//
// [!] Se asigna por unica vez al ingresar al servidor (putinserver).
// [!] Si se quiere utilizar un valor personalizado por plugin deberá asignarse luego del putinserver.
//
lm_maximum "3"

// Determina si los lasers seran removidos al final de la ronda.
//
// 0 - No se remueven.
// 1 - Se remueven todos los lasers al finalizar la ronda.
//
lm_remove "1"

// Determina si se les removeran las minas compradas al jugador.
//
// 0 - No se le removerán las minas que tenga guardadas.
// 1 - Se removerán las minas al terminar la ronda.
// 2 - Se removerán las minas guardadas al ser infectado (exclusivo ZP).
//
lm_rebuy "0"

// Determina si las minas eliminadas al final de la ronda van a ser devueltas o no al dueño.
//
// 0 - No se devuelven.
// 1 - Se le devuelven las minas que se hayan eliminado.
//
lm_retrieve "1"

// Personalización del color del láser.
//
// 0 - Color del equipo al que pertenecen.
// random - Color aleatorio
// RRR GGG BBB - Color personalizado.
//
// Ejemplo para que todos los lásers sean verdes: "000 255 000"
//
lm_color "0"

// Daño en area que harán las minas al romperse.
//
lm_explosion "25.0"

// Radio de la explosión de las minas.
//
lm_radius "200.0"

// Fuerza del empuje que causarán las minas al romperse.
//
lm_force "25.0"

// Destrabar automáticamente a los jugadores que queden atascados al plantar una mina
//
// 0 - Deshabilitado.
// 1 - Destrabar automáticamente si quedan trabados con la mina.
//
lm_unstuck "0"

// Bloquear el movimiento mientras se planta o remueve una mina.
//
// 0 - Permitir movimiento.
// 1 - Bloquear movimiento.
//
lm_freeze "1"


Archivos adjuntos
.zip   Minas láser.zip (Tamaño: 737.52 KB / Descargas: 681)
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#2
Buen aporte, no vi el código pero después lo miro... :3
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#3
Bien ahí, gracias por aportarlo.
Responder
#4
Tenkiu la verdad q me alegraste el dia cuando termine lo q estoy haciendo ahora tenia pensado hacerme unos laser no tan bug y mas orientados a lo q quiero q el laser_v23 ahora no voy a tener q buscar entre 1000 lineas de code lo q necesito
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#5
Exelente aporte
[Imagen: tumblr_mt8w6d7yz11rn3500o1_400.gif]
Responder
#6
miro el código y te digo

es mejor seguramente este (aunque tenga bug [aun no testie nada e.e]) ya que las otras lasermine traen tripmine para zp aunque uno no las vaya a usar y es código al pedo

Pone en el thread que se necesita compilar con 1.8.3 , sino van a venir cada uno preguntando lo mismo con Ham_CS_Player_ResetMaxSpeed
Responder
#7
No se supone que es "obligatorio" compilar con 1.8.3? Igual eso está por el hamsandwich update de joaquinmandrade y arkshine ( creo ) , despues se junto con la 1.8.3 por eso funciona xP

Te digo que estas lasermines estan mucho mejor que las otras porque mas alla de que tiene menos boludeces, las pocas cosas que tiene estan bien hechas a simple vista Lengua
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#8
Oh god why

(20/02/2015, 11:04 AM)Fail! escribió: Error al compilar
Código PHP:
Welcome to the AMX Mod X 1.8.1-300 Compiler. <- (1.8.3!!!!!! NO 1.8.1!)
 
bla bla bla... 
Linea
Código PHP:
RegisterHamHam_CS_Player_ResetMaxSpeed,"player","fw_PlayerSpeed" 

(20/02/2015, 10:35 AM)ErikMav94 escribió: Pone en el thread que se necesita compilar con 1.8.3 , sino van a venir cada uno preguntando lo mismo con Ham_CS_Player_ResetMaxSpeed

PD: Gran aporte Treki. No hasta la 1.8.2 esta, por que las 1.8.2 damos soporte, anteriores no.
Responder
#9
yo lo intente compilar con la 1.8.2 y no va Ham_CS_Player_ResetMaxSpeed

https://forums.alliedmods.net/showpost.p...stcount=34

New functions added :

Counter-Strike
Ham_CS_Player_ResetMaxSpeed,
Ham_CS_Weapon_SendWeaponAnim,
Ham_CS_Player_IsBot,
Ham_CS_Player_GetAutoaimVector,
Ham_CS_Player_Blind,
Ham_CS_Player_OnTouchingWeapon,

capaz que estoy compilando con la 1.8.1 y ni me doy cuenta , pero en fin Yao ming

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

[Imagen: jdOZQPE.jpg]

- pones una mina en el aire y sale el laser igual y desviado
- cuando rompes la mina , está la explosión pero no el impulso que te manda a a la mierda (aunque veo que no lo pusiste :B)
- el print color no es de colores xD

[Imagen: Ac9fdgw.jpg]

- cuando pones un laser adelante del otro sale torcido, en vez de derecho respecto al otro
Responder
#10
(20/02/2015, 11:36 AM)ErikMav94 escribió: yo lo intente compilar con la 1.8.2 y no va Ham_CS_Player_ResetMaxSpeed

https://forums.alliedmods.net/showpost.p...stcount=34

New functions added :

Counter-Strike
Ham_CS_Player_ResetMaxSpeed,
Ham_CS_Weapon_SendWeaponAnim,
Ham_CS_Player_IsBot,
Ham_CS_Player_GetAutoaimVector,
Ham_CS_Player_Blind,
Ham_CS_Player_OnTouchingWeapon,

capaz que estoy compilando con la 1.8.1 y ni me doy cuenta , pero en fin Yao ming

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

[Imagen: jdOZQPE.jpg]

- pones una mina en el aire y sale el laser igual y desviado
- cuando rompes la mina , está la explosión pero no el impulso que te manda a a la mierda (aunque veo que no lo pusiste :B)
- el print color no es de colores xD

El primero es fácil de arreglar al igual que el tercero. El segundo es intencional, llego a casa y lo miro.

EDIT: Volví pero tengo sueño, me voy a tirar una siesta y se los arreglo. Lo de la explosión puede ser un simple velocity by aim, porque el código de la lasermine de esa explosión era un asco a mi punto de vista, y ni siquiera lo podías leer correctamente jaja. Lo que si ya fixié el colorchat Sonrisa Saludos!

El bug del primero también es medio semi-intencional. Yo freezeaba la cámara del jugador con flags, entonces aunque mirara para otro lado el láser se pondría donde apuntaba originalmente, pero en un HnS común ( suponiendo que es el modo mas común donde la gente prefiere un láser bugueable ) la gente lo pone en el aire, pero me despreocupe de que el láser saliera para cualquier ángulo.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#11
Lindo aporte Gran sonrisa

Código PHP:
#if AMXX_VERSION_NUM <= 182
const Ham:Ham_CS_Player_ResetMaxSpeed Ham_Item_PreFrame;
#endif 
Responder
#12
Listo, los dos errores que mencionaste están fixeados @Erik. El último es algo que no me voy a meter a arreglarlo porque dudo que sea tan fácil hacerlo. Yo vine a aportar esto justamente para no meterle tanta garra porque no me sobra el tiempo, sino lo hubiera re-escrito y posteado en plugins ^_^

Supongo que el resto tendría que funcionar bien. Nunca las probé a fondo, solo con unas pocas personas, así que puede haber algún otro bug... pero no es la gran cosa.

Ahí edité el thread y agregué otros detalles por los que también cree estos lásers! Sonrisa
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#13
(20/02/2015, 08:00 PM)Treki escribió: Listo, los dos errores que mencionaste están fixeados @Erik. El último es algo que no me voy a meter a arreglarlo porque dudo que sea tan fácil hacerlo. Yo vine a aportar esto justamente para no meterle tanta garra porque no me sobra el tiempo, sino lo hubiera re-escrito y posteado en plugins ^_^

Supongo que el resto tendría que funcionar bien. Nunca las probé a fondo, solo con unas pocas personas, así que puede haber algún otro bug... pero no es la gran cosa.

Ahí edité el thread y agregué otros detalles por los que también cree estos lásers! Sonrisa

lo sé , pero mostré los bugs que encontré a simple vista por si otra persona quiere usar este plugin ya sabe los bugs que tiene , no para que los fixees Guiño

excelente aporte , me gustó y veo si encuentro mas bugs , los fixeo y lo posteo acá si no te es molestia
Responder
#14
(20/02/2015, 08:14 PM)ErikMav94 escribió: lo sé , pero mostré los bugs que encontré a simple vista por si otra persona quiere usar este plugin ya sabe los bugs que tiene , no para que los fixees Guiño

excelente aporte , me gustó y veo si encuentro mas bugs , los fixeo y lo posteo acá si no te es molestia

Tranquilo, no tengo problema en darle soporte a mi propio aporte, tampoco soy tan malo Lengua

Mas allá de eso, en el momento en que lo codié ya tenía una linda idea sobre Pawn, así que dudo que halla muchos bugs restantes. ( No significa que me moleste que fixees los bugs que encuentres, mejor para todos si lo haces ^_^ )

Si cualquier persona quiere ayuda sobre el aporte no tengo problema en ayudar, para eso estoy Sonrisa Saludos!
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#15
te decidiste a postearlas al final e.e

tu aporte vale mucho igual que un linchamiento. Fuck yeah
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.
Responder
#16
Aca esta como hacer lo de la explosion q te manda a la mierda lo saque del lasermin_v23
Código PHP:
CreateDamage(iCurrent,Float:DmgMAX,Float:Radius)
{
    
// Get given parameters
    
    
new Float:vecSrc[3];
    
pev(iCurrentpev_originvecSrc);

    new 
AtkID =pev(iCurrent,LASERMINE_OWNER);
    new 
TeamID=pev(iCurrent,LASERMINE_TEAM);

    new 
ent = -1;
    new 
Float:tmpdmg DmgMAX;

    new 
Float:kickback 0.0;
    
    
// Needed for doing some nice calculations :P
    
new Float:Tabsmin[3], Float:Tabsmax[3];
    new 
Float:vecSpot[3];
    new 
Float:Aabsmin[3], Float:Aabsmax[3];
    new 
Float:vecSee[3];
    new 
trRes;
    new 
Float:flFraction;
    new 
Float:vecEndPos[3];
    new 
Float:distance;
    new 
Float:origin[3], Float:vecPush[3];
    new 
Float:invlen;
    new 
Float:velocity[3];
    new 
iHitHP,iHitTeam;
    
// Calculate falloff
    
new Float:falloff;
    if (
Radius 0.0)
    {
        
falloff DmgMAX Radius;
    } else {
        
falloff 1.0;
    }
    
    
// Find monsters and players inside a specifiec radius
    
while((ent engfunc(EngFunc_FindEntityInSphereentvecSrcRadius)) != 0)
    {
        if(!
pev_valid(ent)) continue;
        if(!(
pev(entpev_flags) & (FL_CLIENT FL_FAKECLIENT FL_MONSTER)))
        {
            
// Entity is not a player or monster, ignore it
            
continue;
        }
        if(!
pev_user_alive(ent)) continue;
        
// Reset data
        
kickback 1.0;
        
tmpdmg DmgMAX;
        
        
// The following calculations are provided by Orangutanz, THANKS!
        // We use absmin and absmax for the most accurate information
        
pev(entpev_absminTabsmin);
        
pev(entpev_absmaxTabsmax);
        
xs_vec_add(Tabsmin,Tabsmax,Tabsmin);
        
xs_vec_mul_scalar(Tabsmin,0.5,vecSpot);
        
        
pev(iCurrentpev_absminAabsmin);
        
pev(iCurrentpev_absmaxAabsmax);
        
xs_vec_add(Aabsmin,Aabsmax,Aabsmin);
        
xs_vec_mul_scalar(Aabsmin,0.5,vecSee);
        
        
engfunc(EngFunc_TraceLinevecSeevecSpot0iCurrenttrRes);
        
get_tr2(trResTR_flFractionflFraction);
        
// Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD)
        
if (flFraction >= 0.9 || get_tr2(trResTR_pHit) == ent)
        {
            
// Work out the distance between impact and entity
            
get_tr2(trResTR_vecEndPosvecEndPos);
            
            
distance get_distance_f(vecSrcvecEndPos) * falloff;
            
tmpdmg -= distance;
            if(
tmpdmg 0.0)
                
tmpdmg 0.0;
            
            
// Kickback Effect
            
if(kickback != 0.0)
            {
                
xs_vec_sub(vecSpot,vecSee,origin);
                
                
invlen 1.0/get_distance_f(vecSpotvecSee);

                
xs_vec_mul_scalar(origin,invlen,vecPush);
                
pev(entpev_velocityvelocity)
                
xs_vec_mul_scalar(vecPush,tmpdmg,vecPush);
                
xs_vec_mul_scalar(vecPush,kickback,vecPush);
                
xs_vec_add(velocity,vecPush,velocity);
                
                if(
tmpdmg 60.0)
                {
                    
xs_vec_mul_scalar(velocity,12.0,velocity);
                } else {
                    
xs_vec_mul_scalar(velocity,4.0,velocity);
                }
                
                if(
velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0)
                {
                    
// There's some movement todo :)
                    
set_pev(entpev_velocityvelocity)
                }
            }

            
iHitHP pev_user_health(ent) - floatround(tmpdmg)
            
iHitTeam int:cs_get_user_team(ent)
            if(
iHitHP <= 0)
            {
                if(
iHitTeam != TeamID)
                {
                    
cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY))
                    
set_score(AtkID,ent,1,iHitHP)
                }else
                {
                    if(
get_pcvar_num(g_LFF))
                    {
                        
cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY))
                        
set_score(AtkID,ent,-1,iHitHP)
                    }
                }
            }else
            {
                if(
iHitTeam != TeamID || get_pcvar_num(g_LFF))
                {
                    
//set_pev(Player,pev_health,iHitHP)
                    
set_user_health(entiHitHP)
                    
engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent);
                    
write_byte(floatround(tmpdmg))
                    
write_byte(floatround(tmpdmg))
                    
write_long(DMG_BULLET)
                    
engfunc(EngFunc_WriteCoord,vecSrc[0])
                    
engfunc(EngFunc_WriteCoord,vecSrc[1])
                    
engfunc(EngFunc_WriteCoord,vecSrc[2])
                    
message_end()
                }
            }    
        }
    }
    
    return

[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#17
Edit para tu code creo q seria asi
Código PHP:
CreateDamage(iCurrent,Float:DmgMAX,Float:Radius)
{
    
// Get given parameters
    
    
new Float:vecSrc[3];
    
pev(iCurrentpev_originvecSrc);

    new 
AtkID =pev(iCurrent,LASER_OWNER);
    new 
TeamID=pev(iCurrent,LASER_TEAM);

    new 
ent = -1;
    new 
Float:tmpdmg DmgMAX;

    new 
Float:kickback 0.0;
    
    
// Needed for doing some nice calculations :P
    
new Float:Tabsmin[3], Float:Tabsmax[3];
    new 
Float:vecSpot[3];
    new 
Float:Aabsmin[3], Float:Aabsmax[3];
    new 
Float:vecSee[3];
    new 
trRes;
    new 
Float:flFraction;
    new 
Float:vecEndPos[3];
    new 
Float:distance;
    new 
Float:origin[3], Float:vecPush[3];
    new 
Float:invlen;
    new 
Float:velocity[3];
    
//new iHitHP,iHitTeam;
    // Calculate falloff
    
new Float:falloff;
    if (
Radius 0.0)
    {
        
falloff DmgMAX Radius;
    } else {
        
falloff 1.0;
    }
    
    
// Find monsters and players inside a specifiec radius
    
while((ent engfunc(EngFunc_FindEntityInSphereentvecSrcRadius)) != 0)
    {
        if(!
pev_valid(ent)) continue;
        if(!(
pev(entpev_flags) & (FL_CLIENT FL_FAKECLIENT FL_MONSTER)))
        {
            
// Entity is not a player or monster, ignore it
            
continue;
        }
        if(
pev(ent,pev_deadflag)!= DEAD_NO) continue;
        
// Reset data
        
kickback 1.0;
        
tmpdmg DmgMAX;
        
        
// The following calculations are provided by Orangutanz, THANKS!
        // We use absmin and absmax for the most accurate information
        
pev(entpev_absminTabsmin);
        
pev(entpev_absmaxTabsmax);
        
xs_vec_add(Tabsmin,Tabsmax,Tabsmin);
        
xs_vec_mul_scalar(Tabsmin,0.5,vecSpot);
        
        
pev(iCurrentpev_absminAabsmin);
        
pev(iCurrentpev_absmaxAabsmax);
        
xs_vec_add(Aabsmin,Aabsmax,Aabsmin);
        
xs_vec_mul_scalar(Aabsmin,0.5,vecSee);
        
        
engfunc(EngFunc_TraceLinevecSeevecSpot0iCurrenttrRes);
        
get_tr2(trResTR_flFractionflFraction);
        
// Explosion can 'see' this entity, so hurt them! (or impact through objects has been enabled xD)
        
if (flFraction >= 0.9 || get_tr2(trResTR_pHit) == ent)
        {
            
// Work out the distance between impact and entity
            
get_tr2(trResTR_vecEndPosvecEndPos);
            
            
distance get_distance_f(vecSrcvecEndPos) * falloff;
            
tmpdmg -= distance;
            if(
tmpdmg 0.0)
                
tmpdmg 0.0;
            
            
// Kickback Effect
            
if(kickback != 0.0)
            {
                
xs_vec_sub(vecSpot,vecSee,origin);
                
                
invlen 1.0/get_distance_f(vecSpotvecSee);

                
xs_vec_mul_scalar(origin,invlen,vecPush);
                
pev(entpev_velocityvelocity)
                
xs_vec_mul_scalar(vecPush,tmpdmg,vecPush);
                
xs_vec_mul_scalar(vecPush,kickback,vecPush);
                
xs_vec_add(velocity,vecPush,velocity);
                
                if(
tmpdmg 60.0)
                {
                    
xs_vec_mul_scalar(velocity,12.0,velocity);
                } else {
                    
xs_vec_mul_scalar(velocity,4.0,velocity);
                }
                
                if(
velocity[0] != 0.0 || velocity[1] != 0.0 || velocity[2] != 0.0)
                {
                    
// There's some movement todo :)
                    
set_pev(entpev_velocityvelocity)
                }
            }
            if(
GetUserTeam(ent) != TeamID)
        
ExecuteHamB(Ham_TakeDamage,ent 0AtkID,tmpdmgDMG_BULLET)  
           
/* iHitHP = pev_user_health(ent) - floatround(tmpdmg)
            iHitTeam = int:GetUserTeam(ent)
            if(iHitHP <= 0)
            {
                if(iHitTeam != TeamID)
                {
                    cs_set_user_money(AtkID,cs_get_user_money(AtkID) + get_pcvar_num(g_LFMONEY))
                    set_score(AtkID,ent,1,iHitHP)
                }else
                {
                    if(get_pcvar_num(g_LFF))
                    {
                        cs_set_user_money(AtkID,cs_get_user_money(AtkID) - get_pcvar_num(g_LFMONEY))
                        set_score(AtkID,ent,-1,iHitHP)
                    }
                }
            }else
            {
                if(iHitTeam != TeamID || get_pcvar_num(g_LFF))
                {
                    //set_pev(Player,pev_health,iHitHP)
                    set_user_health(ent, iHitHP)
                    engfunc(EngFunc_MessageBegin,MSG_ONE_UNRELIABLE,g_msgDamage,{0.0,0.0,0.0},ent);
                    write_byte(floatround(tmpdmg))
                    write_byte(floatround(tmpdmg))
                    write_long(DMG_BULLET)
                    engfunc(EngFunc_WriteCoord,vecSrc[0])
                    engfunc(EngFunc_WriteCoord,vecSrc[1])
                    engfunc(EngFunc_WriteCoord,vecSrc[2])
                    message_end()
                }
            } */   
        
}
    }
    
    return

y lo llamas aca
Código PHP:
case LASER_EXPLODE:CreateDamage(iEnt ,100.0,320.0
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder
#18
podrias ponerle un guardado de vida? es decir supongamos que la mina tiene 1500 de vida y le bajaron 500 y el owner decide quitarlo y plantarlo de nuevo, la mina tendria 1000 y no 1500 otra vez porque eso pasa se regenera otra vez..
Responder
#19
(21/02/2015, 02:16 AM)wicho escribió: podrias ponerle un guardado de vida? es decir supongamos que la mina tiene 1500 de vida y le bajaron 500 y el owner decide quitarlo y plantarlo de nuevo, la mina tendria 1000 y no 1500 otra vez porque eso pasa se regenera otra vez..

Lo que pedís dependería mucho de saber el valor predeterminado que tendrá cada jugador como máximo de lásers, y lo único que hay de tipo "memoria dinámica" en Pawn son las arrays dinámicas supongo. Con eso te doy una idea, pero no tengo tiempo de hacerlo, lo siento xP

Saludos.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#20
Buen plugin, lo usaré.
...
Responder
#21
Muy buenas.
Podrias ponerle para que los de tu equipo no las puedan destruir xd
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#22
Hola, vengo pidiendo ashuda, como hago para ponerle que solamente le haga danio al zombie en zombie plague y que en vez de que le haga danio solamente lo ralentize o que almentos le haga 0.01 de danio y que lo ralentize...
[Imagen: EvoLogo.png.fbcccbc49fb32e6a4bf8f5e72d80c317.png]
nalgas

(03/08/2018, 03:13 PM)Skylar escribió: Está bien que pidas ayudas, pero no para que crees 20 post todos los días mogolico de mierda, me tenes re podrido ya, contraté 10000 sicarios para que te busquen y te maten toda la familia, y a vos que te revienten con una bazooka.
Responder
#23
(22/02/2015, 05:49 PM)Kane escribió: Muy buenas.
Podrias ponerle para que los de tu equipo no las puedan destruir xd

Muy buena idea, no se me ocurrió en aquel momento. Acabo de hacerlo con un TakeDamage a las minas láser, habría que testearlo para ver si tu team puede o no romperlas.

También cambié la manera en que obtiene el team de un jugador, antes yo había creado un stock porque existía un bug con el número que returneaba la función get_user_team, pero se fixeó unos builds atrás, así que ya no sirve.

Código PHP:
GetUserTeam( const id )
{
    static 
sTeam];get_user_teamid,sTeam,)
    
    switch( 
sTeam] )
    {
        case 
'T': return 0
        
case 'C': return 1
    
}
    
    return -
1;


(22/02/2015, 08:33 PM)elpapimejor escribió: Hola, vengo pidiendo ashuda, como hago para ponerle que solamente le haga danio al zombie en zombie plague y que en vez de que le haga danio solamente lo ralentize o que almentos le haga 0.01 de danio y que lo ralentize...

Hay una parte específica donde el láser mata a quien toque, simple de ejecución y sencilla de encontrar. Ahí podés tan solo fijar la velocidad máxima del jugador a un valor ( 200.0 por ejemplo ) y remover la función que mata, logrando que ralentice a quien toque en vez de matarlo.

Código PHP:
if( IsPlayerValid( (iVictim get_tr2iTrace,TR_pHit )) ) && ( get_user_teamiVictim ) != peviEnt,LASER_TEAM ) ) )
{
    
ExecuteHamBHam_Killed,iVictim,peviEnt,LASER_OWNER ),true );
                
    
emit_soundiVictim,CHAN_WEAPON,g_ServerResourcesRES_DIED ],VOL_NORM,ATTN_NORM,0,PITCH_NORM );

No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#24
linea 207 aprox , error de tipeo tuyo :B

Código PHP:
PrintColorid,"^x04[ %s ]^x0 1No puedes^x04 remover^x01 lasers.",g_szCommunity 

^x0 1 --> ^x01

sino , no aparece nada en el chat solo el prefijo de "g_szCommunity".

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

Después con lo de no romper un laser del mismo team, siendo ct y quiero romper mi propio laser y no podría

También probé el code de mongito para cuando se explota un laser te impulse , pero no funciona

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


Si rompo un laser solamente con el cuchillo y con el slash , no se crea explosión y el laser sigue ahí , solo se remueve el model :p

[Imagen: AoHrnma.jpg]
Responder
#25
(25/02/2015, 10:12 PM)ErikMav94 escribió: linea 207 aprox , error de tipeo tuyo :B

Código PHP:
PrintColorid,"^x04[ %s ]^x0 1No puedes^x04 remover^x01 lasers.",g_szCommunity 

^x0 1 --> ^x01

sino , no aparece nada en el chat solo el prefijo de "g_szCommunity".

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

Después con lo de no romper un laser del mismo team, siendo ct y quiero romper mi propio laser y no podría

También probé el code de mongito para cuando se explota un laser te impulse , pero no funciona

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


Si rompo un laser solamente con el cuchillo y con el slash , no se crea explosión y el laser sigue ahí , solo se remueve el model :p

[Imagen: AoHrnma.jpg]
Yo lo probe al code q pase y andaba no se con las nuevas actualizaciones si cambio algo

PD: yo queria preguntar algo de paso como seria para q si esta en el aire el laser lo ponga mirando hacia abajo no se si se entiende osea supongo q sera jugar con los angulos creo
[TUT] Carnage

Fight

"El limite de los backdoors de gente q sabe programar como nostros lo impone nuestra maldad interior y creeme q soy muy malo en el interior"

Anónimo
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)