Diskuze: kontola, jestli event probíhá

Ostatní jazyky GameMaker GameMaker kontola, jestli event probíhá

Avatar
tomasd49
Redaktor
Avatar
tomasd49:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na tomasd49
David Čápka:

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

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
Redaktor
Avatar
Odpovídá na tomasd49
samo007:

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
Redaktor
Avatar
tomasd49:

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 Čápka
Tým ITnetwork
Avatar
Odpovídá na tomasd49
David Čápka:

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
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
tomasd49
Redaktor
Avatar
tomasd49:

jasně díky

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

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
Redaktor
Avatar
Theodor Johnson:

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
Přecházím na "Cross-Platform Development"
Avatar
tomasd49
Redaktor
Avatar
tomasd49:

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
Redaktor
Avatar
Odpovídá na tomasd49
TomBen:

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:

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
Redaktor
Avatar
Odpovídá na tomasd49
samo007:

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
Redaktor
Avatar
Odpovídá na tomasd49
TomBen:

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
Redaktor
Avatar
Odpovídá na TomBen
samo007:

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
Redaktor
Avatar
Theodor Johnson:

user event se volá jednoduše

event_user(číslo);
Nahoru Odpovědět 10.10.2012 15:46
Přecházím na "Cross-Platform Development"
Avatar
samo007
Redaktor
Avatar
Odpovídá na Theodor Johnson
samo007:

Dobre, ale na čo to vlastne je?

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

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
Redaktor
Avatar
Odpovídá na Зайчик
samo007:

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
Redaktor
Avatar
Odpovídá na samo007
Theodor Johnson:

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  +1 10.10.2012 17:40
Přecházím na "Cross-Platform Development"
Avatar
samo007
Redaktor
Avatar
Odpovídá na Theodor Johnson
samo007:

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

 
Nahoru Odpovědět 10.10.2012 18:23
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na samo007
David Čápka:

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
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
Kit
Redaktor
Avatar
Odpovídá na Зайчик
Kit:

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
Redaktor
Avatar
Odpovídá na Kit
samo007:

A čo vlastne predstavuje hodnota NULL?

 
Nahoru Odpovědět 10.10.2012 23:22
Avatar
TomBen
Redaktor
Avatar
Odpovídá na samo007
TomBen:

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
Redaktor
Avatar
Odpovídá na TomBen
samo007:

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
Redaktor
Avatar
Odpovídá na samo007
Kit:

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
Redaktor
Avatar
Odpovídá na Kit
samo007:

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

 
Nahoru Odpovědět 11.10.2012 10:33
Avatar
Kit
Redaktor
Avatar
Odpovídá na samo007
Kit:

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
Redaktor
Avatar
Odpovídá na Kit
samo007:

Jasné, ešte raz ďakujem

 
Nahoru Odpovědět 11.10.2012 11:30
Avatar
tomasd49
Redaktor
Avatar
Odpovídá na samo007
tomasd49:

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
Redaktor
Avatar
samo007:

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
Redaktor
Avatar
Odpovídá na tomasd49
TomBen:

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
Redaktor
Avatar
Odpovídá na TomBen
samo007:

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
Redaktor
Avatar
Odpovídá na samo007
TomBen:

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
Redaktor
Avatar
Odpovídá na TomBen
samo007:

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
Redaktor
Avatar
Odpovídá na samo007
TomBen:

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
Redaktor
Avatar
Odpovídá na TomBen
samo007:

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
Redaktor
Avatar
Odpovídá na samo007
TomBen:

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
Redaktor
Avatar
Odpovídá na TomBen
samo007:

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

 
Nahoru Odpovědět 13.10.2012 8:40
Avatar
TomBen
Redaktor
Avatar
Odpovídá na samo007
TomBen:

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
Redaktor
Avatar
samo007:

Ano. To vraj stojí cca 440$

 
Nahoru Odpovědět 13.10.2012 19:05
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na samo007
David Čápka:

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
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
samo007
Redaktor
Avatar
samo007:

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

 
Nahoru Odpovědět 13.10.2012 19:17
Avatar
TomBen
Redaktor
Avatar
Odpovídá na samo007
TomBen:

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
Redaktor
Avatar
Odpovídá na TomBen
samo007:

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
Redaktor
Avatar
Odpovídá na samo007
TomBen:

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
Redaktor
Avatar
Odpovídá na TomBen
samo007:

Á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
Redaktor
Avatar
Odpovídá na samo007
TomBen:

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
Redaktor
Avatar
Odpovídá na TomBen
samo007:

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.