Köszönöm mind2-õtöknek, de valahogy nem akar sikerülni.. Nekem csak annyi kellene igazából ebbõl ZyZu, hogy ha felcsatlakozik létrehozzon egy fájlt a nevével... Onnantól megoldanám, de itt:
new nev[MAX_PLAYER_NAME];
new file[100];
public OnPlayerConnect(playerid)
{
new nev[MAX_PLAYER_NAME];
new file[100];
GetPlayerName(playerid,nev,sizeof(nev));
format(file,sizeof(file),\"/Player/%s.ini\",nev);
if(!dini_Exists(file)) {
dini_Create(file)
return 1;
}
Így ez a lényeg, de nekem nem a játékos nevével hozza létre a file-t, hanem \"file\" néven, nem értem miért..
enum pInformacio
{
pPenz
}
new pInfo[MAX_PLAYERS][pInformacio];
new nev[MAX_PLAYER_NAME];
new file[128];
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,nev,sizeof(nev));
format(file,sizeof(file),\"/Player/%s.ini\",nev);
if(!dini_Exists(file))
{
dini_Create(file)
dini_Set(file, \"Penz\", \"0\");
}
else
{
dini_IntSet(file, \"Penz\", pInfo[playerid][pPenz]);
}
return 1;
}
Tessék. Így létrehozza 0 értékkel akkor, ha nem létezik, és betölti a pPenz tárolóba, ha már létezik.
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,nev,sizeof(nev));
format(file,sizeof(file),\"/Player/%s.ini\",nev);
if(!dini_Exists(file))
{
dini_Create(file)
dini_Set(file, \"Penz\", \"0\");
}
else
{
dini_IntSet(file, \"Penz\", pInfo[playerid][pPenz]);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
dini_IntSet(file, \"Penz\", pInfo[playerid][pPenz]);
return 1;
}
Köszi, de most én kicsit átírtam, de én egy \"komplett\" rendszert írtam, amit nem publikálnék. Igazából itt van ez a rész... Nekem teljesen így van más kód nevekkel + ugye az értéke megvan adva stb stb.. Minden király, lementi az adatot, de betöltéskor ha már létezik is az a név, akkor az éppen \"Pénz\"-t átírja 0 ára... Pl én hiába írom át 50 ezerre.. Ezt nem értem.
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,nev,sizeof(nev));
format(file,sizeof(file),\"/Player/%s.ini\",nev);
if(!dini_Exists(file))
{
dini_Create(file)
dini_Set(file, \"Penz\", \"0\");
}
else
{
dini_IntSet(file, \"Penz\", pInfo[playerid][pPenz]);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
dini_IntSet(file, \"Penz\", pInfo[playerid][pPenz]);
return 1;
}
Köszi, de most én kicsit átírtam, de én egy \"komplett\" rendszert írtam, amit nem publikálnék. Igazából itt van ez a rész... Nekem teljesen így van más kód nevekkel + ugye az értéke megvan adva stb stb.. Minden király, lementi az adatot, de betöltéskor ha már létezik is az a név, akkor az éppen \"Pénz\"-t átírja 0 ára... Pl én hiába írom át 50 ezerre.. Ezt nem értem.
Szivesen.
Én úgy csinálnám, hogy írnék egy alap dialogos regisztrációt, és nem úgy lenne, hogy kapcsolódáskor hozza létre a fájlt, hanem regisztrációkor. Ha pedig már regisztrált, csak beolvasná, és csak belépne egy dialogon át.
// Ezt nem én írtam, innen, a fórumról van. De azért mûködnie kéne, ahogy ránéztem, hiszen én is hasonlót használok.
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <Dini>
new File[128];
new PW[64];
new WPW[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
format(File, sizeof(File), \"User/%s.ini\", Nev(playerid));
if(!fexist(File))
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Regisztráció\", \"Írj be egy tetszõleges jelszót!\", \"Oké\", \"Mégse\");
}
else
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Belépés\", \"Írd be a jelszavad!\", \"Rendben\", \"Mégse\");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)
{
if(!response) Kick(playerid);
if(strlen(inputtext) == 0)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Regisztráció\", \"Írj be egy tetszõleges jelszót!\", \"Rendben\", \"Mégsem\");
return 0;
}
format(File, sizeof(File), \"User/%s.ini\", Nev(playerid));
if(!fexist(File))
{
dini_Create(File);
dini_Set(File, \"Pasword\", inputtext);
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Belépés\", \"Írd be a jelszavad.\", \"Rendben\", \"Mégsem\");
}
}
if(dialogid == 2)
{
format(File, sizeof(File), \"User/%s.ini\", Nev(playerid));
if(!response)
{
Kick(playerid);
}
format(PW, 64, \"%s\", dini_Get(File, \"Password\"));
if(!strcmp(inputtext, PW, false))
{
SendClientMessage(playerid, -1, \"Sikeres belépés! Nyomj a \'SPAWN\' gombra!\");
}
else
{
WPW[playerid] ++;
SendClientMessage(playerid, -1, \"Rossz jelszó!\");
if(WPW[playerid] == 3)
{
Kick(playerid);
}
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Belépés\", \"Írd be a jelszavad\", \"Oké\", \"Mégse\");
}
}
return 1;
}
stock Nev(playerid)
{
new Neve[MAX_PLAYER_NAME];
GetPlayerName(playerid, Neve, sizeof(Neve));
return Neve;
}
Szerkeszd át úgy, ahogy kell neked. Ha a játékos nincs még regisztrálva, akkor elõhozza a regisztrációs dialogot, ha pedig már be van, akkor elõhozza a belépés dialogot. Ha ezt használod, akkor itt a megfelelõ adat betöltés:
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,nev,sizeof(nev));
format(file,sizeof(file),\"/Player/%s.ini\",nev);
if(!dini_Exists(file)){}
else
{
dini_IntSet(file, \"Penz\", pInfo[playerid][pPenz]);
}
return 1;
}
Elméletileg így van nálad, tehát Player mappában, a pénz a Penz sorban, szóval akkor ezt nem is kell szerkesztened.
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,nev,sizeof(nev));
format(file,sizeof(file),\"/Player/%s.ini\",nev);
if(!dini_Exists(file))
{
dini_Create(file)
dini_Set(file, \"Penz\", \"0\");
}
else
{
dini_IntSet(file, \"Penz\", pInfo[playerid][pPenz]);
}
return 1;
}
public OnPlayerDisconnect(playerid, reason)
{
dini_IntSet(file, \"Penz\", pInfo[playerid][pPenz]);
return 1;
}
Köszi, de most én kicsit átírtam, de én egy \"komplett\" rendszert írtam, amit nem publikálnék. Igazából itt van ez a rész... Nekem teljesen így van más kód nevekkel + ugye az értéke megvan adva stb stb.. Minden király, lementi az adatot, de betöltéskor ha már létezik is az a név, akkor az éppen \"Pénz\"-t átírja 0 ára... Pl én hiába írom át 50 ezerre.. Ezt nem értem.
Szivesen.
Én úgy csinálnám, hogy írnék egy alap dialogos regisztrációt, és nem úgy lenne, hogy kapcsolódáskor hozza létre a fájlt, hanem regisztrációkor. Ha pedig már regisztrált, csak beolvasná, és csak belépne egy dialogon át.
// Ezt nem én írtam, innen, a fórumról van. De azért mûködnie kéne, ahogy ránéztem, hiszen én is hasonlót használok.
#include <a_samp>
#include <zcmd>
#include <sscanf2>
#include <Dini>
new File[128];
new PW[64];
new WPW[MAX_PLAYERS];
public OnPlayerConnect(playerid)
{
format(File, sizeof(File), \"User/%s.ini\", Nev(playerid));
if(!fexist(File))
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Regisztráció\", \"Írj be egy tetszõleges jelszót!\", \"Oké\", \"Mégse\");
}
else
{
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Belépés\", \"Írd be a jelszavad!\", \"Rendben\", \"Mégse\");
}
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == 1)
{
if(!response) Kick(playerid);
if(strlen(inputtext) == 0)
{
ShowPlayerDialog(playerid, 1, DIALOG_STYLE_INPUT, \"Regisztráció\", \"Írj be egy tetszõleges jelszót!\", \"Rendben\", \"Mégsem\");
return 0;
}
format(File, sizeof(File), \"User/%s.ini\", Nev(playerid));
if(!fexist(File))
{
dini_Create(File);
dini_Set(File, \"Pasword\", inputtext);
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Belépés\", \"Írd be a jelszavad.\", \"Rendben\", \"Mégsem\");
}
}
if(dialogid == 2)
{
format(File, sizeof(File), \"User/%s.ini\", Nev(playerid));
if(!response)
{
Kick(playerid);
}
format(PW, 64, \"%s\", dini_Get(File, \"Password\"));
if(!strcmp(inputtext, PW, false))
{
SendClientMessage(playerid, -1, \"Sikeres belépés! Nyomj a \'SPAWN\' gombra!\");
}
else
{
WPW[playerid] ++;
SendClientMessage(playerid, -1, \"Rossz jelszó!\");
if(WPW[playerid] == 3)
{
Kick(playerid);
}
ShowPlayerDialog(playerid, 2, DIALOG_STYLE_INPUT, \"Belépés\", \"Írd be a jelszavad\", \"Oké\", \"Mégse\");
}
}
return 1;
}
stock Nev(playerid)
{
new Neve[MAX_PLAYER_NAME];
GetPlayerName(playerid, Neve, sizeof(Neve));
return Neve;
}
Szerkeszd át úgy, ahogy kell neked. Ha a játékos nincs még regisztrálva, akkor elõhozza a regisztrációs dialogot, ha pedig már be van, akkor elõhozza a belépés dialogot. Ha ezt használod, akkor itt a megfelelõ adat betöltés:
public OnPlayerConnect(playerid)
{
GetPlayerName(playerid,nev,sizeof(nev));
format(file,sizeof(file),\"/Player/%s.ini\",nev);
if(!dini_Exists(file)){}
else
{
dini_IntSet(file, \"Penz\", pInfo[playerid][pPenz]);
}
return 1;
}
Elméletileg így van nálad, tehát Player mappában, a pénz a Penz sorban, szóval akkor ezt nem is kell szerkesztened.
[/quote]
Egyenlõre nem akarok nagyokba vágni, de azt írtad, hogy az én rendszeremnek mûködnie kéne, pedig amikor fellépek a szerverre 0 ázza a pénzt, hiába volt az elõtt nála vagy 50000... Szal valami bugos.