Avatar
4kocour4
Člen
Avatar
4kocour4:

Ahoj,chtěl bych se zeptat jak v GM udělat výběr postav.
Např.Jdu s postavičkou,najdu nějaký objekt třeba zelený kámen a odemkne se mi nová postava,na kterou přehodím např.klávesou Q a zpátky klávesou E.
Dík předem.
P.S.-brzo se asi na něco budu ptát znova :-)

 
Odpovědět 9.1.2013 18:13
Avatar
TomBen
Redaktor
Avatar
Odpovídá na 4kocour4
TomBen:

V eventu collision nastavíš změnu.
Buď změníš jen obrázek postavy. Tzn. přepíšeš sprite_index a nebo
změníš celý objekt, případně přepneš místnost. Já bych volil nejspíš
ten sprite, protože to je nejméně komplikací.

Nahoru Odpovědět 10.1.2013 1:25
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na 4kocour4
Zdeněk Pavlátka:

Doporučuju nastavit proměnnou, která bude určovat jestli postavu získal nebo ne. V create eventu jí nastavíš na false (nebo na nulu, znamená to totéž), a v collision eventu jí přiřadíš hodnotu true (nebo 1).Pak to zkontroluješ podmínkou a přiřaďíš sprite.

Nahoru Odpovědět 10.1.2013 10:27
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Neaktivní uživatel:

Ahoj,

Já bych to vyřešil asi takto:

  1. Nový objekt --- event: Create--- kód: global.class=""
  2. (Teď ve hře sebereš zelený kámen) a ten se zničí
  3. objekt zelený kámen --- destroy event: global.class="Trpas­lík"
  4. objekt hráč --- event q pressed: if global.class="Trpas­lík" {instance_chan­ge(obj_trpaslik,0)} else {show_message("Ne­máš trpaslíka!!!")}
Nahoru Odpovědět 10.2.2013 8:45
Neaktivní uživatelský účet
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Neaktivní uživatel
David Čápka:

Ježiši, zase tu někdo globalizuje :O

Nahoru Odpovědět 10.2.2013 9:58
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
Neaktivní uživatel:

No já myslím že je to vcelku dobré řešení, pokud to přiřadí párovému objektu hráče a dá persistent půjde to i přes více místoností.
Kód pak může vypadat takhle:

global.class="Trpaslík"
//elf,obr,člověk,atd.

Napadlo mě ale že by se to dalo vyřešit objektem na který se klikne a pokud je počet objektů zelený kámen jeho sprit se změní. Potom se klikne na mezerník a hráč zkontroluje

if obj_controller.sprite_index=spr_kamen {instance_change(obj_trpaslik,0)}
:)
Nahoru Odpovědět 17.2.2013 7:56
Neaktivní uživatelský účet
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
TomBen:

Hrozně to komplikujete lidi.
Globální proměnné jsou tady zbytečné, protože jde o vlastnost hráče,
nikoli celé hry. Proměnná by měla být lokální a vlastník hráčův objekt.
Řazení proměnných k vlastníkům dělá kód přehlednějším.
A dále bych zakládal proměnné jen na to, co se bude testovat podmínkou.
Když je třeba jen změnit sprite, přepíšu sprite_index, který je taky
proměnná a pak se prostě zeptám if sprite_index==trpas­lik ...
Pokud potřebuji změnu jen povolit a ne hned provést, napíšu
player.trpaslik_e­nabled=true a zas není co řešit. Když jde hráč
přes víc místností, stejně musí být persistent a proměnná jde s ním.

Nahoru Odpovědět 17.2.2013 8:57
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na TomBen
David Čápka:

Globální proměnné by neměly v GM vůbec být. Vídám je na fórech, vídám je tady v ukázkách, lidi to cpou všude a přitom k tomu není vůbec žádný důvod. Myslí si, že proměnná je vždy globální, vůbec nechápou že ji může mít objekt.

Nahoru Odpovědět 17.2.2013 9:32
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na David Čápka
TomBen:

V GM se globálních proměnných úplně nejde zbavit.
Některé jsou vestavěné neodstranitelně. Např. lives nebo score.
Bohužel na nich není ani poznat jejich globálnost, protože GM
podporuje vynechání slova global. Globální proměnné mají svůj smysl,
pokud nastavují parametry celé hry. Např. do inicializace roomu
jde napsat kód, který ale nejde přidat vlastníkovi, protože objekty
ještě neexistují. Pak má celkem smysl zadat např. all_audio_mute=true
platící pro všechny zvuky. Jde hlavně o kolizi jmen a čitelnost.

Nahoru Odpovědět 17.2.2013 10:01
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na TomBen
David Čápka:

Hezčí mi přijde udělat si objekt ManazerZvuku a dát ho persistent :)

Nahoru Odpovědět 18.2.2013 21:12
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
TomBen
Redaktor
Avatar
TomBen:

No, to dělám, když je toho víc než jen ON/OFF. ;)

Nahoru Odpovědět 18.2.2013 21:28
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.