Szerző Téma: dialog regisztrációban nem ment adatokat  (Megtekintve 1209 alkalommal)

dialog regisztrációban nem ment adatokat
« Dátum: 2015. április 02. - 02:41:09 »
0 Show voters
a regisztrációban minden más működik, csak épp ezek a sorok nem.
beregisztrálok, kapom a kezdőpénzt, a fegyvereket, de a kort és a nemet nem menti...
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_LOGIN)
    {
        if(response)
        {
            new string[24+4];
          format(string,sizeof(string),\"%s.ini\",pName(playerid));
    if(!strcmp(password,\"password\")
   {
       //bejelentkezett
   }
   else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, \"Bejelentkezés\", \"Az általad megadott jelszó hibás!\\nGépeld be a jelszavad!\", \"Belép\", \"Kilép\");
        }
        else
        {
            Kick(playerid);
        }
        return 1;
    }
    if(dialogid == DIALOG_REGISTER)
    {
        if(response)
        {
            new string[24+4];
          format(string,sizeof(string),\"%s.ini\",pName(playerid));
          if((strlen(inputtext) > 5) && (strlen(inputtext) < 33 ))
          {
      ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_LIST, \"Milyen nemű a karaktered?\", \"Férfi\\nNő\", \"Tovább\", \"\");
   }
   else ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, \"Regisztráció\", \"A jelszavad legyen 6-32 karakter!\\nKérlek regisztrálj!\\n\\nGépelj be egy jelszavat!\", \"Tovább\", \"\");
        }
        else
        {
            Kick(playerid);
        }
        return 1;
    }
if(dialogid == DIALOG_SEX)
    {
        if(response)
        {
            switch(listitem)
        {
                case 0:
         {
             pInfo[playerid][sex] = 1;
                 ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \"\");
         }
                case 1:
         {
             pInfo[playerid][sex] = 2;
                 ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \"\");
         }
        }
        }
        return 1;
    }
    if(dialogid == DIALOG_AGE)
    {
        if(response)
        {
                new age = strval(inputtext);
                if((age > 20) && (age < 100))
                {
                    pInfo[playerid][Age] = age;
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, \"Bejelentkezés\", \"Gépeld be a jelszavad!\", \"Belép\", \"Kilép\");
      }
      else ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \" \");
        }
        else
        {
            Kick(playerid);
        }
        return 1;
    }
    return 0;
}

 
ötlet?
« Utoljára szerkesztve: 2015. április 02. - 11:32:11 írta anGeL »

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
dialog regisztrációban nem ment adatokat
« Válasz #1 Dátum: 2015. április 02. - 07:37:10 »
0 Show voters
switch(listitem)
        {
                case 0:
         {
             pInfo[playerid][sex] = 1;
                 ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \"\");
         }
                case 1:
         {
             pInfo[playerid][sex] = 2;
                 ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \"\");
         }
        }

 
helyett lehetne:
 
pInfo[playerid][sex] = listitem+1;
ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \"\");

 
a bejelentkezésnél betöltöd az adatait?
mert regisztrációnál eltárolod a tömbben, de nem mented el fájlba, viszont belépésnél meg lehet felül vágod a tömbben tárolt értékeket...vagy ennyi az egész kód? tehát bejelentkezésnél nem történik semmi?



new string[24+4];

 
24+4 helyett miért nem 28 van, nem tudtad kiszámolni?
« Utoljára szerkesztve: 2015. április 02. - 11:31:57 írta anGeL »
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

dialog regisztrációban nem ment adatokat
« Válasz #2 Dátum: 2015. április 02. - 10:40:40 »
0 Show voters
ez a teljes kód:
 
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_LOGIN)
    {
        if(response) // If they clicked \'Cancel\' or pressed esc
        {
            new string[24+4];
          format(string,sizeof(string),\"%s.ini\",pName(playerid));
    dfile_Open(string);
    if(!strcmp(inputtext, dfile_ReadString(\"Password\")))
   {
       pInfo[playerid][Admin] = dfile_ReadInt(\"Admin\");
       pInfo[playerid][Logins] = dfile_ReadInt(\"Logins\");
       pInfo[playerid][Warns] = dfile_ReadInt(\"Warns\");
       pInfo[playerid][PosX] = dfile_ReadFloat(\"PosX\");
      pInfo[playerid][PosY] = dfile_ReadFloat(\"PosY\");
      pInfo[playerid][PosZ] = dfile_ReadFloat(\"PosZ\");
       pInfo[playerid][Money] = dfile_ReadInt(\"Money\");
       pInfo[playerid][Kills] = dfile_ReadInt(\"Kills\");
       pInfo[playerid][Deaths] = dfile_ReadInt(\"Deaths\");
       pInfo[playerid][interior] = dfile_ReadInt(\"Interior\");
       pInfo[playerid][skin] = dfile_ReadInt(\"Skin\");
       pInfo[playerid][sex] = dfile_ReadInt(\"Sex\");
       pInfo[playerid][Age] = dfile_ReadInt(\"Age\");
       pInfo[playerid][Money] = dfile_ReadInt(\"Money\");
       pInfo[playerid][Kills] = dfile_ReadInt(\"Kills\");
       pInfo[playerid][Deaths] = dfile_ReadInt(\"Deaths\");
       pInfo[playerid][Wanted] = dfile_ReadInt(\"Wanted\");
      pInfo[playerid][Job] = dfile_ReadInt(\"Job\");
      pInfo[playerid][LeaderJob] = dfile_ReadInt(\"LeaderJob\");
      pInfo[playerid][LeaderRank] = dfile_ReadInt(\"LeaderRank\");
      pInfo[playerid][Family] = dfile_ReadInt(\"Family\");
      pInfo[playerid][FamilyRank] = dfile_ReadInt(\"FamilyRank\");
      pInfo[playerid][CarJacks] = dfile_ReadInt(\"CarJacks\");
      pInfo[playerid][JailTime] = dfile_ReadInt(\"JailTime\");
      pInfo[playerid][AdminJailTime] = dfile_ReadInt(\"AdminJailTime\");
      pInfo[playerid][Joint] = dfile_ReadInt(\"Joint\");
      pInfo[playerid][Marihuana] = dfile_ReadInt(\"Marihuana\");
      pInfo[playerid][MarihuanaSeed] = dfile_ReadInt(\"MarihuanaSeed\");
      pInfo[playerid][Cocaine] = dfile_ReadInt(\"Cocaine\");
      pInfo[playerid][Paper] = dfile_ReadInt(\"Paper\");
      pInfo[playerid][Lighter] = dfile_ReadInt(\"Lighter\");
      GivePlayerMoney(playerid,pInfo[playerid][Money]);
      LoggedIn[playerid] = true;
      CarJackTime[playerid] = 5*60;
       pInfo[playerid][Logins] ++;
      SpawnPlayer(playerid);
      if(pInfo[playerid][Admin] == 1) SendClientMessage(playerid,-1,\"Üdvözöllek, admin segéd!\");
      if(pInfo[playerid][Admin] == 2) SendClientMessage(playerid,-1,\"Üdvözöllek, admin!\");
      if(pInfo[playerid][Admin] == 3) SendClientMessage(playerid,-1,\"Üdvözöllek, főadmin!\");
      if(pInfo[playerid][Admin] == 4) SendClientMessage(playerid,-1,\"Üdvözöllek, fejlesztő!\");
      if(pInfo[playerid][Admin] == 5) SendClientMessage(playerid,-1,\"Üdvözöllek, tulajdonos!\");
   }
   else ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, \"Bejelentkezés\", \"Az általad megadott jelszó hibás!\\nGépeld be a jelszavad!\", \"Belép\", \"Kilép\");
        }
        else       
{
            Kick(playerid);
        }
        return 1;    }
    if(dialogid == DIALOG_REGISTER)
    {
        if(response)
        {
            new string[24+4];
          format(string,sizeof(string),\"%s.ini\",pName(playerid));
          if((strlen(inputtext) > 5) && (strlen(inputtext) < 33 ))
          {
      dfile_Create(string);
       dfile_Open(string);
      {
                dfile_WriteString(\"Password\",inputtext);
                dfile_WriteInt(\"Admin\",0);
         dfile_WriteInt(\"Logins\",-1);
         dfile_WriteInt(\"Warns\",0);
                dfile_WriteFloat(\"PosX\",0.0);
         dfile_WriteFloat(\"PosY\",0.0);
         dfile_WriteFloat(\"PosZ\",0.0);
         dfile_WriteInt(\"Money\",0);
         dfile_WriteInt(\"Kills\",0);
         dfile_WriteInt(\"Deaths\",0);
         dfile_WriteInt(\"Wanted\",0);
         dfile_WriteInt(\"Interior\",0);
         dfile_WriteInt(\"Skin\",1);
          dfile_WriteInt(\"Sex\",0);
          dfile_WriteInt(\"Age\",0);
          dfile_WriteInt(\"Money\",0);
          dfile_WriteInt(\"Kills\",0);
          dfile_WriteInt(\"Deaths\",0);
         dfile_WriteInt(\"Job\",0);
         dfile_WriteInt(\"LeaderJob\",0);
         dfile_WriteInt(\"LeaderRank\",0);
         dfile_WriteInt(\"Family\",0);
         dfile_WriteInt(\"FamilyRank\",0);
         dfile_WriteInt(\"CarJacks\",0);
         dfile_WriteInt(\"JailTime\",0);
         dfile_WriteInt(\"AdminJailTime\",0);
         dfile_WriteInt(\"Joint\",0);
         dfile_WriteInt(\"Marihuana\",0);
         dfile_WriteInt(\"MarihuanaSeed\",0);
         dfile_WriteInt(\"Cocaine\",0);
         dfile_WriteInt(\"Paper\",0);
          dfile_WriteInt(\"Lighter\",0);
         ShowPlayerDialog(playerid, DIALOG_SEX, DIALOG_STYLE_LIST, \"Milyen nemű a karaktered?\", \"Férfi\\nNő\", \"Tovább\", \"\");
      }
      dfile_SaveFile();
      dfile_CloseFile();
   }
   else ShowPlayerDialog(playerid, DIALOG_REGISTER, DIALOG_STYLE_PASSWORD, \"Regisztráció\", \"A jelszavad legyen 6-32 karakter!\\nKérlek regisztrálj!\\n\\nGépelj be egy jelszavat!\", \"Tovább\", \"\");
        }
        else
        {
            Kick(playerid);
        }
        return 1;
    }
if(dialogid == DIALOG_SEX)
    {
        if(response) // If they clicked \'Cancel\' or pressed esc
        {
            switch(listitem)
        {
                case 0:
         {
             pInfo[playerid][sex] = 1;
                 ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \"\");
         }
                case 1:
         {
             pInfo[playerid][sex] = 2;
                 ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \"\");
         }
        }
        }
        return 1;
    }
    if(dialogid == DIALOG_AGE)
    {
        if(response)
        {
                new age = strval(inputtext);
                if((age > 20) && (age < 100))
                {
                    pInfo[playerid][Age] = age;
                    ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, \"Bejelentkezés\", \"Gépeld be a jelszavad!\", \"Belép\", \"Kilép\");
      }
      else ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \" \");
        }
        else
        {
            Kick(playerid);
        }
        return 1;
    }
    return 0;
}
« Utoljára szerkesztve: 2015. április 02. - 11:31:36 írta anGeL »

dialog regisztrációban nem ment adatokat
« Válasz #3 Dátum: 2015. április 02. - 11:00:39 »
+1 Show voters
Szia!
A regisztrációnál 0-ás értékeket adsz a kornak és nemnek.
 
dfile_WriteInt(\"Sex\",0);
dfile_WriteInt(\"Age\",0);

 
Én az
public OnPlayerDisconnect(playerid, reason)

 részt nézném meg. Valószínűleg kell ott lenni valamilyen karakter adatmentésnek, és ott pedig a kort és a nemet nem menti. Ott kell javítani a hibát.
De, ha nem találnál ilyet, akkor pedig itt van egy másik megoldás:
 
if(dialogid == DIALOG_SEX)
{
    if(response) // Ha NEM a \'Mégsére\' klikkel, hanem megadja
    {
new string[28];
format(string,sizeof(string),\"%s.ini\",pName(playerid));
dfile_Open(string);
        pInfo[playerid][sex] = listitem+1;
        dfile_WriteInt(\"Sex\",pInfo[playerid][sex]);
        ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \"\");
dfile_SaveFile();
dfile_CloseFile();
} else Kick(playerid);
return 1;
}
if(dialogid == DIALOG_AGE)
{
    if(response) // Ha NEM a \'Mégsére\' klikkel, hanem megadja
    {
        if(strval(inputtext) >= 18 && strval(inputtext) < 100) {
   new string[28];
   format(string,sizeof(string),\"%s.ini\",pName(playerid));
   dfile_Open(string);
        pInfo[playerid][Age] = strval(inputtext);
        dfile_WriteInt(\"Age\",pInfo[playerid][Age]);
        ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n(21-99)\", \"Tovább\", \"\");
   dfile_SaveFile();
   dfile_CloseFile();
   ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, \"Bejelentkezés\", \"Gépeld be a jelszavad!\", \"Belép\", \"Kilép\");
} else ShowPlayerDialog(playerid, DIALOG_AGE, DIALOG_STYLE_INPUT, \"Karakter adatok\", \"Hány éves a karaktered?\\n{FF0000}(21-99)\", \"Tovább\", \"\");
} else Kick(playerid);
return 1;
}

 
Nem teszteltem, de működnie kell. Ha nem jó, írj!
 
Remélem tudtam segíteni, további jó fórumozást! :)

dialog regisztrációban nem ment adatokat
« Válasz #4 Dátum: 2015. április 02. - 11:04:00 »
0 Show voters
van egy /stats parancsom, ahol szétírja a nemet és a kort is, de mindkettő \"0\"-t mutat.
közvetlenül regisztráció után, amikor a tömbbe van mentve (elvileg) is ugyanez a helyzet.
a mentésnek nincs köze hozzá

Nem elérhető Kovacs_Richard

  • 1743
  • HRP Fejlesztő
  • Discord: Kovacs_Richard#0321
    • Profil megtekintése
    • Hun Role Play Web
dialog regisztrációban nem ment adatokat
« Válasz #5 Dátum: 2015. április 02. - 11:10:02 »
+1 Show voters
1. regisztrációnál (jelszó beírásnál) beírod a fájlba:
 
dfile_WriteInt(\"Sex\",0);
dfile_WriteInt(\"Age\",0);

 
2. bekéred a nemet és a kort DE NEM írod fájlba!
3. belépésnél a fájlból betöltött adatokkal felülírod a beadott adatokat...
szóval amikor megadja a korát/nemét akkor azt mentsd el fájlba és jó lesz :)
[gmod]Pawn code ne maradjon le.[/gmod]
« Utoljára szerkesztve: 2015. április 02. - 11:31:24 írta anGeL »
Régóta nem tevékenykedem, mint SA-MP scripter.
HRP Fejlesztő.

dialog regisztrációban nem ment adatokat
« Válasz #6 Dátum: 2015. április 02. - 11:15:17 »
0 Show voters
disconnectnél fájlba írtam, de nem értem miért nem működött.
Köszönöm a segítséget! A kód már működik, szállnak a +tiszteletek!

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal