SA-MP Forums Archive
Pasar Coordenas en timer - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Español/Spanish (https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: Pasar Coordenas en timer (/showthread.php?tid=552072)



Pasar Coordenas en timer - [CG]Milito - 22.12.2014

Buenas

Estaba intentando pasar la coordenadas del player mediante un timer usando SetTimerEx
pero me crashea el server. Supongo que si se puede pasar el id del player mediante esa funcion, tambien se deveria poder pasar las coordenas.

Al momento de ejecutar el timer es cuando se crashea

pawn Код:
forward Bomb(Float:x, Float:y, Float:z);  

new Float:x, Float:y, Float:z;
GetPlayerPos(playerid, x, y, z);
SetTimerEx("Bomb",10000,0,"f,f,f",x,y,z);

public Bomb(Float:x,Float:y,Float:z)
{
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
                CreateExplosionForPlayer(i,x,y,z);
                DestroyObject(GetPlayerClosestObject(i));
                IncreaseWantedLevel(i,4);
        }
    }
}



Re: Pasar Coordenas en timer - Su37Erich - 22.12.2014

Hola [CG]Milito
Tu error estб aquн:
pawn Код:
SetTimerEx("Bomb",10000,0,"f,f,f",x,y,z);
Usa:
pawn Код:
SetTimerEx("Bomb",10000,0,"fff",x,y,z);
Saludos


Respuesta: Re: Pasar Coordenas en timer - [CG]Milito - 22.12.2014

Quote:
Originally Posted by Su37Erich
Посмотреть сообщение
Hola [CG]Milito
Tu error estб aquн:
pawn Код:
SetTimerEx("Bomb",10000,0,"f,f,f",x,y,z);
Usa:
pawn Код:
SetTimerEx("Bomb",10000,0,"fff",x,y,z);
Saludos
Ya no se crashea pero me ejecuta el codigo.
Incluso puse un printf con las coordenadas y no aparece nada en la consola.
Asi tengo el timer

pawn Код:
CreateExplosionForPlayer(i,x,y,z);
                printf("%f %f %f",x,y,z);
                DestroyObject(GetPlayerClosestObject(i));
                IncreaseWantedLevel(i,4);



Re: Pasar Coordenas en timer - Su37Erich - 22.12.2014

Intenta renombrar la funciуn a otra como
pawn Код:
iBomb_N
tal vez exista otra funciуn con el mismo nombre.
їEn la prueba tu estabas conectado? y їcomo se activa el timer, comando?


Respuesta: Re: Pasar Coordenas en timer - [CG]Milito - 22.12.2014

Quote:
Originally Posted by Su37Erich
Посмотреть сообщение
Intenta renombrar la funciуn a otra como
pawn Код:
iBomb_N
tal vez exista otra funciуn con el mismo nombre.
їEn la prueba tu estabas conectado? y їcomo se activa el timer, comando?
Ya le cambie el nombre y nada.
El timer se activa con un dialog


Respuesta: Re: Pasar Coordenas en timer - jotajeda - 22.12.2014

Quote:
Originally Posted by [CG]Milito
Посмотреть сообщение
Ya le cambie el nombre y nada.
El timer se activa con un dialog
pawn Код:
//__________VARIABLE GLOBAL__________
new Float: BCX,BCY,BCZ;
//__________________________________

//new Float:x, Float:y, Float:z; ya no porque se quedan solo aqui localmente.
GetPlayerPos(playerid, BCX, BCY, BCZ);
SetTimerEx("Bomb",10000,0,"fff",BCX,BCY,BCZ);

forward Bomb(Float:BCX, Float:BCY, Float:BCZ);
public Bomb(Float:BCX,Float:BCY,Float:BCZ)
{
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
                CreateExplosionForPlayer(i,BCX,BCY,BCZ);
                DestroyObject(GetPlayerClosestObject(i));
                IncreaseWantedLevel(i,4);
        }
    }
    return true;
}



Re: Respuesta: Re: Pasar Coordenas en timer - [CG]Milito - 23.12.2014

Quote:
Originally Posted by jotajeda
Посмотреть сообщение
pawn Код:
//__________VARIABLE GLOBAL__________
new Float: BCX,BCY,BCZ;
//__________________________________

//new Float:x, Float:y, Float:z; ya no porque se quedan solo aqui localmente.
GetPlayerPos(playerid, BCX, BCY, BCZ);
SetTimerEx("Bomb",10000,0,"fff",BCX,BCY,BCZ);

forward Bomb(Float:BCX, Float:BCY, Float:BCZ);
public Bomb(Float:BCX,Float:BCY,Float:BCZ)
{
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
                CreateExplosionForPlayer(i,BCX,BCY,BCZ);
                DestroyObject(GetPlayerClosestObject(i));
                IncreaseWantedLevel(i,4);
        }
    }
    return true;
}
Ya entiendo. Las variables se quedaban dentro de la callback
Pero ahora se me freezea el servidor.
No se crashea solo se queda congelado.


Respuesta: Re: Respuesta: Re: Pasar Coordenas en timer - jotajeda - 23.12.2014

Quote:
Originally Posted by [CG]Milito
Посмотреть сообщение
Ya entiendo. Las variables se quedaban dentro de la callback
Pero ahora se me freezea el servidor.
No se crashea solo se queda congelado.
pawn Код:
//__________VARIABLE GLOBAL__________
new Float: CoorBomb[3];
//__________________________________

//new Float:x, Float:y, Float:z; ya no porque se quedan solo aqui localmente.
GetPlayerPos(playerid, CoorBomb[0], CoorBomb[1], CoorBomb[2]);
//SetTimerEx("Bomb",10000,0,"f,f,f",BCX,BCY,BCZ);
SetTimer("Bomb",10*1000,false);

forward Bomb();
public Bomb()
{
    for(new i=0; i<MAX_PLAYERS; i++)
    {
        if(IsPlayerConnected(i))
        {
                CreateExplosionForPlayer(i,CoorBomb[1],CoorBomb[2],CoorBomb[3]);
                DestroyObject(GetPlayerClosestObject(i));
                IncreaseWantedLevel(i,4);
        }
    }
    return true;
}
//________________________________________________________
                        O de йsta manera.
//_____________________________________________________

//__________VARIABLE GLOBAL__________
new Float: CoorBomb[3];
//__________________________________

//new Float:x, Float:y, Float:z; ya no porque se quedan solo aqui localmente.
GetPlayerPos(playerid, CoorBomb[0], CoorBomb[1], CoorBomb[2]);
SetTimerEx("Bomb",10000,false,"d",playerid);
//SetTimer("Bomb",10*1000,false);

forward Bomb(playerid);
public Bomb(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        CreateExplosionForPlayer(playerid,CoorBomb[1],CoorBomb[2],CoorBomb[3]);
        DestroyObject(GetPlayerClosestObject(playerid));
        IncreaseWantedLevel(playerid,4);
    }
    return true;
}
//________________________________________________________
                        O de йsta manera.
//_____________________________________________________

new Float: CoorBomb[3][MAX_PLAYERS];//__________VARIABLE GLOBAL__________

GetPlayerPos(playerid, CoorBomb[0][playerid], CoorBomb[1][playerid], CoorBomb[2][playerid]);
SetTimerEx("Bomb",10000,false,"d",playerid);

forward Bomb(playerid);
public Bomb(playerid)
{
    if(IsPlayerConnected(playerid))
    {
        CreateExplosionForPlayer(playerid,CoorBomb[1][playerid],CoorBomb[2][playerid],CoorBomb[3][playerid]);
        DestroyObject(GetPlayerClosestObject(playerid));
        IncreaseWantedLevel(playerid,4);
    }
    return true;
}



Respuesta: Pasar Coordenas en timer - [CG]Milito - 23.12.2014

El problema del crash/freeze lo solucione al pasar el playerid mediante el timer y asi, quitar el loop dentro de la custom callback y usar directamente el parametro playerid