NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

Diskuze: kontola, jestli event probíhá

V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
tomasd49
Tvůrce
Avatar
tomasd49:6.10.2012 19:16

Neví někdo jak můžu pomocí GM zkontrolovat jestli probíhá např. event collision nebo event alarm, aby to vrátilo true, pokud ano nebo false, pokud ne?

Editováno 6.10.2012 19:17
 
Odpovědět
6.10.2012 19:16
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na tomasd49
David Hartinger:6.10.2012 21:24

To je dost divný dotaz, jestli probíhá event zjistiš tak, že do něj prostě něco dáš, ne? :)

Nahoru Odpovědět
6.10.2012 21:24
New kid back on the block with a R.I.P
Avatar
TomBen
Tvůrce
Avatar
TomBen:6.10.2012 21:42

Když je to hodně zapeklité, hážu do nich některý jednoduchý částicový efekt,
ten má tu výhodu, že se ukáže i mimo draw a je ho dobře vidět.

Nahoru Odpovědět
6.10.2012 21:42
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
samo007
Tvůrce
Avatar
Odpovídá na tomasd49
samo007:7.10.2012 10:25

Skús si k event-om napísať nejakú premennú.
Napr. v alarm[1] napíš do "var" "premenna= true"
a potom do draw vlož kód "draw-text(x,y, premenna)"

Alebo jednoducho tam vlož "create_object". Možností je viac :)

 
Nahoru Odpovědět
7.10.2012 10:25
Avatar
tomasd49
Tvůrce
Avatar
tomasd49:7.10.2012 16:44

no jo, jenže já do nějakého eventu potřebuju dát ještě další event :) potřebuju aby se provedla akce, pokud se provedou 2 eventy současně, tak mě napdalo že bych ten druhý mohl dát do podmínky.

Editováno 7.10.2012 16:45
 
Nahoru Odpovědět
7.10.2012 16:44
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na tomasd49
David Hartinger:7.10.2012 18:16

Si prostě deklaruj jednu proměnnou, tu nastavuj na nějakou hodnotu a v jedné události a kontroluj v druhé. A v GML můžeš mít několik eventů v jedné podmínce.

Nahoru Odpovědět
7.10.2012 18:16
New kid back on the block with a R.I.P
Avatar
tomasd49
Tvůrce
Avatar
tomasd49:7.10.2012 18:44

jasně díky

 
Nahoru Odpovědět
7.10.2012 18:44
Avatar
tomasd49
Neregistrovaný
Avatar
tomasd49:9.10.2012 17:35

no jo, ale nějak to nefunguje sice když dám nějakou proměnnou ( premenna = true ) do eventu create a zkontroluju ji v druhé, tak to sice funguje, ale když dám stejnou proměnnou do eventu collision, tak to vždy po spuštění hry napíše: unknown variable premenna ... :@

 
Nahoru Odpovědět
9.10.2012 17:35
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:9.10.2012 17:42

pokud máš čtvercový sprite, tak je nejlepší nepoužívat event kolize, ale

if (collision_rectangle())

nebo kruhu, apod, a umístit to do step eventu

Nahoru Odpovědět
9.10.2012 17:42
Mo8ilε 15 Ѐλđ
Avatar
tomasd49
Tvůrce
Avatar
tomasd49:9.10.2012 18:05

ne, nemám čtvercový sprite. Mám dost obrázek dost s hodně složitým tvarem na průhledném pozadí.

 
Nahoru Odpovědět
9.10.2012 18:05
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na tomasd49
TomBen:10.10.2012 0:15

Možná by pomohlo kdybys popsal podrobněji, co to má přesně dělat,
pak by navržené postupy byly o něco účinnější.

Jinak hláška že proměnná neexistuje může vzniknout několika způsoby.
Např. když v eventu collision máš nastaveno jako object působnosti
pro další kód other. Pak se proměnná hledá v jiném objektu.
Často se taky stává, že proměnná se hledá dřív než vznikne její objekt
podle pořadí vzniku. Nebo stačí překlep v názvu. Prostě různě.

Nahoru Odpovědět
10.10.2012 0:15
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
tomasd49
Neregistrovaný
Avatar
tomasd49:10.10.2012 7:22

už jsem to říkal, potčřebuju aby se akce provedla, jen když jsou provedeeny 2 eventy současně. A taky potřebuju zadat, co se stane, když event neproběhne 2x.

 
Nahoru Odpovědět
10.10.2012 7:22
Avatar
samo007
Tvůrce
Avatar
Odpovídá na tomasd49
samo007:10.10.2012 7:34

Možno by to išlo aj jednoduchšie, ale keďže neviem o čo presne ide, myslím, že toto ti môže pomôcť:

Príklad:

 Event alarm:
premenna_alarm= true;
Event colision ...:
premenna_colision=true;
Step event
// tu ti treba ešte nejako deklarovať premennú, aby existovala skôr, ako začne funkcia if()
//(závisí od tvojho problému)
if (premenna_alarm= true && premenna_colision=true)
...

Na presný postup potrebujeme vedieť o čo presne ide...

Editováno 10.10.2012 7:36
 
Nahoru Odpovědět
10.10.2012 7:34
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na
TomBen:10.10.2012 12:58

Měl jsem na mysli především to, žes nenapsal jaké dva eventy
potřebuješ kombinovat. Na výběr máš tak jako tak několik různých řešení:

  • proměnná obsahující informaci, že byl event za posledních X stepů aktivován

    ( viz příspěvek od samo007 )

  • proměnná jako počitadlo aktivací eventů

    ( kódově skoro totéž jen proměnná nemůže být typu bool )

  • funkce nahrazující jeden z eventů spuštěná v tom druhém

    ( viz loapmail ..ta funkce může být přirozeně jakákoliv )

  • user event napsaný tak, aby testoval vše potřebné

    ( víc práce, ale pak se s tím pracuje jako s jinými eventy )

Nahoru Odpovědět
10.10.2012 12:58
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
samo007
Tvůrce
Avatar
Odpovídá na TomBen
samo007:10.10.2012 15:45

S tým posledným eventom neviem pracovať. Je tu k tomu nejaký návod?

 
Nahoru Odpovědět
10.10.2012 15:45
Avatar
Theodor Johnson
Tvůrce
Avatar
Theodor Johnson:10.10.2012 15:46

user event se volá jednoduše

event_user(číslo);
Nahoru Odpovědět
10.10.2012 15:46
Mo8ilε 15 Ѐλđ
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Theodor Johnson
samo007:10.10.2012 16:53

Dobre, ale na čo to vlastne je?

 
Nahoru Odpovědět
10.10.2012 16:53
Avatar
Зайчик
Člen
Avatar
Odpovídá na samo007
Зайчик:10.10.2012 17:02

no C# ještě moc nerozumím ale je mi jasné že vrací nějakou hodnotu pokud to bude NULL tak návrat je nula a event neprobíhá pokud vrátí TRUE tedy jedničku tak probíhá

Nahoru Odpovědět
10.10.2012 17:02
Коммунизм для нашего будущего!
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Зайчик
samo007:10.10.2012 17:05

Ok, len by sa mi na tu tému zišiel návod.
Ale ďakujem za odpoveď, už chápem o čo ide :)

 
Nahoru Odpovědět
10.10.2012 17:05
Avatar
Theodor Johnson
Tvůrce
Avatar
Odpovídá na samo007
Theodor Johnson:10.10.2012 17:40

User event je v podstatě to samý co skript, ale dá se volat jen u toho objektu který user event má, je to dobrý například když object vytvoří jiný pod názvem
např

instance_one = instance_create()

a pak u něj může volat user event

instance_one.event_user(0);
Nahoru Odpovědět
10.10.2012 17:40
Mo8ilε 15 Ѐλđ
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Theodor Johnson
samo007:10.10.2012 18:23

Hmm... :` Nieje tu nejaký návod?

 
Nahoru Odpovědět
10.10.2012 18:23
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na samo007
David Hartinger:10.10.2012 18:33

Na co chceš návod? Prostě si uděláš událost a tu voláš. To je celé.

Nahoru Odpovědět
10.10.2012 18:33
New kid back on the block with a R.I.P
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Зайчик
Kit:10.10.2012 20:44

Motat dohromady hodnoty NULL, false, true, 0 a 1 je značně odvážné. V jazyku C to možná projde, ale ve vyšších jazycích doporučuji datové typy striktně rozlišovat, jinak se můžeš dočkat neblahých vedlejších efektů.

Nahoru Odpovědět
10.10.2012 20:44
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:10.10.2012 23:22

A čo vlastne predstavuje hodnota NULL?

 
Nahoru Odpovědět
10.10.2012 23:22
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na samo007
TomBen:11.10.2012 0:04

Nedefinovanou čili vlastně žádnou hodnotu. :)

Nahoru Odpovědět
11.10.2012 0:04
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
samo007
Tvůrce
Avatar
Odpovídá na TomBen
samo007:11.10.2012 8:03

To znamená, že ak dám napr. nejakú podmienky s premennou, ktorá ma hodnotu NULL, tak mi vyhodí error, že premenná neexistuje? Alebo sa to toho netýka?
Ešte by ma zaujímalo, akú hodnotu môžem použiť, ak chcem zmeniť hodnotu NULL na inú?

 
Nahoru Odpovědět
11.10.2012 8:03
Avatar
Kit
Tvůrce
Avatar
Odpovídá na samo007
Kit:11.10.2012 8:53

Záleží na jazyku. NULL může způsobit chybu nebo výjimku, znamenat nulu, prázdný řetězec, ale prostě znamená "nic".

Hodnotu můžeš změnit přiřazením. U dynamicky typovaných jazyků čímkoli, u staticky podle typu.

Nahoru Odpovědět
11.10.2012 8:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:11.10.2012 10:33

Aha, ďakujem. Nevieš ako je to s GML?

 
Nahoru Odpovědět
11.10.2012 10:33
Avatar
Kit
Tvůrce
Avatar
Odpovídá na samo007
Kit:11.10.2012 10:53

GML neznám. Vyjádřil jsem se k NULL jen obecně. Můžu ti však doporučit, aby sis to chování v různých situacích vyzkoušel.

Nahoru Odpovědět
11.10.2012 10:53
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na Kit
samo007:11.10.2012 11:30

Jasné, ešte raz ďakujem

 
Nahoru Odpovědět
11.10.2012 11:30
Avatar
tomasd49
Tvůrce
Avatar
Odpovídá na samo007
tomasd49:11.10.2012 18:59

Jestli dovolíte tak se vrátím k tématu...
Přesně jde o to, že se jeden z nějakých dvou objektů pohybuje směrem k tomu druhému a pokud se spustí alarm 0 a zároveň budou tyhle obekty v kolizi, tak by se měl zastavit ten, který se předtím pohyboval. 8|
Pokud můžu přidám odkaz na gm doubor jak by to mělo vypadat:
http://www.ulozto.cz/xT5ZUHJ/hra-gm6
není to sice přímo ta hra, na které pracuju, je to jen taková ukázka.

Editováno 11.10.2012 19:02
 
Nahoru Odpovědět
11.10.2012 18:59
Avatar
samo007
Tvůrce
Avatar
samo007:11.10.2012 19:30

A ako sa ti vytvárajú objekty? Máš ich priamo v "room", alebo ich vytvára nejaký objekt ešte pred začatím? (Jednoducho, či existuje nejaký objekt, ktorý vznikne skôr ako všetky objekty, ktorých sa problém týka.)

 
Nahoru Odpovědět
11.10.2012 19:30
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na tomasd49
TomBen:12.10.2012 0:54

Koukal jsem na to. Je to sice ze starší verze Game Makeru než mám,
ale přece jen se to nějak otevřelo.
Logicky to muselo hlásit chybu, když proměnné poprvé vznikají až
v eventech, které nastanou po delší době ( alarm a collision ),
zatímco podmínka, ve které je chceš testovat je v eventu Step
a nastane téměř okamžitě. Stačí v Create obě použité proměnné
nastavit na false. Jinak máš někde napsáno colision a jinde collision.
Na takové věci si dávej pozor, špatně se to pak vychytává.

Jinak se obávám, že ať už z toho chceš mít cokoli, jdeš na to
z nějakého špatného konce. K čemu ti má být dobrý ten alarm?

Nahoru Odpovědět
12.10.2012 0:54
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
samo007
Tvůrce
Avatar
Odpovídá na TomBen
samo007:12.10.2012 6:04

Presne tak, lenže aj Event Create funguje súčasne so Event Stepom. Preto odporúčam použiť Event "End Step". Pretože inak ti to bude hlásiť chybu.

 
Nahoru Odpovědět
12.10.2012 6:04
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na samo007
TomBen:12.10.2012 9:18

To se mýlíš. Event Create se spouští jako první v okamžiku vytvoření objektu a chybu to neudělá.

Editováno 12.10.2012 9:18
Nahoru Odpovědět
12.10.2012 9:18
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
samo007
Tvůrce
Avatar
Odpovídá na TomBen
samo007:12.10.2012 14:07

mne to hlási chybu. Vždy keď si premennú vytvorím v Create a potom dávam podmienku v Step, hlási to chybu.

 
Nahoru Odpovědět
12.10.2012 14:07
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na samo007
TomBen:12.10.2012 23:43

Hm, mě ne. :)
Asi tam chybu máš, ale není v tom, co jsi psal.

Nahoru Odpovědět
12.10.2012 23:43
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
samo007
Tvůrce
Avatar
Odpovídá na TomBen
samo007:13.10.2012 0:07

Veď som o tom dokonca aj niekde čítal, že V objekte prebieha Create súčasne so Stepom a práve to je vraj jeden z problémov. Ten by ale mohol vyriešiť end Step, alebo definovať nejakú globálnu premennú ešte pred vznikom objektu (napr. v menu a pod.

 
Nahoru Odpovědět
13.10.2012 0:07
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na samo007
TomBen:13.10.2012 5:28

Používám už GM celkem dlouho a funguje mi to správně.
Event Create se u mě spouští jako první a pak všechny ostatní.
Začínal jsem s GM 6kou a teď mám GM 8. Celou dobu jsem s tím neměl
žádný problém. Možná jsou vadné nějaké Lite verze, to fakt nevím.

Nahoru Odpovědět
13.10.2012 5: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.
Avatar
samo007
Tvůrce
Avatar
Odpovídá na TomBen
samo007:13.10.2012 8:40

Ano, ja mám free verziu. Koľko stojí originál?

 
Nahoru Odpovědět
13.10.2012 8:40
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na samo007
TomBen:13.10.2012 17:49

Windows verze se teď prodává za 40 dolarů.
Takové ty co se v nich dá dělat pro jabka, android a tak, stojí víc.
Ale to celkem snadno zjistíš z webu, ne?

Nahoru Odpovědět
13.10.2012 17:49
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
samo007
Tvůrce
Avatar
samo007:13.10.2012 19:05

Ano. To vraj stojí cca 440$

 
Nahoru Odpovědět
13.10.2012 19:05
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na samo007
David Hartinger:13.10.2012 19:06

Na to kolik času to ušetří je to dost levné a v mobilních aplikacích ty peníze určitě jsou.

Nahoru Odpovědět
13.10.2012 19:06
New kid back on the block with a R.I.P
Avatar
samo007
Tvůrce
Avatar
samo007:13.10.2012 19:17

No ale aj tak, pre mňa je to veľa.

 
Nahoru Odpovědět
13.10.2012 19:17
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na samo007
TomBen:13.10.2012 20:11

Je to hodně, ale je šance, že se to člověku vrátí.
Windowsí výrobky z Game Makeru se prodávají jen velice těžce,
zatímco třeba na Androidí tablety se prodá kdejaká blbost.
Když si nechceš svoje programování financovat sám, je to
celkem reálná možnost.

Nahoru Odpovědět
13.10.2012 20:11
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
samo007
Tvůrce
Avatar
Odpovídá na TomBen
samo007:13.10.2012 21:27

Tak to máš pravdu. Ako ale dať hry do predaja? Máš s tým nejaké skúsenosti?

 
Nahoru Odpovědět
13.10.2012 21:27
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na samo007
TomBen:13.10.2012 21:41

Co jsem dělal v GM, bylo vždycky buď jen tak pro zábavu a tudíž zadarmo
nebo pro konkrétní osobu a účel. Jinak z opačné strany - jako uživatel
androidí touchplacky vím, jak je snadné se zlákat na nákup za "pár"
šestáků, když vidím pěkný kousek software. Sice se zatím bráním statečně,
ale už se mé lakomé srdce párkrát skoro zlomilo. :)

Možná by něco věděli ti týpci, co tady páchali v inkubátoru ty zombie.
Zdá se, že se zaměřili na přesně ten typ prodeje.

Nahoru Odpovědět
13.10.2012 21:41
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
samo007
Tvůrce
Avatar
Odpovídá na TomBen
samo007:13.10.2012 22:02

Áno, aj ja som si to všimol. Tak to sa zas tak neoplatí kupovať drahý program, ak ani nemám dostatok času. Pretože pri vývoji by to nebolo až tak ziskové. Radšej sa niekedy v budúcnosti naučím javu a aspoň budem niečo vedieť (Môj citát: GM je slepá cesta), ale zatiaľ ešte tvorím v gml. Chcel by som vedieť C#, ale zatiaľ som si ani nestihol prejsť poriadne nejaký návod.

Editováno 13.10.2012 22:04
 
Nahoru Odpovědět
13.10.2012 22:02
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na samo007
TomBen:13.10.2012 22:50

Já mám jiný oblíbený citát:
"Celý svět uhne muži, který ví, kam kráčí."

Jinými slovy:
Cokoli se rozhodneš naučit a vytrváš v tom, bude to stát za to.

Nahoru Odpovědět
13.10.2012 22:50
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
samo007
Tvůrce
Avatar
Odpovídá na TomBen
samo007:13.10.2012 23:11

Dobrý citát :D
Ako som povedal, nemám na to dosť času...

 
Nahoru Odpovědět
13.10.2012 23:11
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 50 zpráv z 50.