|
|
Re: c_trace question...
[Re: Martek]
#165169
11/05/07 14:34
11/05/07 14:34
|
Joined: Mar 2002
Posts: 1,774 Magdeburg
FlorianP
Serious User
|
Serious User
Joined: Mar 2002
Posts: 1,774
Magdeburg
|
Code:
c_scan(my.x, my.pan, vector(120,0,my.scan_dist), ignore_me + scan_limit); if(result != 0 && you != null) { c_trace(my.x, you.x, ignore_me + ignore_you); if(you.hiding == 1 && !trace_hit) { if(result < 75) { my.behind_hide = 1; } vec_set(temp, target.x); vec_sub(temp, my.x); vec_to_angle(my.pan, temp); my.tilt = 0; my.roll = 0; c_move(me, vector(10*time_step,0,0), nullvector, ignore_passable); ent_animate(me, "walk", my.skill51, anm_cycle); my.skill51 += 20 * time_step; my.skill51 %= 100; } } Das sollte das Problem beheben, das du beschrieben hast. Bei anderen Problemen bitte genau beschreiben.
Last edited by FlorianP; 11/05/07 14:36.
I <3 LINQ
|
|
|
Re: c_trace question...
[Re: Martek]
#165170
11/05/07 14:36
11/05/07 14:36
|
Joined: Mar 2002
Posts: 1,774 Magdeburg
FlorianP
Serious User
|
Serious User
Joined: Mar 2002
Posts: 1,774
Magdeburg
|
Code:
c_scan(my.x, my.pan, vector(120,0,my.scan_dist), ignore_me + scan_limit); if(result != 0 && you != null) { c_trace(my.x, you.x, ignore_me + ignore_you); if(you.hiding == 1 && !trace_hit) { if(result < 75) { my.behind_hide = 1; } vec_set(temp, target.x); vec_sub(temp, my.x); vec_to_angle(my.pan, temp); my.tilt = 0; my.roll = 0; c_move(me, vector(10*time_step,0,0), nullvector, ignore_passable); ent_animate(me, "walk", my.skill51, anm_cycle); my.skill51 += 20 * time_step; my.skill51 %= 100; } } Das sollte das Problem beheben, dass du beschrieben hast. Bei anderen Problemen bitte genau beschreiben.
I <3 LINQ
|
|
|
Re: c_trace question...
[Re: Martek]
#165171
11/05/07 16:17
11/05/07 16:17
|
Joined: Jul 2007
Posts: 959 nl
flits
User
|
User
Joined: Jul 2007
Posts: 959
nl
|
i downloaded it and i see you have a7 but i dont have it i cant take a view inside your wed and everything ooks moving strange
"empty"
|
|
|
Re: c_trace question...
[Re: FlorianP]
#165172
11/05/07 17:50
11/05/07 17:50
|
Joined: Jul 2007
Posts: 288 Germany, NRW
Martek
OP
Member
|
OP
Member
Joined: Jul 2007
Posts: 288
Germany, NRW
|
Also, der Code funktioniert leider nicht. Ich geb jetzt nochmal ne ganz deutliche Beschreibung ab mit Bild:  Wie sie sehen, bewegt sich der KI auf den Gegenstand hinter der WAnd zu. Ich möchte jetzt, dass er alle Gegenstnände ignoriert. Mein Problem ist jetzt das der Ki nach dem ersten Fehlversuch, also die Box hinter der Wand, wieder die Box hinter der Wand. Ich möchte jetzt, das der KI alle Gegenstände, die er Gefunden hat und die er nicht erreicht, irgendwo speichert, so das er sie bei dem nächsten Scan ignoriert, bis er den passenden Gegenstand gefunden hat, also den, der am nächsten ist und der erreichbar is. Ich hoffe es ist jetzt deutlich genug, Pingulord
3D Gamestudio A7 Extra
|
|
|
Re: c_trace question...
[Re: Martek]
#165173
11/05/07 18:24
11/05/07 18:24
|
Joined: Jul 2007
Posts: 959 nl
flits
User
|
User
Joined: Jul 2007
Posts: 959
nl
|
i made my own test lvl white your code and models and changed it a litle so i did get it to work it isnt finshed yet but there is the beginging Code:
action soldier_path { var dis; var temp2; var temp3; my.scan_dist = 10000000; my.behind_hide = 0; c_updatehull(my,1); //my.polygon = on; while(my!=null) { vec_set(temp, my.x); temp.z = -1000; dis = c_trace(my.x, temp, ignore_me); if(dis > -1000) { c_move(my, nullvector,vector(0,0,-5 * time_step), glide); } if(my.behind_hide == 0) { temp3 = c_scan(my.x, my.pan, vector(120,0,my.scan_dist), ignore_me + scan_limit); if(you != null) { if(result < 25) { my.behind_hide = 1; } vec_set(temp, target.x); vec_sub(temp, my.x); vec_to_angle(my.pan, temp); my.tilt = 0; my.roll = 0; temp2 = you; c_trace(my.x,you.x,ignore_me); you = temp2; if(vec_dist(you.x,target.x)<temp3) { my.pan +=90; } c_move(my, vector(10*time_step,0,0), nullvector, glide+ ignore_passable); ent_animate(me, "walk", my.skill51, anm_cycle); my.skill51 += 15 * time_step; my.skill51 %= 100; camera.z = 200; } else { my.pan+=45; c_move(my, vector(10*time_step,0,0), nullvector, glide+ ignore_passable); ent_animate(me, "walk", my.skill51, anm_cycle); my.skill51 += 15 * time_step; my.skill51 %= 100; } } if(my.behind_hide == 1) { ent_animate(me, "duck", my.skill51, anm_cycle); my.skill53 += 8*time_step; my.skill53 %= 100; } wait(1); } }
"empty"
|
|
|
Re: c_trace question...
[Re: flits]
#165174
11/05/07 19:41
11/05/07 19:41
|
Joined: Mar 2002
Posts: 1,774 Magdeburg
FlorianP
Serious User
|
Serious User
Joined: Mar 2002
Posts: 1,774
Magdeburg
|
du musst event_scan setzen und dann kannst du in der Event-function vom Player alle gefundenen Objekte durchlaufen und prüfen ob sie erreichbar sind - wenn ja wird ein Playerskill auf die Distanz gesetzt, bzw wenn er kleiner ist als die alte Distanz, ebenfalls aktualisiert. Dann z.B. Handle auf das Versteck in den Playerskills speichern So kannst du nach c_scan schauen, ob das Event ein Versteck gefunden hat, dass erreichbar ist und kannst darauf hinbewegen.
I <3 LINQ
|
|
|
Re: c_trace question...
[Re: FlorianP]
#165175
11/07/07 19:01
11/07/07 19:01
|
Joined: Jul 2007
Posts: 288 Germany, NRW
Martek
OP
Member
|
OP
Member
Joined: Jul 2007
Posts: 288
Germany, NRW
|
Hey, danke FlorianP. Ich habe es jetzt hinbekommen. Klappte alles so wie du es gesagt hast. Jetzt kenn ich mich auch mit handle aus  . Muss meinen Code jetzt noch etwas verfeinern, aber im großen und ganzen klappt es. Auch an alle anderen danke, das ihr mir so viel geholfen habt. Mfg, Pingulord
3D Gamestudio A7 Extra
|
|
|
|