A ver si alguien encuentra el error.
#1

Bueno, no sй por quй no se me guarda bien la vida y el chaleco, cuando relogueo me aparece la vida en 1 y el chaleco en 1.

Voy a mostrarles como tengo todo.

pawn Код:
enum Info
{
   Contra[32],
   bool:Tutorial,
   Dinero,
   Nivel,
   Sexo,
   Edad,
   Faccion,
   Lider,
   Admin,
   Skin,
   Float:Pos_x,
   Float:Pos_y,
   Float:Pos_z,
   Baneado,
   BanRazon[128],
   Interior,
   VW,
   Float:Vida,
   Float:Chaleco
};
pawn Код:
public ActualizarCuenta(playerid)
{
   new INI:Arch = INI_Open(UbicacionArchivo(playerid));
        INI_SetTag(Arch,"data");
   INI_WriteString(Arch,"Contraseсa",Informacion[playerid][Contra]);
   INI_WriteBool(Arch,"Tutorial",Informacion[playerid][Tutorial]);
   INI_WriteInt(Arch,"Dinero",GetPlayerMoney(playerid));
   INI_WriteInt(Arch,"Nivel",GetPlayerScore(playerid));
   INI_WriteInt(Arch,"Sexo",Informacion[playerid][Sexo]);
   INI_WriteInt(Arch,"Edad",Informacion[playerid][Edad]);
   INI_WriteInt(Arch,"Admin",Informacion[playerid][Admin]);
   INI_WriteInt(Arch,"Faccion",Informacion[playerid][Faccion]);
   INI_WriteInt(Arch,"Lider",Informacion[playerid][Lider]);
   INI_WriteInt(Arch,"Skin",GetPlayerSkin(playerid));
   new Float:x, Float:y, Float:z;
   GetPlayerPos(playerid,x,y,z);
   Informacion[playerid][Pos_x] = x;
   Informacion[playerid][Pos_y] = y;
   Informacion[playerid][Pos_z] = z;
   INI_WriteFloat(Arch,"Pos_x",Informacion[playerid][Pos_x]);
   INI_WriteFloat(Arch,"Pos_y",Informacion[playerid][Pos_y]);
   INI_WriteFloat(Arch,"Pos_z",Informacion[playerid][Pos_z]);
   INI_WriteInt(Arch,"Baneado",Informacion[playerid][Baneado]);
   INI_WriteString(Arch,"BanRazon",Informacion[playerid][BanRazon]);
   INI_WriteInt(Arch,"Interior",GetPlayerInterior(playerid));
   INI_WriteInt(Arch,"VW",GetPlayerVirtualWorld(playerid));
   new Float:VIDA, Float:CHALECO;
   INI_WriteFloat(Arch,"Vida",GetPlayerHealth(playerid,VIDA));
   INI_WriteFloat(Arch,"Chaleco",GetPlayerArmour(playerid,CHALECO));
   INI_Close(Arch);
   return 1;
}
pawn Код:
public Cargar_data(playerid,name[],value[])
{
   INI_String("Contraseсa",Informacion[playerid][Contra],32);
   INI_Bool("Tutorial", Informacion[playerid][Tutorial]);
   INI_Int("Dinero",Informacion[playerid][Dinero]);
   INI_Int("Nivel",Informacion[playerid][Nivel]);
   INI_Int("Sexo",Informacion[playerid][Sexo]);
   INI_Int("Edad",Informacion[playerid][Edad]);
   INI_Int("Admin",Informacion[playerid][Admin]);
   INI_Int("Faccion",Informacion[playerid][Faccion]);
   INI_Int("Lider",Informacion[playerid][Lider]);
   INI_Int("Skin",Informacion[playerid][Skin]);
   INI_Float("Pos_x",Informacion[playerid][Pos_x]);
   INI_Float("Pos_y",Informacion[playerid][Pos_y]);
   INI_Float("Pos_z",Informacion[playerid][Pos_z]);
   INI_Int("Baneado",Informacion[playerid][Baneado]);
   INI_String("BanRazon",Informacion[playerid][BanRazon],128);
   INI_Int("Interior",Informacion[playerid][Interior]);
   INI_Int("VW",Informacion[playerid][VW]);
   INI_Float("Vida",Informacion[playerid][Vida]);
   INI_Float("Chaleco",Informacion[playerid][Chaleco]);
   return 1;
}

public CargarCuenta(playerid)
{
   SpawnPlayer(playerid);
   SetPlayerScore(playerid,Informacion[playerid][Nivel]);
   GivePlayerMoney(playerid,Informacion[playerid][Dinero]);
   SetPlayerSkin(playerid,Informacion[playerid][Skin]);
   SetPlayerPos(playerid,Informacion[playerid][Pos_x],Informacion[playerid][Pos_y],Informacion[playerid][Pos_z]);
   SetPlayerInterior(playerid,Informacion[playerid][Interior]);
   SetPlayerVirtualWorld(playerid,Informacion[playerid][VW]);
   SetPlayerHealth(playerid,Informacion[playerid][Vida]);
   SetPlayerArmour(playerid,Informacion[playerid][Chaleco]);
   return 1;
}
Desde ya, gracias.
Reply
#2

Cuando se guarda la vida, has visto si el archivo se actualiza? aunque creo que el problema es que deberнas de poner

Код:
   SetPlayerScore(playerid,Informacion[playerid][Nivel]);
   GivePlayerMoney(playerid,Informacion[playerid][Dinero]);
   SetPlayerSkin(playerid,Informacion[playerid][Skin]);
   SetPlayerPos(playerid,Informacion[playerid][Pos_x],Informacion[playerid][Pos_y],Informacion[playerid][Pos_z]);
   SetPlayerInterior(playerid,Informacion[playerid][Interior]);
   SetPlayerVirtualWorld(playerid,Informacion[playerid][VW]);
   SetPlayerHealth(playerid,Informacion[playerid][Vida]);
   SetPlayerArmour(playerid,Informacion[playerid][Chaleco]);
dentro de OnPlayerSpawn, crea alguna variable para comprobar si es luego de identificarse.
Reply
#3

Quote:
Originally Posted by Zume-Zero
Посмотреть сообщение
Cuando se guarda la vida, has visto si el archivo se actualiza? aunque creo que el problema es que deberнas de poner

Код:
   SetPlayerScore(playerid,Informacion[playerid][Nivel]);
   GivePlayerMoney(playerid,Informacion[playerid][Dinero]);
   SetPlayerSkin(playerid,Informacion[playerid][Skin]);
   SetPlayerPos(playerid,Informacion[playerid][Pos_x],Informacion[playerid][Pos_y],Informacion[playerid][Pos_z]);
   SetPlayerInterior(playerid,Informacion[playerid][Interior]);
   SetPlayerVirtualWorld(playerid,Informacion[playerid][VW]);
   SetPlayerHealth(playerid,Informacion[playerid][Vida]);
   SetPlayerArmour(playerid,Informacion[playerid][Chaleco]);
dentro de OnPlayerSpawn, crea alguna variable para comprobar si es luego de identificarse.
їTe parece que asн estй bien?

pawn Код:
public OnPlayerSpawn(playerid)
{
    if(!Logueado[playerid]) return SendClientMessage(playerid,-1,"Logueate mediante el diбlogo.");
   if(!Informacion[playerid][Tutorial])
   {
      TogglePlayerControllable(playerid,false);
      CargarCuenta(playerid);
      ShowPlayerDialog(playerid,SSexo,DIALOG_STYLE_MSGBOX,"{FFFFFF}Seleccionar sexo.","{00FFCC}їCuбl es tu sexo?","Masculino","Femenino");
      return 1;
   }
   return 0;
}
Reply
#4

pawn Код:
public CargarCuenta(playerid)
{
    SpawnPlayer(playerid);
    SetPVarInt(playerid, "PrimerSpawn", 1);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    if(GetPVarInt(playerid, "PrimerSpawn") != 0)
    {
        DeletePVar(playerid, "PrimerSpawn");
        ResetPlayerMoney(playerid);
        SetPlayerScore(playerid,Informacion[playerid][Nivel]);
        GivePlayerMoney(playerid,Informacion[playerid][Dinero]);
        SetPlayerSkin(playerid,Informacion[playerid][Skin]);
        SetPlayerPos(playerid,Informacion[playerid][Pos_x],Informacion[playerid][Pos_y],Informacion[playerid][Pos_z]);
        SetPlayerInterior(playerid,Informacion[playerid][Interior]);
        SetPlayerVirtualWorld(playerid,Informacion[playerid][VW]);
        SetPlayerHealth(playerid,Informacion[playerid][Vida]);
        SetPlayerArmour(playerid,Informacion[playerid][Chaleco]);
    }
    return 1;
}
Reply
#5

Quote:
Originally Posted by Zume-Zero
Посмотреть сообщение
pawn Код:
public CargarCuenta(playerid)
{
    SpawnPlayer(playerid);
    SetPVarInt(playerid, "PrimerSpawn", 1);
    return 1;
}

public OnPlayerSpawn(playerid)
{
    if(GetPVarInt(playerid, "PrimerSpawn") != 0)
    {
        DeletePVar(playerid, "PrimerSpawn");
        ResetPlayerMoney(playerid);
        SetPlayerScore(playerid,Informacion[playerid][Nivel]);
        GivePlayerMoney(playerid,Informacion[playerid][Dinero]);
        SetPlayerSkin(playerid,Informacion[playerid][Skin]);
        SetPlayerPos(playerid,Informacion[playerid][Pos_x],Informacion[playerid][Pos_y],Informacion[playerid][Pos_z]);
        SetPlayerInterior(playerid,Informacion[playerid][Interior]);
        SetPlayerVirtualWorld(playerid,Informacion[playerid][VW]);
        SetPlayerHealth(playerid,Informacion[playerid][Vida]);
        SetPlayerArmour(playerid,Informacion[playerid][Chaleco]);
    }
    return 1;
}
Ahora no carga nada jaja, cuando logueo aparezco en BB con skin de CJ.
Reply
#6

perdуn me equivoquй, ponlo asн:


Код:
public CargarCuenta(playerid)
{
    SetPVarInt(playerid, "PrimerSpawn", 1);
    SpawnPlayer(playerid);
    return 1;
}
Reply
#7

Quote:
Originally Posted by JeffreyG
Посмотреть сообщение
Bueno, no sй por quй no se me guarda bien la vida y el chaleco, cuando relogueo me aparece la vida en 1 y el chaleco en 1.

pawn Код:
public ActualizarCuenta(playerid)
{
   new INI:Arch = INI_Open(UbicacionArchivo(playerid));
   INI_SetTag(Arch,"data");
   INI_WriteString(Arch,"Contraseсa",Informacion[playerid][Contra]);
   INI_WriteBool(Arch,"Tutorial",Informacion[playerid][Tutorial]);
   INI_WriteInt(Arch,"Dinero",GetPlayerMoney(playerid));
   INI_WriteInt(Arch,"Nivel",GetPlayerScore(playerid));
   INI_WriteInt(Arch,"Sexo",Informacion[playerid][Sexo]);
   INI_WriteInt(Arch,"Edad",Informacion[playerid][Edad]);
   INI_WriteInt(Arch,"Admin",Informacion[playerid][Admin]);
   INI_WriteInt(Arch,"Faccion",Informacion[playerid][Faccion]);
   INI_WriteInt(Arch,"Lider",Informacion[playerid][Lider]);
   INI_WriteInt(Arch,"Skin",GetPlayerSkin(playerid));
   new Float:x, Float:y, Float:z;
   GetPlayerPos(playerid,x,y,z);
   Informacion[playerid][Pos_x] = x;
   Informacion[playerid][Pos_y] = y;
   Informacion[playerid][Pos_z] = z;
   INI_WriteFloat(Arch,"Pos_x",Informacion[playerid][Pos_x]);
   INI_WriteFloat(Arch,"Pos_y",Informacion[playerid][Pos_y]);
   INI_WriteFloat(Arch,"Pos_z",Informacion[playerid][Pos_z]);
   INI_WriteInt(Arch,"Baneado",Informacion[playerid][Baneado]);
   INI_WriteString(Arch,"BanRazon",Informacion[playerid][BanRazon]);
   INI_WriteInt(Arch,"Interior",GetPlayerInterior(playerid));
   INI_WriteInt(Arch,"VW",GetPlayerVirtualWorld(playerid));
   new Float:VIDA, Float:CHALECO;
   INI_WriteFloat(Arch,"Vida",GetPlayerHealth(playerid,VIDA));
   INI_WriteFloat(Arch,"Chaleco",GetPlayerArmour(playerid,CHALECO));
   INI_Close(Arch);
   return 1;
}
Acerca de la vida y el chaleco, he visto repetidas veces este error:

pawn Код:
INI_WriteFloat(Arch,"Vida", GetPlayerHealth(playerid,VIDA));
INI_WriteFloat(Arch,"Chaleco", GetPlayerArmour(playerid,CHALECO));
їPor quй guarda 1?
Porque estamos usando la funciуn, y no la variable que se especifica en la funciуn para retornar la armadura/vida:

Quote:

GetPlayerHealth(playerid, &Float:health)

playerid - La ID del jugador del cual obtendremos su vida.
&health - El nombre de la variable en el cual guardaremos la vida del jugador.

Quote:

GetPlayerArmour(playerid, &Float:armour)

playerid - La ID del jugador del cual obtendremos su armadura.
&armour - El nombre de la variable en el cual guardaremos la armadura del jugador.

Nosotros debemos de especificar una variable en GetPlayerHealth/Armour, porque en sн, la funciуn retornarб 1, lo que significa que se ejecutу la funciуn.

Hacer esto:

pawn Код:
INI_WriteFloat(Arch,"Vida", GetPlayerHealth(playerid,VIDA));
INI_WriteFloat(Arch,"Chaleco", GetPlayerArmour(playerid, CHALECO));
Bбsicamente guarda 1, porque la funciуn SI se ejecutу, y la armadura/vida del jugador se guardу en CHALECO/VIDA.

El uso correcto serнa:

pawn Код:
new Float:VIDA, Float:CHALECO;
GetPlayerHealth(playerid,VIDA);
GetPlayerArmour(playerid,CHALECO)
INI_WriteFloat(Arch,"Vida", VIDA);
INI_WriteFloat(Arch,"Chaleco", CHALECO);
Espero que te funcione.
Reply
#8

Gracias a los dos por ayudarme, me funcionу de la forma que dijo Edu.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)