Szerző Téma: Dini összekavarodik  (Megtekintve 775 alkalommal)

Dini összekavarodik
« Dátum: 2021. Március 13. - 00:09:50 »
0
Sziasztok!
A hiba maga: Ha egyedül vagyok a szerveren akkor minden tökéletes, viszont ha feljön még valaki akkor összekavarodnak az adatok, megkapom a másik skinjét, szintjét, adminszintjét és ez fordítva is.
Mi lehet a gond?

public OnPlayerDisconnect(playerid, reason)
{
    new quit[128];
GetPlayerName(playerid, JatekosNev, sizeof(JatekosNev));
format(quit, 128, "PROJEKTSZERÓ: %s lecsatlakozott a szerverről.", JatekosNev);
SendClientMessageToAll(FEHER, quit);

//MENTÉS
new file[128];
    format(file, sizeof(file), "/Karakterek/%s.ini", JatekosNev);
    if(fexist(file) && Belepve[playerid] == 1)
    {
dini_IntSet(file, "Penz", PlayerInfo[playerid][Penz]);
dini_IntSet(file, "Szint", PlayerInfo[playerid][Szint]);
dini_IntSet(file, "Adminszint", PlayerInfo[playerid][AdminSzint]);
dini_IntSet(file, "Skin", PlayerInfo[playerid][Skin]);

GetPlayerPos(playerid, Float: pozX, Float: pozY, Float: pozZ);
GetPlayerFacingAngle(playerid, Float: Rot);
dini_FloatSet(file, "POZX", Float: pozX);
dini_FloatSet(file, "POZY", Float: pozY);
dini_FloatSet(file, "POZZ", Float: pozZ);
dini_FloatSet(file, "POZROT", Float: Rot);
}

Belepve[playerid] = 0;
PlayerInfo[playerid][Penz] = 0;
PlayerInfo[playerid][Szint] = 0;
PlayerInfo[playerid][AdminSzint] = 0;
PlayerInfo[playerid][Skin] = 0;

pozX = 0, pozY = 0, pozZ = 0, Rot = 0;
KillTimer(tMentes[playerid]);
return 1;
}

public OnPlayerSpawn(playerid)
{
    new file[128];
    format(file, sizeof(file), "/Karakterek/%s.ini", JatekosNev);
    SetPlayerPos(playerid, dini_Float(file, "POZX"), dini_Float(file, "POZY"), dini_Float(file, "POZZ"));
SetPlayerFacingAngle(playerid, dini_Float(file, "POZROT"));
SetPlayerSkin(playerid, dini_Int(file, "Skin"));
Belepve[playerid] = 1;
return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == regisztracio)
{
   if(response)
   {
  new file[128];
  new string[128];
  GetPlayerName(playerid, JatekosNev, sizeof(JatekosNev));
 
  if(strlen(inputtext) == 0)
  {
             format(string, sizeof(string), "Üdv %s! \nMég nincs karaktered, kérlek add meg a kívánt jelszavad.", JatekosNev);
         ShowPlayerDialog(playerid, regisztracio, DIALOG_STYLE_INPUT, "Regisztráció", string, "OK", "Kilépés");
         return 0;
  }
  format(file, sizeof(file), "/Karakterek/%s.ini", JatekosNev);
  if(!fexist(file))
  {
dini_Create(file);
dini_IntSet(file, "Antibug", 0);
dini_IntSet(file, "Jelszo", udb_hash(inputtext));
dini_IntSet(file, "Penz", 0);
dini_IntSet(file, "Szint", 0);
dini_IntSet(file, "Adminszint", 0);
dini_IntSet(file, "Skin", 5);

dini_FloatSet(file, "POZX", 1481.1920);
dini_FloatSet(file, "POZY", -1766.7390);
dini_FloatSet(file, "POZZ", 18.7958);
dini_FloatSet(file, "POZROT", 359.9680);

     format(string, sizeof(string), "Üdv %s! \nRegisztrálva vagy, kérlek add meg a jelszavad.", JatekosNev);
         ShowPlayerDialog(playerid, bejelentkezes, DIALOG_STYLE_INPUT, "Bejelentkezés", string, "OK", "Kilépés");
         
  }
}
}
if(dialogid == bejelentkezes)
{
   if(response)
   {
  new file[128];
  new string[128];
  GetPlayerName(playerid, JatekosNev, sizeof(JatekosNev));

  if(strlen(inputtext) == 0)
  {
             format(string, sizeof(string), "Üdv %s! \nRegisztrálva vagy, kérlek add meg a jelszavad.", JatekosNev);
         ShowPlayerDialog(playerid, bejelentkezes, DIALOG_STYLE_INPUT, "Bejelentkezés", string, "OK", "Kilépés");
         return 0;
  }
  format(file, sizeof(file), "/Karakterek/%s.ini", JatekosNev);
  if(fexist(file))
  {
new Jelszo = dini_Int(file, "Jelszo");
if(udb_hash(inputtext) == Jelszo)
{
Belepve[playerid] = 1;
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid, dini_Int(file, "Penz"));
PlayerInfo[playerid][Szint] = dini_Int(file, "Szint");
PlayerInfo[playerid][AdminSzint] = dini_Int(file, "Adminszint");
PlayerInfo[playerid][Skin] = dini_Int(file, "Skin");

SetPlayerPos(playerid, dini_Float(file, "POZX"), dini_Float(file, "POZY"), dini_Float(file, "POZZ"));
SetPlayerFacingAngle(playerid, dini_Float(file, "POZROT"));
tMentes[playerid] = SetTimerEx("Mentes", 20000, true, "i", playerid);
}
else
{
SendClientMessage(playerid, PIROS, "Hibás jelszó!");
Kick(playerid);
}
  }
}
else
        {
   Kick(playerid);
}
}
return 1;
}

MENTÉS:

public Mentes(playerid)
{
    new file[128];
    format(file, sizeof(file), "/Karakterek/%s.ini", JatekosNev);
    if(fexist(file) && Belepve[playerid] == 1)
    {
dini_IntSet(file, "Penz", PlayerInfo[playerid][Penz]);
dini_IntSet(file, "Szint", PlayerInfo[playerid][Szint]);
dini_IntSet(file, "Adminszint", PlayerInfo[playerid][AdminSzint]);
dini_IntSet(file, "Skin", PlayerInfo[playerid][Skin]);

GetPlayerPos(playerid, Float: pozX, Float: pozY, Float: pozZ);
GetPlayerFacingAngle(playerid, Float: Rot);
     dini_FloatSet(file, "POZX", Float: pozX);
dini_FloatSet(file, "POZY", Float: pozY);
dini_FloatSet(file, "POZZ", Float: pozZ);
dini_FloatSet(file, "POZROT", Float: Rot);
}
}

Esetleg valami valahova nem kell vagy rosszul van írva?

Nem elérhető Cappsy

  • Adminisztrátor
  • 2754
    • Profil megtekintése
Re:Dini összekavarodik
« Válasz #1 Dátum: 2021. Március 13. - 03:44:44 »
0
Lehet hogy nagyon, nagy hülyeséget írok, kb 7 éve nem láttam már samp kódot.
Viszont, a játékosnév nem globális változó és az OnPlayerSpawn-nál te úgy kéred le mintha lenne annak értéke.
Kérd le a GetPlayerName-et a OnPlayerSpawn-nál a fájl beolvasása előtt, mert így szerintem nemkap semmit sem.

A mentésnél ahogy látom ugyan ez.

Mondom, lehet hülyeség, rég nem követem már mi van sampon, de natívan logikusnak tűnik.

« Utoljára szerkesztve: 2021. Március 13. - 03:47:18 írta Cappsy »

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Re:Dini összekavarodik
« Válasz #2 Dátum: 2021. Március 13. - 06:35:33 »
0
Nem értem miért kéred le a játékos nevét minden public -nál?
public OnPlayerConnect(playerid)
{
   new name[MAX_PLAYER_NAME + 1];
   GetPlayerName(playerid, name, sizeof(name));
   PlayerInfo[playerid][Jatekosnev] = name; // játékosnak a neve mindig tárolva lesz a PlayerInfo[playerid][Jatekosnev] -ben

   Belepve[playerid] = 0; // nullázz mindent le a csatlakozásnál
   PlayerInfo[playerid][Penz] = 0;
   PlayerInfo[playerid][Szint] = 0;
   PlayerInfo[playerid][AdminSzint] = 0;
   PlayerInfo[playerid][Skin] = 0;
   
   pozX = 0, pozY = 0, pozZ = 0, Rot = 0;
   return 1;
}

Re:Dini összekavarodik
« Válasz #3 Dátum: 2021. Március 16. - 13:17:19 »
0
Átírtam úgy ahogy mondtad. Egyenlőre úgy néz ki jó, az adatok nem kavarodnak, viszont engem valamiért folyton kidobál(csak akkor ha van valaki rajtam kívül a szerveren) A hiba üzenet:

[22:21:53] CONNECTION REJECTED: Unacceptable NickName
[22:21:53] Please choose another nick between and 3-20 characters
[22:21:53] Please use only a-z, A-Z, 0-9
[22:21:53] Use /quit to exit or press ESC and select Quit Game

Tudja valaki miért lehet? Ha egyedül vagyok a szerveren, tökéletes.
Illetve olyan kérdésem lenne, hogy string-et mint pl. a játékosnév, hogy mentek dini-ben?

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Re:Dini összekavarodik
« Válasz #4 Dátum: 2021. Március 17. - 02:56:34 »
0
Átírtam úgy ahogy mondtad. Egyenlőre úgy néz ki jó, az adatok nem kavarodnak, viszont engem valamiért folyton kidobál(csak akkor ha van valaki rajtam kívül a szerveren) A hiba üzenet:

[22:21:53] CONNECTION REJECTED: Unacceptable NickName
[22:21:53] Please choose another nick between and 3-20 characters
[22:21:53] Please use only a-z, A-Z, 0-9
[22:21:53] Use /quit to exit or press ESC and select Quit Game

Tudja valaki miért lehet? Ha egyedül vagyok a szerveren, tökéletes.
Illetve olyan kérdésem lenne, hogy string-et mint pl. a játékosnév, hogy mentek dini-ben?

A nevet amit használsz nem megfelelő a csatlakozásnál. Nem használhatsz ékezeteket és a neved nem lehet rövid sem, a-z, A-Z, 0-9 csak ezek között tudsz választani, ékezet nélkül.

A stringel kapcsolatban, játékos nevét nincs miért ments megint, alapból az kéne legyen az .ini fájl amit létrehozol. Ezeket használd:

pl: Karakterek/%s.ini
scriptfiles mappában ezt látod: Karakterek/ZyZu.ini (ha regisztrálnék, nincs miért lementeni még egy külön stringben a játékosnak a nevét ha már lementetted egyszer.)

dini_Set
dini_IntSet

Re:Dini összekavarodik
« Válasz #5 Dátum: 2021. Március 17. - 09:23:17 »
0
Értem.
Az angol szöveg az meg van, viszont ha egyedül vagyok fent ugyan ezzel a névvel semmi baja.

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Re:Dini összekavarodik
« Válasz #6 Dátum: 2021. Március 19. - 01:27:24 »
0
Értem.
Az angol szöveg az meg van, viszont ha egyedül vagyok fent ugyan ezzel a névvel semmi baja.

mi a neved a játékban?

Re:Dini összekavarodik
« Válasz #7 Dátum: 2021. Március 19. - 08:56:02 »
0
PAJLOT

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
Re:Dini összekavarodik
« Válasz #8 Dátum: 2021. Március 20. - 04:25:08 »
0
PAJLOT

valami akkor nincs rendben a módban vagy a server.cfg -ben.

 

SimplePortal 2.3.7 © 2008-2021, SimplePortal