Chci geek triko! Chci geek triko!
Extra 10 % bodů navíc a tričko zdarma při zadání kódu "TRIKO10"

Diskuze: Zjištění o jaký objekt se rovná

Ostatní jazyky GameMaker GameMaker Zjištění o jaký objekt se rovná

Aktivity (1)
Avatar
Jakub Kučera:20. srpna 18:24

*O jaký objekt se jedná :-?

Ahoj, zkouším si udělat jednu 2D multiplayerovou hru, mám tam aktuálně podporu 3 hráčů a zatím jen lobby.
No a nyní jsem narazil na problém, každá postava má barvu postavičky, kterou si vybere a v lobby je taková "měnička barvy", do které postava vleze a změní se jí barva pokaždé na jinou. No, podařilo se mi docílit toho, že postavičce barva uloží a ostatní postavy to vidí, ale nevím jak tam vybrat to, že změní jen té jedné postavičce, která v tom zrovna stojí. Protože aktuálně se ta barva změní všem, ale uloží se přes mplay jen té, co stojí vevnitř, takže ve výsledku se přebarví jen ta postava, co je vevnitř, ale ty další dvě probliknou jinou barvou a pak se jim hned vrátí přes mplay jejich původní barva.

Zkoušel jsem to dvěma způsoby s tím, že playerid je playerid - 1, protože se snažím označit objekt podle indexu který začíná 0, zato ID hráčů začíná 1.

instance_find(obj_player, playerid)
obj_player[playerid]

abych to pak použil ve smyslu obj_player[pla­yerid].color = c_white, prostě potřebuju změnit proměnou jen toho, co tam stojí a ne všech přes obj_player.color = c_white.

Je tu nějaká možnost jak toho docílit? Děkuju

Editováno 20. srpna 18:26
Odpovědět 20. srpna 18:24
Jakub Shean
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Jakub Kučera
TomBen:13. září 7:43

Pokud máš jeden druh objektu v místnosti (room) vícekrát, tak je GM rozlišuje číslem instance, které mu přiděluje automaticky. Jde o číslo větší než 100000 a je uloženo v zabudované proměnné id. Některé funkce, jako například zmíněná instance_find přímo vrací toto id, takže pokud to používáš takto, stačí:

(instance_find(obj_player, playerid)).color=c_white;

Pokud číslo instance znáš, můžeš psát rovnou:

(100001).color=c_white;

Myslím, že se ale vyplatí vytvořit prázdný objekt nazvaný například seznam_hracu, který si bude čísla hráčů ukládat a pak bude snazší hráče přidávat nebo odebírat. Navíc je můžeš mít od 1.
Např.:

player[1]=instance_create(x+10,y,obj_player);
player[2]=instance_create(x+20,y,obj_player);
player[3]=instance_create(x+30,y,obj_player);
...

player[1].color=c_white;
Nahoru Odpovědět 13. září 7: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.
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 2 zpráv z 2.