1 registered members (AndrewAMD),
609
guests, and 3
spiders. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Re: Will Tür aufmachen, wenn ich sie "sehe"?EVENT_SHOOT?
[Re: CocaCola]
#438859
03/22/14 16:34
03/22/14 16:34
|
Joined: Jul 2008
Posts: 2,107 Germany
rayp
X
|
X
Joined: Jul 2008
Posts: 2,107
Germany
|
Ich hab das eben mal verfasst aber nicht getestet, es ist der c_trace-Aufruf. Er lasert nach vorne, in die Richtung in die der Player bzw. die Cam blickt, in einer per "range" definierten Reichweite. Erfasst er eine Tür ( per my.id = a_door markiert ) würde er dann Deine Tür - Öffnungs - function / void aufrufen. Hilft Dir das? ^^
#define id skill100
#define a_door 1000
action Door_WED(){ // gib diese Aktion einer Tuer in WED ( oder per ent_create )
set (my, POLYGON);
my.id = a_door;
...
..
.
}
void interact_with_doors(){
var range = 50;
VECTOR tpos;
vec_for_angle (tpos, vector (camera.pan, camera.tilt, camera.roll));
vec_scale (tpos, range);
vec_add (tpos, vector (camera.x,camera.y,camera.z));
trace_mode = IGNORE_ME | IGNORE_PASSABLE | USE_POLYGON | SCAN_TEXTURE | IGNORE_SPRITES;
c_ignore (1, 0);
c_trace (vector (camera.x, camera.y, camera.z), tpos, trace_mode);
draw_point3d (target.x, vector (50,50,255), 100, 3); // debug
if (HIT_TARGET) if (you) if (you.id == a_door){
// Tuer gefunden! Ruf hier Deine TuerOeffnungs function / void auf
}
}
action HeroOrPlayer(){
my.group = 1; // Beim tracen ignorierte Gruppe
while (1){
...
..
.
if (key_space) interact_with_doors(); // Leertaste? dann Tracen!
wait (1);
}
}
Bedenke bitte, falls das alles mal klappt, das Du die function, die die Tür dann öffnet ( z.B. ne Schleife die my.pan addiert oder sowas ) gegen doppeltes Starten / aufrufen absichern solltest. Sowas wie z.B.
#define moving skill99
...
...
.
{
if (my.moving) return; // bewege mich bereits, abbrechen
my.moving = 1; // beginne mich zu bewegen
while (my){
c_rotate (me, vector(5*time_step, 0, 0), IGNORE_ME|IGNORE_PASSABLE);
wait (1);
}
my.moving = 0; // fertig mit bewegen
}
Acknex umgibt uns...zwischen Dir, mir, dem Stein dort... "Hey Griswold ... where u gonna put a tree that big ?" 1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected rayp.flags |= UNTOUCHABLE;
|
|
|
Re: Will Tür aufmachen, wenn ich sie "sehe"?EVENT_SHOOT?
[Re: CocaCola]
#438862
03/22/14 17:00
03/22/14 17:00
|
Joined: Mar 2014
Posts: 359
CocaCola
OP
Senior Member
|
OP
Senior Member
Joined: Mar 2014
Posts: 359
|
JAU! DANKE! Ich musste nur noch hinter sätzen aber es funktioniert Besten dank! nur kann ich leider immer noch nicht selbst ständig sowas coden besonders HIT_TARGET wird ja im HB nicht so ausfürlich erklärt.. und noch mal sorry wegen am Anfang ich brauchte erst ein Paar TAGE um es überhaupt lesen zu können
|
|
|
Re: Will Tür aufmachen, wenn ich sie "sehe"?EVENT_SHOOT?
[Re: CocaCola]
#438863
03/22/14 17:01
03/22/14 17:01
|
Joined: Jul 2008
Posts: 2,107 Germany
rayp
X
|
X
Joined: Jul 2008
Posts: 2,107
Germany
|
Ja mist sry, habs grad auch gemerkt und oben für weitere Leser ergänzt. ^^ Kein Ding, gerne wieder! ( Aber das was nun da steht, ist so ziemlich das selbe wie aus meinem C-Trace-Beispiel Link ) Viel Spaß noch.
Acknex umgibt uns...zwischen Dir, mir, dem Stein dort... "Hey Griswold ... where u gonna put a tree that big ?" 1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected rayp.flags |= UNTOUCHABLE;
|
|
|
Re: Will Tür aufmachen, wenn ich sie "sehe"?EVENT_SHOOT?
[Re: CocaCola]
#438864
03/22/14 17:13
03/22/14 17:13
|
Joined: Mar 2014
Posts: 359
CocaCola
OP
Senior Member
|
OP
Senior Member
Joined: Mar 2014
Posts: 359
|
Ja kannte ich auch schon aber ist neu daruf wäre ich nie gekommen. und ich mache eine Schiebe Tür Wenn das enity eine andere id ha brauch ich doch nur
if (HIT_TARGET) if (you) if (you.id == a_door){
...// Tuer gefunden! Ruf hier Deine TuerOeffnungs function / void auf
}
if (HIT_TARGET) if (you) if (you.id == b_door){
...// Tuer gefunden! Ruf hier Deine TuerOeffnungs function / void auf
}
.
.
.
schreiben, oder?z.B wenn b_door einen dialog startet
Last edited by rayp; 03/22/14 17:52. Reason: posts merged
|
|
|
Re: Will Tür aufmachen, wenn ich sie "sehe"?EVENT_SHOOT?
[Re: CocaCola]
#438867
03/22/14 17:52
03/22/14 17:52
|
Joined: Jul 2008
Posts: 2,107 Germany
rayp
X
|
X
Joined: Jul 2008
Posts: 2,107
Germany
|
Ich habe per define der Zahl 1000 das Wort a_door gegeben. Dann habe ich den entity.skill100 mit "id" was einfach für identification stehen sollte "maskiert". Genau so kannst Du weitere erstellen. Das dient nur der Leserlichkeit. Doof
my.skill100 = 8989; // häh? was?
...
...
if (you.skill100 == 8989) blabla(); // was soll das bedeuten? mhhh...
Leserlich, toll und bildhübsch
#define wasbinich skill100
#define zuckerwatte 8989
...
...
my.wasbinich = zuckerwatte; // ich bin Zuckerwatte
...
...
if (you.wasbinich == zuckerwatte) blabla(); // ahh, es ist Zuckerwatte
Also müsstest Du in Deinem Fall nun folgendes ergänzen
#define b_door 1001
...
my.id = b_door;
...
Auch kann man, sehe ich grad, die IF Abfrage so gestalten
if (HIT_TARGET && you) if (you.id == a_door)
Vorsicht, das hier sollte man nicht tun, wie ich finde
if (HIT_TARGET && you && you.id == a_door)
edit: Falls Du diesem "a_door-Prinzip" nenn ich's jetzt mal folgen willst, wäre b_door aber zu umständig. Wenns da um z.B. Schlüssel geht, wäre sowas hier sinnvoller
#define id skill100;
#define keynr skill99;
#define a_door 1000; // markiert eine ent als Tuer
#define id_red_card 1234; // brauch / bin ne rote Karte wa?!
var red_card = 0; // 1 = Karte eingesammelt, Spieler hat se!
...
//skill1 KeyCardNr 1 // nun hat Skill1 in WED-Prop's eine Bezeichnung
action Door_WED(){
if (my.skill1 == 1) my.keynr = id_red_card; // fuer mich brauchste ne rote Karte
...
}
...
if (HIT_TARGET && you) if (you == a_door){ // Tracehit Tuer
if (you.keynr == id_red_card && red_card){
// rote Karte benoetigt? rote Karte vorhanden? dann...
}
}
Peace
Acknex umgibt uns...zwischen Dir, mir, dem Stein dort... "Hey Griswold ... where u gonna put a tree that big ?" 1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected rayp.flags |= UNTOUCHABLE;
|
|
|
Re: Will Tür aufmachen, wenn ich sie "sehe"?EVENT_SHOOT?
[Re: CocaCola]
#438869
03/22/14 18:22
03/22/14 18:22
|
Joined: Jul 2008
Posts: 2,107 Germany
rayp
X
|
X
Joined: Jul 2008
Posts: 2,107
Germany
|
Ich dachte eigentlich das mein ewig langer Beispielpost das nun geklärt haben sollte. Spätestens bei dem "Zuckerwatte" - Beispiel, sollte der Groschen fallen oder? Ob das eine Tür, ein Auto, ein Medikit ist, juckt den c_trace und Deine if-Abfrage nicht wirklich. Also ja, das geht, und ist eine gute Idee. So kannst Du quasi interact_with_doors zu "interact_with_all" machen.
if (HIT_TARGET && you){
if (you.id == id_car){ // trace hit car
}
if (you.id == id_medikit){ // trace hit medikit
}
...
..
.
}
usw.
Acknex umgibt uns...zwischen Dir, mir, dem Stein dort... "Hey Griswold ... where u gonna put a tree that big ?" 1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected rayp.flags |= UNTOUCHABLE;
|
|
|
Re: Will Tür aufmachen, wenn ich sie "sehe"?EVENT_SHOOT?
[Re: rayp]
#438875
03/22/14 19:12
03/22/14 19:12
|
Joined: Jan 2002
Posts: 4,225 Germany / Essen
Uhrwerk
Expert
|
Expert
Joined: Jan 2002
Posts: 4,225
Germany / Essen
|
Liegt, wie so oft, immer im Auge des Betrachters. Leider nicht. Falsch eingerückter Code wird immer wieder misinterpretiert. So wäre es beispielsweise deutlich übersichtlicher.
if ((event_type == EVENT_SHOOT) && (you == player))
my.health -= 25;
Always learn from history, to be sure you make the same mistakes again...
|
|
|
Re: Will Tür aufmachen, wenn ich sie "sehe"?EVENT_SHOOT?
[Re: Uhrwerk]
#438876
03/22/14 19:19
03/22/14 19:19
|
Joined: Jul 2008
Posts: 2,107 Germany
rayp
X
|
X
Joined: Jul 2008
Posts: 2,107
Germany
|
Ja, aber eben nicht von allen, somit im Auge des Betrachters. Gut das es nun geklärt ist, was am einfachsten zu lesen ist. Denn das war das wichtigste in diesem Thread. Die Goldwaagen laufen heute wieder heiß
edit: you auf != null vor you == player zu checken macht natürlich nur Sinn, wenn man noch z.B. if (you.id... - Kram in einer if nutzen will, das stimmt wohl.
edit2: Falls Du, Coca, ACTIVATE_SHOOT nutzt, brauchst Du logischerweise HIT_TARGET und .id nicht mehr. Könntest ja im EVENT_SHOOT reagieren.
Acknex umgibt uns...zwischen Dir, mir, dem Stein dort... "Hey Griswold ... where u gonna put a tree that big ?" 1998 i married my loved wife ... Sheeva from Mortal Kombat, not Evil-Lyn as might have been expected rayp.flags |= UNTOUCHABLE;
|
|
|
Moderated by mk_1, Perro, rayp, Realspawn, Rei_Ayanami, rvL_eXile, Spirit, Superku, Tobias, TSG_Torsten, VeT
|