Gamestudio Links
Zorro Links
Newest Posts
Change chart colours
by 7th_zorro. 05/11/24 09:25
Data from CSV not parsed correctly
by dr_panther. 05/06/24 18:50
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
2 registered members (vicknick, AndrewAMD), 1,292 guests, and 3 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
ent_create #228415
09/19/08 11:28
09/19/08 11:28
Joined: May 2004
Posts: 152
Germany / Dresden
Thomas Offline OP
Member
Thomas  Offline OP
Member

Joined: May 2004
Posts: 152
Germany / Dresden
Hallo hab eine Frage zu ent_create
Hier ist der Script dazu
aber wie kann ich es machen das es aufhört? z. B. ab einer bestimmten Entfernung zum Player wird alles entfernt.

Hoffe jemand kann helfen

Gruss Thomas



while (1)
{
temp.x = 5000 - random(10000);
temp.y = 5000 - random(10000);
temp.z = 100 - random(200);

temp_var = random(100);
if (temp_var < 0.13)
{
ent_create (asteroid1_mdl, temp,move_asteroid);
}
if ((temp_var >= 0.13) && (temp_var < 0.16))
{
ent_create (asteroid2_mdl, temp,move_asteroid);
}
if (temp_var > 0.16)
{
ent_create (asteroid3_mdl, temp,move_asteroid);
}
wait (2);
}

Re: ent_create [Re: Thomas] #228441
09/19/08 14:25
09/19/08 14:25
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Das klingt nach 3 verschiedenen ineinander vermischte Fragen!

Wie ist Dein Konzept?

Sollen die Asteroiden nur in der Nähe des Players erstellt werden und in einer bestimmten Distanz wieder entfernt werden?

Dann müßtest Du die Erschaffung der Asteroiden in eine if-Abfrage einbetten:
(in pseudo-code:)
if(vec_dist(player.x, temp.x) KLEINER Höchstabstand) --> dann erschaffe!

und in die move_asteroid
schreibst du eine while abfrage:

while((vec_dist(player.x, temp.x) KLEINER Höchstabstand) --> dann bewege mich wie einen Asteroiden

und dahinter ausserhalb der Klammer schreibst

ent_remove(me);

Wie gesagt, ist nur als Pseudocode geschrieben.

Re: ent_create [Re: Pappenheimer] #228449
09/19/08 15:59
09/19/08 15:59
Joined: May 2004
Posts: 152
Germany / Dresden
Thomas Offline OP
Member
Thomas  Offline OP
Member

Joined: May 2004
Posts: 152
Germany / Dresden
Es soll ein Asteroidenfeld werden.
Also es wird ein Modell ins Level gesetzt von der aus das Feld erzeugt wird. In angegebenen xyz Richtungen.
In diesem Bereich werden die Asteroiden erzeugt.
Mein Prob ist jetzt das ganze zu Steuern also wenn der Player garnicht im Feld ist sollen natürlich auch keine erzeugt werden.
Und wenn der Player im Feld ist sollen Sie erzeugt werden zufällig und unterschiedliche Grössen aber auch nur um denn Player herum nicht das ganze Feld.

MFG Thomas
Hier nochmal der Code


string asteroid1_mdl = <asteroid1.mdl>;
string asteroid2_mdl = <asteroid2.mdl>;
string asteroid3_mdl = <asteroid3.mdl>;



function move_asteroid()
{
var meteor_angle;
var meteor_speed;
my.enable_impact = on;
my.enable_entity = on;
//my.event = destroy_asteroid;
my.scale_x = 1 + random(0.5);
my.scale_y = my.scale_x;
my.scale_z = my.scale_x;
my.skill10 = my.scale_x; // store the scale in skill10 - we will use it to adjust the size of the explosion later
meteor_angle.x = 3 - random(6); // random pan speed
meteor_angle.y = 3 - random(6); // random tilt speed
meteor_angle.z = 3 - random(6); // random roll speed
meteor_speed.x = 0;
meteor_speed.y = 0;
meteor_speed.z = 0;
while (my.x+my.y+my.z > -1000)
{
my.pan += meteor_angle.x * time;
my.tilt += meteor_angle.y * time;
my.roll += meteor_angle.z * time;
move_mode = ignore_you + ignore_passable;
ent_move (nullvector, meteor_speed);
wait (1);
}
sleep (1);
ent_remove (my);
}

material mat_Asteroid
{
//effect="NormalShader.fx";
flags=TRANSLUCENT;
ambient_red=30;
ambient_green=30;
ambient_blue=30;
diffuse_red=155;
diffuse_green=155;
diffuse_blue=155;
specular_red=155;
specular_green=155;
specular_blue=155;
}


action asteroid_maker
{
my.material=mat_Asteroid;
var temp_var;
my.passable = on;
my.invisible = off;
while (1)
{
temp.x = 5000 - random(5200);
temp.y = 5000 - random(5200); // -5,000 to 5,000
temp.z = 1000 - random(1200);

temp_var = random(100);
if (temp_var < 0.33)
{
ent_create (asteroid1_mdl, temp, move_asteroid);
}
if ((temp_var >= 0.33) && (temp_var < 0.16))
{
ent_create (asteroid2_mdl, temp, move_asteroid);
}
if (temp_var > 0.66)
{
ent_create (asteroid3_mdl, temp, move_asteroid);
}
wait (2);
}
}

Re: ent_create [Re: Thomas] #228452
09/19/08 17:20
09/19/08 17:20
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Dann könntest du ein Zentrum des Asteroidenfelds angeben, und eine bestimmte Distanz zu diesem Zentrum als 2.Bedingung für die Erschaffung der Asteroiden angeben.

Re: ent_create [Re: Pappenheimer] #228473
09/19/08 19:23
09/19/08 19:23
Joined: May 2004
Posts: 152
Germany / Dresden
Thomas Offline OP
Member
Thomas  Offline OP
Member

Joined: May 2004
Posts: 152
Germany / Dresden
Das Zentrum ist ja das Model die die Action asteroid_maker bekommt davon je 5000 in jede Richtung das klappt ja schon.

Aber es werden zu viele generiert wie beschränge ich das auf einen maximal Wert (siehe Script )

Re: ent_create [Re: Thomas] #228474
09/19/08 19:25
09/19/08 19:25
Joined: May 2004
Posts: 152
Germany / Dresden
Thomas Offline OP
Member
Thomas  Offline OP
Member

Joined: May 2004
Posts: 152
Germany / Dresden
Originally Posted By: Thomas
Das Zentrum ist ja das Model die die Action asteroid_maker bekommt davon je 5000 in jede Richtung das klappt ja schon.

Aber es werden zu viele generiert wie beschränge ich das auf einen maximal Wert (siehe Script )


Bzw. das die Asteroiden erst geladen und wieder verschwinden wenn der Player in der Nähe ist und wenn er weit weg ist keine Asteroiden mehr da sind ?

Re: ent_create [Re: Thomas] #228479
09/19/08 20:58
09/19/08 20:58
Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Pappenheimer Offline
Senior Expert
Pappenheimer  Offline
Senior Expert

Joined: Sep 2003
Posts: 5,900
Bielefeld, Germany
Ja, entschuldige, Deinen Code hatte ich mir nicht näher angeschaut.

Du setzt eine Variable zum Zählen und eine Variable für die Höchstmenge ein.

Die Variable für die Höchstmenge legst bei der Deklarierung fest. Du kannst sie über die Console im Spiel dan passen und später im Skript entsprechend korrigieren.

Die Zählvariable setzt Du vor der while-Schleife des Asteroidenmachers auf 0 und zählst sie nach jedem ent_create in der Schleife um einen hoch.

In die While-Schleife fügst Du eine if-Bedingung "Falls der Zählwert kleiner dem Höchstwert ist" ein, innerhalb derer dann die Asteroiden erschaffen werden.


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