2 registered members (AndrewAMD, ChrstphFr),
941
guests, and 4
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Haedshot mit extra Kopfentity!
#80408
07/05/06 07:49
07/05/06 07:49
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Hi Leute, hab´ne Frage zu einer Headshot Idee: Ich möchte ein Entity mit einem Attachscript an den Kopf meines Gegners "kleben", welches bei entsprechendem Treffer diesen Gegner killt. Bisher funktioniert das anhängen der Entety an den Gegner gut, nur kann ich sie nicht sensibel für Schüsse machen. Die Entity steht auf passable da sie sonst den Gegner stopt! Frage: Kann ich obwohl die Entity auf Passable steht, sie sensible für meine Template6 Waffen machen?
A8-Com-v 8.47.1
|
|
|
Re: Haedshot mit extra Kopfentity!
[Re: LordRathan]
#80410
07/05/06 09:09
07/05/06 09:09
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Danke für den Tip, klappt aber leider noch nicht so richtig, die Kugeln fliegen einfach durch! Muss noch ein bischen testen! Werde es heute abend weiter ausprobieren. Melde mich wenn ich genaueres weiss ..
A8-Com-v 8.47.1
|
|
|
Re: Haedshot mit extra Kopfentity!
[Re: LordRathan]
#80412
07/05/06 18:47
07/05/06 18:47
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Hi Lord, derzeit benutze ich leider noch die Template6 für die Waffen! Ich bin im Scripten noch Newbie und arbeite mich erst so langsam, mit Scripten die die Templates ergänzen, ein. Hier das Headshotscript soweit wie ich es hab: Code:
string Head_entity,<Head_entity.mdl>; //Definiert das eigene MDL-Model
function ent_headshot(); function entity_bewegen(); function headshotkill();
//------------------------------------------
function ent_headshot() { ent_create(Head_entity,nullvector,Entity_Bewegen); }
function entity_bewegen() { my.push = 10; my.passable = on; while(you) // Solange Hauptentity besteht Schleife ausgeführen { my.enable_shoot = on; //Wurde Entity getroffen? //my.enable_scan = on; my.event = headshotkill; my.invisible = off; vec_set(my.x,you.x); vec_set(my.pan,you.pan); my.frame = you.frame; // Koordinieren der Animationen my.next_frame = you.next_frame; // Koordinieren der Animationen wait(1); } ent_remove(my); // Löschen der Entity }
function headshotkill() { temp.pan = 360; temp.tilt = 180; temp.z = 200; //scan_entity(my.x, temp); //if ((result > 0) && (result < 200)) // detected an entity //{ BEEP(); you._health__003 -= 2000; //KILL!!! //} }
Die Funktion ent_headshot() wird von der Action der AIFPS01 aufgerufen. Das geht, der Typ rennt mit einem Würfel am Kopf rum, nur abschießen läßst sich das Ding nicht!
A8-Com-v 8.47.1
|
|
|
Re: Haedshot mit extra Kopfentity!
[Re: DexLoomer]
#80413
07/05/06 19:03
07/05/06 19:03
|
Joined: May 2002
Posts: 611 Germany => Bavaria => Unterfra...
LordRathan
User
|
User
Joined: May 2002
Posts: 611
Germany => Bavaria => Unterfra...
|
Achso, du verwendest die Templates. Mal sehen, ob ich da was zusammenbekomme. In diesem Fall brauchen wir wohl keinen Push-Wert. Code:
string Head_entity,<Head_entity.mdl>; //Definiert das eigene MDL-Model
function ent_headshot(); function entity_bewegen(); function headshotkill();
//------------------------------------------
function ent_headshot() { ent_create(Head_entity,nullvector,Entity_Bewegen); }
function entity_bewegen() { proc_late(); //Diese Funktion wird am Ende ausgeführt, nach der erstellenden Entity my.health = 1; //Pseudowert my.passable = on; //Passable, damit es nicht an der erstellenden Entity hängt my.enable_shoot = on; //Ich bin empfänglich für das Shoot-Event //my.enable_scan = on; my.event = headshotkill; //Falls ich von dem Shoot-Event getroffen werde, führe mein Event "headshotkill" aus my.invisible = off; //ich bin sichtbar while(my.health > 0) // Solange meine Gesundheit größer als 0 ist { vec_set(my.x,you.x); vec_set(my.pan,you.pan); my.frame = you.frame; // Koordinieren der Animationen my.next_frame = you.next_frame; // Koordinieren der Animationen wait(1); } ent_remove(my); // Löschen der Entity }
function headshotkill() { if(event_type == event_shoot) //Falls ich vom Shoot-Event getroffen wurde... { my.health -= damage; //...ziehe den Waffenschaden von meinem Leben ab } }
Das könnte helfen. Wir geben also dem Kopf einen Pseudolebenspunkt, damit wir eine Bedingung haben, um die While-Schleife beenden zu können. "my.enable_shoot = on;" muss nur einmal aufgerufen werden, dann ist es gültig, bis wir etwas anderes bestimmen. Es muss also nicht in die While-Schleife. Die While-Schleife führen wir solange aus, bis der Health-Wert des Kopfes <= 0 ist. Bei einem Lebenspunkt ist das schnell erreicht. Wenn du mehrere Treffer auf den Kopf zulassen möchtest, dann erhöhe einfach den Wert bei "my.health". Probier es mal aus und schreib, falls es nicht funktioniert. mfg Lordi
|
|
|
Re: Haedshot mit extra Kopfentity!
[Re: LordRathan]
#80414
07/05/06 20:59
07/05/06 20:59
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Hi Lord, sorry das es etwas gedauert hat. Leider funktioniert das Script noch nicht, die Box am Kopf lässt alle Schüsse durch! Hab´s überprüft, dass Script kommt nie bis zur headshotkill() Funktion! Was ich nicht verstehe, denn in meinem Level hab ich Beispielsweise auch Fässer mit einer anderen Action. Auf diese schiess ich mit den selben Waffen und sie fragt ebenfalls my.enable_shoot=on, um die Fässer zum explodieren zu bringen, und das klappt. Kann es daran liegen, dass die Head_entity erst durch Script erzeugt wird und nicht schon im Level steht?? PS: Die Zeile my.health-=damage; bezieht sich doch auf die Head_entity, oder? Darunter hab ich noch den Code eingefügt der dann den Gegner killen soll! Code:
string Head_entity,<Head_entity.mdl>; //Definiert das eigene MDL-Model
function ent_headshot(); function entity_bewegen(); function headshotkill();
//------------------------------------------
function ent_headshot() { ent_create(Head_entity,nullvector,Entity_Bewegen); }
function entity_bewegen() { proc_late(); //Diese Funktion wird am Ende ausgeführt, nach der erstellenden Entity my.health = 1; //Pseudowert my.passable = on; //Passable, damit es nicht an der erstellenden Entity hängt my.enable_shoot = on; //Ich bin empfänglich für das Shoot-Event //my.enable_scan = on; my.event = headshotkill; //Falls ich von dem Shoot-Event getroffen werde, führe mein Event "headshotkill" aus my.invisible = off; //ich bin sichtbar while(my.health > 0) // Solange meine Gesundheit größer als 0 ist { vec_set(my.x,you.x); vec_set(my.pan,you.pan); my.frame = you.frame; // Koordinieren der Animationen my.next_frame = you.next_frame; // Koordinieren der Animationen wait(1); } ent_remove(my); // Löschen der Entity }
function headshotkill() { if(event_type == event_shoot) //Falls ich vom Shoot-Event getroffen wurde... { my.health -= 100; //...ziehe den Waffenschaden von meinem Leben ab //Diese Zeilen brauche ich um den Gegner zu Killen!! temp.pan = 360; temp.tilt = 180; temp.z = 200; my.enable_scan = on; scan_entity(my.x, temp); if ((result > 0) && (result < 200)) // detected an entity { BEEP(); //Zur Kontrolle!! you._health__003 -= 2000; //Schaden am Gegner !!! } } }
A8-Com-v 8.47.1
|
|
|
Re: Haedshot mit extra Kopfentity!
[Re: DexLoomer]
#80415
07/06/06 04:00
07/06/06 04:00
|
Joined: May 2002
Posts: 611 Germany => Bavaria => Unterfra...
LordRathan
User
|
User
Joined: May 2002
Posts: 611
Germany => Bavaria => Unterfra...
|
Mir fällt da gerade noch auf, dass der you-Pointer eigentlich nicht auf den dazugehörigen Körper verweist. Das macht er IMO nur in dem Frame, in dem der Kopf erstellt wurde. Diese Funktion brauchen wir so nicht: Code:
function ent_headshot() { ent_create(Head_entity,nullvector,Entity_Bewegen); }
Statt dessen schreiben wir die ent_create-Zeile in die aiFPS01-Action und zwar vor der letzten Zeile: Code:
my.handle_ID = handle(my); //erstelle eine unique Nummer und speicher sie in Skill70 you = ent_create(Head_entity, my.x, Entity_Bewegen); //erstelle den Kopf und weise ihm den Pointer "You" zu you.handle_ID = my.handle_ID; //übergebe die unique Nummer an den erstellten Kopf
// Call the update loop AIFPS01_Guard_Update();
Die "handle_ID" definieren wir am Anfang des Skriptes. Code:
DEFINE handle_ID, skill70 //Skill70 könnte noch frei sein, ich kenne mich bei den Templates nicht so aus.
Jetzt modifizieren wir noch die "entity_bewegen"-Funktion Code:
function entity_bewegen() { proc_late(); //Diese Funktion wird am Ende ausgeführt, nach der erstellenden Entity my.health = 1; //Pseudowert my.passable = off; //Falls passable Objekte vom c_trace ignoriert werden (was, glaube ich, in den Templates der Fall ist) my.enable_shoot = on; //Ich bin empfänglich für das Shoot-Event //my.enable_scan = on; my.event = headshotkill; //Falls ich von dem Shoot-Event getroffen werde, führe mein Event "headshotkill" aus my.invisible = off; //ich bin sichtbar while(my.health > 0) // Solange meine Gesundheit größer als 0 ist { you = ptr_for_handle(my.handle_ID); // Wir ordnen dem You-Pointer das entsprechende Parent-Modell zu vec_set(my.x,you.x); vec_set(my.pan,you.pan); my.frame = you.frame; // Koordinieren der Animationen my.next_frame = you.next_frame; // Koordinieren der Animationen wait(1); } ent_remove(my); // Löschen der Entity }
Versuche es mal mit diesen Änderungen. Ich glaube, dass das Passable-Flag daran schuld war, dass es nicht ging. Bevor du die ganzen Handle-Änderungen durchführst kannst du ja mal versuchen nur das Passable-Flag der Head-Entity auf "off" zu stellen.
Last edited by LordRathan; 07/06/06 04:38.
|
|
|
Re: Haedshot mit extra Kopfentity!
[Re: LordRathan]
#80416
07/06/06 17:46
07/06/06 17:46
|
Joined: Jan 2006
Posts: 168 Germany, Hannover
DexLoomer
OP
Member
|
OP
Member
Joined: Jan 2006
Posts: 168
Germany, Hannover
|
Hi, hab gerade die erst die Änderungen ausprobiert. (Ich komme immer erst abends nach der Arbeit an meinen Rechner!) Leider bekomme ich einige Errors .. 1. Im AIFPS01-Script muss ich zusätzlich noch den String string Head_entity,<Head_entity.mdl>; angeben, der unten benutzt wird. Ist erledigt! 2. Ich bekomme noch die Fehlermeldung "Parameter unknown entity_bewegen" aus der Zeile you=ent_create(Head_entity,my.x,entity_bewegen); Hab ich noch nicht gelöst. Das bezieht sich doch auf die Funktion aus dem Headshotscript. Kann man von dem AIFPS01 nicht auf Funktionen des Headshotscrips zugreifen? Ausserdem habe ich zuvor mit verschiedenen Passable-Einstellungen getestet. Aber ohne Erfolg! Soweit bin ich ersteinmal
A8-Com-v 8.47.1
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|