Como detectar el ID en TakeDamage
#1
Buenas tengo esta funcion
Código PHP:
public refwd_PlayerTakeDamage_Pre(iVictimiInflictoriAttackerFloat:flDamageiBitsDamageType)
{
    if(
iVictim == iAttacker || !is_user_connected(iAttacker))
    {
        return 
HC_CONTINUE;
    }

    if(
buyed[id])
    {
        
SetHookChainArg(4ATYPE_FLOATflDamage 2.0);
        
client_print(idprint_center"Doble Damage: %0.1f segundo%s"fPtime[id] - halflife_time(), (fPtime[id] - halflife_time() > 1.9 "s" ""))
        if(
halflife_time() >= fPtime[id] - 0.1)
        {
            
client_print_color(idid"^4[Test]^1 Se te han acabado los^3 25 segundos^1 de ^3Doble Damage^1.")
            
buyed[id] = false
        
}
    }
    return 
HC_CONTINUE;


lo que no se es como tomar el id para que me active la funcion dentro del if buyed, intente colocando la id en el public refwd_PlayerTakeDamage_Pre(id, iVictim, iInflictor, iAttacker, Float:flDamage, iBitsDamageType) y tampoco me funciono
Responder
#2
Se supone que si el atacante tiene activada la variable se le multiplica el daño (?

id -> iAttacker

Responder
#3
(20/08/2022, 03:10 AM)Skylar escribió: Se supone que si el atacante tiene activada la variable se le multiplica el daño (?

id -> iAttacker

lo que quiero es que la persona que compre el doble daño se le active solo a el, si coloco el iAttacker funciona pero el conteo solo se vera cuando el jugador dispara y la idea es que le salga todo el tiempo que dura el doble damage
Responder
#4
https://amxmodx-es.com/Thread-GUIA-set-t...ask-exists
Responder
#5
(20/08/2022, 03:14 AM)Asta escribió: lo que quiero es que la persona que compre el doble daño se le active solo a el, si coloco el iAttacker funciona pero el conteo solo se vera cuando el jugador dispara y la idea es que le salga todo el tiempo que dura el doble damage

Cuando compra o le seteas el doble damage, setea tambien un task por tiempo hasta q termine el doble daño.

ejemplo:
Código PHP:
const taskid_dmg 55599;
const 
max_tiempo 25

set_tiempo_doble_dmg
(id)
{
    
g_tiempo_dmg[id] = 0;
    
remove_task(id taskid_dmg);
    
set_task(1.0"task_dmg"id taskid_dmg_,_"b");
}

public 
task_dmg(taskid)
{
    new 
idid = (taskid taskid_dmg);

    if (!
is_user_alive(id) || !g_buyed[id])
    {
        
remove_task(taskid);
        return;
    }

    if (
g_tiempo_dmg[id] >= max_tiempo)
    {
        
client_print_color(id0"^4[Test]^1 Se te han acabado los^3 25 segundos^1 de ^3Doble Damage^1.")
        
buyed[id] = false;
        
        
remove_task(taskid);
        return;
    }

    
client_print(idprint_center"Doble Damage: %d segundos",  max_tiempo g_tiempo_dmg[id]);
    
g_tiempo_dmg[id]++;


usarias la funcion
Código PHP:
set_tiempo_doble_dmg(id
donde comprara el doble dmg o lo setearas al jugador.
___________________________________
SI NECESITAS UN PLUGIN TE LO HAGO $$$
COMUNICATE A MI DISCORD: emanuelitop15
Responder
#6
(20/08/2022, 12:30 PM)[E]manuelitop15 escribió: Cuando compra o le seteas el doble damage, setea tambien un task por tiempo hasta q termine el doble daño.

ejemplo:
Código PHP:
const taskid_dmg 55599;
const 
max_tiempo 25

set_tiempo_doble_dmg
(id)
{
    
g_tiempo_dmg[id] = 0;
    
remove_task(id taskid_dmg);
    
set_task(1.0"task_dmg"id taskid_dmg_,_"b");
}

public 
task_dmg(taskid)
{
    new 
idid = (taskid taskid_dmg);

    if (!
is_user_alive(id) || !g_buyed[id])
    {
        
remove_task(taskid);
        return;
    }

    if (
g_tiempo_dmg[id] >= max_tiempo)
    {
        
client_print_color(id0"^4[Test]^1 Se te han acabado los^3 25 segundos^1 de ^3Doble Damage^1.")
        
buyed[id] = false;
        
        
remove_task(taskid);
        return;
    }

    
client_print(idprint_center"Doble Damage: %d segundos",  max_tiempo g_tiempo_dmg[id]);
    
g_tiempo_dmg[id]++;


usarias la funcion
Código PHP:
set_tiempo_doble_dmg(id
donde comprara el doble dmg o lo setearas al jugador.

y como quedaria en 
Código PHP:
public refwd_PlayerTakeDamage_Pre(iVictimiInflictoriAttackerFloat:flDamageiBitsDamageType
para cuando compre le de el doble daño al jugador
Responder
#7
(20/08/2022, 08:49 PM)Asta escribió: y como quedaria en 
Código PHP:
public refwd_PlayerTakeDamage_Pre(iVictimiInflictoriAttackerFloat:flDamageiBitsDamageType
para cuando compre le de el doble daño al jugador

Pues detectas si buyed[id] está en true y aplicas el damage x2. Ya cuando el task termine este debería de quitarse
"Cada golpe es una lección, y cada lección te hace mejor."

[Imagen: b_350_20_000000_8a7300_ffffff_eeff00.png]
[Imagen: 76561198371193937.png]
Responder
#8
(20/08/2022, 08:49 PM)Asta escribió: y como quedaria en 
Código PHP:
public refwd_PlayerTakeDamage_Pre(iVictimiInflictoriAttackerFloat:flDamageiBitsDamageType
para cuando compre le de el doble daño al jugador

El task es para mostrar el tiempo que le queda de doble daño verdad? no seteas ese tiempo restante en el ataque del jugador ahi solo va el daño del jugador.
Tambien en el task al terminar le quita el doble daño asi que tambien se desactiva el doble daño.

Donde activas esta variable, que activa el daño X2...
Código PHP:
buyed[id

Ahi va la funcion que te dí.
___________________________________
SI NECESITAS UN PLUGIN TE LO HAGO $$$
COMUNICATE A MI DISCORD: emanuelitop15
Responder
#9
(20/08/2022, 09:32 PM)rojedafeik escribió: Pues detectas si buyed[id] está en true y aplicas el damage x2. Ya cuando el task termine este debería de quitarse
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)