¿Como puedo poner el punto de reaparicion de un jugador en el lugar que se desconecto?

¿Tienes dudas sobre un código? Consúltalas aquí y aprende cómo se solucionan diferentes tipos de errores.

Moderador: Ayudantes

Reglas del Foro
  • A la hora de realizar su pregunta, especifique bien los detalles y tenga buena ortografía, de esa manera el resto de los usuarios podrán entender su pregunta.
  • Recuerde proporcionar el código que le trae problemas y sus respectivos errores utilizando el BBCode [Pawn]Código aquí[/Pawn] en su mensaje.
  • En esta sección, sólo podrás publicar preguntas asociadas a programación en PAWN ("¿Cuál es la diferencia entre new y static?"), más no temas relacionados a pedir códigos ("¿Me pueden pasar el sistema de 'X' servidor?"). (Ir a Pedidos para publicar estos temas).
  • Si tu pregunta es relacionada con un GM publicado en PawnScript, no crees tu pregunta en esta sección, créala en el mismo tema desde donde obtuviste el GameMode.
  • Evita colocar títulos como: "[Pregunta]", "[Duda]", "[Ayuda]", etc. Los títulos deben ser descriptivos.
  • Si la pregunta es respondida, no modifiques el título ni el contenido de los mensajes del tema. Quizás le pueda servir a alguien más en otro momento.
  • Si la pregunta es respondida, el tema será movido a "Preguntas Solucionadas".
  • Si la pregunta no cumple con alguna de las reglas antes mencionadas o con las Normas del foro, el tema será movido a "Preguntas Cerradas" o a la Papelera.
Responder
Silence
Aprendiz
Aprendiz
Mensajes: 3
Registrado: 27 Ene 2019 07:29
Reputación: 0

04 May 2019 08:34

¿Como puedo poner el punto de reaparición de un jugador en el lugar que se desconecto?
Es decir que al desconectarse aparezca donde se desconecto no en el Spawn principal.
Ayuda por favor -beg -beg -beg
Avatar de Usuario
MrDave
Ayudante
Ayudante
Mensajes: 957
Registrado: 05 Oct 2017 12:13
Reputación: 107

04 May 2019 11:36

Silence escribió:
04 May 2019 08:34
¿Como puedo poner el punto de reaparición de un jugador en el lugar que se desconecto?
Es decir que al desconectarse aparezca donde se desconecto no en el Spawn principal.
Ayuda por favor -beg -beg -beg

Debes usar un sistema de guardado de datos, como por ejemplo: dini, y_ini o incluso una base de datos.
Te daré un ejemplo con y_ini:
 Codigo Pawno:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

#include <a_samp>
#include <YSI\y_ini>

enum ePOS
{
	Float:pX,
	Float:pY,
	Float:pZ,
	Interior,
	World
};

new Pos[MAX_PLAYERS][ePOS];

main()
{
}

public OnPlayerDisconnect(playerid, reason)
{
	new 
		Float:x,
		Float:y,
		Float:z
	;
	GetPlayerPos(playerid, x, y, z);
	new INI:File = INI_Open("myfile.ini");
	INI_WriteFloat(File, "Pos X", x);
	INI_WriteFloat(File, "Pos Y", y);
	INI_WriteFloat(File, "Pos Z", z);
	INI_WriteInt(File, "Interior", GetPlayerInterior(playerid));
	INI_WriteInt(File, "Mundo Virtual", GetPlayerVirtualWorld(playerid));
	INI_Close(File);
	return 1;
}
  Cantidad de llaves: Abiertas(3)-Cerradas(3) | Lineas Totales: 35

En wiki-samp hay una nota donde dice que la función "GetPlayerPos" puede que no funcione correctamente en "OnPlayerDisconnect".
Una posible solución, es guardando las posiciones en "OnPlayerUpdate" y almacenas ese valor en variables globales.
Para más información:

OnPlayerDisconnect

EDIT:
En OnPlayerSpawn harías esto:
 Codigo Pawno:
1
2
3
4
5
6
7

public OnPlayerSpawn(playerid)
{
	SetPlayerPos(playerid, Pos[playerid][pX], Pos[playerid][pY], Pos[playerid][pZ]);
	SetPlayerInterior(playerid, Pos[playerid][Interior]);
	SetPlayerVirtualWorld(playerid, Pos[playerid][World]);
	return 1;
}
  Cantidad de llaves: Abiertas(1)-Cerradas(1) | Lineas Totales: 7

Obviamente, se debe leer el archivo antes donde estén esos valores y almacenarlo en esas variables.

- Temporalmente estoy retirado de SA-MP; por lo tanto no me envíen propuestas de proyectos.
- No respondo dudas por privado, usa la sección de preguntas.
Responder