Propracovanější konfigurační soubor (.dtf)

Sem vkládejte editovatelné kusy kódu a tutoriály.
Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Propracovanější konfigurační soubor (.dtf)

Příspěvek od hráč » červen 14, 2014, 8:40 pm

Ahoj! Tak kvůli svému projektu na kterém pracuji a mam na webu konfigurační soubory své speciální které mi poté vytvoří pole jsem se rozhodl že to udělám i do Game Makeru ( Zřejmě 8.0- )

Takže jak to funguje? A co je na tom tak super?
Dají se tvořit pole to je na tom super!

Ukázka kodu .dtf

Kód: Vybrat vše

"Name" "Killing on Platform"
"GameId" "7"
"Depots"
{
	"0" "depot_11.dcf"
	"1" "depot_12.dcf"
}
"Store"
{
	"visible" "1"
	"config"
	{
		"Name" "\"Kiiling on Platform\" ve službě Dagl"
	}
	"pages"         "0.15845"
}
"Array1"
{
	"Array2"
	{
		"Array3"
		{
			"Ahoj" "13"
		}
	}
}
A poté abychom třeba dostaly hodnotu " "Kiiling on Platform" ve službě Dagl "
zavoláme funkci

Kód: Vybrat vše

get_array_value(ds_map, "Store[config][Name]")
Dobré co?

ovšem v praxi potřebujete i text a rozparsovat konfigurační soubor

Kód: Vybrat vše

file = file_text_open_read(working_directory+"/config.dtf");
text = "";
while(!file_text_eof(file)){
    text+=file_text_read_string(file)+"\n";
    file_text_readln(file);
}
file_text_close(file);

ds_map = dtf_get_array(text);
show_message(get_array_value(ds_map, "Store[config][Name]"));
Zde jsou potřebné kody které umístíte do své hry
http://dagl.6te.net/DTF.gml

Inspirováno steamem =)

Muže kompletně nahradit ini soubory ovšem editace bude později zatím jen čtení xD
Naposledy upravil(a) hráč dne červen 15, 2014, 10:51 pm, celkem upraveno 2 x.
Neposedný liškovlk!
Obrázek

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od D-Sheep » červen 14, 2014, 9:10 pm

Chápu, že sis s tím dal práci, ale dokud funkce nemají ani minimální dokumentaci, nevím, jak to použít, ani co to dělá. Je to asi jako bys dítě posadil do auta a neřekl mu, co je to řadící páka. Možná by se někam pohnulo, ale brzo by to byl průser.

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od hráč » červen 14, 2014, 9:21 pm

Použití je tam jasně napsané ;)

file = file_text_open_read(working_directory+"/config.dtf");
text = "";
while(!file_text_eof(file)){
text+=file_text_read_string(file)+"\n";
file_text_readln(file);
}
file_text_close(file);

ds_map = ds_map_create();

dtf_get_array(text, "pole", ds_map);
show_message(get_array_value(ds_map, "pole[Store][config][Name]"));

Ale asi myslíš popis argumentů

dtf_get_array - hlavní funkce
Argument0 - Text s informacemi jako v hlavním příspěvku kod první
Argument1 - název pole kterým se bude volat v funkci "get_array_value"
Argument3 - DS Map do kterého se vše uloží

get_array_value - funkce na získání proměnné
Argument0 - DS Map
Argument1 - Název proménné ( Název pole + [pole] )

Název pole > jen text který jste si zvolili

"Store"
{
"config"
{
"Name" "\"Kiiling on Platform\" ve službě Dagl"
}
}
Neposedný liškovlk!
Obrázek

Uživatelský avatar
Druid
Redaktor
Příspěvky: 128
Registrován: srpen 5, 2011, 11:12 pm

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od Druid » červen 14, 2014, 9:43 pm

Já to nechápu.
Obrázek

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od hráč » červen 14, 2014, 9:44 pm

Záleží co? Celé? Nebo nějakou část?
Neposedný liškovlk!
Obrázek

Uživatelský avatar
Druid
Redaktor
Příspěvky: 128
Registrován: srpen 5, 2011, 11:12 pm

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od Druid » červen 14, 2014, 9:45 pm

Celý mi to nějak nedává smysl. Neni z toho jasný co přesně jaká část dělá.
Obrázek

Uživatelský avatar
Shiro
Svoz odpadu
Příspěvky: 20
Registrován: leden 24, 2012, 2:53 pm
Facebook: http://facebook.com/

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od Shiro » červen 14, 2014, 9:48 pm

A v čem je to lepší než JSON, pro který GM dekódovací funkce má?

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od hráč » červen 14, 2014, 9:50 pm

@Shiro i game maker 8.0 a nižší?
@Druid
dtf_get_array - vytvoří proměnné
get_array_value - tímto tu proměnou získáš
Neposedný liškovlk!
Obrázek

Uživatelský avatar
Adamer
Příspěvky: 202
Registrován: srpen 5, 2011, 10:45 pm
Facebook: http://facebook.com/
Bydliště: Humenné

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od Adamer » červen 14, 2014, 9:57 pm

Game Maker 8.x a nizsi dnes pouziva uz jenom masochista. Nema to jedinou vyhodu, akorat je vic natvrdo psanej na Windows te doby - coz muze znamenat, ze nebude fungovat hned v dalsi verzi Windowsu.
ObrázekObrázek

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od hráč » červen 14, 2014, 10:03 pm

To nevadí tak to berte For - Fun když to někdo bude chtít používat tak ať a kdo ne tak nemusí :)
Ja používám GM 8.0 mam v tom napsané věci co v Studiu nejedou a musel bych je třeba přepsat i když nevím jak když odstranili nějaké dobré funkce což je škoda ale z bezpečnosti asi fajn :D
Neposedný liškovlk!
Obrázek

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od D-Sheep » červen 14, 2014, 10:07 pm

Mám pár dotazů:
Je ten identifikátor "pole" potřebný? Není tam navíc?
Nemohlo by se to poskládat jen z "GameId", případně "Store[config][Name]"?
Proč se duplicitní záznamy nepřepisují?
Asi jsem moc hnidopich, ale proč konstrukce

Kód: Vybrat vše

"A][B" "0"
"A"
{
    "B" "1"
}
nedává správný výsledky? :D :D Když už, zakaž "[" a "]" v názvu.
Nemohl bys počáteční obsluhu vstupu dělat až ve skriptu get, kde by byl zabalený ten I/O hnus?

Kód: Vybrat vše

map = dtf_get_array("cfg.dtf", "array");
Sice by tím vyvstala nutnost udělat i volání uvolňovacího skriptu, ale stálo by to za to. Čím zabalenější kód je, tím jednodušší pro noob uživatele k použití.

Programuju v GM 8.0 a jsem na to hrdý! V žádným případě masochista.

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od hráč » červen 14, 2014, 10:23 pm

Je ten identifikátor "pole" potřebný? Není tam navíc?
Předělával jsem to z PHP kodu tak sem tam dal i to pole ovšem má to svoje plusy že tak mužeš načíst dva soubory s stejnou architekturou ale jiným obsahem
Proč se duplicitní záznamy nepřepisují?
Jak to myslíš? Teoreticky by měli
Asi jsem moc hnidopich, ale proč konstrukce nedává správný výsledky?
Ta první nebude fungovat protože ] a [ se přepisuje na jiný znak protože proměnná s takovýmzo speciálním znakem nemůže být
Nemohl bys počáteční obsluhu vstupu dělat až ve skriptu get
Too by asi šlo xD takže mužu

díky ;)
Neposedný liškovlk!
Obrázek

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od D-Sheep » červen 14, 2014, 10:34 pm

Musím si stát za svým.
1) Když budeš načítat druhý soubor tak ho přece hodíš do jiné ds_mapy, ne furt do toho prvního :-o
2) Nějak mi to prostě nejde... dotaz na "A" ukáže 1 (první přečtená hodnota)

Kód: Vybrat vše

"A" "1"
"A" "2"
"A" "3"
"A" "4"
3) Nemáš ani tušení, co se ti tam děje. string_replace(...) nedělá změny in-place, on jen vrací změněnou kopii... Do mapy teda vždycky posíláš originál :cry:
Třeba tě o tom přesvědčí kompletní dump mapy ve Draw:

Kód: Vybrat vše

var m, i, s;
m = ds_map; //kterou ds_map vypsat?
i = ds_map_find_first(m);
s = "";
do { 
    s += "'" + i + "' => '" + string(ds_map_find_value(m, i)) + "'#";
    i = ds_map_find_next(m, i);
} until (string_length(i) < 1);
draw_text(10, 10, s);
4) Super

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od hráč » červen 14, 2014, 10:43 pm

1) Ale takhle nemusíš vytvařet milion DS Listu ale kouknu na to
2) Ups.. yap chyba byla protože se furt přidával a neměnil xD Opraveno
3) Yup tam sem na to zapoměl taky opraveno :D

Kód: Vybrat vše

ds_map = dtf_get_array(text, "pole");
show_message(get_array_value(ds_map, "pole[A]"));
http://dagl.6te.net/DTF.gml
Naposledy upravil(a) hráč dne červen 14, 2014, 10:47 pm, celkem upraveno 2 x.
Neposedný liškovlk!
Obrázek

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od D-Sheep » červen 14, 2014, 10:46 pm

No, ne, že by to nešlo naházet vše do jedný mapy, ale ve svý kuchyni taky nemáš všechno nádobí a příbory naházený v jedný skříňce...
w0000t, miluju parafráze

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od hráč » červen 14, 2014, 10:54 pm

Hotovo tedy změnil jsem ty proměnné =)

Kód: Vybrat vše

"A" "1"
"A" "2"
"A" "3"
"A" 
{
	"B" "10"
}

Kód: Vybrat vše

ds_map = dtf_get_array(text);
show_message(get_array_value(ds_map, "A[B]"));
http://dagl.6te.net/DTF.gml
Neposedný liškovlk!
Obrázek

Uživatelský avatar
D-Sheep
Příspěvky: 768
Registrován: září 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Bydliště: Praha, CZE
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od D-Sheep » červen 15, 2014, 12:28 am

Jo, ještě jedna věc mě napadla... Jaký je tedy skutečný rozdíl od klasických .ini? Jakou výhodu má vnořování do závorek, když to do mapy stejně plácneš lineárně za sebe? Jaký je rozdíl mezi těmito dvěma?

Kód: Vybrat vše

"A"
{
    "1" "a"
    "2" "b"
}
"B"
{
    "1" "x"
}
"C" "y"

Kód: Vybrat vše

"A.1" "a"
"A.2" "b"
"B.1" "x"
"C"   "y"

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od hráč » červen 15, 2014, 12:32 am

Přehlednost v zápisu :) a způsob získání dat
Ale hlavně je to asi multi-jazyčnost v tom případě myslím že se to bude dát použí jak v GML tak JS, PHP a C#
Neposedný liškovlk!
Obrázek

Uživatelský avatar
Loric
Příspěvky: 208
Registrován: srpen 6, 2011, 9:01 am

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od Loric » červen 15, 2014, 4:45 pm

Co tak odstranit uvozovky a ještě víc to zpřehlednit.. Teď tam vidím hlavně uvozovky a zbytek se tam nějak ztrácí :D
Tak nějak bych si to představoval:

Kód: Vybrat vše

A:
{
    1: a
    2: b
}
B:
{
    1: x
}
C: y
Tím pádem by se pak museli odstraňovat bílé znaky na začátku a na konci řetězce.

Uživatelský avatar
hráč
Příspěvky: 225
Registrován: srpen 6, 2011, 8:52 am
Facebook: http://facebook.com/
Kontaktovat uživatele:

Re: Propracovanější konfigurační soubor (.dtf)

Příspěvek od hráč » červen 15, 2014, 10:47 pm

Ty uvozovky právě nahrazují tu dvojtečku a navíc bys pak tu dvojtečku nemohl ani použít
Neposedný liškovlk!
Obrázek

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 1 host