Gamestudio Links
Zorro Links
Newest Posts
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
Help with plotting multiple ZigZag
by degenerate_762. 04/30/24 23:23
M1 Oversampling
by 11honza11. 04/30/24 08:16
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (AndrewAMD, ChrstphFr), 941 guests, and 4 spiders.
Key: Admin, Global Mod, Mod
Newest Members
firatv, wandaluciaia, Mega_Rod, EternallyCurious, howardR
19050 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Haedshot mit extra Kopfentity! #80408
07/05/06 07:49
07/05/06 07:49
Joined: Jan 2006
Posts: 168
Germany, Hannover
DexLoomer Offline OP
Member
DexLoomer  Offline 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: DexLoomer] #80409
07/05/06 08:15
07/05/06 08:15
Joined: May 2002
Posts: 611
Germany => Bavaria => Unterfra...
LordRathan Offline
User
LordRathan  Offline
User

Joined: May 2002
Posts: 611
Germany => Bavaria => Unterfra...
Verwende Push-Werte. Der Kopf hat einen niedrigeren Push-Wert als der Körper, die Kugel hingegen verwendet keinen Push. Damit könnte es gehen.

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 Offline OP
Member
DexLoomer  Offline 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: DexLoomer] #80411
07/05/06 09:52
07/05/06 09:52
Joined: May 2002
Posts: 611
Germany => Bavaria => Unterfra...
LordRathan Offline
User
LordRathan  Offline
User

Joined: May 2002
Posts: 611
Germany => Bavaria => Unterfra...
Wie bewegst du die Kugeln? Falls mit c_move solltest du noch den Parameter "ignore_push" verwenden und den Kugeln einen höheren Push-Wert zuweisen, als Kopf und Körper haben.

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 Offline OP
Member
DexLoomer  Offline 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 Offline
User
LordRathan  Offline
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 Offline OP
Member
DexLoomer  Offline 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 Offline
User
LordRathan  Offline
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 Offline OP
Member
DexLoomer  Offline 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
Re: Haedshot mit extra Kopfentity! [Re: DexLoomer] #80417
07/06/06 18:20
07/06/06 18:20
Joined: May 2002
Posts: 611
Germany => Bavaria => Unterfra...
LordRathan Offline
User
LordRathan  Offline
User

Joined: May 2002
Posts: 611
Germany => Bavaria => Unterfra...
Hmhm, schreib mal am Anfang deines Scripts "function entity_bewegen();". Damit definierst du diese Funktion als Prototyp und sie ist bekannt.

Page 1 of 2 1 2

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