Stránka 1 z 2

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

Napsal: červen 14, 2014, 8:40 pm
od hráč
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

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

Napsal: červen 14, 2014, 9:10 pm
od D-Sheep
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.

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

Napsal: červen 14, 2014, 9:21 pm
od hráč
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"
}
}

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

Napsal: červen 14, 2014, 9:43 pm
od Druid
Já to nechápu.

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

Napsal: červen 14, 2014, 9:44 pm
od hráč
Záleží co? Celé? Nebo nějakou část?

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

Napsal: červen 14, 2014, 9:45 pm
od Druid
Celý mi to nějak nedává smysl. Neni z toho jasný co přesně jaká část dělá.

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

Napsal: červen 14, 2014, 9:48 pm
od Shiro
A v čem je to lepší než JSON, pro který GM dekódovací funkce má?

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

Napsal: červen 14, 2014, 9:50 pm
od hráč
@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áš

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

Napsal: červen 14, 2014, 9:57 pm
od Adamer
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.

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

Napsal: červen 14, 2014, 10:03 pm
od hráč
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

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

Napsal: červen 14, 2014, 10:07 pm
od D-Sheep
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.

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

Napsal: červen 14, 2014, 10:23 pm
od hráč
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 ;)

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

Napsal: červen 14, 2014, 10:34 pm
od D-Sheep
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

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

Napsal: červen 14, 2014, 10:43 pm
od hráč
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

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

Napsal: červen 14, 2014, 10:46 pm
od D-Sheep
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

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

Napsal: červen 14, 2014, 10:54 pm
od hráč
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

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

Napsal: červen 15, 2014, 12:28 am
od D-Sheep
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"

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

Napsal: červen 15, 2014, 12:32 am
od hráč
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#

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

Napsal: červen 15, 2014, 4:45 pm
od Loric
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.

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

Napsal: červen 15, 2014, 10:47 pm
od hráč
Ty uvozovky právě nahrazují tu dvojtečku a navíc bys pak tu dvojtečku nemohl ani použít