Gamestudio Links
Zorro Links
Newest Posts
Zorro 2.70
by jcl. 09/29/25 09:24
optimize global parameters SOLVED
by dBc. 09/27/25 17:07
ZorroGPT
by TipmyPip. 09/27/25 10:05
assetHistory one candle shift
by jcl. 09/21/25 11:36
Plugins update
by Grant. 09/17/25 16:28
AUM Magazine
Latest Screens
Rocker`s Revenge
Stug 3 Stormartillery
Iljuschin 2
Galactic Strike X
Who's Online Now
4 registered members (NewbieZorro, Grant, TipmyPip, AndrewAMD), 13,346 guests, and 5 spiders.
Key: Admin, Global Mod, Mod
Newest Members
krishna, DrissB, James168, Ed_Love, xtns
19168 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 5 of 9 1 2 3 4 5 6 7 8 9
So wie gehts weiter! [Re: DerLateinProfi] #122242
04/09/07 09:14
04/09/07 09:14
Joined: Apr 2006
Posts: 160
DerLateinProfi Offline OP
Member
DerLateinProfi  Offline OP
Member

Joined: Apr 2006
Posts: 160
Das springen script funktioniert gut, nur hab ich ne Frage dazu, Es muss doch gehen, das der die ganze Animation durchführt wenn man die Leertaste einmal drückt, oder? Wenn ich nämlich jetzt sage dass der 100 hochspringen soll, muss ich die Leertaste gedrückthalten, wieso? Für nen EGO ist das nicht so schön. möchte das so wie bei UT und anderen, wie geht das?

MFG: DerLateinProfi


If there's a god He's watching can he give a ray of hope so much pain and so much sorrow www.lpp1991.de.vu
Re: So wie gehts weiter! [Re: DerLateinProfi] #122243
04/09/07 15:09
04/09/07 15:09
Joined: Jan 2007
Posts: 651
Germany
R
RedPhoenix Offline
User
RedPhoenix  Offline
User
R

Joined: Jan 2007
Posts: 651
Germany
Da wo jetzt IF (key_space == 1...) abgefragt wird, setzt du anstatt key_space == 1 sowas ein: space_var == 1. space_var definierst du vorher als Variable.
Nun muss ganz an den Anfang noch sowas wie:
IF (key_space == 1) { space_var = 1; }
Und da wo jumping = 1; steht schreibst du noch dazu: space_var = 0;

Noch was zu dem Sprungprinzip: Bei eingehenderem Testen wirst du feststellen, (spring von unten gegen ein Hindernis, oder versuch springen während dem Fallen)
dass der Code alles andere als gut funktioniert. Hierzu ist ein wesentlich ausgefeilteres Script notwendig.

Ne das geht nicht! [Re: RedPhoenix] #122244
04/09/07 17:29
04/09/07 17:29
Joined: Apr 2006
Posts: 160
DerLateinProfi Offline OP
Member
DerLateinProfi  Offline OP
Member

Joined: Apr 2006
Posts: 160
Ne es tut mir leid, aber das geht nicht, ich muss immernoch die Leertaste gedrückt halten. Also ich habe als temp mal 150 genommen, und wenn ich im Spiel space drücke, dann geht der nur ganz wenig hoch und wieder runter. Aber wenn ich gedrückt halte geht er 150 hoch und dann wieder runter. Wie kann ich das ändern? Also mit while geht ja nicht, da es sonst ja eine unendlichschleife wäre oder? (bin halt ein C und C++ freak^^) Bitte hilf!


If there's a god He's watching can he give a ray of hope so much pain and so much sorrow www.lpp1991.de.vu
Re: Ne das geht nicht! [Re: DerLateinProfi] #122245
04/09/07 17:33
04/09/07 17:33
Joined: Jan 2007
Posts: 651
Germany
R
RedPhoenix Offline
User
RedPhoenix  Offline
User
R

Joined: Jan 2007
Posts: 651
Germany
poste mal den ganzen Code wie du ihn jetzt hast

Hier ist er! [Re: RedPhoenix] #122246
04/09/07 17:38
04/09/07 17:38
Joined: Apr 2006
Posts: 160
DerLateinProfi Offline OP
Member
DerLateinProfi  Offline OP
Member

Joined: Apr 2006
Posts: 160
Code:
 //////////////////////Movement/////////////////////////-sv -cl -tcp

var player_speed;
var jumping;
var space_var;


action player_movement
{
player = my;
while(1)
{
vec_set(camera.pos,my.pos);
camera.z += 70; //Kamera ist 70 über dem Mittelpunkt des Models
camera.tilt = max(-30,min(camera.tilt + 10 * mouse_force.y * time,30)); //Lässt den Spieler 20 hoch und runter sehen
camera.pan -= 20 * mouse_force.x * time; //Kamera lässt sich mit der Maus drehen
my.pan = camera.pan; //Model ist in die Richtung des Blickes gedreht
player_speed.x = 10 * (key_w - key_s) * time; //Geschwindigkeit des Players Vor und Zurück
player_speed.y = 5 * (key_a - key_d) * time; //Geschwindigkeit des Players zu Seite
vec_set (temp,my.x);
move_mode = ignore_you + ignore_passable;

if (key_shiftl == 1 && key_w==1)
{
player_speed.X = 20*key_w*time; //Beim rennen 3mal so schnell
}

////////////////////////////////////////////////////////////////////////
//Schwerkraft, Gravitation //
////////////////////////////////////////////////////////////////////////
vec_set (temp,my.x);
temp.z -= 1000;
trace_mode = ignore_me + ignore_passable + ignore_sprites + ignore_models + ignore_passents + use_box + activate_sonar;
temp = trace (MY.X,temp);

if (temp > 5)
{
space_var = 2;
player_speed.Z = -5;
}

else
{
jumping = 0;
if (temp < 1)
{
player_speed.Z += 3;
}
else
{
player_speed.Z = 0;
}
}
space_var = 0;
move_mode = ignore_you + ignore_passable;
////////////////////////////////////////////////////////////////////////////////////////////////////////////


if (key_space == 1) { space_var = 1; } //SPRINGEN VAR


if(space_var == 1 && temp < 150 && jumping == 0) //150 hoch springen //Springen
{
player_speed.z = 25* time; //Spung Geschwindigkeit
}


if (temp >= 150) //Wenn 150 hoch, Gravitation
{
jumping = 1;
space_var = 0;
}



if(key_w ==1 || key_s ==1) //Gehen
{
ent_cycle ("walk",my.skill46);
my.skill46 += 10 * time;
my.skill46 %= 100;
}

if(key_a==1) //nach links Gehen
{
ent_cycle ("walk",my.skill46);
my.skill46 += 10 * time;
my.skill46 %= 100;
}

if(key_d==1) //nach rechts Gehen
{
ent_cycle ("walk",my.skill46);
my.skill46 += 10 * time;
my.skill46 %= 100;
}

if(key_w==1 && key_shiftl==1) //Rennen
{
ent_cycle ("run",my.skill46);
my.skill46 += 10 * time;
my.skill46 %= 100;
}







ent_move (player_speed,nullvector);

wait(1);









}
wait(1);
}



Ich hoffe du kannst mir helfen!


If there's a god He's watching can he give a ray of hope so much pain and so much sorrow www.lpp1991.de.vu
Re: Hier ist er! [Re: DerLateinProfi] #122247
04/09/07 17:43
04/09/07 17:43
Joined: Jan 2007
Posts: 651
Germany
R
RedPhoenix Offline
User
RedPhoenix  Offline
User
R

Joined: Jan 2007
Posts: 651
Germany
if (temp > 5) {
space_var = 2; //Das muss weg!!! (nur diese Zeile)
player_speed.Z = -5;
}

}
space_var = 0; //Das auch (nur diese Zeile)
move_mode = ignore_you + ignore_passable;

JO [Re: RedPhoenix] #122248
04/09/07 17:48
04/09/07 17:48
Joined: Apr 2006
Posts: 160
DerLateinProfi Offline OP
Member
DerLateinProfi  Offline OP
Member

Joined: Apr 2006
Posts: 160
JO! Das wars!! DANKE!!! Nun sagtest du was von wegen hindernissen, ich weiß was du meinst, also das man hängenbleibt wenn man gegen etwas springt, kann man das nicht einfach mit einer kleinen Funktion ändern, also

if(Objekt berührt)
{
Gravitation
]

Oder geht das nicht?


If there's a god He's watching can he give a ray of hope so much pain and so much sorrow www.lpp1991.de.vu
Re: JO [Re: DerLateinProfi] #122249
04/09/07 17:54
04/09/07 17:54
Joined: Jan 2007
Posts: 651
Germany
R
RedPhoenix Offline
User
RedPhoenix  Offline
User
R

Joined: Jan 2007
Posts: 651
Germany
Könnte man dafür bräuchtest du eine Event function, die auf blocks und entities reagiert und jumping = 0; als inhalt hat, und natürlich nur reagiert wenn jumping == 1 als Bedingung steht:

MY.ENABLE_BLOCK = ON;
MY.ENABLE_ENTITY = ON;
MY.EVENT = player_event;

ganz an den Anfang. Die Event Function darüber schreiben nach dem oben dargestellten Schema. Aber das ist nur ne Mogellösung. Ein besseres Grundprinzip brauchst du. Aber erstens fällt mir grad keins ein und zweitens hab ich auch keine Zeit um dir hier ein komplettes Jumpskript zu schreiben.

OK [Re: RedPhoenix] #122250
04/09/07 18:03
04/09/07 18:03
Joined: Apr 2006
Posts: 160
DerLateinProfi Offline OP
Member
DerLateinProfi  Offline OP
Member

Joined: Apr 2006
Posts: 160
Ich versteh das so ungefähr, habe aber ne andere Möglichket!^^ Also wie muss so was gescriptet aussehen?

if(Blockberührung)

??? Mehr brauch ich nicht, denn dann könnte man das in die Jump-Funktion setzen, und wenn das der Fall ist, soll er den Spieler 1 zurück bewegen.


If there's a god He's watching can he give a ray of hope so much pain and so much sorrow www.lpp1991.de.vu
Re: OK [Re: DerLateinProfi] #122251
04/09/07 18:08
04/09/07 18:08
Joined: Jan 2007
Posts: 651
Germany
R
RedPhoenix Offline
User
RedPhoenix  Offline
User
R

Joined: Jan 2007
Posts: 651
Germany
Um Blockberührung abzufragen brauchst du entweder die Events (wie gezeigt) oder einen trace (empfehle ich hier nicht). Anders kann die Engine eine Blockberührung nicht erfassen. Das mit dem 1 zurückbewegen löst dein Problem aber nicht, da der Sprung ja weitergeht bis die fragliche Höhe erreicht ist. Der Sprung muss also vorzeitig abgebrochen werden (jumping = 0)

Die Event Function sieht ganz einfach so aus:

FUNCTION player_event {
IF (jumping==1 && (Event_type == EVENT_BLOCK || event_type == event_ENTITY)) { jumping = 0; }
}
Die muss über der Hauptfunction stehen.

Last edited by RedPhoenix; 04/09/07 18:09.
Page 5 of 9 1 2 3 4 5 6 7 8 9

Moderated by  HeelX, Lukas, rayp, Rei_Ayanami, Superku, Tobias, TWO, VeT 

Gamestudio download | 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