Szerző Téma: Regisztrációs rendszer hiba! Segítség!  (Megtekintve 801 alkalommal)

Regisztrációs rendszer hiba! Segítség!
« Dátum: 2011. április 16. - 21:37:23 »
0 Show voters
Üdv mindenkinek
Írtam egy egyszerû regisztrációs rendszert. Elmentené a játékos csapatát(gTeam), pénzét, és szintjét(score).
A pénz és a score mûködik, de viszont a gTeam-ot nem adja be amikor belépek.
Itt a kód:
 
/*==============================================================================
               SZKRIPT ELEJE
                 by Detroot
==============================================================================*/
#include <a_samp>
#include <dudb>
#include <dini>
#define FILTERSCRIPT
#if defined FILTERSCRIPT
//Színek
#define ZOLD 0x00FF00FF
#define PIROS 0xFF0000FF
//Dialog
#define Regisztracio 1
#define Bejelentkezes 2
//Unused
#pragma unused strtok
#pragma unused ret_memcpy
enum pInfo
{
Munka,
}
new PlayerInfo[MAX_PLAYERS][pInfo];
new IsLogged[MAX_PLAYERS];
public OnFilterScriptInit()
{
print(\"\\n--------------------------------------\");
print(\" Regisztrációs rendszer by Detroot\");
print(\"--------------------------------------\\n\");
return 1;
}
public OnFilterScriptExit()
{
return 1;
}
#endif
public OnPlayerConnect(playerid)
{
SendClientMessage(playerid, ZOLD, \"Regisztrációs rendszer betöltve! by Detroot\");
IsLogged[playerid] = 0;
    new file[128], string[128];
    new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file,sizeof(file),\"/Inget City/%s.ini\",name);
if(!fexist(file))
{
format(string, sizeof string, \"Üdv %s! \\nTe még nem vagy regisztrálva! \\n\\nKérjük regisztrálj.\", name);
ShowPlayerDialog(playerid, Regisztracio, DIALOG_STYLE_INPUT, \"Regisztráció\", string, \"Register\", \"Cancel.\");
}
if(fexist(file))
{
format(string, sizeof string, \"Üdv %s! \\nKérjük jelentkezz be! \\n\\nIrd be a jelszódat.\", name);
ShowPlayerDialog(playerid, Bejelentkezes, DIALOG_STYLE_INPUT, \"Bejelentkezés\", string, \"Login\", \"Cancel.\");
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
    new file[128];
    new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(file,sizeof(file),\"/Inget City/%s.ini\",name);
if(fexist(file))
{
    dini_IntSet(file,\"Szint:\", GetPlayerScore(playerid));
    dini_IntSet(file,\"Pénz:\", GetPlayerMoney(playerid));
    dini_IntSet(file,\"Munka:\", GetPlayerTeam(playerid));
}
IsLogged[playerid] = 0;
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == Regisztracio)
{
if(response)
{
    new file[128];
    new string[128];
    new name[MAX_PLAYER_NAME];
   GetPlayerName(playerid, name, sizeof(name));
   if(strlen(inputtext) == 0)
   {
      format(string, sizeof string, \"Regisztráció \\n\\nÜdv %s! \\nTe még nem vagy regisztrálva! \\n\\nKérjük regisztrálj.\", name);
      ShowPlayerDialog(playerid, Regisztracio, DIALOG_STYLE_INPUT, \"Regisztráció\", string, \"Tovább\", \"Kilépés\");
      return 0;
   }
   format(file,sizeof(file),\"/Inget City/%s.ini\",name);
   if(!fexist(file))
   {
      dini_Create(file);
      dini_IntSet(file,\"Jelszó\", strval(inputtext));
      dini_IntSet(file,\"Szint\", GetPlayerScore(playerid));
      dini_IntSet(file,\"Pénz\", GetPlayerMoney(playerid));
      dini_IntSet(file,\"Munka\", GetPlayerTeam(playerid));
      format(string, sizeof string, \"Bejelentkezés \\n\\nÜdv %s! \\nTe regisztrálva vagy! \\n\\nKérjük jelentkezz be.\", name);
      ShowPlayerDialog(playerid, Bejelentkezes, DIALOG_STYLE_INPUT, \"Bejelentkezés\", string, \"Tovább\", \"Kilépés\");
      PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
      GetPlayerName(playerid, name, sizeof(name));
      printf(\"%s sikeresen regisztrált!\", name);
   }
}
}
if(dialogid == Bejelentkezes)
{
if(response)
{
    new file[128];
    new string[128];
    new PlayerName[24];
   if(strlen(inputtext) == 0)
   {
       GetPlayerName(playerid, PlayerName, sizeof PlayerName);
       format(string, sizeof string, \"Bejelentkezés \\n\\nÜdvözöllek %s! \\nTe már regisztrálva vagy a szerveren! \\n\\nKérlek, jelentkezz be.\", PlayerName);
      ShowPlayerDialog(playerid, Bejelentkezes, DIALOG_STYLE_INPUT, \"Bejelentkezés\", string, \"Tovább\", \"Kilépés\");
      return 0;
   }
   new name[MAX_PLAYER_NAME];
   GetPlayerName(playerid, name, sizeof(name));
   format(file,sizeof(file),\"/Inget City/%s.ini\",name);
   if(fexist(file))
   {
       new password = dini_Int(file, \"Jelszó\");
          if(strval(inputtext) != password)
      {
          SendClientMessage(playerid, PIROS, \"[HIBA]: Rosz jelszót írtál be, kirúgott a szerver!\");
          Kick(playerid);
           GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
           printf(\"%s nem tudott bejelentkezni!\", name);
      }
      else
      {
         IsLogged[playerid] = 1;
         ResetPlayerMoney(playerid);
         SetPlayerScore(playerid, dini_Int(file,\"Szint\"));
         GivePlayerMoney(playerid, dini_Int(file,\"Pénz\"));
                    SetPlayerTeam(playerid, dini_Int(file,\"Munka\"));
         SendClientMessage(playerid, ZOLD, \"Sikeresen bejelentkeztél! Jó játékot!\");
         TogglePlayerSpectating(playerid, 0);
      }
   }
}
}
return 0;
}
/*==============================================================================
                                    SZKRIPT VÉGE
==============================================================================
*/

 
Mi lehet a baj?:S Segítsetek!

Nem elérhető ZeRo

  • 4620
  • Ex Globális Moderátor
    • Profil megtekintése
Regisztrációs rendszer hiba! Segítség!
« Válasz #1 Dátum: 2011. április 16. - 21:53:49 »
0 Show voters
A gTeam csak egy változó( akármi lehetne a neve, egyszer valaki kitalálta, azóta sokan használják ezt a \"megoldást\", ha tudnám miért.. :neutral: ), és nem ugyan az, mint a GetPlayerTeam függvény. Mindkettõnél neked kell ugyan megadni az értékeket, de a hatás nem ugyanaz, értsd; ha mondjuk a 2-es azonosítójú játékosnak a gTeam celláját 1-esre állítod, akkor ha a GetPlayerTeam függvénnyel lekérdezed ugyanúgy a 2-es azonosítójú játékos csapatát, nem 1-et fogsz kapni. Tehát a lényeg az, hogy ha a módodban a csapatokat a gTeam változóval szabályzod, akkor a regisztrációs szkriptedben is azt használd( vagy a Get/SetPlayerTeam függvényt, de mindkettõt ne, mert így nem fog mûködni ).

Regisztrációs rendszer hiba! Segítség!
« Válasz #2 Dátum: 2011. április 16. - 22:26:44 »
0 Show voters
Köszönöm a választ! Írok hogy sikerült-e

Regisztrációs rendszer hiba! Segítség!
« Válasz #3 Dátum: 2011. április 16. - 22:59:05 »
0 Show voters
Tehát itt  van ez:
 
new gTeam[MAX_PLAYERS]; // gTeam

 

#define TEAM_CIVIL          0
#define TEAM_COP            1
#define TEAM_MENTOS         2

 

    if(strcmp(\"/civil\", cmdtext, true) == 0)
{
SetPlayerSkin(playerid, 250);
SetPlayerPos(playerid, -88.2897,1085.8445,19.7422);
SetPlayerFacingAngle(playerid, 57.6278);
SetPlayerColor(playerid, FEHER);
SetPlayerTeam(playerid, 0);
}
if(strcmp(\"/rendõr\", cmdtext, true) == 0)
{
SetPlayerSkin(playerid, 280);
SetPlayerPos(playerid, -216.2145,978.1495,19.4933);
SetPlayerFacingAngle(playerid, 274.6278);
SetPlayerColor(playerid, KEK);
SetPlayerTeam(playerid, 1);
}
if(strcmp(\"/mentõs\", cmdtext, true) == 0)
{
    SetPlayerSkin(playerid, 275);
SetPlayerPos(playerid, -320.3577,1049.7877,20.3403);
SetPlayerFacingAngle(playerid, 274.6278);
SetPlayerColor(playerid, PIROS);
SetPlayerTeam(playerid, 2);
}
return 1;
}

 
Ezt hogyan irjam át akkor hogy mûködjön?

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal