Gamestudio Links
Zorro Links
Newest Posts
Free Live Data for Zorro with Paper Trading?
by AbrahamR. 05/18/24 13:28
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
4 registered members (degenerate_762, AbrahamR, AndrewAMD, ozgur), 667 guests, and 8 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
Page 1 of 2 1 2
hilfe, while-schleife von entities wird beendet #189375
03/18/08 21:10
03/18/08 21:10
Joined: Sep 2003
Posts: 271
Germany
Chris3D Offline OP
Member
Chris3D  Offline OP
Member

Joined: Sep 2003
Posts: 271
Germany
Hi,

Ich habe folgende Funktion:

Code:
 

function good_crystals()
{
VECTOR rotator;
var my_player;
set(my,PASSABLE,TRANSLUCENT);
my.scale_x=0;
my.scale_y=0;
my.scale_z=0;
my.material=mat_crystal;
my.alpha=75;
vec_set(rotator,vector(random(3),random(2),random(1)));
while(!p1_vehicle){wait(1);}

while(1)
{
if(my.scale_x<5)
{
my.scale_x+=0.1;
my.scale_y+=0.1;
my.scale_z+=0.1;
}
ent_bonerotate(my,"bone",rotator);
ent_bonerotate(my,"bone1",vector(random(0.5)+1,0,0));

if(del_item==0){
if(vec_dist(my.x,p1_vehicle.x)<150){my_player=1;break;}
if(vec_dist(my.x,p2_vehicle.x)<150){my_player=2;break;}
}
if(del_item==1){ptr_remove(me);return;}
wait(1);
}
ent_create("crystal_exp.mdl",vector(1,0,my.z),crystal_explosion);
ptr_remove(me);
weapon_menu(my_player,0);
}
....
function entscreate_startup()
{
wait(-3);
ent_create("crystal.mdl",vector(map.x+5600,map.y+400,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x+5600,map.y-400,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x+5100,map.y,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x-5600,map.y+400,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x-5600,map.y-400,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x-5100,map.y,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x+400,map.y+5600,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x-400,map.y+5600,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x,map.y+5100,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x+400,map.y-5600,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x-400,map.y-5600,map.z+2000),good_crystals);
ent_create("crystal.mdl",vector(map.x,map.y-5100,map.z+2000),good_crystals);
}





Ok, das Problem ist, dass mit C-Lite die while schleife(siehe oben) unterbrochen wird, und zwar für alle entity!
Das war beim alten C-Script (wdl) nicht so. Ich denke mal das liegt daran dass der my pointer in C-Lite global ist.

Hat jemand eine Idee wie ich mit C-Lite jedes entity unabhängig mache, ohne dass ich lauter einzele pointer erstellen muss?
Gruß Chris

Re: Help, the new pointer style [Re: Chris3D] #189376
03/18/08 21:14
03/18/08 21:14
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Was ist p1_vehicle denn? Der Code nach ent_create("crystal_exp.mdl",vector(1,0,my.z),crystal_explosion); kann übrigens niemals erreicht werden.


Always learn from history, to be sure you make the same mistakes again...
Re: Help, the new pointer style [Re: Uhrwerk] #189377
03/18/08 21:16
03/18/08 21:16
Joined: Sep 2003
Posts: 271
Germany
Chris3D Offline OP
Member
Chris3D  Offline OP
Member

Joined: Sep 2003
Posts: 271
Germany
p1_vehicle ist ein ENTITY* pointer, und der code nach dem create wird erreicht, glaub mir. (weapon_menu(my_player,0); wird ausgeführt)

Der Code funktioniert, das einzige was mich stört ist die tatsache, dass wenn bei einem entity mit der function good_crystal() the while-schleife per break; beendet wird, passiert das auch bei allen anderen entities mit dieser funktion.

Last edited by Chris3D; 03/18/08 21:20.
Re: Help, the new pointer style [Re: Chris3D] #189378
03/18/08 21:27
03/18/08 21:27
Joined: Sep 2003
Posts: 271
Germany
Chris3D Offline OP
Member
Chris3D  Offline OP
Member

Joined: Sep 2003
Posts: 271
Germany
Es wäre echt cool wenn mir jemand dabei hilft, ich versuche nämlich mein C-script game in c-lite zu schreiben. Das Game ist eine Art Mario Kart Battle Remake, mach echt viel spass und ist schon so gut wie fertig, wollte nur noch shadow mapping einbauen, das funktioniert aber nur richtig gut wenn ich c-lite benutze...
Gruß chris

Re: Help, the new pointer style [Re: Chris3D] #189379
03/18/08 21:29
03/18/08 21:29
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
Sorry, hatte die breaks übersehen. Du hast natürlich recht.

Bist Du sicher, dass alle die while schleife beenden? Vielleicht einfach mal ein printf("Jo"); vor die breaks setzen um da sicher zu gehen?


Always learn from history, to be sure you make the same mistakes again...
Re: Help, the new pointer style [Re: Uhrwerk] #189380
03/19/08 13:46
03/19/08 13:46
Joined: Sep 2003
Posts: 271
Germany
Chris3D Offline OP
Member
Chris3D  Offline OP
Member

Joined: Sep 2003
Posts: 271
Germany
ja ich habs ausprobiert, aber die if-funktion mit dem break wird wirklich nur einmal ausgeführt, wenn sie für das entsprechende entity zutrifft. d.h. die anderen entities mit dieser funktion müssten eigentlich noch in der while schleife sein, aber sie trotzdem stoppen, das ist echt strange.

Ich kann ja mal beschreiben was passiert:
Also der player p1_vehicle fährt auf einen crystal zu, solang er noch keinen berührt hat (vec_dist(my.x,p1_vehicle.x)<150) drehen sich alle crystals (ent_bonerotate). Sobald er nun in der richtigen Reichweite ist und die if-funktion erfüllt, beendet er die while-schleife und macht mit dem code weiter. Die anderen dagegen hören einfach auf sich zu drehen und es ist nicht mehr möglich die if-funktion für diese auszuführen. Als würden sie einfach mitten in der while-schleife stehen bleiben.

Du hattest also damit recht, dass sie noch in der while schleife sind aber wahrscheinlich verlieren sie den my pointer und können deswegen nicht mehr die funktionen richtig ausführen oder?

Edit: Ich habs mal mit einem lokalen ENTITY* pointer versucht, aber es ändert sich nichts, so ein [censored]


Last edited by Chris3D; 03/19/08 13:55.
Re: Help, the new pointer style [Re: Chris3D] #189381
03/19/08 14:32
03/19/08 14:32
Joined: Sep 2003
Posts: 271
Germany
Chris3D Offline OP
Member
Chris3D  Offline OP
Member

Joined: Sep 2003
Posts: 271
Germany
Ok ich habs nochmal abgecheckt und herausgefunden, dass alle anderen gleichen funktionen beendet werden und nur noch die eine übrig bleibt. Dass sollte aber eigentlich nur passieren, wenn proc_kill(4); benutzt wird, was übrigens auch nicht mehr richtig funktioniert.

Last edited by Chris3D; 03/19/08 14:33.
Re: Help, the new pointer style [Re: Chris3D] #189382
03/19/08 15:00
03/19/08 15:00
Joined: Jul 2007
Posts: 959
nl
F
flits Offline
User
flits  Offline
User
F

Joined: Jul 2007
Posts: 959
nl
you could so something then like
var wloop = 1;
while(wloop == 1)
{...

if(vec_dist(my.x,p1_vehicle.x)<150){my_player=1;wloop = 0;}

here it only breaks the right while loops and proc_kill
maby try to reinstal ore somthing


"empty"
Re: Help, the new pointer style [Re: flits] #189383
03/19/08 16:24
03/19/08 16:24
Joined: Sep 2003
Posts: 271
Germany
Chris3D Offline OP
Member
Chris3D  Offline OP
Member

Joined: Sep 2003
Posts: 271
Germany
It doesn't matter whether the while loop ends with break; or with changing a var. It has nothing to do with the while, I think,its just if one function ends the others also do...


Re: Help, the new pointer style [Re: Chris3D] #189384
03/19/08 19:02
03/19/08 19:02
Joined: Jan 2002
Posts: 4,225
Germany / Essen
Uhrwerk Offline
Expert
Uhrwerk  Offline
Expert

Joined: Jan 2002
Posts: 4,225
Germany / Essen
The only other thing that comes to my mind is that del_items becomes somehow 1 and

if(del_item==1){ptr_remove(me);return;}

is executed then. Are the explosions created all at once, when one while loop is breaked?


Always learn from history, to be sure you make the same mistakes again...
Page 1 of 2 1 2

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

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