dFile
A leggyorsabb fájl és könyvtár kezelõ.
Mi ez?
Ez egy új fájlkezelõ rendszer,mely nem csupán a fájlokat,de a könyvtárakat is képes kezelni!
Figyelem: A fájl rendszer a scriptfiles mappába lett korlátozva néhány hiba elkerülése végett!
Miért ez?
A rendszer nagyon egyszerû és egyértelmû,hasonló a funkciói a többi fájlkezelõhöz de nem tartalmaz felesleges dolgokat!
Még van egy nagy elõnye: Ez a LEGGYORSABB fájlkezelõ rendszer! Hogy miért? Mivel egy pluginra alapul.
Ki készítette?
A plugint JaTochNietDan készítette.
/*
* Dfile 1.0.6
* Minden jog fenttartva! ˆ By: DrAkE
*
* Tulajdonos : DrAkE
* Idõ : 2011.01.27
*
* A függvény szabadon terjeszthetõ.
* És természetesen szabadon használható :D
* Köszönet:
* ChuckNorris - Tesztelés, segítség
* Fade - Tesztelés, segítség
* Y_Less - boolstr függvény
* JaTochNietDan - FileManager
*
* Külön köszönet:
* Thiadmer - PAWN.
* SA:MP Csapat múlt, jelen, jövõ - SA:MP.
*/
Összehasonlítás y_ini-vel:

Funkciók:
dfile_Create - Fájl létrehozása.Paraméterek:
(fajl[])
fajl[] karakterlánc típusú paraméter a fájl neve.
dfile_Delete - Fájl törlése.
(fajl[])
fajl[] a törlendõ fájl neve.
dfile_Open - Fájl megnyitása.
(fajl[])
fajl[] a fájl neve/helye.
dfile_CreateDirectory - Könyvtár létrehozása.
(mappa[])
mappa[] a könyvtár neve,helye.
dfile_DeleteDirectory - Könyvtár törlése.
(mappa[])
mappa[] a könyvtár neve,helye.
dfile_DirectoryExists - Ellenörzi hogy az adott mappa létezik-e
mappa[]
mappa[] az adott mappa ellenörzése.
dfile_WriteString - Karakterlánc írása adott fájlba.
(parameter[], ertek[])
parameter[] melyik kulcshoz írjon,
ertek[] mit.
Példa:
kulcs=ertek
dfile_WriteInt - Egész szám írása adott fájlba.
(parameter[], ertek[])
parameter[] melyik kulcshoz írjon,
ertek[] mit.
Példa:
kulcs=ertek
dfile_WriteBool - logikai ( igaz=hamis ) érték írása adott fájlba.
(parameter[], bool:ertek)
parameter[] melyik kulcshoz írjon,
bool:ertek mit. (false/true)
Példa:
kulcs=true
dfile_WriteFloat - Lebegõpontos szám írása fájlba.
(parameter[], ertek[])
parameter[] melyik kulcshoz írjon,
ertek[] mit.
Példa:
kulcs=ertek
dfile_ReadString - karakterlánc olvasása fájlból.
(parameter[])
parameter[] melyik kulcs értékét.
dfile_ReadInt - Egész szám olvasása fájlból.
(parameter[])
parameter[] melyik kulcs értékét.
dfile_ReadFloat - Lebegõpontos szám olvasása fájlból.
(parameter[])
parameter[] melyik kulcs értékét.
dfile_ReadBool - Bool érték olvasása fájlból.
(parameter [])
parameter [] paraméter értéke.
dfile_MoveFile - Fájl mozgatása adott mappába.Fontos a kiterjesztés és hogy a célmappa létezzen!
(fajl[], cel[])
fajl[] melyik fájlt mozgassa,
cel[] hova.
dfile_RenameFile - Fájl átnevezése. Fontos a kiterjesztés megadása!
(reginev[], ujnev[])
reginev[] melyik fájlt kivánod átnevezni.
ujnev[] a kívánt fájl új neve.
dfile_SaveFile - Értékek mentése adott fájlba.
fajl[]
fajl[] az adatok melyik fájlba mentõdjenek.
dfile_FileExists - Ellenörzi hogy az adott fájl létezik-e
fajl[]
fajl[] az adott fájl ellenörzése.
dfile_ParseString - Összehasonlítja a paramétert és a bevitt karakterláncot.
(parameter[], ertek[])
parameter[] a kulcs neve,
ertek[] az érték,amivel összehasonlítja a kulcs értékét.
dfile_ParseInt - Összehasonlítja a paramétert és a bevitt egész szám értékét.
(parameter[], ertek[])
parameter[] a kulcs neve,
ertek[] az érték,amivel összehasonlítja a kulcs értékét.
dfile_ParseFloat - Összehasonlítja a paramétert és a bevitt lebegõpontos szám értékét.
(parameter[], ertek[])
parameter[] a kulcs neve,
ertek[] az érték,amivel összehasonlítja a kulcs értékét.
dfile_ParseBool - Összehasonlítja a paramétert és a bevitt logikai érték értékét.
(parameter[], ertek[])
parameter[] a kulcs neve,
ertek[] az érték,amivel összehasonlítja a kulcs értékét.
dfile_IsSet - Ellenörzi hogy a paraméternek van-e értéke.
(parameter[])
parameter[] a kulcs neve
dfile_UnSet - Törli a paraméter értékét.
(parameter[])
parameter[] a kulcs neve
dfile_MultiSet - Több érték írása fájlba.
(tipusok[], {Float,_}:...)
tipusok[] - paraméterek típusa.
Lehetséges típusok:
- \"s\" - string
- \"d\" - integer
- \"b\" - boolean
- \"f\" - float
dfile_MultiGet - Több élrték lekérdezése egy fájlból.
(tipusok[], {Float,_}:...)
tipusok[] - paraméterek típusa.
Lehetséges típusok:
- \"s\" - string
- \"d\" - integer
- \"b\" - boolean
- \"f\" - float
Teszt script:
#include <a_samp>
#include <dfile>
#include <YSI\\y_ini>
#define FILTERSCRIPT
new gInt, formalas[128];
#define fDFILE \"DFILE_Test.txt\"
#define fYINI \"YINI_Test.txt\"
#define WRITES 1000
#define READS 100000
public OnFilterScriptInit()
{
print(\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\");
print(\"---------------------\");
print(\"Writing Tests Started\");
new
initialTick,
DFILE_tick,
YINI_tick;
print(\"-Testing dFile\");
//dFile Write
{
dfile_Create(fDFILE);
dfile_Open(fDFILE);
initialTick=GetTickCount();
for(new i;i<WRITES;i++)format(formalas, sizeof(formalas), \"%d\", i), dfile_WriteInt(formalas, i);
dfile_SaveFile();
dfile_CloseFile();
DFILE_tick=GetTickCount()-initialTick;
}
print(\"-Testing Yini\\n\");
//Yini Write
{
new
INI:file = INI_Open(fYINI);
initialTick=GetTickCount();
for(new i;i<WRITES;i++)format(formalas, sizeof(formalas), \"%d\", i), INI_WriteInt(file, formalas, i);
INI_Close(file);
YINI_tick=GetTickCount()-initialTick;
}
printf(\"\\n-nTest Results %d Writes\\n\", WRITES);
printf(\" - dFile:\\t%d\", DFILE_tick);
printf(\" - Yini:\\t%d\", YINI_tick);
print(\"---------------------\\n\\n\");
print(\"---------------------\");
print(\"Reading Tests Started\");
print(\"-Testing dFile\");
{
dfile_Create(fDFILE);
dfile_Open(fDFILE);
initialTick=GetTickCount();
for(new i;i<READS;i++)dfile_ReadInt(\"0\");
DFILE_tick=GetTickCount()-initialTick;
}
print(\"-Testing Yini\\n\");
{
new
INI:file = INI_Open(fYINI);
initialTick=GetTickCount();
for(new i;i<READS;i++)
{
INI_Load(fYINI);
}
INI_Close(file);
YINI_tick=GetTickCount()-initialTick;
}
printf(\"\\n- Test Results %d Reads\\n\", READS);
printf(\" - dFile:\\t%d\", DFILE_tick);
printf(\" - Yini:\\t%d\\n\\n\", YINI_tick);
print(\"---------------------\");
}
INI:filename[](name[], value[])
{
INI_Int(\"TEST_TAG\", gInt);
return 0;
}
Használat:
#include <a_samp>
#include <dfile>
main()
{
new valtozo1[3][128], valtozo2[2], float:valtozo3, bool:valtozo4;
dfile_Create(\"teszt.ini\");
dfile_Open(\"teszt.ini\");
dfile_WriteString(\"Parameter0\", \"teszt1234234\");
dfile_WriteInt(\"Parameter1\", 999999999);
dfile_WriteFloat(\"Parameter2\", 0.97398457987);
dfile_WriteBool(\"Parameter3\", true);
dfile_MultiSet(\"ssddfbs\",
\"teszt\", \"valami\",
\"teszt2\", \"tesztide\",
\"teszt3\", 30,
\"teszt4\", 50,
\"teszt5\", 36.23425,
\"teszt6\", true,
\"teszt7\", \"megintvalami\"
);
dfile_MultiGet(\"ssddfbs\",
\"teszt\", valtozo1[0],
\"teszt2\", valtozo1[1],
\"teszt3\", valtozo2[0],
\"teszt4\", valtozo2[1],
\"teszt5\", valtozo3,
\"teszt6\", valtozo4,
\"teszt7\", valtozo1[2]
);
dfile_SaveFile();
printf(\"%s|%s|%d|%d|%f|%b|%s\", valtozo1[0], valtozo1[1], valtozo2[0], valtozo2[1], valtozo3, valtozo4, valtozo1[2]);
dfile_Open(\"teszt.ini\");
printf(\"%s\", dfile_ReadString(\"Parameter0\"));
printf(\"%d\", dfile_ReadInt(\"Parameter1\"));
printf(\"%f\", dfile_ReadFloat(\"Parameter2\"));
printf(\"%d\", dfile_ReadBool(\"Parameter3\"));
printf(\"%d\", dfile_ParseString(\"Parameter0\", \"teszt1234234\"));
printf(\"%d\", dfile_ParseInt(\"Parameter1\", 345));
printf(\"%d\", dfile_ParseFloat(\"Parameter2\", 0.973984));
printf(\"%d\", dfile_ParseBool(\"Parameter3\", true));
dfile_CloseFile();
}
Letöltés:
v1.0.5:
Letöltésv1.0.6:
Letöltésv1.0.9:
Letöltésv1.1.0:
Letöltésv1.1.1: LetöltésFrissitések:
Frissített funkciók:
- dfile_WriteString - Nem írta felül a paraméter értékét ha az már létezett!
Új függvények kerültek be:
- dfile_FileExists
- dfile_DirectoryExists
- dfile_RenameFile
- dfile_IsSet
- dfile_UnSet
- dfile_MultiSet
- dfile_MultiGet
Néhány funkció megváltozott:
- dfile_Open - most már a fájl tartalmát is beolvassa
- dfile_ReadString - nem kell megadni a fájl helyét/nevét
Egyéb:
- Nem kell hozzá plugin ha nem akarod!
Leírás by ChuckNorris.
gyönyörû.
\'Letéptem\', grat.
Most írom át az adminom dfileossá. ;)
Jó lett!! GRAT!!!
Végre, erre volt már szerintem kíváncsi mindenki :D :amazed: És grat ;)
Szép lett, grat!
Várjuk a drékcmd-t xD
Am komolyan elgondolkodhatnál rajta hamár ezt megtudtad csinálni...
Köszönöm mindenkinek a kommenteket, és lehet a drékcmdrõl szó! Esetleg ha vmi hibát tapasztaltok, vagy vmi függvény kellene esetleg bele akkor írjatok ide!
Végre kiadtad :) Köszönöm, hogy tesztelhettem/segíthettem. Amúgy, bocs hogy nem vagyok msn-en csak hát \"nincs\"...
Igen kiadtam :D. Frissítések kerültek bele. Lásd fentebb!
like :D
helped by me ;D
Szerintem elég jó lett.
Frissítések kerültek bele! Lásd fõposztban!
Láttam hogy beléd kötöttek hivatalos fórumon.
Azért, mégiscsak a magyar a minõség. 8)
Sajnálatos bug lépett fel a fájl rendszerben(Fentebb láthatod). Majd megpróbálom/megprobáljuk kijavítani Chuckal :)
Akkor írd meg a plugin készítõjének, hogy hibás benne az a funkció.
Hát már írták is elvileg javította de nem láttam rajta változást.
Ha ez az egész totál pluginba lenne megírva, csak a funkciók lennének native-val létrehozva, akkor már semminek se lenne rá esélye 8)
1.0.4 megjelent! Kérlek titeket töltsétek le a legújabb függvénykönyvtárat! Új funkciók: dfile_IsSet, dfile_UnSet
Üdv: DrAkE
Remek.
A plugin már javított?
Nem épp azért lett korlátozva a scriptfiles mappába mivel hagyományos módon (fopennel) végzi a dolgokat :D
Valójában a plugin gyorsabb...
Mindegy azért jó munkát hozzá!
Frissítettem a függvénykönyvtárat mert volt benne hiba. Kérlek titeket hogy töltsétek le a legújabb verziót!
Köszönöm.
hmm lehet áttérek erre :) szép lett grat :D
Fájl kezelõ....
Nem tudom, hogy vagy vele, de nálam bugos.
Mégpedig: felmegyek a szeróra, szerzek 213 pontot. jó, elmenti. kiírta a fájlba. újra felmentem átírt 234 ponttal. most is elmenti. megnézem a txt-t: többször levan írva hogy password=xxyyz; stb.
Nos?
Nekem is úgyan ez a problémám... sõt a
dfile_Open(file)
-al is gondok vannak. kifagy tõle a szerver
Nekem is úgyan ez a problémám... sõt a
dfile_Open(file)
-al is gondok vannak. kifagy tõle a szerver
Segítség a javításhoz: Azért van, mert az fopennel sikertelenül nyitod meg a fájlt és ezután dolgozni szeretnél vele.. Megoldás: if(fopen...)...
Nos megnézem mit tehetek, de ez a hiba nem tudom mitõl van, mivel mentésnél törli az elõzõ fájlt és újra beleírja az adatokat. Esetleg be kellene szúrnom a stringekbe egy null karaktert.
mentésnél törli az elõzõ fájlt és újra beleírja az adatokat
Biztos ez a leggyorsabb? o.O Nagy fájlnál is?
Persze, ha megnézed mindegyik fájl kezelõnél szinte már így van :)
ööö... már félek megkérdezni. Adminok figyelnek.
De honnan szerezted a plugint? :D
ööö... már félek megkérdezni. Adminok figyelnek.
De honnan szerezted a plugint? :D
FileManagerre gondolsz?
http://forum.sa-mp.com/showthread.php?t=92246
ööö... már félek megkérdezni. Adminok figyelnek.
De honnan szerezted a plugint? :D
FileManagerre gondolsz?
http://forum.sa-mp.com/showthread.php?t=92246
[/quote]
Igen arra. :D Köszönöm. ;) Bírom mikor kirakják a plugin forrását. ;D
Függvénykönyvtár frissítve! Kérlek titeket töltsétek le a mostanit!
Ha talán találtok benne hibát kérlek értesítsetek itt!
Köszönöm elõre is!
Nekem is beírja mégegyszer a paramétert, ha változtatni szeretném...
Hamarosan új verzió fog kijönni amiben új függvény lesz:
dfile_MultiSet, dfile_MultiGet
A használatát vhogy így képzeltem el:
dfile_MultiSet(\"dsssffbb\",
\"dhhah4h\", 60,
\"teszt2\", \"tadasa\",
\"valami\", \"agdfgdfgt\",
\"asdaksjd\", \"adasdas\",
\"asdasd\", 27.1111,
\"valami\", 82.1010,
\"asddaa\", true,
\"dass43\", 0
);
Ahol a \"dsssffbb\" található oda majd az adat típusokat kellesz írni:
d = integer,
i = integer,
s = string,
b = bool,
f = float.
A dfile_MultiGet használatát még nem találtam ki, de valahogy majd jön egy ihlet! :D
Kiadatásra került az új verzió!
Kérek minden kedves dfile használót hogy frissítse a függvénykönyvtárat a legújabbra!
Változások:
Új függvények kerültek be:
- dfile_MultiSet
- dfile_MultiGet
Az új függvények használata:
new valtozo1[3][128], valtozo2[2], float:valtozo3, bool:valtozo4;
dfile_Create(\"teszt.ini\");
dfile_Open(\"teszt.ini\");
dfile_MultiSet(\"ssddfbs\",
\"teszt\", \"valami\",
\"teszt2\", \"tesztide\",
\"teszt3\", 30,
\"teszt4\", 50,
\"teszt5\", 36.23425,
\"teszt6\", true,
\"teszt7\", \"megintvalami\"
);
dfile_MultiGet(\"ssddfbs\",
\"teszt\", valtozo1[0],
\"teszt2\", valtozo1[1],
\"teszt3\", valtozo2[0],
\"teszt4\", valtozo2[1],
\"teszt5\", valtozo3,
\"teszt6\", valtozo4,
\"teszt7\", valtozo1[2]
);
dfile_SaveFile();
printf(\"%s|%s|%d|%d|%f|%b|%s\", valtozo1[0], valtozo1[1], valtozo2[0], valtozo2[1], valtozo3, valtozo4, valtozo1[2]);
Gyorsasága a következõ lett:
Ezek a multi funkciók nagyon tetszenek :)
És a gyorsasága sem az utolsó :D
Sajnos Én már teljes mértékben sql-el dolgozom.. :-[
Ezek a multi funkciók nagyon tetszenek :)
Jaja jó ötlet volt. ;)
Majd csinálok tesztet MYSQL-el szemben :3
Majd csinálok tesztet MYSQL-el szemben :3
Hát arra kíváncsi vagyok, de remélem a mysql szerver az localhost-on lesz és nem valami külföldi szerveren >:D.
Amúgy a mysql az nagyon sokoldalú ezért én személy szerint nem váltok másra még akkor se ha gyorsabb lenne a dFile. :D
A mysql-t nem azért használják sokan, mert gyors. Lassú minden fájlrendszerhez képest (ha jól vannak használva és megírva).
Azért használják, mert bonyolult dolgokat gyorsabban megcsinálhatunk vele.
Újítás került bele:
Nem kell hozzá plugin, ha nem akarod!
(Magyarul plugin nélkül is megy, DE pár funkció nem megy nélküle pl.: dfile_CreateDirectory, dfile_DeleteDirectory, dfile_DirectoryExist)
Ha mégi használni szeretnéd a plugin adta funkciókat használd így:
#define USE_PLUGINS_FUNCTIONS
#include <dfile>
Ez nagyon jó fájl kezelõ.A szerveremnél mindig ezt használom MySQL helyett!Stabil, nem kell k*va sokat küszködni vele ennyi.Grat DrAkE!
Itt evel van egy kis gond.
dfile_CreateDirectory
azt irja hogy undefined symbol. de csak ezt.Mi lehet a gond?
#define USE_PLUGINS_FUNCTIONS
#include <dfile>
2HSZ-el feljebb.
Ne haragudj :( .Koszonom. :thumbsup:
Frissítve egy kicsit!
Ha használni akarod a plugin adta lehetõségeket, használd az alábbi módon:
#define USE_PLUGIN_FUNCTIONS
#include <dfile>
Esetleg, ha valamilyen funkció hiányoltok, írjatok bátran ide, és kivitelezem.
Jo lett gratulalok hozza.
Tudnal dobni egy linket,hogy hova toltotted fel a hivatalos forumon?
Koszonom.
http://forum.sa-mp.com/showthread.php?t=218026
Nagyon jó.Én most ezt használom.
Egy gond van vele:
#define USE_PLUGIN_FUNCTIONS
Ha ezt használom azt irja hogy:
warning 203: symbol is never used: \"celfajl\"
pedig en csak a createdirectorys cuccot szeretném használni.Persze nekem nincs szükségem a movefile ra.
Ennek ellenére megadja az .amx et.Csak a gond hogy engem zavar, ha van benne error.Hogyan szedjem ki?
Muszály használjam egyszer?
Nagyon jó.Én most ezt használom.
Egy gond van vele:
#define USE_PLUGIN_FUNCTIONS
Ha ezt használom azt irja hogy:
warning 203: symbol is never used: \"celfajl\"
pedig en csak a createdirectorys cuccot szeretném használni.Persze nekem nincs szükségem a movefile ra.
Ennek ellenére megadja az .amx et.Csak a gond hogy engem zavar, ha van benne error.Hogyan szedjem ki?
Muszály használjam egyszer?
Látom, még nem frissítetted a legújabbra.
:S.Ne haragudj.Nem voltam figyelmes.Máris frissítem.
dfile_Delete után chrassel a szeróm. Ezzel cseszekszek már jó pár napja azért írok most már ide. A lényege a kódomnak hogy egy forciklussal kitöröl 6 fájlt a legelsõt kitörli és a másodiknál megakad és crash. Próbálkoztam ilyen megoldásokkal hátha valamiért azt hiszi hogy nem létezik a fájl beleirtam egy if feltételbe hogy ellenõrizze le hogy létezik e és csak utána töröljön, ugyanez a hiba ugyanígy, tehetetlen vagyok.
Ha már ittvagyok, lenne még egy kérdésem, hogy kellene stringeket helyesen beolvasni egy változóba mert a módom dfile nélkül 100 kb dfile-al pedig felugrik 2 megára, annyit már észrevettem hogy a stringekkel van valami gond, ez így normális vagy én csinálok valamit rosszul?
Miért használ mindenki solidfiles-t? Nem mûködik most... Nincs meg valakinek a letöltött rar?
Dupla hozzászólás automatikusan összefûzve. ( 2012. szeptember 21. - 20:11:36 )
Pontosabban felrakná valaki a rar-t? Mert azt látom, hogy letöltöttétek. :D
http://data.hu/get/5592144/dfile.rar
Miért használ mindenki solidfiles-t?
Mert ha oda te egyszer feltöltesz valamit az ott is marad, hacsak te magad le nem törlöd, és semmi baja nincs a solidfilesnak, én le meg fel is tudok rá tölteni.
Ez az egyik legmegbízhatóbb fájlmegosztó oldal, és persze ingyenes, nincs sebesség korlátozás, mint egyes vackokon.
Na meg persze nem kell húsz helyre klikkelni hogy letölts egy darab fájlt.
és semmi baja nincs a solidfilesnak, én le meg fel is tudok rá tölteni.
Akkor csak nekem csinálja ezt? De miért...
Ez a weboldal nem érhetõ el
Megszakadt a kapcsolat a következõvel: sfcdn.in.
Íme néhány javaslat:
...
Hiba: 101 (net::ERR_CONNECTION_RESET): A kapcsolat alaphelyzetbe állt.
[/quote]
Hogy tudok megnyitni felhasználó file-t ezzel?
Így próbáltam:
#include <a_samp>
#include <dfile>
LOGGED_IN(playerid)
{
new PlayerName[MAX_PLAYER_NAME];
format(PlayerName, sizeof(PlayerName), \"/ladmin/users/%s.sav\" ,udb_encode(PlayerName(playerid)));
dfile_Open(PlayerName);
dfile_WriteString(\"logged\", \"1\");
dfile_SaveFile();
dfile_CloseFile();
}
LOGGED_OUT(playerid)
{
new PlayerName[MAX_PLAYER_NAME];
format(PlayerName, sizeof(PlayerName), \"/ladmin/users/%s.sav\" ,udb_encode(PlayerName(playerid)));
dfile_Open(PlayerName);
dfile_WriteString(\"logged\", \"0\");
dfile_SaveFile();
dfile_CloseFile();
}
PlayerName(playerid)
{
new player[MAX_PLAYER_NAME];
GetPlayerName(playerid, player, sizeof(player));
return player;
}
Gyakorlatilag annyit szeretnék elérni, hogy amikor belép a játékos, akkor átírja a file-ban a \"logged\" -et 1-re, ha kilép 0-ra.
Ezt a következõkkel szeretném megoldani:
LOGGED_IN(playerid); (OnPlayerConnect-nél)
LOGGED_OUT(playerid); (OnPlayerDisconnect-nél)
A problémám az, amikor a játékos belép, crashel a szerver, és ezt a hibaüzenetet írja ki:
[15:38:41] [debug] Server crashed while executing Script.amx
[15:38:41] [debug] AMX backtrace:
[15:38:41] [debug] #0 native fread () [00405770] from samp-server.exe
[15:38:41] [debug] #1 000004e4 in dfile_Open (fajl[]=@0x00227d10 \"\") at D:\\MyPC\\server1\\server1\\pawno\\include\\dfile.inc:204
[15:38:41] [debug] #2 00002990 in LOGGED_IN (playerid=0) at D:\\MyPC\\server1\\server1\\pawno\\include\\logged.inc:19
[15:38:41] [debug] #3 00030f50 in public FEP_OnPlayerConnect (playerid=0) at D:\\MyPC\\server1\\server1\\filterscripts\\Script.pwn:5303
[15:38:41] [debug] #4 native CallLocalFunction () [00472c00] from samp-server.exe
[15:38:41] [debug] #5 00007f54 in public OnPlayerConnect (playerid=0) at D:\\MyPC\\server1\\server1\\pawno\\include\\ForEachPlayer.inc:24
[15:38:41] [debug] System backtrace:
[15:38:41] [debug] #0 00493010 in ?? () from D:\\MyPC\\server1\\server1\\samp-server.exe
[15:38:41] [debug] #1 00493640 in ?? () from D:\\MyPC\\server1\\server1\\samp-server.exe
[15:38:41] [debug] #2 00404f14 in ?? () from D:\\MyPC\\server1\\server1\\samp-server.exe
Növeld meg a cellák számát. Meg valami más változó nevet adni (irritál, ha ugyan az mint a stock :D )
Szerkesztve:
Köszönöm a választ, most már mûködik! ;)
Valaki tudna segíteni ezt átírni dfile-ossá?
Megpróbáltam, de valamiért nem akart összejönni. :(
A válaszokat elõre is köszönöm!
/*
* DUDB functions
* (c) Copyright 2006-2007 by DracoBlue
*
* @version : 2.4
* @author : DracoBlue (http://dracoblue.net)
* @date : 8th May 2006
* @update : 12th July 2007
* @require : DUtils 1.10
* @require : DINI 1.5
*
*/
#if defined _dudb_included
#endinput
#endif
#define _dudb_included
#pragma library dutils
#include <dutils>
#include <dini>
#define dUser(%1).( udb_User(%1,
#define dUserINT(%1).( udb_UserInt(%1,
#define dUserSet(%1).( udb_UserSet(%1,
#define dUserSetINT(%1).( udb_UserSetInt(%1,
#define dUserSetFLOAT(%1).( udb_UserSetFloat(%1,
#define dUserFLOAT(%1).( udb_UserFloat(%1,
stock udb_hash(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}
stock udb_encode(nickname[]) {
new tmp[MAX_STRING];
set(tmp,nickname);
tmp=strreplace(\"_\",\"_00\",tmp);
tmp=strreplace(\";\",\"_01\",tmp);
tmp=strreplace(\"!\",\"_02\",tmp);
tmp=strreplace(\"/\",\"_03\",tmp);
tmp=strreplace(\"\\\\\",\"_04\",tmp);
tmp=strreplace(\"[\",\"_05\",tmp);
tmp=strreplace(\"]\",\"_06\",tmp);
tmp=strreplace(\"?\",\"_07\",tmp);
tmp=strreplace(\".\",\"_08\",tmp);
tmp=strreplace(\"*\",\"_09\",tmp);
tmp=strreplace(\"<\",\"_10\",tmp);
tmp=strreplace(\">\",\"_11\",tmp);
tmp=strreplace(\"{\",\"_12\",tmp);
tmp=strreplace(\"}\",\"_13\",tmp);
tmp=strreplace(\" \",\"_14\",tmp);
tmp=strreplace(\"\\\"\",\"_15\",tmp);
tmp=strreplace(\":\",\"_16\",tmp);
tmp=strreplace(\"|\",\"_17\",tmp);
tmp=strreplace(\"=\",\"_18\",tmp);
return tmp;
}
stock udb_decode(nickname[]) {
new tmp[MAX_STRING];
set(tmp,nickname);
tmp=strreplace(\"_01\",\";\",tmp);
tmp=strreplace(\"_02\",\"!\",tmp);
tmp=strreplace(\"_03\",\"/\",tmp);
tmp=strreplace(\"_04\",\"\\\\\",tmp);
tmp=strreplace(\"_05\",\"[\",tmp);
tmp=strreplace(\"_06\",\"]\",tmp);
tmp=strreplace(\"_07\",\"?\",tmp);
tmp=strreplace(\"_08\",\".\",tmp);
tmp=strreplace(\"_09\",\"*\",tmp);
tmp=strreplace(\"_10\",\"<\",tmp);
tmp=strreplace(\"_11\",\">\",tmp);
tmp=strreplace(\"_12\",\"{\",tmp);
tmp=strreplace(\"_13\",\"}\",tmp);
tmp=strreplace(\"_14\",\" \",tmp);
tmp=strreplace(\"_15\",\"\\\"\",tmp);
tmp=strreplace(\"_16\",\":\",tmp);
tmp=strreplace(\"_17\",\"|\",tmp);
tmp=strreplace(\"_18\",\"=\",tmp);
tmp=strreplace(\"_00\",\"_\",tmp);
return tmp;
}
stock udb_Exists(nickname[]) {
new tmp[MAX_STRING];
format(tmp,sizeof(tmp),\"ladmin/users/%s.sav\",udb_encode(nickname));
return fexist(tmp);
}
stock udb_Remove(nickname[]) {
new tmp[MAX_STRING];
format(tmp,sizeof(tmp),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_Remove(tmp);
}
stock udb_UserSetInt(nickname[],key[],value) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_IntSet(fname,key,value);
}
stock udb_UserSetFloat(nickname[],key[],Float:value) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_FloatSet(fname,key,value);
}
stock udb_UserSet(nickname[],key[],value[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_Set(fname,key,value);
}
stock udb_User(nickname[],key[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
format(fname,sizeof(fname),dini_Get(fname,key));
return fname;
}
stock Float:udb_UserFloat(nickname[],key[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_Float(fname,key);
}
stock udb_UserInt(nickname[],key[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_Int(fname,key);
}
stock udb_CheckLogin(nickname[],pwd[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
if (udb_UserInt(nickname,\"password_hash\")==udb_hash(pwd)) return true;
return false;
}
stock udb_Create(nickname[],pwd[]) {
if (udb_Exists(nickname)) return false;
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
dini_Create(fname);
udb_UserSetInt(nickname,\"password_hash\",udb_hash(pwd));
return true;
}
stock udb_RenameUser(nickname[],newnick[]) {
new oldfname[MAX_STRING];
new newfname[MAX_STRING];
format(oldfname,sizeof(oldfname),\"ladmin/users/%s.sav\",udb_encode(nickname));
format(newfname,sizeof(newfname),\"ladmin/users/%s.sav\",udb_encode(newnick));
return frenametextfile(oldfname,newfname);
}
Szerk.: Elnézést a dupla post-ért! Nem láttam hogy én voltam az utolsó kommentelõ. :/
Szép lett, DrAkE!!
Így tovább, sok sikert!!
Ez nagyon kellet még egyszer kösz!!
Valaki tudna segíteni ezt átírni dfile-ossá?
Megpróbáltam, de valamiért nem akart összejönni. :(
A válaszokat elõre is köszönöm!
/*
* DUDB functions
* (c) Copyright 2006-2007 by DracoBlue
*
* @version : 2.4
* @author : DracoBlue (http://dracoblue.net)
* @date : 8th May 2006
* @update : 12th July 2007
* @require : DUtils 1.10
* @require : DINI 1.5
*
*/
#if defined _dudb_included
#endinput
#endif
#define _dudb_included
#pragma library dutils
#include <dutils>
#include <dini>
#define dUser(%1).( udb_User(%1,
#define dUserINT(%1).( udb_UserInt(%1,
#define dUserSet(%1).( udb_UserSet(%1,
#define dUserSetINT(%1).( udb_UserSetInt(%1,
#define dUserSetFLOAT(%1).( udb_UserSetFloat(%1,
#define dUserFLOAT(%1).( udb_UserFloat(%1,
stock udb_hash(buf[]) {
new length=strlen(buf);
new s1 = 1;
new s2 = 0;
new n;
for (n=0; n<length; n++)
{
s1 = (s1 + buf[n]) % 65521;
s2 = (s2 + s1) % 65521;
}
return (s2 << 16) + s1;
}
stock udb_encode(nickname[]) {
new tmp[MAX_STRING];
set(tmp,nickname);
tmp=strreplace(\"_\",\"_00\",tmp);
tmp=strreplace(\";\",\"_01\",tmp);
tmp=strreplace(\"!\",\"_02\",tmp);
tmp=strreplace(\"/\",\"_03\",tmp);
tmp=strreplace(\"\\\\\",\"_04\",tmp);
tmp=strreplace(\"[\",\"_05\",tmp);
tmp=strreplace(\"]\",\"_06\",tmp);
tmp=strreplace(\"?\",\"_07\",tmp);
tmp=strreplace(\".\",\"_08\",tmp);
tmp=strreplace(\"*\",\"_09\",tmp);
tmp=strreplace(\"<\",\"_10\",tmp);
tmp=strreplace(\">\",\"_11\",tmp);
tmp=strreplace(\"{\",\"_12\",tmp);
tmp=strreplace(\"}\",\"_13\",tmp);
tmp=strreplace(\" \",\"_14\",tmp);
tmp=strreplace(\"\\\"\",\"_15\",tmp);
tmp=strreplace(\":\",\"_16\",tmp);
tmp=strreplace(\"|\",\"_17\",tmp);
tmp=strreplace(\"=\",\"_18\",tmp);
return tmp;
}
stock udb_decode(nickname[]) {
new tmp[MAX_STRING];
set(tmp,nickname);
tmp=strreplace(\"_01\",\";\",tmp);
tmp=strreplace(\"_02\",\"!\",tmp);
tmp=strreplace(\"_03\",\"/\",tmp);
tmp=strreplace(\"_04\",\"\\\\\",tmp);
tmp=strreplace(\"_05\",\"[\",tmp);
tmp=strreplace(\"_06\",\"]\",tmp);
tmp=strreplace(\"_07\",\"?\",tmp);
tmp=strreplace(\"_08\",\".\",tmp);
tmp=strreplace(\"_09\",\"*\",tmp);
tmp=strreplace(\"_10\",\"<\",tmp);
tmp=strreplace(\"_11\",\">\",tmp);
tmp=strreplace(\"_12\",\"{\",tmp);
tmp=strreplace(\"_13\",\"}\",tmp);
tmp=strreplace(\"_14\",\" \",tmp);
tmp=strreplace(\"_15\",\"\\\"\",tmp);
tmp=strreplace(\"_16\",\":\",tmp);
tmp=strreplace(\"_17\",\"|\",tmp);
tmp=strreplace(\"_18\",\"=\",tmp);
tmp=strreplace(\"_00\",\"_\",tmp);
return tmp;
}
stock udb_Exists(nickname[]) {
new tmp[MAX_STRING];
format(tmp,sizeof(tmp),\"ladmin/users/%s.sav\",udb_encode(nickname));
return fexist(tmp);
}
stock udb_Remove(nickname[]) {
new tmp[MAX_STRING];
format(tmp,sizeof(tmp),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_Remove(tmp);
}
stock udb_UserSetInt(nickname[],key[],value) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_IntSet(fname,key,value);
}
stock udb_UserSetFloat(nickname[],key[],Float:value) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_FloatSet(fname,key,value);
}
stock udb_UserSet(nickname[],key[],value[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_Set(fname,key,value);
}
stock udb_User(nickname[],key[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
format(fname,sizeof(fname),dini_Get(fname,key));
return fname;
}
stock Float:udb_UserFloat(nickname[],key[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_Float(fname,key);
}
stock udb_UserInt(nickname[],key[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_Int(fname,key);
}
stock udb_CheckLogin(nickname[],pwd[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
if (udb_UserInt(nickname,\"password_hash\")==udb_hash(pwd)) return true;
return false;
}
stock udb_Create(nickname[],pwd[]) {
if (udb_Exists(nickname)) return false;
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
dini_Create(fname);
udb_UserSetInt(nickname,\"password_hash\",udb_hash(pwd));
return true;
}
stock udb_RenameUser(nickname[],newnick[]) {
new oldfname[MAX_STRING];
new newfname[MAX_STRING];
format(oldfname,sizeof(oldfname),\"ladmin/users/%s.sav\",udb_encode(nickname));
format(newfname,sizeof(newfname),\"ladmin/users/%s.sav\",udb_encode(newnick));
return frenametextfile(oldfname,newfname);
}
Szerk.: Elnézést a dupla post-ért! Nem láttam hogy én voltam az utolsó kommentelõ. :/
Ez egy függvénykönyvtár... Ebbe nem kell semmit se átírni... (gyengébb elméjûeknek: DUDB egy függvénykönyvtár, ugyan úgy mint a dfile, a scriptjeidet kell átírni, nem pedig a függvénykönyvtárakat)
Igen, de ez az include dini alapján mûködik.
pl.:
stock udb_UserSet(nickname[],key[],value[]) {
new fname[MAX_STRING];
format(fname,sizeof(fname),\"ladmin/users/%s.sav\",udb_encode(nickname));
return dini_Set(fname,key,value);
}