Diskuze: Proměnná náležící jiné instanci
V předchozím kvízu, Online test znalostí GameMakeru, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 20 zpráv z 20.
//= 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.
Dělá se to tečkovou konvencí.
Bez této znalosti se prakticky nedá programovat.
O tomhle vím, funguje mi to jen částečně:
Ukázka kódu:
Step Event pro medica
if instance_nearest(x,y,obj_vojak).poskozeni=1{
with(instance_nearest(x,y,obj_vojak)){
leceni=1;
}
}
Tahle část kódu mi nefunguje s tečkovou konvencí: with(instance_nearest(x,y,obj_vojak).poskozeni=1)
Podle testování to reaguje jen na nejbližsí instanci a zjišťuje to jen jestli to má proměnnou poskozeni nastavenou na 1, kde se tomu vojákovi nastaví leceni na hodnotu 1 a pokud je HP na max, tak se hodnota poskozeni nastavi na hodnotu 0. Další v řadě má hodnotu 1, ale nejbližší má hotnotu 0, ale o něj se to už nestará, protože to zřejmě stále čekuje tu nejbližší instanci...o to mi hlavně šlo. Zřejmě to asi jinak vyřešit nejde než jsem napsal výše.
Odpovídal jsem na hlavní dotaz, že tam máš hromadu dalších chyb, za to
nemůžu.
Píšeš toho hodně, ale ne ty podstatné věci. Pokud má medic léčit
všechny, tak proč tam máš instance_nearest? Neměl by spíš léčit
jednotky v určité vzdálenosti okolo něj?
Já tam žádný další chyby nemám, funguje mi to, jen jsem se snažil
najít nějaký lepší způsob. Předpokládal jsem, že ty tomu nějak
porozumíš, ale jak je vidět, tak ne. Řict, že tam mám hromadu chyb bez
žádného bližšího vyjádření, je taky dobrý .
Chtěl jsem aby ten medic léčil jednotky po jedné, od nejbližší po
nejvzdálenější a samozřejmě v určité vzdálenosti okolo něj. To co jsem
tam napsal je jen zkrácená verze kódu, těch podmínek je tam ve výsledku
víc.
Chyby nemusí být jen typu fatal_error. Že jsem to víc nerozvedl, má jednoduchý důvod: koukalo z toho dlouhé vysvětlování. V čase okolo půlnoci do takových věcí fakt nejdu. Pokud jsi se svým kódem spokojený, já s tím problém nemám.
V zásadě je tedy asi jádro pudla nalezeno. Zřejmě jde o to, že GM nemá vestavěnou funkci, která by našla druhou, třetí,...až N-tou nejbližší instanci.
Tvoje řešení problému není vůbec špatné. Instance change přirozeným způsobem vyřadí vojáky už nalezené z dalšího hledání. Může sice vadit, že s vyšším počtem různých typů jednotek by přibývaly objekty a projekt by se jimi mohl zaplavit k nepřehlednosti, ale s šikovným pojmenováváním, využitím dědičnosti by se potíže daly minimalizovat.
Samozřejmě existují další možnosti jak věc řešit. Každá má své
pro a proti. Je možné instance procházet cyklem with, který projde všechny
vojáky a podmínkou lze zjistit nejen vzdálenost od medika, ale taky potřebu
léčit.
Další možnost je aktivace a deaktivace instancí. Tím lze podobně jako s
instance_change dosáhnout vyřazení dříve nalezeného vojáka z dalšího
hledání. Jednoduše nalezeného deaktivuji a hledám znovu. Tím najdu
druhého nejbližšího. Opakováním dalšího. Pak je opět všechny aktivuji
a celé se to odbude dřív než bude potřeba vojáky vykreslit v Draw.
Mám vyzkoušený skript, který jednoduše vrátí seznam instancí seřazený
podle vzdálenosti,který je založený právě na principu deaktivace
instancí.
Kód léčení ale nemusí být nutně v medikovi. Za zvážení by stálo i to,
že by voják, který je zraněný by si našel nejbližšího medika ( pokud
existuje ) a nechal by se u něj léčit. Výsledek by byl stejný, jen kód by
byl ve vojákovi a nezraněné vojáky by nebylo třeba procházet
podmínkou.
Je samozřejmě možné, že existují i další alternativy, ale takhle na první dobrou mě už nic rozumného nenapadá. Obecně je ale lepší řešit na fóru jen situace, kdy něco vážně nejde nebo nefunguje. Dotazy typu "hele jak jsem to napsal, co vy na to?" vedou jasně ke zbytečným konfliktům.
I když to tak nevypadá, tak já opravdu oceňuji tvou pomoc, děláš to
zadarmo a za to dneska ani kuře nehrabe .
Přesně jak jsi psal, začíná už tam být hodně instancí, pro jeden tzv.
objekt a proto jsem se to snažil nějak vyřešit lepším způsobem(např. tam
mám vraha:
vrah_tvorba,vrah,vrah_neviditelny,vrah_poskozen,vrah_neviditelny_poskozen)
a to nemluvím o dělníkovi .
Pokud by jsi chtěl a byl jsi ochoten mohl bych ti poslat buď dosavadní
projekt nebo to pořešit, třeba telefonicky.
Obvykle bývá pro mě rychlejší napsat celé znovu, než ladit cizí kód. Nemám moc času a mám nějaké věci rozpracované, takže bych musel věřit, že zrovna tvůj projekt stojí za ten čas a práci. Šanci nemáš velkou, ale zkus mě přesvědčit.
Já to celý dělám jen pro zábavu a času taky nemám moc, když jsem celý den v práci a to na tom makám přes 2 měsíce. Rozhodně jsem nechtěl aby jsi za mě psal nebo ladil kód, stejně by jsi se v tom nevyznal, pokud bych ti nevysvětlil co co má dělat, ale spíš jen pohled a názor někoho kdo se v této oblasti pohybuje.
Tak si teď nejsem jistý, co si přesně představuješ, že řeknu, až uvidím, cos dva měsíce tvořil...
Raději nic.... Jsi mohl na rovinu napsat, že ti je to fuk. Každopádně dík za reakci na příspěvek.
Negativní reakci na svoje dílo bys neustál. Urazil jsi se při prvním náznaku.
Ty jsi to ani neviděl a už mi naznačuješ, že to stojí za nic, jsi neuvěřitelně domýšlivý. Už jsi mě zkritizoval v minulosti až, až a když se dívám na tvá díla tak nápad i grafika, jsou průměrné. Co je tak strašně zábavného na žábě co chytá mouchy nebo ryba co polyká koule, tak před rokem jsem naprogramoval obdobnou kravinku, kde ti roste kytka a ty jí bráníš před hmyzem(housenky,brouci,vosy), samozřejmě se obtížnost zvyšuje(asi 5kol). A taky to nevystavuji jako echt dílo.....
Vnucuješ mi svou vlastní představu. Bylo by mi milejší, kdyby sis nehonil ego a naopak postnul něco hotového ( jakkoli to není echt dílo ), co si respekt zaslouží. Fakt, že můj respekt není snadno získatelný, nesouvisí s tím, co jsem kde publikoval a co mě k tomu vedlo. Kdybych byl domýšlivý, našel bych partu řiťolezů a nechal si pochlebovat. Místo toho se dávám hloupě v šanc na fóru. To ti nejspíš uniklo.
To je vzájemné, ty mi zase vnucuješ svoji. Žádné ego si nehoním, chtěl jsem jenom pomoci s jednou věcí, případně se na to mrknout, objektivní kritiku, názor. Jako řeči typu, "máš tam hodně chyb, což není moje chyba", nebo "do toho nejdu","Šanci nemáš velkou, ale zkus mě přesvědčit","Negativní reakci na svoje dílo bys neustál", jsou fakt na místě a nevím kdo si honí ego. Rýpnul jsem trochu do tebe a koukejme jakou máš najednou vyřídilku. No to je fuk, už jsem tady skončil...
Ještě tady postnu nedokončený projekt(starý asi půl roku), města.... Aby jsi viděl jak jsem nic neumím....
Zatím ne, možná později, chybí mi u toho nápad a nedokázal jsem v té době když jsem to prgramoval vyřešit jeden problém, tohle byla jenom ukázka , nejdřív chci dokončit první verzi strategie, na kterém intenzivně pracuji. Ta strategie mi už funguje co se týče funkčnosti, až na nějaké detaily, ale potřebuji tam ještě dodělat rozhraní.....
Já jsem dřív spoustu věcí nechával nedokončených, ale po nějaké době jsem poznal, že je to vlastně na projektu ta nejdůležitější věc, tak se teď snažím dokončit všechno, co je v mých silách.
Zobrazeno 20 zpráv z 20.