Vyber instanceie cez jej premennu

Pokud si nevíte s něčím rady ohledně tvorby v Game Makeru - pište sem!
Odpovědět
Uživatelský avatar
jjano
Příspěvky: 94
Registrován: srpen 6, 2011, 11:25 pm
Facebook: http://facebook.com/

Vyber instanceie cez jej premennu

Příspěvek od jjano » srpen 6, 2011, 11:45 pm

Zdravím všetkých zase.Zase mám malý problém s výberom instancie cez premennú. Veľmi ďakujem za minulé info ale zistil som že mi to moc nepomôže.
Skúšal som to už všeliako ale nič: uvediem príklad, bude to jednoduchšie: Chcem vytvoriť AI predatora utočiaceho na stádo gaziel, oviec alebo votrelcov to je jedno. Ide mi o to aby vyhladával najbližšiu instanciu, ktorá sa oddelila od stáda.
Viem že som spomínal že instance_nearest nechcem ale inak to asi nepôjd :lol: e. Pred tým pol problém totiž s tým, že to fungovalo dobre iba keď bola v roome iba jedna instancia s určitou premennou. Pre pripomenutie v stepe je:

Kód: Vybrat vše

pocet=instance_number(obj);
for (i=0; i<pocet; i+=1) {
q=instance_find(obj, i);
if (q.a==true) {
mp_potential_step_object(q.x,q.y,4,stena)
}
}
Ani som nevymyslel ako tam doplnit instance_nearest. Možno aj preto že cykly moc nepoužívam(ani som o nich donedávna nevedel)
Asi by to bolo dobré cez tie cykly a point_distance v "korysti" ale už vážne neviem :D
Takže vopred ďakujem za možné riešenia tohto (pre MŇA) malého problému
Berte ohľad, nemám maturitu v počítačovom odbore, ale v záhradníckom.

ObrázekObrázek Obrázek

Uživatelský avatar
Matt Samyel
Příspěvky: 133
Registrován: červen 22, 2011, 10:22 pm
Facebook: http://facebook.com/mSamyel

Re: Vyber instanceie cez jej premennu

Příspěvek od Matt Samyel » srpen 7, 2011, 7:00 am

pokud máš víc různejch objektů (nepleť si objekty a instance!), tak vytvoř objekt, kterej bude sloužit jako parent, nazvi ho třeba pt_korist a všem těm objektům nastav jako parent tenhle objekt pt_korist
kdyz pak napises instance_nearest(x,y,pt_korist), tak ti to vyhledá kterýkoliv z dětí parentu pt_korist bude nejblíž. Parenti se daj použít i na další podobný věci.

A pokud ne, tak nevim, v čem je problém.


:

Uživatelský avatar
jjano
Příspěvky: 94
Registrován: srpen 6, 2011, 11:25 pm
Facebook: http://facebook.com/

Re: Vyber instanceie cez jej premennu

Příspěvek od jjano » srpen 7, 2011, 10:35 am

Instancie a objekty si nemílim :D

Diki, parenty používam; toto ma nenapadlo ale aj tak mi to asi nepomôže :confu: pretože mi to vyhladá len najblyžšiu instanciu, ktorá má v parente... toho parenta. Ja to však potrebujem asi takto: Do premennej toho predátora sa bude ukladať instancia, ktorá sa oddialila od ostatných povedzme o 100pix(to by som urobil cez point_distance to nie je problém). Potrebujem len to ukladanie najbližšej oddelenej instancie do premennej predátora.
Naozaj diki nepísal by som tu také ... (Pred tým som sy myslel že ten kód dokážem prepísať-nech tú hru nerobí polovica fóra) Ale s týmto si naozaj neviem rady
PS:ked je nezrozumiteľná slovenčina tak se můžu pokusit psát čěsky ale půjde to stěží - a s veľmi veľa chybami
Naozaj dik
Berte ohľad, nemám maturitu v počítačovom odbore, ale v záhradníckom.

ObrázekObrázek Obrázek

Uživatelský avatar
Matt Samyel
Příspěvky: 133
Registrován: červen 22, 2011, 10:22 pm
Facebook: http://facebook.com/mSamyel

Re: Vyber instanceie cez jej premennu

Příspěvek od Matt Samyel » srpen 7, 2011, 12:02 pm

Tak ale řekni, co na tom nefunguje. A jak máš udělanej kód pro kontrolu oddálení se od stáda.

Uživatelský avatar
G-eM-6
Příspěvky: 121
Registrován: srpen 5, 2011, 10:58 pm

Re: Vyber instanceie cez jej premennu

Příspěvek od G-eM-6 » srpen 7, 2011, 12:46 pm

nwm jestli sem to uplne pochopil ale gm ma aji kod ktery najde nejvzdalenejsi instanci
edit: uz asik chapu co chces

Kód: Vybrat vše

a=9999;

for(i=0;i<=instance_number(par_);i+=1)
{

with(par_)
{
if point_distance(x,y,other.x,other.y)<other.a
 {
   other.ID[instance_number(par_)-i]=id; other.a=point_distance(x,y,other.x,other.y)
 }
}

}
tenhle kod ti zapise secky par_ do ID[...] nejblizsi je ID[0] pak je ID[1] atd atd
... psal sem to v poznamkovem bloku tk jestli jetam neaka chiba nebo neco spatne udelane tk me opravte

Uživatelský avatar
jjano
Příspěvky: 94
Registrován: srpen 6, 2011, 11:25 pm
Facebook: http://facebook.com/

Re: Vyber instanceie cez jej premennu

Příspěvek od jjano » srpen 7, 2011, 1:50 pm

Napíšem sem ako by som si to predstavoval aj ked to GM presne asi nepodporuje :confu:
a=(niečo v zmysle: instancie ktoré majú nejakú vlastnosť u mňa point_distance(x,y,povedzmeovca.x,ovca.y)< 100 to zrejme cez cykly, ale tie moc neviem používať(najviac by sa mi páčilo: instance_variable ale to blbosť :D
a potom
mp_potential_step_object(instance_nearest(x,y,a).x,instance_nearest(x,y,a),4,napríkladstena) ale to by som už niečo vymyslel.
Pardon za nezrozumiteľnosť a diki.
Berte ohľad, nemám maturitu v počítačovom odbore, ale v záhradníckom.

ObrázekObrázek Obrázek

Uživatelský avatar
jjano
Příspěvky: 94
Registrován: srpen 6, 2011, 11:25 pm
Facebook: http://facebook.com/

Re: Vyber instanceie cez jej premennu

Příspěvek od jjano » srpen 7, 2011, 2:11 pm

G-eM-6 píše:nwm jestli sem to uplne pochopil ale gm ma aji kod ktery najde nejvzdalenejsi instanci
edit: uz asik chapu co chces

Kód: Vybrat vše

a=9999;

for(i=0;i<=instance_number(par_);i+=1)
{

with(par_)
{
if point_distance(x,y,other.x,other.y)<other.a
 {
   other.ID[instance_number(par_)-i]=id; other.a=point_distance(x,y,other.x,other.y)
 }
}

}
tenhle kod ti zapise secky par_ do ID[...] nejblizsi je ID[0] pak je ID[1] atd atd
... psal sem to v poznamkovem bloku tk jestli jetam neaka chiba nebo neco spatne udelane tk me opravte

Keď som si ten kód ešte asi 7krát prečítal (a pochopil som ho) zistil som že mi pomôže ale ešte by som potreboval, aby to zapisovalo do id len tie instancie, ktoré majú povedzme a=true. Ale urobím to asi cez dva objekty- čiže keď sa ovca oddiali zmení sa na iný object s rovnakou AI a predátor pôjde za tým druhým objektom a ked sa ovca prilíži k stádu zmení sa späť a hotovo. Chcel som sa vyhnúť tým dvom objektom. Ale takto to bude asi aj jednoduchšie a nebude to ani tak brzdiť.

PS: zatial tú hru poriadne nerobím- iba plánujem a skúšam na "neostro" aby som za v strede výroby nezastavil nad niečim, čo by som potom nemusel vyriešiť

Takže diki všetkým čo mi pomohli. Určite využijem aj tie kódy čo ste písali . aspoň som sa naučil niečo nové. :D
Táto téma sa môže zamknúť
Berte ohľad, nemám maturitu v počítačovom odbore, ale v záhradníckom.

ObrázekObrázek Obrázek

Uživatelský avatar
G-eM-6
Příspěvky: 121
Registrován: srpen 5, 2011, 10:58 pm

Re: Vyber instanceie cez jej premennu

Příspěvek od G-eM-6 » srpen 7, 2011, 5:47 pm

v tom ojem scriptu jk je nahore ta promenna a tk toje "maximalni dohled scriptu" pokud tam das 100 tk ovce vzdalene 100 px ten script jakoby nevidi no ale potom bude asik problem s tim instance number :D

edit:

Kód: Vybrat vše

a=100;
for(i=0;i<=instance_number(par_);i+=1)
{ID[i]=0}

for(i=0;i<=instance_number(par_);i+=1)
{

with(par_)
{
if point_distance(x,y,other.x,other.y)<other.a
 {
   other.ID[i]=id; other.a=point_distance(x,y,other.x,other.y)
 }
}

}
ted tito bude brat ovce ktere sou v okruhu 100px a ta nejvzdalenejsi ovce je ID[0] a ta bliz ID[1] atd atd ...

Uživatelský avatar
jjano
Příspěvky: 94
Registrován: srpen 6, 2011, 11:25 pm
Facebook: http://facebook.com/

Re: Vyber instanceie cez jej premennu

Příspěvek od jjano » srpen 7, 2011, 8:58 pm

Diki toto sa mi (nie len mne) určite niekde zíde, ale už som to vyriešil cez tých viac objektov. Ale som si istý že použijem aj toto. - nech ten predátor neleze moc ďaleko :D Takže diki
Berte ohľad, nemám maturitu v počítačovom odbore, ale v záhradníckom.

ObrázekObrázek Obrázek

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 3 hosti