Szerző Téma: enum rendszerbeli mentés.  (Megtekintve 1671 alkalommal)

enum rendszerbeli mentés.
« Dátum: 2013. április 14. - 18:53:31 »
0 Show voters
hellósztok, csináltam enum-mal egy Ölés/Halál dolgot. És nekem az kellene, mert ha ugye most ölök, akkor +1 ölést számlál, ha halok +1 halál.. Na mind1, nekem az kellene, hogy ezt mentse is, még szerver restartkor is.  Elég fontos lenne, mert még alapulóban van pár fontos illetve komoly rendszerem, amihez ez az 1 dolog kellene..

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
enum rendszerbeli mentés.
« Válasz #1 Dátum: 2013. április 14. - 19:01:42 »
0 Show voters

enum rendszerbeli mentés.
« Válasz #2 Dátum: 2013. április 14. - 19:02:33 »
0 Show voters

enum rendszerbeli mentés.
« Válasz #3 Dátum: 2013. április 14. - 19:56:49 »
0 Show voters
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..

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
enum rendszerbeli mentés.
« Válasz #4 Dátum: 2013. április 15. - 19:50:10 »
0 Show voters

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.

enum rendszerbeli mentés.
« Válasz #5 Dátum: 2013. április 15. - 21:12:37 »
0 Show voters
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.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
enum rendszerbeli mentés.
« Válasz #6 Dátum: 2013. április 16. - 14:12:32 »
0 Show voters
Idézetet írta: ppatrik2012 date=1366053157\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"36181\" data-ipsquote-contentclass=\"forums_Topic

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.
« Utoljára szerkesztve: 2013. április 16. - 14:16:10 írta Dfoglalo »

enum rendszerbeli mentés.
« Válasz #7 Dátum: 2013. április 16. - 15:26:01 »
0 Show voters
Idézetet írta: Dfoglalo date=1366114352\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"36181\" data-ipsquote-contentclass=\"forums_Topic


 
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.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
enum rendszerbeli mentés.
« Válasz #8 Dátum: 2013. április 16. - 15:31:07 »
0 Show voters
Idézetet írta: ppatrik2012 date=1366118761\" data-ipsquote-contentapp=\"forums\" data-ipsquote-contenttype=\"forums\" data-ipsquote-contentid=\"36181\" data-ipsquote-contentclass=\"forums_Topic


 

 
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.
 
[/quote]
Az ettõl volt:
 
dini_Set(file, \"Penz\", \"0\");

 
Én olyat használok, ahol a regisztrációval hozza létre, és csak betölti, tehát nem hozza létre belépéskor. Ezért nem tudhattam, hogy mindig átállítja 0-ra. Amit nem értek, hiszen elméletileg csak akkor kellene beállítani 0-ra, amikor nem létezik a fájl.
 

        if(!dini_Exists(file)) // Ha nem (! a tagadás) létezik a file, akkor csinálja ezeket.
        {
                dini_Create(file) // Létrehozza,
                dini_Set(file, \"Penz\", \"0\"); // átírja.
        }
        else // De ha létezik,
        {
               dini_IntSet(file, \"Penz\", pInfo[playerid][pPenz]); // beállítja a fájlban található Penz sor értékét a pPenz tárolóba, méghozzá az adott playernek.
        }

 
Ez az elmélet, de valamiért átállítja mindig - ezek szerint. Alapból nem hibás a kód, tehát én sem értem a dolgot.

enum rendszerbeli mentés.
« Válasz #9 Dátum: 2013. április 16. - 15:56:23 »
0 Show voters
Ez gáz, mert én sem tudom mi lehet.. Valaki? Ötlet?

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
enum rendszerbeli mentés.
« Válasz #10 Dátum: 2013. április 16. - 16:24:40 »
0 Show voters
Egyszer úgyis beraknád a reget... Szóval szerintem most.

enum rendszerbeli mentés.
« Válasz #11 Dátum: 2013. április 16. - 20:38:15 »
0 Show voters
Igen, de elõször megakarok tanulni egy normál szinten scriptelni, dini használat.. Stb stb.. Nem copy módot akarok. De ebben a cuccban tudna valaki segíteni?

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
enum rendszerbeli mentés.
« Válasz #12 Dátum: 2013. április 17. - 13:28:41 »
0 Show voters
Az egyáltalán nem copy, ha írsz egy dialogos reget. De mivel ugyanazt készítenéd el, mint amit publikáltak a fórumon, könnyebb a dolgod azt átírni. És az is full dini (meg dialog), tehát tanulod vele a szkriptelést, meg a dini használatát is.

enum rendszerbeli mentés.
« Válasz #13 Dátum: 2013. április 17. - 14:05:06 »
0 Show voters
mind1, egyenlõre nincs szükségem reg rendszerre.

Nem elérhető Dfoglalo

  • 4069
  • Globális Moderátor
    • Profil megtekintése
enum rendszerbeli mentés.
« Válasz #14 Dátum: 2013. április 17. - 17:23:21 »
0 Show voters
Pedig ugyanazt csinálja, mint amikor feljön a szeróra, és létrehozza a fájlt, csak legalább kicsit biztonságosabb a jelszó miatt :D Nem tudják ellopni így a másik cuccait, ennyi. Na mind1, te tudod, én csak ajánlottam.
Nyilván ezen már nincs mit vitázni, zárjuk le ezt a beszélgetést a regrõl.

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal