Scydo 397 Odesláno: 30. Červenec, 2016 Share Odesláno: 30. Červenec, 2016 (upraveno) DOF2 UKLÁDÁNÍ A NAČÍTÁNÍ, UŽ NIKDY VÍC DINI***** Nemůžu uvěřit, že i po tak dlouhé době si hodně začátečníků myslí, že se s dini furt nejjednodušeji pracuje, a nechtějí ani dof2, protože buď to podle nich nefunguje a nebo je to moc těžké... Ale to jsou jenom kecy. Ve skutečně rozdíl práce mezi dof2 a dini je asi tak 5%. Ukážu vám, jak na to.Instalace je jednoduchá. Stačí z odkazu http://pastebin.com/TQJGwYyZ zkopírovat obsah do textového souboru a uložit ho nejlépe jako dof2.inc(ta koncovka .inc je tam důležitá). #include <dof2> VYTVOŘIT SOUBORDOF2_CreateFile(JménoSouboru[], Heslo[] = "");Parametry: JménoSouboru[] - Jméno souboru, který má vytvořit ve scriptfiles. V případě, že jde o větší cestu, stačí přidávat lomítka.Heslo[] - Vepíše hash string(aka heslo) rovnou do souboru a nemusíme používat fci SetString. V případě, že to nechceme, můžeme ten argument jednoduše vynechat. Ukázka použití: public OnGameModeInit() { if (!DOF2_FileExists("soubor.txt")) { /* Vytvoří prázdný soubor.txt ve scriptfiles */ DOF2_CreateFile("soubor.txt"); } return 1; } Uložit soubor s názvem nicku hráče public OnPlayerConnect(playerid) { new Nick[MAX_PLAYER_NAME + 1]; GetPlayerName(playerid, Nick, sizeof(Nick)); /* Spojí nick hráče s textem .txt, takže ho nebudeme muset zbytečně formátovat. */ strcat(Nick, ".txt"); if (!DOF2_FileExists(Nick)) { /* Kdyby se připojil hráč SkiBig18, vytvořil by se soubor SkiBig18.txt */ DOF2_CreateFile(Nick); } return 1; } Uložit soubor s názvem nicku hráče s nějakou složitější cestou public OnPlayerSpawn(playerid) { new Nick[MAX_PLAYER_NAME + 1], Soubor[50 + 1]; GetPlayerName(playerid, Nick, sizeof(Nick)); /* Formátujeme si cestu souboru, kde se má vytvořit */ format(Soubor, sizeof(Soubor), "Ucty/Udaje/%s.txt", Nick); if (!DOF2_FileExists(Nick)) { /* Nyni by se vytvořil soubor ve scriptfiles/Ucty */ DOF2_CreateFile(Nick); } return 1; } EXISTENCE SOUBORUDOF2_FileExists(JménoSouboru[]);Ukázka použití: public OnGameModeInit() { if (DOF2_FileExists("soubor.txt")) { DOF2_CreateFile("soubor.txt"); } return true; } PŘEJMENOVAT SOUBORDOF2_RenameFile(JménoSouboru[], NovéJmeno[]);Ukázka použití: DOF2_RenameFile("soubor.txt", "Soubornik.txt"); /* Nyní se soubor ve scriptfiles přejmenuje na Soubornik */ SMAZAT SOUBORDOF2_RemoveFile(JménoSouboru[]);Ukázka použití: DOF2_RemoveFile("soubor.txt"); /* Zcela smaže soubor.txt ve scriptfiles */ ULOŽENÍ SOUBORUDOF2_SaveFile();Ukázka použití: public OnGameModeInit() { if (!DOF2_FileExists("soubor.txt")) { DOF2_CreateFile("soubor.txt"); DOF2_SetInt("soubor.txt", "jenomcislo", 666); DOF2_SaveFile(); } return 1; } VEPSAT STRING/TEXT DO SOUBORUDOF2_SetString(JménoSouboru[], Klíč[], String[]);Parametry: Klíč[] - Jde o informaci, pod jakým klíčovým slovem, by se měla ta daná hodnota ukládat. Nejčastěji jde o jedno vystihující slovo.String[] - Údaje, které se vepíšou do souboru(v tomhle případě je hodnota řetězec). Ukázka použití: public OnPlayerConnect(playerid) { new Soubor[40 + 1], Jmeno[MAX_PLAYER_NAME + 1]; GetPlayerName(playerid, Jmeno, sizeof(Jmeno)); GetPlayerName(playerid, Soubor, sizeof(Soubor)); strcat(Soubor, ".txt"); if (!DOF2_FileExists(Soubor)) { DOF2_CreateFile(Soubor); DOF2_SetString(Soubor, "JmenoHrace", Jmeno); /* Nyní se ve souboru uloží údaj: JmenoHrace = SkiBig18 */ DOF2_SaveFile(); } return 1; } ZJISTIT STRING/TEXT ZE SOUBORUDOF2_GetString(JménoSouboru[], Klíč[]);Ukázka použití: new Text[MAX_PLAYER_NAME + 1]; strcat(Text, DOF2_GetString(Nick, "JmenoHrace")); print(Text); /* Vypiše: SkiBig18 */ return 1; } VEPSAT INTEGER/ČÍSLO DO SOUBORUDOF2_SetInt(JménoSouboru[], Klíč[], Číslo);Parametry: Číslo - Údaje, které se vepíšou do souboru(v tomhle případě je hodnota číslo). Ukázka použití: DOF2_SetInt(Nick, "Penize", GetPlayerMoney(playerid)); ZJISTIT INTEGER/ČÍSLO ZE SOUBORUDOF2_GetInt(JménoSouboru[], Klíč[]);Ukázka použití: GivePlayerMoney(playerid, DOF2_GetInt(Nick, "Penize")); VEPSAT BOOLEAN DO SOUBORUDOF2_SetBool(JménoSouboru[], Klíč[], bool:Boolean);Parametry: Boolen - Údaje, které se vepíšou do souboru(v tomhle případě je hodnota boolen). Ukázka použití: DOF2_SetBool(Nick, "IsVip", bIsVip[playerid]); ZJISTIT BOOLEAN ZE SOUBORUDOF2_GetBool(JménoSouboru[], Klíč[]);Ukázka použití: bIsVip[playerid] = DOF2_GetBool(Nick, "IsVip"); VEPSAT FLOAT DO SOUBORUDOF2_SetFloat(JménoSouboru[], Klíč[], Float:FloatHodnota);Parametry: FloatHodnota - Údaje, které se vepíšou do souboru(v tomhle případě jsou hodnoty desetinná čísla). Ukázka použití: new Float: Health; GetPlayerHealth(playerid, Health); DOF2_SetFloat(Nick, "Health", Health); ZJISTIT FLOAT ZE SOUBORUDOF2_GetFloat(JménoSouboru[], Klíč[]);Ukázka použití: SetPlayerHealth(playerid, DOF2_GetFloat(Nick, "Health")); UŽITEČNÉ FUNKCE DOF2Nyní přichází fce, které dini neobsahuji, a které můžou být někomu užitečné. Jedna z nich je možnost si vytvořit jakousi zálohu i s časem:DOF2_MakeBackup(JménoSouboru[]);Ukázka použití: DOF2_MakeBackup("soubor.txt"); Za další obsahuje hashování textu, ale je to součásti fce, která spolupracuje s DOF2_CreateFile a to přesněji s parametrem Heslo[], které můžete spolu s vytvořením souboru také uložit:DOF2_CheckLogin(JménoSouboru[], Heslo[]);Ukázka použití: if (dialogid == dialog_Login) { if (!response) return 1; if (DOF2_CheckLogin(Nick, inputtext)) { /* Nahrát data */ }else { /* Zadal nesprávné heslo. */ } } Další tu je možnost přejmenovat samotný klíč v souboru, kam se ukládají údaje, kdyby se vám na něm něco nelíbilo:DOF2_RenameKey(JménoSouboru[], JménoKlíče[], NovéJméno[]);Ukázka použití: DOF2_SetInt(Nick, "Penize", GetPlayerMoney(playerid)); DOF2_RenameKey(Nick, "Penize", "Prachy"); DOF2_SaveFile(); UKÁZKA POUŽITÍ DOF2 /* Deklarujeme si 4 nejznámější datové typy: */ new Cislo = 101, Float: DesCislo = 103.3, String[10] = "Ahoj", bool: Boolean = true; public OnFilterScriptInit() { /* Zjistíme, jestli, že neexistuje, jestliže ne, vytvoří nový */ if (!DOF2_FileExists("soubor.txt")) DOF2_CreateFile("soubor.txt"); /* Vepíše integer do souboru: */ DOF2_SetInt("soubor.txt", "Cislo", Cislo); /* Vepíše float do souboru: */ DOF2_SetFloat("soubor.txt", "DesCislo", DesCislo); /* Vepíše string do souboru: */ DOF2_SetString("soubor.txt", "String", String); /* Vepíše boolean do souboru: */ DOF2_SetBool("soubor.txt", "Boolean", Boolean); /* Uloží (uzavře) soubor: */ DOF2_SaveFile(); /* A nyní si můžeme všechny údaje načíst: */ /* Přiřadí k proměnné Cislo zjištěnou hodnotu ze souboru: */ Cislo = DOF2_GetInt("soubor.txt", "Cislo"); /* Přiřadí k proměnné DesCislo zjištěnou hodnotu ze souboru: */ DesCislo = DOF2_GetFloat("soubor.txt", "DesCislo"); /* Přiřadí k proměnné String zjištěnou hodnotu ze souboru: */ strcat(String, DOF2_GetString("soubor.txt", "String")); /* Přiřadí k proměnné Boolean zjištěnou hodnotu ze souboru: */ Boolean = DOF2_GetBool("soubor.txt", "Boolean"); return 1; } A zde je screen, jak se nám uložily údaje do souboru:ROZDÍL PRÁCE MEZI DINI A DOF2Jak jsem již psal, rozdíl v práci s ním je asi tak 5%. Jestliže mi nevěříte ani po tomto návodu, zde je odkaz na pastebin, kde jsem shrnul ukázky fcí asi 3 nejznáměnších používaných includů na ukládání a načítání:pastebin.com/8MW3kzbFA pokud to stále je málo, tak dokonce i samotný dof2 obsahuje preprocesor, který stačí jen přidat, a můžete pracovat úplně stejně jako s dini: #if defined DINI_CONVERT #define dini_Exists DOF2_FileExists #define dini_Remove DOF2_RemoveFile #define dini_Create DOF2_CreateFile #define dini_Set DOF2_SetString #define dini_Get DOF2_GetString #define dini_IntSet DOF2_SetInt #define dini_Int DOF2_GetInt #define dini_BoolSet DOF2_SetBool #define dini_Bool DOF2_GetBool #define dini_FloatSet DOF2_SetFloat #define dini_Float DOF2_GetFloat #define dini_Unset DOF2_Unset #define dini_Isset DOF2_IsSet #if !defined _dini_included #define _dini_included #endif #endif Ověřený návod Tento návod prešiel validáciou a preto je možné ho považovať za overený. Edited 7. Srpen, 2016 by UareBugged Návod overený 4 Link to comment Share on other sites More sharing options...
Pán Podnikateľ 52 Odesláno: 30. Červenec, 2016 Share Odesláno: 30. Červenec, 2016 Ahoj. No vyzerá to pekne spravené a ako čítam napísal si to hlavne z hnevu. Vyzerá to skvelo. No ako obaja vieme že presvedčovať niekoho o zmene silou mocou nemá význam. Tak tiež je jedno či používa Dini alebo Dof2 áno napísal som to len ma nezabi . Tak proste ak niekto ten pawn nevie a začne používať nadmierne stringy ako som videl v nejednom móde typu 1 000 a ukladá len 4 premenné proste nonsens. Jednoducho server ide zalagovať aj inak než len tím či používa DINI alebo Dof2. Je to istotne depresívne ale za to pravdivé.Ale ako samotní ciel ktorý chceš dosiahnuť je chvályhodný. Len tak ďalej. Ehm a prepáč že si rypnem ale vďaka bohu že to nie je zas YSI. 1 Link to comment Share on other sites More sharing options...
Paulee 16 Odesláno: 31. Červenec, 2016 Share Odesláno: 31. Červenec, 2016 (upraveno) Zdravím, Pěkne jsi to rozepsal. A já doufám, že začátečníci co budou chtít něco dělat se soubory si vyberou DOF2 a né dini. Sám používám DOF2 a nevím, jak to někomu může přijít těžší než dini Dobrá práce. Edited 31. Červenec, 2016 by Paulee Link to comment Share on other sites More sharing options...
Matthew_Bennet 44 Odesláno: 31. Červenec, 2016 Share Odesláno: 31. Červenec, 2016 (upraveno) Pekné a využiteľné, ale povedzme si na rovinu že vo väčšine prípadov sa nejedná o nedostatok dobre napísaných / vysvetlených návodov.Skôr ide o lenivosť ľudí sa niečomu novému priučiť Je to furt ten istý kolotoč.Pomaly na všetko je už nejaký ten návod či už popísaný v slovenskom / českom jazyku, alebo v anglickom ( a to, že je to v EN by myslím na dnešnú dobu nemal byť problém ) a stále sa nachádzajú osoby, ktoré si radšej založia tému na podobných fórach a čakajú na vyriešenie pár dní dajme tomu ako by si radšej prečítali pár riadkov a vyriešili by tým možno aj viac problémov ktoré ešte len prídu.Napríklad. Ale návod je to dobrý ako vždycky A pre všetkých ľudí, ktorí ma majú v láske prikladám jedno video https://www.youtube.com/watch?v=0F6nXRwziNg Edited 31. Červenec, 2016 by b_KEY Link to comment Share on other sites More sharing options...
DNLS 31 Odesláno: 31. Červenec, 2016 Share Odesláno: 31. Červenec, 2016 (upraveno) Pěkné no, akorát to je asi nějaký starší DOF2, nebo něco takového, protože DOF2_ExistFile tam neexistuje (Alespoň v tom pastebinu co si tam dal) // Aha, existuje ale je to FileExists, ty to máš naopak Edited 31. Červenec, 2016 by Daniels Link to comment Share on other sites More sharing options...
pepcaarn 1 Odesláno: 31. Červenec, 2016 Share Odesláno: 31. Červenec, 2016 (upraveno) Mas v tom navodu chyby. public OnPlayerConnect(playerid) { new Nick[MAX_PLAYER_NAME + 1], Jmeno[MAX_PLAYER_NAME + 1]; GetPlayerName(playerid, Jmeno, sizeof(Jmeno)); GetPlayerName(playerid, Nick, sizeof(Nick)); strcat(Nick, ".txt"); if (!DOF2_ExistFile(Nick)) { DOF2_CreateFile(Nick); DOF2_SetString(Nick, "JmenoHrace", Jmeno); /* Nyní se ve souboru uloží údaj: JmenoHrace = SkiBig18 */ DOF2_SaveFile(); } return 1; } K Nick uz nemuzes pripojit .txt protoze se to tam nevleze. Cislo = DOF2_Get("soubor.txt", "Cislo"); /* Přiřadí k proměnné DesCislo zjištěnou hodnotu ze souboru: */ DesCislo = DOF2_Get("soubor.txt", "DesCislo"); /* Přiřadí k proměnné String zjištěnou hodnotu ze souboru: */ strcat(String, DOF2_Get("soubor.txt", "String")); /* Přiřadí k proměnné Boolean zjištěnou hodnotu ze souboru: */ Boolean = DOF2_Get("soubor.txt", "Boolean"); Tohle urcte fungovat nebude. Kdyz je to navdo na dve hvezdicky tak bys mohl zminit i moznost pouziti tagu to se v praxi pouziva. ps U definice nakonci napis ze ji hrac musi nejprve vytvorit jinak mu konverze nebude fungovat. Edited 31. Červenec, 2016 by pepcaarn Link to comment Share on other sites More sharing options...
Scydo 397 Odesláno: 31. Červenec, 2016 Author Share Odesláno: 31. Červenec, 2016 (upraveno) Zdravím, Pěkne jsi to rozepsal. A já doufám, že začátečníci co budou chtít něco dělat se soubory si vyberou DOF2 a né dini. Sám používám DOF2 a nevím, jak to někomu může přijít těžší než dini Dobrá práce. ~> Díky moc. Ale stejně mi to připadá takové od flákané. Asi udělám ještě nějakou ukázku použití. ~> Upřímně i mě by zajímalo, co je na tom tak hrozně těžké pochopit na přepsání dini na dof2 a Int/Bool/Float/String přehodit se Set. Pekné a využiteľné, ale povedzme si na rovinu že vo väčšine prípadov sa nejedná o nedostatok dobre...(více) ~> Začátečníci berou návody spíše jako nějaký zákon. Tak to musí být a ne jinak.... ale už si neumí uvědomit, že je to návod, má to toho člověka naučit, a ukázat jednu z věcí, co s tím jde provádět, neříká co má přesně dělat a ne jinak(takhle pak vznikají ty ctrl c+v v módech).. ~> btw: Zajímavý pohled na celou věc. Ale pro příště už nikomu, kdo dělá registraci a login systém, nedoporučuj dini. Děkuji Pěkné no, akorát to je asi nějaký starší DOF2, nebo něco takového, protože DOF2_ExistFile tam neexistuje // Aha, existuje ale je to FileExists, ty to máš naopak Opraveno(to víš, už mě mate to debi** dini )... Mas v tom navodu chyby. Díky za upozornění. Opraveno. Kdyz je to navdo na dve hvezdicky tak bys mohl zminit i moznost pouziti tagu to se v praxi pouziva. ~> Já používam dof2 už přes několik let a zatím jsem neměl za nutné ty tagy použít, proto mi připadá, že to není tak extra žádané. Ani tady jsem neviděl ještě někoho je používat. Ale uvidíme. Uvážím to ještě. A k tomu preprocesoru. Vlastně by bylo fajn, kdyby o tom začátečníci nevěděli, protože, jakmile zveřejní help, a budou tam pracovat s dof2 jako s dini, a nebudeme to vědět, tak v tom bude zmatek. Edited 31. Červenec, 2016 by SkiBig18 Link to comment Share on other sites More sharing options...
DNLS 31 Odesláno: 31. Červenec, 2016 Share Odesláno: 31. Červenec, 2016 (upraveno) Opravdu ne? Edited 31. Červenec, 2016 by Daniels Link to comment Share on other sites More sharing options...
Scydo 397 Odesláno: 31. Červenec, 2016 Author Share Odesláno: 31. Červenec, 2016 Opravdu Link to comment Share on other sites More sharing options...
DNLS 31 Odesláno: 31. Červenec, 2016 Share Odesláno: 31. Červenec, 2016 Jsem rád, že umíš upravit příspěvek a píšeš že to tak bylo Link to comment Share on other sites More sharing options...
Scydo 397 Odesláno: 31. Červenec, 2016 Author Share Odesláno: 31. Červenec, 2016 Jsem rád, že umíš upravit příspěvek a píšeš že to tak bylo Píšu snad někde, že nemáš pravdu? Že to tak nebylo? Tím obrázkem, co jsem poslal, jsem ti chtěl naznačit, že jsem už všechno opravdu opravil. Nemám za nutné tu z někoho dělat debila. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now