GTA Közösség - A magyar GTA fórum

San Andreas Multiplayer (SA-MP) => SA-MP: Szerverfejlesztés => Segítségkérés => A témát indította: ROOCK - 2015. Augusztus 19. - 18:56:31

Cím: Dinivel lehetséges?
Írta: ROOCK - 2015. Augusztus 19. - 18:56:31
Üdv Ferumozók! :)
Valahogy lehetséges hogy dinivel kiolvassuk a létező fileok(egy mappán belüli) nevét? tehát
pl van egy mappám hogy users és azon belül van pl 10 file
pl player1.ply player2.ply player3.ply... igy tovább
és ezeket valahogy kilistázni egy parancsal mert a dininek van egy olyan része ami azt nézi hogy létezik e a file és ha létezik az a file aminek minden karakter minden szám a neve azt irja ki...
jó ez egy kicsit bonyolultan hangzik dióhéjban
mappábol fileok nevét kilistázni (csak a címeket)
remélem valamennyire értitek és remélem megvalósítható :D köszi előre is a segítséget :D
Cím: Dinivel lehetséges?
Írta: norbinator09 - 2015. Augusztus 19. - 22:31:11
Valahogy biztos, ha csak player1 player2 meg ilyesmiket akarsz akkor for ciklussal könnyen meglesz. De am karakter mentésnél elég a karakter nevét menteni, és akkor a nevét kérdezed le hogy létezik-e olyan fájl.
Cím: Dinivel lehetséges?
Írta: ZyZu. - 2015. Augusztus 19. - 23:04:25
Lehetséges, lekérdezel minden játékos fájlt majd betöltöd egy ciklussal. Sok mindent nem lehet megcsinálni dini segítségével, de még a regisztrációs számot is le lehet kérdezni mert megoldották, csak hosszú a kódok ennyi a dini hátránya, meg persze lassú mint a szemét.
http://wiki.sa-mp.com/wiki/Control_Structures#for_.28.29
http://sampforum.hu/index.php?topic=3075.0
 
dini_Get(filename[], key[])
Cím: Dinivel lehetséges?
Írta: divkn - 2015. Augusztus 19. - 23:11:49
Elég szűkösek a funkciók, szóval ezt egyszerűbben csak úgy lehet megoldani hogy létrehoztatsz egy szöveges dokumentumot, és ebben pedig egymás alá felsorolod a regisztrált tagok fájl neveit és fread-al pedig kiolvasod.
 

new name[MAX_PLAYER_NAME];
new File:file = fopen(\"nevek.txt\",io_read);
if(file)
{
  while(fread(file,name))
  {
    printf(\"%s\",name);
  }
}
Cím: Dinivel lehetséges?
Írta: ROOCK - 2015. Augusztus 20. - 09:08:49
Norbinator nen csak player 1 player 2 szeretnek hanem az osszes nevet amu regisztralva van
Zyzu ha betoltok minden egyes fajlt azzal ugy leterhelnem a servert ahogy csak lehet es amikor beirjak ezt a parancsot akkor elkezdene laggolni ,erre mar gondoltam en is de ezt ki is ejtettem
Divkn erre is gondoltam már de nem tudom h ha pl egy felhasznalot torlok azt hogy keressem meg a fileon belul es toroljem?
Tehát azt értem h ha regizik belerak egy + sort a nevével de ha pl cheatel vagy szabalyt szeg es bannolom akkor hogy keresem meg az ő nevét és torlom?
DE amugy ezeket meglehet sinalni valami gyorsabb filekezelobe? Most hirtelrn nem vagyok bene biztos asszem a dfile a leggyorsabb passz :)
Cím: Dinivel lehetséges?
Írta: norbinator09 - 2015. Augusztus 20. - 11:15:51
Te írtál ilyen player1,2,3 azt hittem RegID-re gondolsz annál a résznél...
Cím: Dinivel lehetséges?
Írta: ROOCK - 2015. Augusztus 20. - 12:03:36
ja neem ugy értettem a player1,2,3 at hogy playerid hanem playerek pl ROOCK John_Alfred... etc.
Cím: Dinivel lehetséges?
Írta: Pedró - 2015. Augusztus 20. - 16:36:43
Van egy másik megoldás!!!
http://forum.sa-mp.com/showthread.php?t=92246
Van ez a File Manager plugin.
Ennek használatával:
 
new dir:dHandle = dir_open(\"./scriptfiles/users/\");
new item[40], type;
while(dir_list(dHandle, item, type))
{
    if(type == FM_FILE) printf(\"%s is a file\", item);
    else if(type == FM_DIR) printf(\"%s is a directory\", item);
}
dir_close(dHandle);

 
Vágod? :)
Cím: Dinivel lehetséges?
Írta: ROOCK - 2015. Augusztus 20. - 20:11:02
nem ezt nem vágom de elkezdem tanulmányozni hátha valamit kihozok belőle :D
Cím: Dinivel lehetséges?
Írta: Pedró - 2015. Augusztus 20. - 20:58:57
CMD:nevek(playerid) {
new dir:dHandle = dir_open(\"./scriptfiles/users/\");
new item[40], type, string[1024];
while(dir_list(dHandle, item, type))
{
    format(string, sizeof(string), \"%s%s\\n\", string, item);
}
dir_close(dHandle);
ShowPlayerDialog(playerid, 1001, DIALOG_STYLE_LIST, \"Regisztrált játékosok nevei\", string, \"Mégse\", \"Mégse\");
return 1;
}
Cím: Dinivel lehetséges?
Írta: ROOCK - 2015. Augusztus 21. - 00:40:15
hát őőő ez izéé Unknow command valamért nem látja a parancsot vagy nem érzékeli vagy nem tudom :/

Dupla hozzászólás automatikusan összefûzve. ( 2015. Augusztus 21. - 14:53:33 )

jolvan elrontottam vmit a pluginberakásnál de most egy mégnagyobb kérdés valahogy ezekbe a fileokba belehetne lépni h kiolvassak belőle egy stringet?
Cím: Dinivel lehetséges?
Írta: Pedró - 2015. Augusztus 21. - 19:03:11
hátja
 
CMD:nevek(playerid) {
        new dir:dHandle = dir_open(\"./scriptfiles/users/\");
        new item[40], type, string[1024];
        while(dir_list(dHandle, item, type))
        {
            format(string, sizeof(string), \"%s%s\\n\", string, item);
        }
        dir_close(dHandle);
       
        ShowPlayerDialog(playerid, 1001, DIALOG_STYLE_LIST, \"Regisztrált játékosok nevei\", string, \"Kiválaszt\", \"Mégse\");
        return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if(dialogid == 1001 && response) {
    new filename[128];
    format(filename, 128, \"accounts/%s\", inputtext);
    ///filename a fájl nevét tartalmazza (elérési útját)
}
return 1;
}