SA-MP Forums Archive
[Ayuda] Guardar posiciуn del jugador - 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: [Ayuda] Guardar posiciуn del jugador (/showthread.php?tid=544236)



[Ayuda] Guardar posiciуn del jugador - MrNatrio - 31.10.2014

Buenas,

Querнa hacer un sistema guardado de posiciуn del jugador, para cuando se desconectara, se guardara su posiciуn; ya que siempre que se conecta, cae al vacнo.

He creado estas variables globales:

pawn Код:
new Float:GlobalX, Float:GlobalY, Float:GlobalZ, Float:GlobalAng;
Luego, he creado un timer para que cada 10 milisegundos, revise su posiciуn:

pawn Код:
SetTimer("SavePlayerPos",10, true);

//funciуn:

forward SavePlayerPos(playerid);
public SavePlayerPos(playerid)
{
    GetPlayerPos(playerid, GlobalX,GlobalY,GlobalZ);
    GetPlayerFacingAngle(playerid, GlobalAng);
    PlayerInfo[playerid][pX] = GlobalX;
    PlayerInfo[playerid][pY] = GlobalY;
    PlayerInfo[playerid][pZ] = GlobalZ;
    PlayerInfo[playerid][pAngl] = GlobalAng;
    return 1;
}
En el enum del pInfo, puse esto:

pawn Код:
pX,
    pY,
    pZ,
    pAngl
Luego en la base de datos, en LoadUser_data, he puesto:

pawn Код:
INI_Float("pX",PlayerInfo[playerid][pX] = GlobalX); //Lнnia 2745
    INI_Float("pY",PlayerInfo[playerid][pY] = GlobalY); //Lнnia 2746
    INI_Float("pZ",PlayerInfo[playerid][pZ] = GlobalZ); //Lнnia 2747
    INI_Float("pAngl",PlayerInfo[playerid][pAngl] = GlobalAng); //Lнnia 2748
En el guardado del personaje, puse esto:

pawn Код:
INI_WriteFloat(File,"pX",PlayerInfo[playerid][pX]); //Lнnia 3083
    INI_WriteFloat(File,"pY",PlayerInfo[playerid][pY]); //Lнnia 3084
    INI_WriteFloat(File,"pZ",PlayerInfo[playerid][pZ]); //Lнnia 3085
    INI_WriteFloat(File,"pAngl",PlayerInfo[playerid][pAngl]); //Lнnia 3086
Y en OnPlayerSpawn, puse esto:

pawn Код:
SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
Pero cuando lo compilo, me dб estos warning:
pawn Код:
(2745) : warning 213: tag mismatch
(2746) : warning 213: tag mismatch
(2747) : warning 213: tag mismatch
(2748) : warning 213: tag mismatch
(3083) : warning 213: tag mismatch
(3084) : warning 213: tag mismatch
(3085) : warning 213: tag mismatch
(3086) : warning 213: tag mismatch

8 Warnings.
Ya tuve anteriormente problemas con los Tags del INI, pero esta vez, no sй que hacer para solucionar estos warnings...

Espero sus respuestas, gracias de antemano.


Respuesta: [Ayuda] Guardar posiciуn del jugador - Pipe98 - 01.11.2014

No sera asн? las posiciones guardan siempre numeros con coma

pawn Код:
Float:pX,
    Float:pY,
    Float:pZ,
    Float:pAngl



Re: Respuesta: [Ayuda] Guardar posiciуn del jugador - MrNatrio - 01.11.2014

Quote:
Originally Posted by Pipe98
Посмотреть сообщение
No sera asн? las posiciones guardan siempre numeros con coma

pawn Код:
Float:pX,
    Float:pY,
    Float:pZ,
    Float:pAngl
Gracias, ahora me compila bien; ya sabнa que me dejaba algъn tag en alguna parte...

Pero cuando miro la base de datos del jugador, no aparecen guardadas las variables (pX, pY, pZ y pAngl) y teoricamente estбn puestas en el INI_WriteFloat.

їA quй se debe?


Re: [Ayuda] Guardar posiciуn del jugador - LiMPiTo - 01.11.2014

Esto estб muy mal...

pawn Код:
SetTimer("SavePlayerPos", 10, true);
Para quй cada 10 milisegundos? es demaciada demanda para una funciуn que no necesita tanto, con que actualizes cada 10 segundos anda bien, ademбs podrнas actualizarla al desconectarse el jugador nada mбs... Tampoco funcionarнa asн el timer, debe ser asн:

pawn Код:
SetTimerEx("SavePlayerPos", 10, true, "i", playerid);
Acб tambiйn, no es necesario crear una variable para almacenar las coordenadas y volver a almacenar esas coordenadas de X variable en otra variable...

pawn Код:
forward SavePlayerPos(playerid);
public SavePlayerPos(playerid)
{
    GetPlayerPos(playerid, GlobalX,GlobalY,GlobalZ);
    GetPlayerFacingAngle(playerid, GlobalAng);
    PlayerInfo[playerid][pX] = GlobalX;
    PlayerInfo[playerid][pY] = GlobalY;
    PlayerInfo[playerid][pZ] = GlobalZ;
    PlayerInfo[playerid][pAngl] = GlobalAng;
    return 1;
}
Mбs sencillo:

pawn Код:
forward SavePlayerPos(playerid);
public SavePlayerPos(playerid)
{
    GetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
    GetPlayerFacingAngle(playerid, PlayerInfo[playerid][pAngl]);
    return 1;
}
Y en el cargado:

pawn Код:
INI_Float("pX", PlayerInfo[playerid][pX]); // Aquн estб fijando el valor de la variable "pX" en el valor de "pX" del archivo
    INI_Float("pY", PlayerInfo[playerid][pY]); // Aquн estб fijando el valor de la variable "pY" en el valor de "pY" del archivo
    INI_Float("pZ", PlayerInfo[playerid][pZ]); // Aquн estб fijando el valor de la variable "pZ" en el valor de "pZ" del archivo
    INI_Float("pAngl", PlayerInfo[playerid][pAngl]); // Aquн estб fijando el valor de la variable "pAngl" en el valor de "pAngl" del archivo



Respuesta: [Ayuda] Guardar posiciуn del jugador - Pipe98 - 01.11.2014

pawn Код:
new Float:X, Float:Y, Float:Z, Float:A;
GetPlayerPos(playerid, X, Y, Z);
GetPlayerFacingAngle(playerid, A);
INI_WriteFloat(File,"pX",X);
INI_WriteFloat(File,"pY",Y);
INI_WriteFloat(File,"pZ",Z);
INI_WriteFloat(File,"pAngl",A);
intentaste asi?


Re: [Ayuda] Guardar posiciуn del jugador - MrNatrio - 01.11.2014

Lo he hecho como me ha dicho LiMPiTo y ahora se me guardan en la base de datos.

El problema es que cuando se conecta, no pone la posiciуn que se habнa guardado sino que cae al vacнo...
He probado de poner:
pawn Код:
SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
en OnPlayerConnect, en OnPlayerSpawn y en la funciуn del dialog cuando se loguea pero sigue sin posicionarse.


Respuesta: Re: [Ayuda] Guardar posiciуn del jugador - Pipe98 - 01.11.2014

Quote:
Originally Posted by MrNatrio
Посмотреть сообщение
Lo he hecho como me ha dicho LiMPiTo y ahora se me guardan en la base de datos.

El problema es que cuando se conecta, no pone la posiciуn que se habнa guardado sino que cae al vacнo...
He probado de poner:
pawn Код:
SetPlayerPos(playerid, PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
en OnPlayerConnect, en OnPlayerSpawn y en la funciуn del dialog cuando se loguea pero sigue sin posicionarse.
No le veo nada mala a eso


Respuesta: [Ayuda] Guardar posiciуn del jugador - [J]ulian - 01.11.2014

Usa SetSpawnInfo.


Respuesta: [Ayuda] Guardar posiciуn del jugador - MrNatrio - 01.11.2014

Quote:
Originally Posted by [J]ulian
Посмотреть сообщение
Tambiйn lo he probado y sigue cayйndose al vacнo...


Respuesta: [Ayuda] Guardar posiciуn del jugador - [J]ulian - 01.11.2014

Has un printf.
pawn Код:
printf("%f - %f - %f", PlayerInfo[playerid][pX], PlayerInfo[playerid][pY], PlayerInfo[playerid][pZ]);
A ver si se cargan los datos.