|
2 registered members (TipmyPip, Grant),
3,389
guests, and 6
spiders. |
|
Key:
Admin,
Global Mod,
Mod
|
|
|
C-Trace so richtig?
#373517
06/10/11 19:21
06/10/11 19:21
|
Joined: Aug 2010
Posts: 9 Germany
Todesjoker
OP
Newbie
|
OP
Newbie
Joined: Aug 2010
Posts: 9
Germany
|
Hi, die Funktion gibt den xy-Koordinaten des Cursors eine z-Koordinate, aber irgendwie scheint sie nicht richtig zu funktionieren, das Objekt bleibt nicht beim Mauszeiger sondern steht einfach rum.. (stammt ursrpünglich aus einem tut für ein Isometrisches Spiel (bzw. als Hilfe)). bei wdl würde das was auskommentiert ist wunderbar funktionieren aber bei lite-c spinnts ein bischen.^^ Quekkcode der Funktion:
function Mouse3D(){
var vector1;
var vector2;
vector1 = vector(mouse_pos.x,mouse_pos.y,5);
//vector1.x = mouse_pos.x;
//vector1.y = mouse_pos.y;
//vector1.z = 5;
vector2 = vector(mouse_pos.x,mouse_pos.y,5000);
//vector2.x = vector1.x;
//vector2.y = vector1.y;
//vector2.z = 5000;
vec_for_screen(vector1, camera);
vec_for_screen(vector2, camera);
c_trace (vector1, vector2,IGNORE_PASSABLE);
//trace(vector1, vector2);
}
MfG Todesjoker
|
|
|
Re: C-Trace so richtig?
[Re: Todesjoker]
#373521
06/10/11 19:53
06/10/11 19:53
|
Joined: Nov 2007
Posts: 2,568 Germany, BW, Stuttgart
MasterQ32
Expert
|
Expert
Joined: Nov 2007
Posts: 2,568
Germany, BW, Stuttgart
|
das Objekt bleibt nicht beim Mauszeiger welches Objekt? es gibt keon objekt in deinem code dein code hat ein paar fehler.... so sieht er richtig aus:
function Mouse3D(){
VECTOR vector1;
VECTOR vector2;
vector1.x = mouse_pos.x;
vector1.y = mouse_pos.y;
vector1.z = 5;
vector2.x = mouse_pos.x;
vector2.y = mouse_pos.y;
vector2.z = 5000;
vec_for_screen(vector1, camera);
vec_for_screen(vector2, camera);
if(c_trace (vector1, vector2,IGNORE_PASSABLE))
{
//Something hit...
}
}
|
|
|
Re: C-Trace so richtig?
[Re: MasterQ32]
#373536
06/10/11 20:58
06/10/11 20:58
|
Joined: Aug 2010
Posts: 9 Germany
Todesjoker
OP
Newbie
|
OP
Newbie
Joined: Aug 2010
Posts: 9
Germany
|
action Square(){
BlueSquare = me;
set(my,PASSABLE);
set(my,DECAL);
// set the orientation - up, of course
my.pan = 0;
my.roll = 0;
my.tilt = 90;
// keep updating the square with its position
// underneath the mouse
while(1)
{
Mouse3D();
vec_set(my.x, target);
my.z = 50; // Wert anpassen falls object nicht zu sehen ist 355
SnapIt();
wait(1);
}
}
das objekt, da ist auch der funktionsaufruf ich probier das mal mit vector vector1 unsw. Habs gelöst  danke Das mit dem Datentyp VECTOR war ausschlaggebend MfG Todesjoker
Last edited by Todesjoker; 06/10/11 21:02.
|
|
|
Re: C-Trace so richtig?
[Re: Todesjoker]
#373743
06/12/11 16:47
06/12/11 16:47
|
Joined: Aug 2010
Posts: 9 Germany
Todesjoker
OP
Newbie
|
OP
Newbie
Joined: Aug 2010
Posts: 9
Germany
|
ok nach dem ich das on-click-event in die main und die klamnmern weggenommen hab gibts nen scriptcrash in der Mouse3D.sys sprich in der Mouse3D-Funktion. die schaut aktuell so aus, und wird aus der BuildPath-Funktion aufgrufen, deshalb hab ich noch dessen Quelltext mit eingefügt:
function Mouse3D(){
VECTOR vector1;
VECTOR vector2;
//vector1 = vector(mouse_pos.x,mouse_pos.y,5);
vector1.x = mouse_pos.x;
vector1.y = mouse_pos.y;
vector1.z = 5;
//vector2 = vector(vector1.x,vector1.y,5000);
vector2.x = vector1.x;
vector2.y = vector1.y;
vector2.z = 5000;
vec_for_screen(vector1, camera);
vec_for_screen(vector2, camera);
c_trace (vector1, vector2,IGNORE_PASSABLE);
//trace(vector1, vector2);
my.lightrange = 300 + BlueSquare.z;
my.red = 230 + random(20);
my.green = 210;
my.blue = 150 + random(20);
}
function BuildPath(){
VECTOR vector1;
VECTOR vector2;
if(BuildMode == 0){
if (!NodeCheck()){
Mouse3D();
ent_create(earthtile, target, PathTile);
NodeFill(1);
}
else{beep();}
}
else{
if(NodeCheck()){
vector1.x = BlueSquare.x;
vector1.y = BlueSquare.y;
vector1.z = 100;
vector2.x = vector1.x;
vector2.y = vector1.y;
vector2.z = 0;
c_trace(vector1, vector2, IGNORE_PASSABLE);
ent_remove(you);
NodeFill(0);
}
else{beep();}
}
}
muss ich da was (target?) per retunr zurückgeben? gelöst, teilweise, den codeteil:
my.lightrange = 300 + BlueSquare.z;
my.red = 230 + random(20);
my.green = 210;
my.blue = 150 + random(20);
einfach zur BlueSquare action geschoben und zwar oberhalb der while-schleife und es geht, aber der zweite teil von BulidPath geht nicht, sagt mir invalid arguments in BuildPath. Fehler liegt irgendwo in der else-Anweisung der ersten if-Anweisung von BuildPath. Kann es sein das was mit "ent_remove(you);" nicht stimmt? MfG Tj
Last edited by Todesjoker; 06/12/11 17:28.
|
|
|
Re: C-Trace so richtig?
[Re: Todesjoker]
#374515
06/19/11 17:39
06/19/11 17:39
|
Joined: Aug 2010
Posts: 9 Germany
Todesjoker
OP
Newbie
|
OP
Newbie
Joined: Aug 2010
Posts: 9
Germany
|
hat den keiner ne idee warum das: (komplette Funktion BuildPath() ein Post vorher | whole function BuildPath() above in a further post)
action PathTile(){
set(my,DECAL);
my.pan = 0;
my.roll = 0;
my.tilt = 90;
my.z = 50;
SnapIt();
}
function BuildPath(){
.
.
if(NodeCheck()){
vector1.x = BlueSquare.x;
vector1.y = BlueSquare.y;
vector1.z = 100;
vector2.x = vector1.x;
vector2.y = vector1.y;
vector2.z = 0;
c_trace(vector1, vector2, IGNORE_PASSABLE);
ent_remove(you); //<-- problem
NodeFill(0);
}
}
nicht funktioniert, na gut es funktioniert schon, die Entity wird enfternt aber das Objekt bleibt optisch da.. Nehm ich "ptr_remove(you);" ist das Ergeniss das selbe nur ohne den "invalid arguments"-Fehler has no one an idea why this doesn't working? (code above) Ok, it's working, somehow, it delete the entity but it is still there, visual, at the codeside it is deleted (recognizable by an beep). At the same time an error-window open with the message: "invalid arguments in BuildPath". if I use "ptr_remove(you);" instead of "ent_remove(you);" is it the same but without an error message interessting it works fine if the object is not an bmap for example a 3D-objekt (for example a .mdl-file) interessant es funktioniert wenn es sich nicht um ein BMAP-Objekt handelt sondern um ein 3D-Objekt z.B. eine MDL-Datei mfg Tj
Last edited by Todesjoker; 06/19/11 18:00.
|
|
|
|