11. června 2016

Essentials Spritebase ( čili databáze obrázků )

Essentials Spritebase ( čili databáze obrázků )

( další popis a ukázka použití zde ) 

spritebase_init()
-musí se spustit před použitím ostatních funkcí spritebase
spritebase_create(any_name)
-spouští se ( nejlépe v Create ) uvnitř nějakého objektu a ten je potom považován za databázi
( odkazovat na vytvořenou databázi jde pak názvem any_name nebo id instance, kde databáze je )
součástí vytvořené databáze jsou proměnné:
FOLDER - sledovaná složka na disku
SPRITE[0,0] - pole dat
NUMBER - počet obrázků v databázi
IMAGES - velikost animace ( počet obrázků )
REMOVEBACK - odstranit barvu pozadí
SMOOTH - rozmazat okraje
XORIG - střed v ose x
YORIG - střed v ose y
AUTOCENTER - true přepisuje XORIG a YORIG vypočteným středem

spritebase_destroy(spritebase name or id)
- odstraní databázi včetně spritů v ní uložených, objekt obsahující databázi je také odstraněn
spritebase_index_sprite_folder(spritebase name or id)
- projde složku FOLDER a zapamatuje si všechny *.png ( lze změnit uvnitř skriptu )
spritebase_destroy_sprite_folder(spritebase name or id)
- odstraní všechny záznamy v databázi a sprite z ní vytvořené čili vyčistí databázi
spritebase_load_sprite(spritebase_id,Nth index)
- vytvoří sprite z obrázku uvedeného v databázi, Nth index je prosté pořadí
( obvykle zjištěné funkcí spritebase_find_index )
spritebase_unload_sprite(spritebase_id,Nth index)
- odstraní z paměti sprite vytvořený předchozí funkcí, záznam v databázi ponechá
spritebase_find_index(spritebase name or id,filename)
- najde index ( pořadí ) obrázku podle jeho názvu, toto pořadí se nemění, dokud nedojde k nové indexaci složky, takže není třeba spouštět tuto funkci vícekrát za sebou
hledání musí mít přesný název, nejde např. *.*
spritebase_cleanup()
- kompletní smazání všech záznamů i všech databází samotné, vytvořené sprites zmizí z paměti, všechny objekty obsahující databáze jsou také odstraněny

zpět na přehled všech Essentials 2016



Essentials 2D buffer management ( čili správa bufferu )

Essentials 2D buffer management ( čili správa bufferu )

BF_create(width,height)
- vytvoří buffer a vrátí index, buffer je typ fast a jednotka je u8 čili 1 byte ( 0 až 255 )
BF_erase(BF,width,height,value_u8)
- vyplní celý buffer hodnotou, která může být 0 nebo i jiné číslo
BF_seek(BF,width,column,line)
- nastaví pozici čtení na určené místo ( využívá se uvnitř ostatních skriptů )
BF_read(BF,width,column,line)
- přečte hodnotu z dané pozice, používá BF_seek
BF_write(BF,width,column,line)
- zapíše hodnotu na pozici, používá BF_seek
BF_swap(BF,width,column,line,column2,line2)
- vymění hodnoty na uvedených pozicích
BF_destroy(BF)
- zničí buffer ( odstraní z paměti )
BF_with_value(BF,width,height,'=',u8_value,object,event_user N)
- porovná všechny hodnoty v bufferu a pokud je porovnání true, tak v daném objektu spustí user_event N,
lze použít porovnávací značky =,==,>,<,>=,<=,!=
BF_with_value_ext(BF,width,height,'=',u8_value,object,event_user N,from_column,to_column,from_line,to_line)
- totéž jako předchozí, ale porovnávání lze omezit na určitou oblast bufferu
BF_set_value(BF,width,height,from column,to column,from line,to line,value)
- celý buffer nebo oblast vyplní hodnotou
BF_set_value_irandom(BF,width,height,from column,to column,from line,to line,value_min,value_max)
- celý buffer nebo oblast vyplní náhodnou hodnotou v daném rozsahu

! pozor buffery jsou v současné verzi Game Makeru Studio pomalejší než obyčejná pole, takže jediné, co se tím ušetří, bude paměť ( protože povolená hodnota buňky je celé kladné od 0 do 255, která zabírá jen 1 byte, narozdíl od pole, kde se ukládá i malé číslo na několik byte )

zpět na přehled všech Essentials 2016

Essentials Array XD ( čili vícerozměrná pole )

Essentials Array XD ( čili vícerozměrná pole )

( další popis a ukázka použití zde ) 

array_create(array,value,D1,D2,D3,D4,D5,D6,D7,D8,D9,D10,D11,D12)
- potřebuje prázdné 1D pole např.A[0]=0 a udělá z něj vícerozměrné, také ho přitom vyplní hodnotou value
( velikosti jednotlivých rozměrů jsou D1 až D12, takže maximální počet rozměrů je 12 )
array_get_dimensions(array)
- zjistí počet rozměrů pole zpracovaného předchozí funkcí ( počet rozměrů je uložen v indexu 0 )
array_dimension_size(array,dimension 1..N)
- zjistí velikost daného rozměru ( uloženo také v indexu 0 )
array_whereis(array,D1,D2,D3...)
- přepočte vícerozměrnou polohu na jednorozměrný index ( obvykle ale není potřeba tak přímý přístup )
array_read(array,D1,D2,D3...)
- přečte hodnotu
array_write(array,value,D1,D2,D3...)
- zapíše hodnotu

zpět na přehled všech Essentials 2016

Essentials CSV file reader ( čili čtení externí tabulky )


Essentials CSV file reader ( čili čtení externí tabulky )

sada skriptů určená k načtení souboru .csv ( například tabulka z Excelu ) a použití získaných dat

csv_init()
- vytvoří globální proměnné s vlastnostmi:
CSV='';
CSV_header[0]=0;
CSV_line[0]=-1;
csv_file_set(filename or filename.csv)
- nastaví název *.csv souboru tím, že ho uloží do proměnné CSV, vrací úspěšnost jako bool
csv_read_header()
- přečte hlavičky sloupců tabulky a uloží je do pole CSV_header, vrací počet hlaviček nebo -1
csv_read_line(header_name,value)
- načte řádek, který má pod zvolenou hlavičkou danou hodnotu ( obvykle jde o index )



řádek se uloží do pole CSV_line
skript vrací úspěšnost
csv_read_line_number( number line in file 0..N )
- načte řádek podle jeho pořadového čísla nezávisle na obsahu pole
( užitečné při procházení celého csv )

! Pozor, pokud .csv obsahuje češtinu, je nutné použít kódování UTF-8 ( umí změnit např. Notepad ve Windows ), položky musí být odděleny středníkem. !

zpět na přehled všech Essentials 2016

Essentials Dice ( čili házení kostkou )

Essentials Dice ( čili házení kostkou )

pokud chceme skutečně náhodná ( pokaždé jiná čísla ), je na začátku hry třeba použít funkci
randomize()
( podrobnosti o pseudonáhodných číslech v GML se lze dočíst v manuálu Game Makeru Studio )

k6()
- vrací náhodnou hodnotu mezi 1 až 6 včetně, čili jako běžná šestistranná kostka
k6_plus()
- vrací hod šestistěnkou plus další hod, kdykoli padne 6
( tedy třeba  6 + 6 + 2, samotné přesné násobky 6ti proto hodit nelze, třeba k6_plus =12 nenastane nikdy )
k10()
- hod desetistěnkou
k10_plus()
- hod desetistěnkou plus další hod, kdykoli padne 9
k_percent()
- procentní hod, od 0 do 100
fight_round(power_of_A,power_of_B,randomness)
- porovnání síly A ( power of A ) plus náhoda ( randomness ) proti síle B plus náhoda
vrací:
 +1, když vyhrál A
 -1, když vyhrál B
0 pro remízu
cross_times(range,times,over N)
- vrací kolikrát došlo při počtu times náhodných hodů v rozsahu 0 až range k překročení hodnoty N

zpět na přehled všech Essentials 2016

Essentials Motion Position ( čili pohyb a poloha )

Essentials Motion Position ( čili pohyb a poloha )

Essentials Future Motion
x_next(steps)
- odhad polohy pohybujícího se objektu po steps krocích ( čím větší počet kroků napřed hádáme, tím menší bude přesnost u nepravidelných nebo nelineárních pohybů )
vrací budoucí souřadnici x
y_next(steps)
- odhad polohy pohybujícího se objektu po steps krocích ( čím větší počet kroků napřed hádáme, tím menší bude přesnost u nepravidelných nebo nelineárních pohybů )
vrací budoucí souřadnici y

---

implode_motion(epicentrum x, epicentrum y,power)
- instance se začne pohybovat k danému středu silou power, dosavadní pohyb se narozdíl od funkce move_towards_point sčítá s novým, obvyklé je využití s příkazem with
explode_motion(epicentrum x, epicentrum y,power)
- instance se začne pohybovat od daného středu silou power, dosavadní pohyb se narozdíl od funkce move_towards_point sčítá s novým, obvyklé je využití s příkazem with, simuluje výbuch
center([view_number])
- posadí instanci na střed roomu nebo view ( pokud jsou povolena ) a vrátí bool, zda došlo ke změně polohy
make_drag()
- dává se do Stepu a udělá objekt tahatelný myší

zpět na přehled všech Essentials 2016

Essentials Paths ( čili křivky )

Essentials Paths ( čili křivky )

distribute_along_path_linear(path_index,object_index,number)
- vytvoří daný počet instancí a rozmístí je po křivce rovnoměrně, vrací ds_list s id těch instancí
distribute_along_path_sinal(path_index,object_index,number,waves)
- vytvoří daný počet instancí a rozmístí je po křivce s vlnitou změnou hustoty, vrací ds_list s id těch instancí
path_shift_anchored(path_index,path_position of anchor,x of new anchor position,y of new anchor position)
- posune křivku tak, aby daný bod na křivce byl pak v pozici x,y
path_rotate_anchored(path_index,path_position of anchor,angle)
- otočí křivku okolo bodu na křivce o úhel angle

zpět na přehled všech Essentials 2016