NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!

Diskuze: Nefunkční with(other)

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

Aktivity
Avatar
Garrom Orc Shaman:28.3.2016 16:41

Ahoj všichni. nevíte kde mám chybu?
toto mám v kulce

if place_meeting(x,y,oTestDummy)
{
 with(other)
 {
   hp -= 1;
 }
 instance_destroy();
}

a toto v testovacím terči

hp = 30

a vždy mi to vyhodí toto

___________________________________________
FATAL ERROR in
action number 1
of  Step Event0
for object oBullet:

############################################################################################
VMError!! Occurred - Push :: Execution Error - Variable Get -6.hp(100019, 0)
 at gml_Object_oBullet_Step_0 (line 5) -    hp -= 1;
############################################################################################
Self Variables :
acc(100018) = 2.933133
Global Variables :
flame_pt(100010) = 0
ship_ps(100011) = 0
WSmoke_pt(100012) = 1

už nevím co dělat, vyzkoušel jsem snad všechno... prosím pomozte mi ;-(

Odpovědět
28.3.2016 16:41
Life for Code, Code for Life. I chose my path, I should stick on it.
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na Garrom Orc Shaman
TomBen:28.3.2016 18:49

Protože takhle to fungovat nemá.
other hledá proměnnou hp v objektu oBullet a tam zjevně není.
Musíš použít instance_place a konkrétní id.

Editováno 28.3.2016 18:49
Nahoru Odpovědět
28.3.2016 18: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
Odpovídá na TomBen
Garrom Orc Shaman:28.3.2016 19:18

To máš pravdu, proměnná hp je v oTestDummy což je vlastně terč 8x8 pixelů...

  • Otázka 1 : tak jak other funguje, já myslel že tělo other se provádí jako by byla část kódu v jiném objektu kde hp je.
  • Otázka 2 : Díval jsem se na dokumentaci a nemám tušení jak dostat z kolidujícího objektu id, mohl by jsi mi sem dát kousek kódu jako příklad... z příkladů se to vždy chápe lépe.

ps. Děkuji že se mi snažíš pomoct, ten problém mám už několik dní a myslel sem že mi z toho přeskočí... na druhou stranu jak jsem to pořád odkládal tak jsem v získaném čase udělal HUD :-D

Nahoru Odpovědět
28.3.2016 19:18
Life for Code, Code for Life. I chose my path, I should stick on it.
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na Garrom Orc Shaman
TomBen:28.3.2016 21:42

ad 1/ other lze použít jen v eventu Collision a uvnitř příkazu with. V prvním znamená kolidující instanci, ve druhém instanci uvnitř které with běží. Protože jsi použil with uvnitř Stepu, bere se automaticky jako other ten objekt, kterého Step to je.

ad 2/ No třeba tak:

var ids=instance_place(x,y,oTestDummy);
if ids!=noone { with(ids) { hp--; } instance_destroy(); }

PS: jde o příjemné rozptýlení, kdyby mě to otravovalo, nedělal bych to

Akceptované řešení
+20 Zkušeností
Řešení problému
Nahoru Odpovědět
28.3.2016 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
Odpovídá na TomBen
Garrom Orc Shaman:29.3.2016 13:01

Děkuji za vysvětlení, už to funguje... má práce bude zas o něco lepší .... A kdo se pak má divit že máš tolik bodů když jsi tady v gm nejlepší a pomáháš kde můžeš :-)

Nahoru Odpovědět
29.3.2016 13:01
Life for Code, Code for Life. I chose my path, I should stick on it.
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 5 zpráv z 5.