Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
4kocour4
Člen
Avatar
4kocour4:9.1.2013 18:13

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
Tvůrce
Avatar
Odpovídá na 4kocour4
TomBen:10.1.2013 1:25

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
Odpovídá na 4kocour4
Zdeněk Pavlátka:10.1.2013 10:27

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:10.2.2013 8:45

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 Hartinger
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Hartinger:10.2.2013 9:58

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

Nahoru Odpovědět
10.2.2013 9:58
You are the greatest project you will ever work on.
Avatar
Odpovídá na David Hartinger
Neaktivní uživatel:17.2.2013 7:56

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
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
TomBen:17.2.2013 8:57

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 Hartinger
Vlastník
Avatar
Odpovídá na TomBen
David Hartinger:17.2.2013 9:32

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
You are the greatest project you will ever work on.
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na David Hartinger
TomBen:17.2.2013 10:01

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 Hartinger
Vlastník
Avatar
Odpovídá na TomBen
David Hartinger:18.2.2013 21:12

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

Nahoru Odpovědět
18.2.2013 21:12
You are the greatest project you will ever work on.
Avatar
TomBen
Tvůrce
Avatar
TomBen:18.2.2013 21:28

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.