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.
Tvůrce
Zobrazeno 50 zpráv z 50.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
To je dost divný dotaz, jestli probíhá event zjistiš tak, že do něj prostě něco dáš, ne?
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.
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
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.
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 ...
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
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ě.
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...
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í:
( viz příspěvek od samo007 )
( kódově skoro totéž jen proměnná nemůže být typu bool )
( viz loapmail ..ta funkce může být přirozeně jakákoliv )
( víc práce, ale pak se s tím pracuje jako s jinými eventy )
S tým posledným eventom neviem pracovať. Je tu k tomu nejaký návod?
user event se volá jednoduše
event_user(číslo);
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á
Ok, len by sa mi na tu tému zišiel návod.
Ale ďakujem za odpoveď, už chápem o čo ide
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);
Na co chceš návod? Prostě si uděláš událost a tu voláš. To je celé.
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ů.
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ú?
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.
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.
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.
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.
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?
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.
To se mýlíš. Event Create se spouští jako první v okamžiku vytvoření objektu a chybu to neudělá.
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.
Hm, mě ne.
Asi tam chybu máš, ale není v tom, co jsi psal.
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.
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.
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?
Na to kolik času to ušetří je to dost levné a v mobilních aplikacích ty peníze určitě jsou.
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.
Tak to máš pravdu. Ako ale dať hry do predaja? Máš s tým nejaké skúsenosti?
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.
Á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.
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.
Zobrazeno 50 zpráv z 50.