Gamestudio Links
Zorro Links
Newest Posts
Free Live Data for Zorro with Paper Trading?
by AbrahamR. 05/18/24 13:28
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (AbrahamR), 717 guests, and 4 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 2 of 3 1 2 3
Re: schau doch, ich steh neben dir! [Re: Otter] #309841
02/11/10 15:32
02/11/10 15:32
Joined: Feb 2010
Posts: 482
in deinem Kopf
Otter Offline OP
Senior Member
Otter  Offline OP
Senior Member

Joined: Feb 2010
Posts: 482
in deinem Kopf
Hab jetzt herumexperimentiert und habs hingekriegt. ... also mehr oder weniger. Jetzt hab ich nähmlich ein neues problem und zwar:

meine entitys (nennen wir sie A-Panzer) finden jetzt das näheste feindliche entity (B-Panzer). Das problem ist nur das nicht immer B-Panzer das näheste ist und der A-Panzer deshalb gar nichts mehr macht, bis der B-Panzer wieder das näheste ist. Also hab ich beim Scan vom A-Panzer IGNORE_FLAG2 gesetzt und allen A-Panzern FLAG2 gegeben. Soweit so gut, aber was mach ich jetzt mit den B-Panzern? Es gibt nur IGNORE_FLAG2 und wen ich das bei dennen setzte ignoriert sich jeder gegenseitig und das währe ja noch langweiliger....

Ich denke ent_next könnte mein problem lösen, aber ich blick da nicht ganz durch. Hab ihr vielleicht ein beispiel für mich, das mir hiebei weiterhilft?

zum besseren verständnis hab ich hier meinen code für den A-Panzer reingetan. Das für den B-Panzer sieht gleich aus nur halt ohne FLAG2 zeilen und Skill10 = 1:
Click to reveal..
function team2()
{
var bullet_offset;
my.FLAG2 = on;
c_setminmax(me);
my.Skill10 = 2;
while (1)
{
c_scan(my.x, my.pan, vector(360, 180, 2000), IGNORE_ME | IGNORE_FLAG2 | SCAN_ENTS);
if (you.skill10 == 1)
{
if (vec_dist (my.x, you.x) < 1000)
{
vec_set (temp.x, you.x);
vec_sub (temp.x, my.x);
vec_to_angle (my.pan, temp);
bullet_offset.x = 100;
bullet_offset.y = 0;
bullet_offset.z = 0;
vec_rotate (bullet_offset, my.pan);
vec_add (bullet_offset.x, my.x);
ent_create (rocket_mdl, bullet_offset.x, shoot_move);
wait(-2);
}
}
else
{
you = ent_next(null);
}
wait(1);
}
}


hoffe auf baldige antwort. Bin schon ganz zittrig, will endlich weitermachen ...O_o

Last edited by Otter; 02/11/10 15:34.

Be my UBB-Buddy, without any reason!
Re: schau doch, ich steh neben dir! [Re: Otter] #309863
02/11/10 17:47
02/11/10 17:47
Joined: Mar 2007
Posts: 112
MikeS Offline
Member
MikeS  Offline
Member

Joined: Mar 2007
Posts: 112
hmm, was du machen könntest:

du könntest hingehen und in deinen code ne ent next you schleife einbauen, die, sobald du den scancode ausführst durch alle entities schaltet, und bei denen mit skill 10 == 1 (also gleichem skill 10 wie die scan ausführende entity) das flag 2 setzt. und nachdem der scan durchgeführt wurde,machst du das gleiche nochmal, entferrnst aber den flag 2 wieder. damit kann sowohl panzer gruppe a als auch panzer gruppe b sich selber beim scann ignorieren.

vielleicht hilfts dir weiter.

ne entsprechende ent next you schleife steht im manuel.

gruß

Mike

Re: schau doch, ich steh neben dir! [Re: Otter] #310463
02/14/10 22:06
02/14/10 22:06
Joined: Feb 2010
Posts: 482
in deinem Kopf
Otter Offline OP
Senior Member
Otter  Offline OP
Senior Member

Joined: Feb 2010
Posts: 482
in deinem Kopf
Sorry das ich nochmal deswegen frage, aber ich blick nicht ganz durch mit dem ent_next.
Im Manuel-beispiel wird jedes objekt im level der reihe nach durchgegangen und auf invisible geschaltet,
aber wie kann ich von einem objekt auf das nächste im scanbereich umschalten und so prüfen ob es die richtige skill hat?

Ein kleines beispiel würde mir wirklich weiterhelfen.
Danke schonmal im vorraus.


Be my UBB-Buddy, without any reason!
Re: schau doch, ich steh neben dir! [Re: Otter] #310475
02/14/10 22:59
02/14/10 22:59
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Ich würde nicht ent_next und c_scan in Kombination verwenden, das verkompliziert die Sache unnötig.

Ich bin mir nicht ganz sicher, ob ich Dich richtig verstanden habe, aber damit der naheste Gegner neu gewählt wird, weil z.B. mittlerweile ein anderer Gegner viel näher gekommen ist als der andere musst Du nur nochmal den Scan ausführen, damit der nunmehr naheste Gegner ausgewählt wird.

Re: schau doch, ich steh neben dir! [Re: Otter] #310488
02/15/10 01:27
02/15/10 01:27
Joined: Feb 2010
Posts: 482
in deinem Kopf
Otter Offline OP
Senior Member
Otter  Offline OP
Senior Member

Joined: Feb 2010
Posts: 482
in deinem Kopf
wirf einen blick auf die oberste post auf dieser seite, da steht ziemlich genau was mein problem ist.
Im endeffekt sollen die panzer nur die nähesten feindlichen panzer im scan anschauen und verbündete ignorieren
(auf feindlicherseite das gleiche)
, das währe alles. smirk


Be my UBB-Buddy, without any reason!
Re: schau doch, ich steh neben dir! [Re: Otter] #310495
02/15/10 02:39
02/15/10 02:39
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Entschuldige, dass ich nicht jedesmal wieder den ganzen Thread durchlese oder Dein Problem neben den anderen Sachen mit denen ich mich sonst noch beschäftige komplett präsent habe.

Und nichtsdestotrotz gilt weiterhin mein Ratschlag, nicht c_scan und ent_next miteinander zu kombinieren, das eine hilft Dir beim anderen nicht weiter.

Entschuldige auch, dass ich Dein Code-Beispiel nicht genau genug angeschaut hatte, denn dann hätte ich Dir sagen können, dass Du ent_next nicht einmal wirklich angewendet hast.

Und entschuldige, dass ich nicht mehr in Erinnerung hatte, dass ich dir nicht den Vorschlag gepostet hatte, jeder Entity eine ID in einem bestimmten Skill zuzuweisen, sondern das in diesem Thread getan hatte, wo Du gern nochmal nachlesen kannst, wie man mit ent_next und Identitäten von Entities arbeitet:

http://www.opserver.de/ubb7/ubbthreads.php?ubb=showflat&Main=38109&Number=309622#Post309622



Last edited by Pappenheimer; 02/15/10 02:39.
Re: schau doch, ich steh neben dir! [Re: Pappenheimer] #310534
02/15/10 11:05
02/15/10 11:05
Joined: Mar 2007
Posts: 112
MikeS Offline
Member
MikeS  Offline
Member

Joined: Mar 2007
Posts: 112
Ok, das mit ent next wurde von mir angebracht, damit du dein flag 2 setzten und wieder entfernen kannst, damit du den c_scan für beide gruppen von fahrzeugen nutzen kannst.

also z.b.so: (dummy code)

function scan nearest enemy

you = entnext(null)

while (1)

if (you.skillxx == my.skillxx)
your.flag2 = on;
you = entnext(you)
wait(1)

SCANCODE FÜR C_SCAN

while (1)

if (you.skillxx == my.skillxx)
your.flag2 = off;
you = entnext(you)
wait(1)


die while bedingung must noch selber festlegen, damit das nicht ständig läuft,

die idee dahinter ist jetzt folgende:

rufe die funktion auf, setzte auf allen entities, die meine freunde sind den flag 2,

führe den scan aus, der flag 2 ignoriert,

entferne den flag 2 von allen befreundeten entities, damit der gegner diesen scan auch ausführen kann.

Hoffe das hilft dir

Gruß

MIke

Re: schau doch, ich steh neben dir! [Re: MikeS] #310607
02/15/10 21:34
02/15/10 21:34
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Korrigier mich, wenn ich falsch liege, aber mit "you = ent_next(you);" rufst Du die Entity auf, die in der Liste der Engine steht, unabhängig davon, ob sie im Scanbereich liegt oder nicht, und damit hast Du das Scannen bereits überflüssig gemacht. Dann ist sparender, wenn Du direkt die Liste der Entities durchgehst, und immer, wenn er die Id des Gegners hat (z.B: die Roten haben die Id 1 und die Blauen die Id 2), dann vergleichst Du den Abstand.

Den Vergleich des Abstandes nimmst Du über eine Variable vor, die Du jeweils am Anfang jedes Durchgangs auf einen hohen Wert setzt. Wenn Du dann über ent_next einen Gegner gefunden hast, vergleichst Du seinen Abstand zu dem hohen abstand. Wenn er niedriger ist, wird der Abstand in die Variable kopiert und ist von nun an der Richtwert. Von dem gefundenen Gegner speicherst Du den Handle in einem Skill Deiner Entity.
Dann gehst in der Liste weiter, triffst Du wieder auf einen Gegner, vergleichst Du wieder dessen Abstand mit dem in der Variablen gespeicherten Wert, ist er niedriger, dann ersetzt Du den im Skill gespeicherten Handle durch den Handle dieses Gegners und so weiter.
Das findet in der Schleife "while(you != NULL)" statt.
Wird you == NULL, wird die Schleife verlassen.
Und im Skill ist der Handle des Gegners mit dem geringsten Abstand übrig geblieben,den Du nun über ptr_for_handle "ins Visier nehmen" kannst.

Re: schau doch, ich steh neben dir! [Re: Pappenheimer] #310716
02/16/10 17:20
02/16/10 17:20
Joined: Jul 2009
Posts: 16
E
episch Offline
Newbie
episch  Offline
Newbie
E

Joined: Jul 2009
Posts: 16
Code:
function PanzerBGefunden;()
{
	if(event_type == EVENT_SCAN)
	{	
		if(you.panzerBPointer == NULL)
		{
	
		if(you.skill10  == 1)
		{
		you.panzerBPointer = handle(me);
		}
		} else
		{
		if(you.skill10 == 1 && you.PanzerBPointer != 0)
{
ENTITY *PanzerB = ptr_for_handle(you.PanzerBPointer);       
if(vec_dist(my.x,you.x) < vec_dist(panzerB.x,you.x)) 
{
you.PanzerBPointer = handle(me);
							

}		
}
}
}			


action go_panzerB()
{
	set (my,POLYGON);
	my.emask |= ENABLE_SCAN;
        my.event = PanzerBGefunden;


}

action go_panzerA()
{
my.PanzerBPointer = 0;
while(1)
{
c_scan(my.x,my.pan,vector(360,0,1000),IGNORE_ME|IGNORE_PASSABLE|SCAN_ENTS);
if(my.PanzerBPointer != 0)
{
ENTITY feindlicherPanzer = ptr_for_handle(my.PanzerBPointer);
und dan kanste hier die vec_for_angle anweisungen reinpacken
}
}
}



hier ist der code für PanzerB. der Panzer übergibt an den you Pointer,also der SCANENDE panzer seinen Pointer.und speicher den Pointer in einem skill. in diesem Fall
den skill PanzerBPointer, den du in deiner header datei oder sonst wo mit #define PanzerBPointer skill[xx] definiert hast.dan kanst du dan die distanz auch ganz bequem auslesen und den Panzer drehen.

das gleiche kanst du jetzt au mit dem PanzerA machen.

ich hoffe ich konnte die so helfen.
ich hoffe jetzt einfach mal das ich nix mit den klammern verpeilt habe.;)

Last edited by episch; 02/16/10 17:26.
Re: schau doch, ich steh neben dir! [Re: Otter] #310758
02/16/10 20:14
02/16/10 20:14
Joined: Feb 2010
Posts: 482
in deinem Kopf
Otter Offline OP
Senior Member
Otter  Offline OP
Senior Member

Joined: Feb 2010
Posts: 482
in deinem Kopf
Danke für die vielen hilfreichen antworten! wink
Ich werde jetzt einige zeit brauchen bis ich das alles richtig verstanden hab (hab noch viel zu lernen). frown
Falls noch jemand hilfreiche scripte oder tutorials kennt, soll er sich melden.
Danke nochmals

gruß
Die Otter


Be my UBB-Buddy, without any reason!
Page 2 of 3 1 2 3

Gamestudio download | chip programmers | Zorro platform | shop | Data Protection Policy

oP group Germany GmbH | Birkenstr. 25-27 | 63549 Ronneburg / Germany | info (at) opgroup.de

Powered by UBB.threads™ PHP Forum Software 7.7.1