[Ayuda] Sistema de guardado de cuentas
#1

Hola a todos, bueno tengo un problema con el registro y el guardado de cuentas, en realidad, las cuentas se guardan pero el problema es que no se actualizan, osea, yo entro creo mi cuenta y se guarda el archivo pero solamente con la contraseсa, el personaje sube de nivel, sube sus kills y al desconectarse no se actualiza el archivo, entonces siempre esta en 0

Asi tengo mi codigo

pawn Код:
new Kills[MAX_PLAYERS];
new Deaths[MAX_PLAYERS];
new isLogged[MAX_PLAYERS];
new Level[MAX_PLAYERS];
new Admin[MAX_PLAYERS];
new Phabilidad[MAX_PLAYERS];
pawn Код:
public OnGameModeExit()
{
    print("TDM");
    for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(isLogged[i] == 1)
    {
    new name[256],check[256];
    Delete3DTextLabel(levl[i]);
    Delete3DTextLabel(admlabl[i]);
    GetPlayerName(i, name, sizeof(name));
    format(check, sizeof(check), "%s.ini", name);
    dini_IntSet(check,"kills", Kills[i]);
    dini_IntSet(check,"Deaths", Deaths[i]);
    dini_IntSet(check,"money", GetPlayerMoney(i));
    dini_IntSet(check,"level", Level[i]);
    dini_IntSet(check,"admin", Admin[i]);
    dini_IntSet(check,"Phabilidad", Phabilidad[i]);
    }
    }
    return 1;
}
pawn Код:
public OnPlayerConnect(playerid)
{
    new string[64], pName[MAX_PLAYER_NAME], string2[64];
    GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
    format(string,sizeof(string),"~Agua~El jugador %s se ah conectado",pName);
    format(string2, sizeof(string2), "%s.ini", pName);
    SendClientMessageToAll(0xFFFFFFAA,string);
    SendClientMessage(playerid, 0xFFFFFFAA, "Bienvenido a TDM");
    isLogged[playerid] = 0;
    Admin[playerid] = 0;
    Level[playerid] = 0;
    Deaths[playerid] = 0;
    Kills[playerid] = 0;
    Phabilidad[playerid] = 0;
    if(!dini_Exists(string2))
    {
    ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, "Registrar nueva cuenta", "Esta cuenta aun no esta registrada\nPara registrar coloque su contraseсa en la casilla de abajo:", "Registrar", "Salir");
    }
    else ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Bienvenido", "Esta cuenta esta registrada\nIntrodusca su contraseсa en la casilla:", "Entrar", "Salir");
return 1;
}
pawn Код:
public OnPlayerDisconnect(playerid, reason)
{
    new string[64], name[MAX_PLAYER_NAME], check[256];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    switch(reason)
    {
        case 0: format(string,sizeof string,"El jugador %s ah salido del servidor(Crash)",name);
        case 1: format(string,sizeof string,"El jugador %s a salido del servidor",name);
        case 2: format(string,sizeof string,"El jugador %s a sido baneado/kikeado",name);
    }
    SendClientMessageToAll(0x757575AA,string);
    format(check, sizeof(check), "/Users/%s.ini", name);
    new cash;
    cash = GetPlayerMoney(playerid);
    if(isLogged[playerid] == 1)
    {
    dini_IntSet(check,"kills", Kills[playerid]);
    dini_IntSet(check,"Deaths", Deaths[playerid]);
    dini_IntSet(check,"money", cash);
    dini_IntSet(check,"level", Level[playerid]);
    dini_IntSet(check,"admin", Admin[playerid]);
    dini_IntSet(check,"Phabilidad", Phabilidad[playerid]);
    }
    Delete3DTextLabel(levl[playerid]);
    Delete3DTextLabel(admlabl[playerid]);
    return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(response)
{
    if(dialogid == 1) //register
    {
                new name[24], check[258];
                GetPlayerName(playerid, name, sizeof(name));
                format(check, sizeof(check), "%s.ini", name);
                dini_Create(check);
                dini_Set(check,"password", inputtext);
                dini_IntSet(check,"money", 0);
                dini_IntSet(check,"kills", 0);
                dini_IntSet(check,"Deaths", 0);
                dini_IntSet(check,"level", 0);
                dini_IntSet(check,"admin", 0);
                SendClientMessage(playerid, 0xFFFFFFAA, "Ah entrado correctamente al servidor");
                isLogged[playerid] = 1;
        return 1;
    }
    if(dialogid == 2) //login
    {
        new name[24], check[258];
        GetPlayerName(playerid, name, sizeof(name));
        format(check, sizeof(check), "%s.ini", name);
        if(dini_Exists(check))
        {
        if(!strlen(inputtext))
        {
        ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Iniciar session con su cuenta", "Contraseсa incorrecta\nPor favor escriba su contraseсa de nuevo:", "Entrar", "Salir");
        }
        else
        {
        if(strcmp(inputtext, dini_Get(check, "password"), false) == 0)
                {
                    isLogged[playerid] = 1;
                    SCM(playerid, 0xFFFFFFAA, "Ah entrado correctamente");
                    SetPlayerMoney(playerid, dini_Int(check, "money"));
                    SetPlayerScore(playerid, dini_Int(check, "kills"));
                    Kills[playerid] = dini_Int(check, "kills");
                    Deaths[playerid] = dini_Int(check, "Deaths");
                    Level[playerid] = dini_Int(check, "level");
                    Admin[playerid] = dini_Int(check, "admin");
                }
                else ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, "Iniciar con su cuenta", "Contraseсa incorrecta\nPor favor intrudusca su contraseсa:", "Entrar", "Salir");
        }
        }
        else
        {
        SCM(playerid, 0xFF0000AA, "FATAL ERROR: UNKNOWN ERROR 1");
        Kick(playerid);
        }
        return 1;
    }
}
else
{
    if(dialogid == 1) //register
    {
    Kick(playerid);
    }
    if(dialogid == 2)
    {
    Kick(playerid);
    }
    if(dialogid == 3)
    ///     WARNING! I SCRAPPED THE SKILL SYSTEM. YOU CAN ACTIVATE IT BY REMOVING THE "/^ ^/"
    if(dialogid == 4) //Deagle edit
 {
 
 }

}
    return 0;
Reply
#2

Esto

pawn Код:
for(new i = 0; i < MAX_PLAYERS; i++)
    {
    if(isLogged[i] == 1)
    {
    new name[256],check[256];
    Delete3DTextLabel(levl[i]);
    Delete3DTextLabel(admlabl[i]);
    GetPlayerName(i, name, sizeof(name));
    format(check, sizeof(check), "%s.ini", name);
    dini_IntSet(check,"kills", Kills[i]);
    dini_IntSet(check,"Deaths", Deaths[i]);
    dini_IntSet(check,"money", GetPlayerMoney(i));
    dini_IntSet(check,"level", Level[i]);
    dini_IntSet(check,"admin", Admin[i]);
    dini_IntSet(check,"Phabilidad", Phabilidad[i]);
    }
    }
Debe ir en onplayerdisconnect o en OnPlayerdeath
Reply
#3

Lol jaja Ese era todo el error, gracias.

Ya pueden cerrar el tema.
Reply


Forum Jump:


Users browsing this thread: 3 Guest(s)