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

Sem vkládejte editovatelné kusy kódu a tutoriály.
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

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

Post by 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

Code: Select all

"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

Code: Select all

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

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

Code: Select all

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
Last edited by hráč on June 15, 2014, 10:51 pm, edited 2 times in total.
Neposedný liškovlk!
Image
D-Sheep
Posts: 768
Joined: September 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Location: Praha, CZE
Contact:

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

Post by 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.
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

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

Post by 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"
}
}
Neposedný liškovlk!
Image
Druid
Redaktor
Posts: 128
Joined: August 5, 2011, 11:12 pm

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

Post by Druid »

Já to nechápu.
Image
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

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

Post by hráč »

Záleží co? Celé? Nebo nějakou část?
Neposedný liškovlk!
Image
Druid
Redaktor
Posts: 128
Joined: August 5, 2011, 11:12 pm

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

Post by Druid »

Celý mi to nějak nedává smysl. Neni z toho jasný co přesně jaká část dělá.
Image
User avatar
Shiro
Svoz odpadu
Posts: 20
Joined: January 24, 2012, 2:53 pm
Facebook: http://facebook.com/

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

Post by Shiro »

A v čem je to lepší než JSON, pro který GM dekódovací funkce má?
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

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

Post by 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áš
Neposedný liškovlk!
Image
Adamer
Posts: 202
Joined: August 5, 2011, 10:45 pm
Facebook: http://facebook.com/
Location: Humenné

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

Post by 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.
ImageImage
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

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

Post by 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
Neposedný liškovlk!
Image
D-Sheep
Posts: 768
Joined: September 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Location: Praha, CZE
Contact:

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

Post by 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

Code: Select all

"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?

Code: Select all

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.
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

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

Post by 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 ;)
Neposedný liškovlk!
Image
D-Sheep
Posts: 768
Joined: September 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Location: Praha, CZE
Contact:

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

Post by 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)

Code: Select all

"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:

Code: Select all

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
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

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

Post by 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

Code: Select all

ds_map = dtf_get_array(text, "pole");
show_message(get_array_value(ds_map, "pole[A]"));
http://dagl.6te.net/DTF.gml
Last edited by hráč on June 14, 2014, 10:47 pm, edited 2 times in total.
Neposedný liškovlk!
Image
D-Sheep
Posts: 768
Joined: September 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Location: Praha, CZE
Contact:

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

Post by 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
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

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

Post by hráč »

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

Code: Select all

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

Code: Select all

ds_map = dtf_get_array(text);
show_message(get_array_value(ds_map, "A[B]"));
http://dagl.6te.net/DTF.gml
Neposedný liškovlk!
Image
D-Sheep
Posts: 768
Joined: September 7, 2011, 10:17 pm
Facebook: http://facebook.com/sheepdave
Location: Praha, CZE
Contact:

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

Post by 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?

Code: Select all

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

Code: Select all

"A.1" "a"
"A.2" "b"
"B.1" "x"
"C"   "y"
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

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

Post by 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#
Neposedný liškovlk!
Image
User avatar
Loric
Posts: 208
Joined: August 6, 2011, 9:01 am

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

Post by 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:

Code: Select all

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.
User avatar
hráč
Posts: 225
Joined: August 6, 2011, 8:52 am
Facebook: http://facebook.com/
Contact:

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

Post by hráč »

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