їComo hacer que se empieze la partida por donde te quedaste?
#1

No se como hacerlo...
Reply
#2

Pero que quieres guardar exactamente? score, posicion, armas, etc... ?
Reply
#3

Todo creo, con dini, pero yo no se hacerlo
Reply
#4

Con dini se hace, acб ya hay un tutorial sobre como hacerlo, buscalo, por ahн debe estar, entre paginas 20 - 40
Reply
#5

Код:
public OnPlayerDisconnect(playerid, reason)
	    {
			new usuario[MAX_PLAYER_NAME], archivo[256], Float:x, Float:y, Float:z, Float:angulo;
			GetPlayerName(playerid, usuario, MAX_PLAYER_NAME);
			GetPlayerPos(playerid, Float:x, Float:y, Float:z);
			GetPlayerFacingAngle(playerid, Float:angulo);
			format(archivo, 256, "%s.ini", usuario);
                                        if (!dini_Exists(archivo))
                                        {
                                        dini_Create(archivo);
			dini_FloatSet(archivo, "PosGuardada(X)", Float:x);
			dini_FloatSet(archivo, "PosGuardada(Y)", Float:y);
			dini_FloatSet(archivo, "PosGuardada(Z)", Float:z);
			dini_FloatSet(archivo, "PosGuardada(Angulo)", Float:angulo);
                                        }else{
                                        dini_FloatSet(archivo, "PosGuardada(X)", Float:x);
			dini_FloatSet(archivo, "PosGuardada(Y)", Float:y);
			dini_FloatSet(archivo, "PosGuardada(Z)", Float:z);
			dini_FloatSet(archivo, "PosGuardada(Angulo)", Float:angulo);
                                         }
		              return 1;
}
public OnPlayerConnect(playerid)
	{
			new vehiculo, usuario[MAX_PLAYER_NAME], archivo[256];
			vehiculo = GetPlayerVehicleID(playerid);
			GetPlayerName(playerid, usuario, MAX_PLAYER_NAME);
			format(archivo, 256, "%s.ini", usuario);
                                         if (dini_Exists(archivo))
                                        {	
		             if(IsPlayerInAnyVehicle(playerid))
			{
			SetVehiclePos(vehiculo, dini_Int(archivo, "PosGuardada(X)"), dini_Int(archivo, "PosGuardada(Y)"), dini_Int(archivo, "PosGuardada(Z)")+1);
			PutPlayerInVehicle(playerid, vehiculo, 0);
			}
			SetPlayerPos(playerid, dini_Int(archivo, "PosGuardada(X)"), dini_Int(archivo, "PosGuardada(Y)"), dini_Int(archivo, "PosGuardada(Z)")+1);
			SetPlayerFacingAngle(playerid, dini_Int(archivo, "PosGuardada(Angulo)"));
			SetCameraBehindPlayer(playerid);
                                        }
		             return 1;
	}
Espero te sirva!
PD: tenes que isar Dini..
Reply
#6

OFF TOPIC:

Quote:
Originally Posted by Elpiezas
Посмотреть сообщение
Recomendaciones:

usa ['pawn] en vez de ['code] (obviamente sin las ') cuando posteas codigos de pawn.
Код:
public OnPlayerDisconnect(playerid, reason)
	    {
			new usuario[MAX_PLAYER_NAME], archivo[256*1], Float:x, Float:y, Float:z, Float:angulo;
			GetPlayerName(playerid, usuario, MAX_PLAYER_NAME);
			GetPlayerPos(playerid, Float:x, Float:y, Float:z);
			GetPlayerFacingAngle(playerid, Float:angulo);
			format(archivo, 256*1, "%s.ini", usuario);
                                        if (!dini_Exists(archivo))
                                        {
                                        dini_Create(archivo);
			dini_FloatSet(archivo, "PosGuardada(X)", Float:x);
			dini_FloatSet(archivo, "PosGuardada(Y)", Float:y);
			dini_FloatSet(archivo, "PosGuardada(Z)", Float:z);
			dini_FloatSet(archivo, "PosGuardada(Angulo)", Float:angulo);
                                        }else{
                                        dini_FloatSet(archivo, "PosGuardada(X)", Float:x);
			dini_FloatSet(archivo, "PosGuardada(Y)", Float:y);
			dini_FloatSet(archivo, "PosGuardada(Z)", Float:z);
			dini_FloatSet(archivo, "PosGuardada(Angulo)", Float:angulo);
                                         }
		              return 1;
}
public OnPlayerConnect*2(playerid)
	{
			new vehiculo, usuario[MAX_PLAYER_NAME], archivo[256*1];
			 vehiculo = GetPlayerVehicleID(playerid); // ???*2
			GetPlayerName(playerid, usuario, MAX_PLAYER_NAME);
			format(archivo, 256*1, "%s.ini", usuario);
                                         if (dini_Exists(archivo))
                                        {	
		              if(IsPlayerInAnyVehicle(playerid)) // ???*2
			{
			SetVehiclePos(vehiculo, dini_Int(archivo, "PosGuardada(X)"), dini_Int(archivo, "PosGuardada(Y)"), dini_Int(archivo, "PosGuardada(Z)")+1);
			PutPlayerInVehicle(playerid, vehiculo, 0);
			}
			SetPlayerPos(playerid, dini_Int(archivo, "PosGuardada(X)"), dini_Int(archivo, "PosGuardada(Y)"), dini_Int(archivo, "PosGuardada(Z)")+1);
			SetPlayerFacingAngle(playerid, dini_Int(archivo, "PosGuardada(Angulo)"));
			SetCameraBehindPlayer(playerid);
                                        }
		             return 1;
	}
Espero te sirva!
PD: tenes que isar Dini..

*1 : їPor quй 256? ... es mucho espacio y nisiquiera lo comprimis... Te digo que la mejor manera seria hacer [MAX_PLAYER_NAME + 50] y reemplazar 50 por la cantidad de caracteres que posea el directorio con la extencion:
Код:
ElServerDeCachito/Usuarios/NOMBRE.txt
\________________/\_______/   |  \__/
          18          9       |    4     =  31
              esto es el MAX_PLAYER_NAME
Entonces en este caso seria [MAX_PLAYER_NAME + 31]

En tu caso es "%s.ini" osea que es mas corto todavia: [MAX_PLAYER_NAME + 4] = [24] ...

Entonces ... me parece que te conviene mбs, en este caso, usar 24 que 256.


___________________________

*2 : Estб mal hecho... No te va a cargar la posicion de nada...

En OnPlayerConnect es cuando el jugador entra al server. No esta "espawneado"...

Asique no va a cargar a ningun lugar... ademas... si acaba de entrar al server no creo que este en ningun auto...

Esperoo que te haya servido esta explicacion.

___________________________

El codigo final serнa:

pawn Код:
#include <dini> // asegurate de tener el archivo dii.inc en la carpeta includes del editor

new check[MAX_PLAYERS]; // esto es para que cuando se muera no aparezca en el lugar donde
        // entro por primera vez en el dнa, sino que aparezca en el lugar de spawn.

public OnPlayerDisconnect(playerid, reason)
{
  // ... aca el resto del codigo que tengas
  //
    // en el caso de no tener un string global que tenga el nombre de cada jugador y que se valla actualizando hace esto:
    new usuario[MAX_PLAYER_NAME], archivo[MAX_PLAYER_NAME + 4], Float:x, Float:y, Float:z, Float:angulo; // hasta aca iba masomenos bien Elpiezas
                                                                                                         // procura leer la explicacion anterior de xq no 256.
    GetPlayerName(playerid, usuario, MAX_PLAYER_NAME);
    GetPlayerPos(playerid, Float:x, Float:y, Float:z);
    GetPlayerFacingAngle(playerid, Float:angulo); // esto tambien estaba bien
    format(archivo, sizeof(archivo), "%s.ini", usuario);
    if (!dini_Exists(archivo)) dini_Create(archivo);
    dini_FloatSet(archivo, "PosGuardada(X)", Float:x);
    dini_FloatSet(archivo, "PosGuardada(Y)", Float:y);
    dini_FloatSet(archivo, "PosGuardada(Z)", Float:z);
    dini_FloatSet(archivo, "PosGuardada(Angulo)", Float:angulo);
  //
  // ... lo que siga...
}

// y aca es donde se le despeloto...

public OnPlayerSpawn(playerid)
{
  // ...
    if(!check[playerid])
    {
        new usuario[MAX_PLAYER_NAME], archivo[MAX_PLAYER_NAME + 4], Float:x, Float:y, Float:z, Float:angulo;
        GetPlayerName(playerid, usuario, MAX_PLAYER_NAME);
        format(archivo, sizeof(archivo), "%s.ini", usuario);
        if (dini_Exists(archivo))
        {
            SetPlayerPos(playerid, dini_Float(archivo, "PosGuardada(X)"), dini_Float(archivo, "PosGuardada(Y)"), dini_Float(archivo, "PosGuardada(Z)")+0.7);
            SetPlayerFacingAngle(playerid, dini_Float(archivo, "PosGuardada(Angulo)")); // Junto con esto
        }                                                                                      // ^
    }                                                                                          // |
  // ...                                                                                       // |
}                                                                                              // |
                                                                                               // |
public OnPlayerDeath(playerid, killerid, reason) //                                            // |
{                                                                                              // |
  // ...                                                                                       // |
    check[playerid] = 1; // esto tambien podria ir ------------------------------------------------
  // ...
}

public OnPlayerConnect(playerid)
{
  // ...
    check[playerid] = 0;
  // ...
}
Reply
#7

AHH jajaj no me di cuenta xD, pasa que lo hice rapido y ni revise, igual espero que le sirva al pibe :P
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)