Diskuze: Nefunkční with(other)

Ostatní jazyky GameMaker GameMaker Nefunkční with(other)

Avatar
Garrom Orc Shaman:

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. března 16:41
We're orcs, maybe we are not always wise or beautiful, but we will always be strong, outnumbered and well armed
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Garrom Orc Shaman
TomBen:

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. března 18:49
Nahoru Odpovědět 28. března 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:

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. března 19:18
We're orcs, maybe we are not always wise or beautiful, but we will always be strong, outnumbered and well armed
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Garrom Orc Shaman
TomBen:

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. března 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:

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. března 13:01
We're orcs, maybe we are not always wise or beautiful, but we will always be strong, outnumbered and well armed
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.