Szerző Téma: Mentés  (Megtekintve 1075 alkalommal)

Mentés
« Dátum: 2014. Augusztus 27. - 20:42:23 »
0 Show voters
Sziasztok.Az lenne nekem a kérdésem, hogy hogyan lehet egy megadott fájlba több dolgot belementeni dinivel.
Példa:
Van nekem egy olyan fájlom, hogy BannoltJatekosok.ini
és ebbe a fájlba akarom bele menteni a játékosok neveit.
ezzel:
 
BanInfo[playerid][name]

 
Nekem az a bajom, hogy nem pakolja be egymás alá a neveket, hanem mindig az utolsó banolt játékost teszi bele.
A segítséget elõre is köszi. :)
« Utoljára szerkesztve: 2014. Augusztus 27. - 20:47:56 írta halaloszto100 »

Mentés
« Válasz #1 Dátum: 2014. Augusztus 27. - 20:46:50 »
0 Show voters
Nem lenne egyszerûbb, ha a játékos fájl-jába létrehozol egy Ban=0 sort, majd ha bannolod, átállítod 1-re?
Csak tipp :)

Mentés
« Válasz #2 Dátum: 2014. Augusztus 27. - 20:49:09 »
0 Show voters
Nem, mivel ez egy rendszernek készül, ezt majd be akarom olvasni a mod indulásakor és egy dialogba fel akarom majd tüntetni és majd talán onnan unbanolni is. :)

Mentés
« Válasz #3 Dátum: 2014. Augusztus 27. - 20:55:53 »
0 Show voters
Van ugye az alap bannolás, és azt elmenti. Azt nem lehet valami képpen beolvasni? Most konkrétan nem tõled kérdezem, hanem úgy mindenkitõl :)

Mentés
« Válasz #4 Dátum: 2014. Augusztus 27. - 20:58:09 »
0 Show voters
Nemtudom, de lehet, hogy az csak RCON adminnak lehet és az úgy meg nem jó.
Ui:De ha lehet is akkor is szeretném megtudni, hogy hogyan is kell, mivel ezt a funkciót majd máskor is szeretném alkalmazni. :)
« Utoljára szerkesztve: 2014. Augusztus 27. - 21:02:12 írta halaloszto100 »

Nem elérhető M1A1

Mentés
« Válasz #5 Dátum: 2014. Augusztus 27. - 21:16:41 »
+1 Show voters
Pl.:
 
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
dini_BoolSet(file, name, false);

 
Ha bannolod, akkor true-ra módosítod az értékét. Mikor a játékos csatlakozik, akkor meg lekéred, hogy bannolva van-e. Ha igen, akkor kiírod neki, hogy bannolva vagy, és kickeled.
Lekérdezés:
 
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(!!dini_Bool(file, name))
{
     Kick(playerid);
     //stb..
}

 
Remélem nem írtam el semmit. Sok sikert!
« Utoljára szerkesztve: 2014. Augusztus 27. - 21:18:25 írta M1A1 »

Mentés
« Válasz #6 Dátum: 2014. Augusztus 27. - 21:30:17 »
0 Show voters
:) Ez szép és jó, de szerintem félreértettük egymást. :) Én nem azt kérdeztem, hogy hogyan kell lementeni, hanem 1 fájlba neveket egymás alá.
Példa:
Random Nevek: Aranka, Józsi, Béla
Na és ezt a 3 nevet egy fájlba beleírni ezzel:
BanInfo[playerid][name]

 
ugybár akkor így valahogy:
 
dini_Set(bfile, \"nev\", BanInfo[playerid][name]);

 
Na és akkor nekem úgy kéne egy fájlba, hogy:
nev = Aranka
nev = Józsi
nev = Béla
ehelyett csak az utolsó banolt játékos van így:
nev = Béla
Aranka és a Józsi nevet nem írja bele.
Remélem érthetõ és köszi azért a segítséget. :)
« Utoljára szerkesztve: 2014. Augusztus 27. - 21:35:14 írta halaloszto100 »

Nem elérhető M1A1

Mentés
« Válasz #7 Dátum: 2014. Augusztus 28. - 00:15:13 »
+1 Show voters
Nem-nem.. :) Te értesz félre engem.
INI fájlkezelésnél vannak ugye a kulcsok, melyeknek értékük van/lehet. A példádban te létrehozol egy \"name\" kulcsot, és ebbe szeretnéd belementeni a játékos neveket, de ez így nem jó, mert több egy nevet viselõ kulcs nem lehet.
Gondoljuk át egy kicsit. Mi lenne akkor, ha a játékosok nevét kulcsként írnánk ki a fájlba, és ezeknek az értéke egy boolean lenne. Azaz bannolva van-e, vagy nincs az adott játékos. Én így írtam.
 
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
dini_BoolSet(file, name, false); //Ezt a részt bejelentkezés után írd. Hozzáadja a játékost a fájlhoz alap false értékkel.

 
Bejelentkezés elõtt pedig ellenõrizd hogy a játékos bannolva van-e:
 
new name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
if(!!dini_Bool(file, name)) //Rákeresünk a nevére kulcsként. Ha az érték igaz, kickeljük, mert bannolva van
{
     Kick(playerid);
     //stb..
}

 
Így a fájl így fog kinézni, ha mondjuk Bélát bannoltad:
Aranka = false
Józsi = false
Béla = true

Mentés
« Válasz #8 Dátum: 2014. Augusztus 28. - 12:23:32 »
0 Show voters
Ahha, értem. :)
Akkor egy ini fájlban nem lehet több egyforma kulcs?
Mert például én még szeretnék bele menteni olyanokat h a játékos ban lejárati dátuma, ideje, stb..

Nem elérhető M1A1

Mentés
« Válasz #9 Dátum: 2014. Augusztus 28. - 16:49:27 »
+1 Show voters
A format-al a neve mellé formázod, hogy \"LDatum\" pl.
 
new dateKey[128], name[MAX_PLAYER_NAME];
GetPlayerName(playerid, name, sizeof(name));
format(dateKey, sizeof(dateKey), \"%s_LDatum\", name); //LDatum = Lejárati Dátum
dini_Set(file, dakeKey, \"2014.10.03.11.32\"); //ÉÉÉÉ.HH.NN.ÓÓ.PP

 
Ez kb. így fog kinézni:
Aranka = false
Aranka_LDatum = \"2014.08.31.15.42\"
Józsi = false
Józsi_LDatum = \"2014.10.03.11.32\"
Béla = true
Józsi_LDatum = \"2014.11.02.11.52\"
Lekérdezésnél pedig pl. sscanf-el a dátumot szétszeded, stb.. Az elvet leírtam, a többit ki tudod találni ;)

Mentés
« Válasz #10 Dátum: 2014. Augusztus 28. - 17:22:22 »
0 Show voters
Ilyen célra miért nem használsz MySQL plugint? Sokkal jobb, egyszerûbb lenne

Mentés
« Válasz #11 Dátum: 2014. Augusztus 28. - 21:29:28 »
0 Show voters
Köszi a segítséget. :)

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal