GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: IPhoneman96 - 2012. Május 03. - 20:48:13

Cím: dini - nem ment
Írta: IPhoneman96 - 2012. Május 03. - 20:48:13
Üdv!
A problémám megint elöjött, mégpedig, hogy van egy login/register rendszerem és nem menti el, csak a jelszót, de se a pénzt, se a pontot, se semmit. Megpróbáltam dfile-val is ugya úgy letudtam compileolni hibátlanul, de ugyan az történt.
Részek:
OnPlayerConnect:
 
new PlayerInfo[68];
GetPlayerName(playerid, pName,sizeof (pName));
format(PlayerInfo, sizeof(PlayerInfo),\"/Players/%s.txt\",pName);
if(dini_Exists(PlayerInfo))
{
ShowPlayerDialog(playerid, 5, DIALOG_STYLE_INPUT,\"Login\",\"A fiókod regisztrálva van adj meg a jelszavad!\",\"Login\",\"Kilép\");
}
else
{
ShowPlayerDialog(playerid, 4, DIALOG_STYLE_INPUT,\"Regisztráció\",\"A fiókód nincs regisztrálva, kérlek adj meg egy jelszót\",\"Regist\",\"Kilép\");
}
return 1;

 
OnPlayerDisconnect:
 
if(GetPVarInt(playerid,\"Kijelentkezés\")==1)
{
    SavePlayer(playerid);
}
return 1;

 
OnDialogResponse:
 
if(dialogid == 4)
{
    if(response==0)
    {
        SendClientMessage(playerid, RED, \"A játékhoz bekell lépned, kickeltünk!\");
        Kick(playerid);
   return 1;
    }
    if(response==1)
    {
   if(!strlen(inputtext))
   {
       SendClientMessage(playerid, RED, \"Nem adtál meg jelszót, kérlek írd be a jelszavad\");
       ShowPlayerDialog(playerid, 4, DIALOG_STYLE_INPUT,\"Regisztráció\",\"A fiókód nincs regisztrálva, kérlek adj meg egy jelszót\",\"Regist\",\"Kilép\");
       return 1;
   }
   else
   {
       Regist(playerid, inputtext);
       return 1;
   }
}
    return 1;
}
if(dialogid == 5)
{
    if(response==0)
    {
        SendClientMessage(playerid, RED, \"A játékhoz bekell lépned, kickeltünk!\");
        Kick(playerid);
   return 1;
    }
    if(response==1)
    {
   if(!strlen(inputtext))
   {
       SendClientMessage(playerid, RED, \"Nem adtál meg jelszót, kérlek írd be a jelszavad\");
       ShowPlayerDialog(playerid, 5, DIALOG_STYLE_INPUT,\"Login\",\"A fiókod regisztrálva van adj meg a jelszavad!\",\"Login\",\"Kilép\");
       return 1;
   }
   else
   {
       Login(playerid, inputtext);
       return 1;
   }
}
}
return 1;

 
Függvények:
 
stock Login(playerid, key[])
{
new PlayerInfo[64];
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(PlayerInfo, sizeof(PlayerInfo),\"/Players/%s.txt\",pName);
if(!strcmp(key,dini_Get(PlayerInfo,\"Jelszó\"),false))
{
    LoadPlayer(playerid);
    SendClientMessage(playerid, GREEN,\"Sikeresen bejelentkeztél\");
    return 1;
}
else
{
    SendClientMessage(playerid, RED,\"Rossz jelszót adtál meg\");
    ShowPlayerDialog(playerid, 5, DIALOG_STYLE_INPUT,\"Login\",\"A fiókod regisztrálva van adj meg a jelszavad!\",\"Login\",\"Kilép\");
    return 1;
}
}
stock Regist(playerid, key[])
{
new PlayerInfo[64];
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof (pName));
format(PlayerInfo,sizeof(PlayerInfo),\"/Players/%s.txt\",pName);
dini_Create(PlayerInfo);
dini_Set(PlayerInfo,\"Jelszó\",key);
dini_IntSet(PlayerInfo,\"Pont\", 0);
dini_IntSet(PlayerInfo,\"Pénz\", 0);
dini_IntSet(PlayerInfo,\"Admin\", 0);
dini_IntSet(PlayerInfo,\"Rules\", 0);
dini_IntSet(PlayerInfo,\"Banned\", 0);
SetPlayerScore(playerid, 0);
SendClientMessage(playerid, GREEN,\"Sikeresen regisztráltál\");
SetPVarInt(playerid,\"Kijelentkzés\",1);
return 1;
}
stock LoadPlayer(playerid)
{
new PlayerInfo[64];
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(PlayerInfo, sizeof(PlayerInfo),\"/Players/%s.txt\",pName);
SetPlayerScore(playerid, dini_Int(PlayerInfo,\"Pont\"));
GivePlayerMoney(playerid, dini_Int(PlayerInfo,\"Pénz\"));
SetPVarInt(playerid,\"Admin\", dini_Int(PlayerInfo,\"Admin\"));
SetPVarInt(playerid,\"Rules\", dini_Int(PlayerInfo,\"Rules\"));
SetPVarInt(playerid,\"Banned\", dini_Int(PlayerInfo,\"Banned\"));
SetPVarInt(playerid,\"Kijelentkzés\",1);
return 1;
}
stock SavePlayer(playerid)
{
if(GetPVarInt(playerid,\"Kilejentkezés\")==1)
{
    new PlayerInfo[64];
new pName[MAX_PLAYER_NAME];
GetPlayerName(playerid, pName, sizeof(pName));
format(PlayerInfo, sizeof(PlayerInfo),\"/Players/%s.txt\",pName);
dini_IntSet(PlayerInfo,\"Pont\",GetPlayerScore(playerid));
dini_IntSet(PlayerInfo,\"Pénz\",GetPlayerMoney(playerid));
dini_IntSet(PlayerInfo,\"Admin\",GetPVarInt(playerid,\"Admin\"));
dini_IntSet(PlayerInfo,\"Rules\",GetPVarInt(playerid,\"Rules\"));
dini_IntSet(PlayerInfo,\"Banned\",GetPVarInt(playerid,\"Banned\"));
}
return 1;
}
Cím: dini - nem ment
Írta: ZyZu. - 2012. Május 03. - 22:17:45
Szimpla, készítsel meg egy elmentõt money nevel majd az megjelenik, a mappaban aztan lekered a játékos pontjait stockal és az OnPlayerDisconnect nel teszel egy lementott majd az OnPlayerConnectnel tölsd be..
Cím: dini - nem ment
Írta: TengeriMalac - 2012. Május 03. - 22:22:51
Ismét elõjön a gyakran ismételt, a gyakorlatban fontos szerepet betöltõ, alap mûveltséghez tartozó tényezõ..
HELYESÍRÁS
Idézem..
SavePlayer
 
if(GetPVarInt(playerid,\"Kilejentkezés\")==1)[/quote]
OnPlayerDisconnect
 
if(GetPVarInt(playerid,\"Kijelentkezés\")==1) ...[/quote]
LoadPlayer
 
SetPVarInt(playerid,\"Kijelentkzés\",1); ...[/quote]
Regist
 
SetPVarInt(playerid,\"Kijelentkzés\",1); ...[/quote]
Remélem sikerült kiszûrni a hibát.
A te, és szinte minden, hasonló problémával küzdõ társadnak ajánlom a Sima változók használatát PVar helyett, mert ott legalább kiírja, hogy ha elírod..
Cím: dini - nem ment
Írta: Zsolesszka - 2012. Május 03. - 23:08:28
Én pont az ilyen elgépelések/elírások miatt javaslom a #define használatát, mivel a fordító egybõl jelezné az ilyen elírásokat.
 
#define OUT \"Kijelentkezés\"
GetPVarInt(playerid, OUT);
SetPVarInt(playerid, OUT, 1);
Cím: dini - nem ment
Írta: IPhoneman96 - 2012. Május 04. - 06:42:17
Köszönöm otthon megnézem

Dupla hozzászólás automatikusan összefûzve. ( 2012. Május 04. - 15:34:25 )

Rendben van mûködik, zárok