Szerző Téma: FileManager hiba :(  (Megtekintve 1087 alkalommal)

FileManager hiba :(
« Dátum: 2013. szeptember 16. - 21:26:46 »
0 Show voters
Sziasztok!
Szeretném meghatározni, hogy egy mappában milyen fájlok vannak. (Felhasználók)
Ehhez a FileManager nevû plugint használnám. (http://forum.sa-mp.com/showthread.php?t=92246)
A példa kód a listázásra így néz ki:
 
new dir:dHandle = dir_open(\"./\");
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);

 
Ezt kicsit átalakítottam, és most így néz ki a kód:
 
#include <a_samp>
#include <filemanager>
#include <Dini>
public OnFilterScriptInit()
{
new dir:dHandle = dir_open(\"./scriptfiles/ladmin/users/\");
new item[255], type;
while(dir_list(dHandle, item, type))
{
    if(type == FM_FILE)
    {
    if(dini_Exists(item))
    {
    printf(\"%s\", item);
    dini_IntSet(item,\"money\",0);
    }
         }
}
dir_close(dHandle);
return 1;
}

 
Azt szeretném megcsinálni, hogy minden játékos pénzét átírni 0-ra. Viszont az a problémám, hogy nem írja át. printf-el kiírná azoknak a nevét, akiket lenullázott, viszont a módosításom után semmit sem ír ki, és nem is nyúl a fájlokhoz. :S
Valaki tudna segíteni, mi lehet a probléma?

Dupla hozzászólás automatikusan összefûzve. ( 2013. szeptember 17. - 14:03:55 )

Ezzel a kóddal kilistáz minden fájlt a mappában, csak nem tudom hogy tudnék rá hivatkozni a késõbbiekben. (például fájlból olvasáskor.)
 
#include <a_samp>
#include <filemanager>
public OnFilterScriptInit()
{
new dir:dHandle = dir_open(\"./scriptfiles/ladmin/users/\");
new item[40], type;
while(dir_list(dHandle, item, type))
{
    if(type == FM_FILE)
{
printf(\"%s\", item); // Az \"item\" a fájl neve, XYZ.sav formátumban.
}
}
dir_close(dHandle);
return 1;
}

 
Próbáltam fájlkezelõben az \"item\"-re hivatkozva megnyitni minden fájlt, és átírni a \"money\" értéket 0-ra, viszont valamiért nem listázza ki, ha elé teszem a \"if(dini_Exists(item))\"-t.
« Utoljára szerkesztve: 2013. szeptember 17. - 14:06:31 írta DamieN007 »

FileManager hiba :(
« Válasz #1 Dátum: 2013. szeptember 17. - 16:37:02 »
+1 Show voters
Másolj már be egy olyan részt is amit az \"item\" változód tartalmaz.

FileManager hiba :(
« Válasz #2 Dátum: 2013. szeptember 17. - 18:53:18 »
0 Show voters
Amikor kilistázza, akkor például ezeket írja ki:
 
1997.sav
@nth0n1.sav
Andreas_00Sin.sav
asdsad.sav
_05HUN_06user.sav

 
Az item változó takarja a felhasználó fájlok neveit. (Viszont amikor rá akarok hivatkozni nem csinál semmit. :/)

Nem elérhető ZyZu.

  • Globális moderátor
  • 8939
  • my turbo diesel forum
  • Discord: ZyZu.
    • Profil megtekintése
FileManager hiba :(
« Válasz #3 Dátum: 2013. szeptember 17. - 19:14:57 »
+1 Show voters
Ne sav -ban/ben mensd hanem txt -ben/ban, és akkor meg tudod nyítni..

FileManager hiba :(
« Válasz #4 Dátum: 2013. szeptember 17. - 19:21:51 »
0 Show voters
Kipróbáltam .txt kiterjesztéssel, és úgy sem mûködik. :S
Amit kiír a szerver printf-el (\"item\"-et):
 
1997.txt
@nth0n1.txt
Andreas_00Sin.txt
asdsad.txt
_05HUN_06user.txt

 
És így sem írja át :/
Viszont amit nem értek, az a következõ:
 
#include <a_samp>
#include <filemanager>
#include <Dini>
public OnFilterScriptInit()
{
new dir:dHandle = dir_open(\"./scriptfiles/ladmin/users/\");
new item[255], type;
while(dir_list(dHandle, item, type))
{
    if(type == FM_FILE)
    {
    if(!dini_Exists(item))
    {
    printf(\"%s\", item);
    dini_IntSet(item,\"money\",0);
    }
         }
}
dir_close(dHandle);
return 1;
}

 
Ennél a kódnál ha ez szerepel: \"if(!dini_Exists(item))\" akkor kilistázza a fájlokat, viszont ha ez: \"if(dini_Exists(item))\" akkor nem. Tehát ha létezik a fájl nem listázza ki, ha meg létezik akkor igen?! Akkor ez most hogy van? :/
« Utoljára szerkesztve: 2013. szeptember 17. - 19:49:34 írta DamieN007 »

FileManager hiba :(
« Válasz #5 Dátum: 2013. szeptember 17. - 20:52:14 »
+1 Show voters
Ennyibõl nem veszed észre mi a hiba?  ;D
Fájl nevekkel tér vissza az item, hiszen látod.
A dini_Exist az honnan tudja hogy kettõ mappán belül keresse a megadott fájlokat (/ladmin/users/...)?

FileManager hiba :(
« Válasz #6 Dátum: 2013. szeptember 17. - 21:07:58 »
0 Show voters
Oh én hülye.. Erre nem is gondoltam! :/
Köszönöm szépen a válaszokat! Így már mûködik! :)
A végleges kódot kiteszem, akinek szüksége van rá, használja egészséggel! :)
 
#include <a_samp>
#include <filemanager>
#include <Dini>
public OnFilterScriptInit()
{
new dir:dHandle = dir_open(\"./scriptfiles/ladmin/users/\");
new item[255], type;
while(dir_list(dHandle, item, type))
{
    if(type == FM_FILE)
    {
    new file[255]; format(file, sizeof(file), \"ladmin/users/%s\",item);
    if(dini_Exists(file))
    {
    printf(\"%s\", file);
    dini_IntSet(file,\"money\",0);
    }
         }
}
dir_close(dHandle);
return 1;
}

 

SimplePortal 2.3.7 © 2008-2024, SimplePortal