Gamestudio Links
Zorro Links
Newest Posts
Zorro Beta 2.61: PyTorch
by jcl. 06/10/24 14:42
New FXCM FIX Plugin
by flink. 06/04/24 07:30
AlpacaZorroPlugin v1.3.0 Released
by kzhao. 05/22/24 13:41
Free Live Data for Zorro with Paper Trading?
by AbrahamR. 05/18/24 13:28
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
3 registered members (AndrewAMD, bigsmack, monarch), 1,240 guests, and 9 spiders.
Key: Admin, Global Mod, Mod
Newest Members
AemStones, LucasJoshua, Baklazhan, Hanky27, firatv
19058 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
wo kommt der Script crash (E 1513) her ??? #379337
08/01/11 11:31
08/01/11 11:31
Joined: Mar 2011
Posts: 69
Munich (Germany)
LPF Offline OP
Junior Member
LPF  Offline OP
Junior Member

Joined: Mar 2011
Posts: 69
Munich (Germany)
ich habe Diesen:
Code:
#include <default.c>
#include <ackphysx.h>


VECTOR dragon_force;
VECTOR rotatedragon_force;


ENTITY* dragon;
ENTITY* helper;
ENTITY* forceobject;

var follow = 0;
var zoomvar = 400;
var gravityvar = -10;
var flyvar=0;
var wingvar=0;

function camera_follow(ENTITY* ent)
{
	while(1) 
	{
		vec_set(camera.x,vector(zoomvar,0,25));  // camera position relative to the player      
		vec_rotate(camera.x,ent.pan); // rotate the camera position with the player
		vec_add(camera.x,ent.x);      // add player position
		vec_set(camera.pan,vector(ent.pan-180,-ent.tilt,0));
		
		//camera.roll = (helper.roll*-1)+90; ////////// sehr realistische Kameraführung... nicht zu empfehlen, aber lustig
		wait(1);
	}
}

action my_dragon()
{
dragon = my;
}


action my_forceobject()
{
forceobject = my;
while(1)
{
vec_set(my.x,vector(2,-60,5));  // camera position relative to the player      
vec_rotate(my.x,dragon.pan); // rotate the camera position with the player
vec_add(my.x,dragon.x);      // add player position
vec_set(my.pan,vector(dragon.pan-180,-dragon.tilt,0));
wait(1);	
}
}



function main()
{  

	physX_open();
	level_load ("Dragontestlevel.wmb");
	
	video_mode=10;//auflösung:11 beste (chiras bildschirm),10 ursprung (cb)
	//video_screen=1;
	screen_size.x = 1000;  
	screen_size.y = 750;
	mouse_mode=4;
	wait(2);
	
	pX_setgravity (vector(0, 0, -9.81)); // set the gravity
	pXent_settype (dragon, PH_RIGID, PH_BOX); // set the physics entity type
	pXent_setmass (dragon, 1); // and its mass
	pXent_setfriction (dragon, 100); // set the friction
	pXent_setdamping (dragon, 10, 200); // set the damping
	pXent_setelasticity (dragon, 1); // set the elasticity
	
	while (1)
	{
		if (key_x)
		{
			if(follow==1)
			{
				follow=0;
			}
			else
			{
				follow=1;
			}
			wait(-1);
		}
		
				 
		rotatedragon_force.x = -4000 * time_step * (key_cur - key_cul); // move the dragon using the cursor keys
		rotatedragon_force.z = 4000 * time_step * (key_cuu - key_cud);
		rotatedragon_force.y = 4000 * time_step * (key_a -key_d); 
		
		dragon_force.x = 0;
		dragon_force.y = 0;
		dragon_force.z = 0; 
		
		//pXent_addcentralforce(dragon, dragon_force); 
		pXent_addtorquelocal (dragon, rotatedragon_force); 
	   
	  
	   if(key_space && wingvar==0)
	   {
	   pXent_addexplosion(dragon, vector(forceobject.x,forceobject.y,forceobject.z),20,30);
	   wingvar=1;
   	}
   	
   	
   	if(key_space)
	   {
	   	pXent_setdamping (dragon,100,200);
		}
		else
		{
			pXent_setdamping (dragon,10,200);
			wingvar=0;
		}
		
		wait (1);
	}
}

action my_uoc()
{ 

	////////////////////////////////////////////////////////////////////////////
	//hilfe für die kamera...                                                 //
	//auf uoc basiert die gesamte zoom und drehsache,da die kamera uoc folgt  //   
	////////////////////////////////////////////////////////////////////////////


	helper = my;
	set(my,PASSABLE);
	set(my,IGNORE_PASSENTS);
	vec_set(camera.pan,vector(my.pan-180,-my.tilt,0));
	camera_follow(me);
	
	while (1)
	{     
		my.x = dragon.x;
		my.y = dragon.y;
		my.z = dragon.z+8;
		
		if(follow==1)
		{
			my.pan = dragon.pan;
			my.tilt = dragon.tilt;
			my.roll = dragon.roll;
		}
		
		if (key_e)
		{
			my.pan += 5 * time_step;
		}
		if (key_q)
		{
			my.pan -= 5 * time_step;
		}
		
		if (key_pressed(74))
		{
			zoomvar += 10 * time_step;
		}
		if (key_pressed(78))
		{
			if (zoomvar>125)
			{
				zoomvar -= 10 * time_step;
			}
		}
		if (key_r)
		{
			my.tilt += 5 * time_step;
		}
		if (key_f)
		{
			my.tilt -= 5 * time_step;
		}
		if (key_g)
		{
			my.pan  = dragon.pan;
		}
		if (key_t)
		{
			my.pan  = dragon.pan;
			my.tilt = dragon.tilt;
			zoomvar = 400;
		}
		
		wait(1);
	}
}


code, der mir einen Drachen (hoffentlich) realistisch bewegt...

abe neuerdings kommt jedes mal beim Starten 2 Fehlermeldungen:
"script crash in camera_follow" und "script crash in my_forceobject"

wo zum teufel kommt das her???????? es hat doch vorher
geklappt...

ich hab gerade rausgefunden, dass die dre zeilen in camera_follow
Code:
vec_rotate(camera.x,ent.pan); // rotate the camera position with the player
		vec_add(camera.x,ent.x);      // add player position
		vec_set(camera.pan,vector(ent.pan-180,-ent.tilt,0));


der grund sind...
aber wo genau und wie man das ausbessert... keine Ahnung

Last edited by LPF; 08/01/11 11:41.

..oooO .........
..(....)..Oooo..
...\..(...(....)..
....\_)....)../..
...........(_/...
...ICH WAR....
........HIER....
Re: wo kommt der Script crash (E 1513) her ??? [Re: LPF] #379347
08/01/11 14:17
08/01/11 14:17
Joined: May 2007
Posts: 2,043
Germany
Lukas Offline

Programmer
Lukas  Offline

Programmer

Joined: May 2007
Posts: 2,043
Germany
Versuch mal, am Anfang von allen actions die Zeile
while(!me) wait(1);
einzufügen. So gehst du sicher, dass die me/my-Pointer und die Entity-Pointer, die du auf me setzt gültig sind.

Re: wo kommt der Script crash (E 1513) her ??? [Re: Lukas] #379355
08/01/11 14:59
08/01/11 14:59
Joined: Mar 2011
Posts: 69
Munich (Germany)
LPF Offline OP
Junior Member
LPF  Offline OP
Junior Member

Joined: Mar 2011
Posts: 69
Munich (Germany)
ich habs jetzt mal mit
while(!dragon) wait(1);
in my_forceobject probiert und der dazugehörige fehler ist weg...

ich habs mal in my_uoc geschrieben und der fehler war vollständig weg...

vielen dank

eine Frage noch:
was genau hat das jetzt gemacht?
wenn ichs richtig verstehe wartet er solange bis dragon zugewiesen ist oder?


Last edited by LPF; 08/01/11 15:43.

..oooO .........
..(....)..Oooo..
...\..(...(....)..
....\_)....)../..
...........(_/...
...ICH WAR....
........HIER....
Re: wo kommt der Script crash (E 1513) her ??? [Re: LPF] #379360
08/01/11 15:40
08/01/11 15:40
Joined: Dec 2008
Posts: 1,218
Germany
Rackscha Offline
Serious User
Rackscha  Offline
Serious User

Joined: Dec 2008
Posts: 1,218
Germany
Camera_follow gehört von deiner logik her auch direkt in die action o.O

Camera_Follow(My);

Was du machst ist in LiteC/CScript möglich, aber ein grosses problem.

Du weißt bei dir gerade überhaupt nicht WANN welches object wo existiert.

z.B. weißt du dragon den my pointer zu, um dan später irgendwo anders auf dragon zuzugreifen. Auch wenn es bei den paar zeilen noch zu überschauen ist, das könnte dir mitunter später zum verhängniss werden, wenn du solche globalen pointer in größerer anzahl verteilst.


MY Website with news of my projects:
(for example my current
Muliplayer Bomberman,
GenesisPrecompiler for LiteC
and TileMaster, an easy to use Tile editor)
Sparetime-Development

Re: wo kommt der Script crash (E 1513) her ??? [Re: Rackscha] #379361
08/01/11 15:45
08/01/11 15:45
Joined: Mar 2011
Posts: 69
Munich (Germany)
LPF Offline OP
Junior Member
LPF  Offline OP
Junior Member

Joined: Mar 2011
Posts: 69
Munich (Germany)
wie meinst du des?

na ja es funktioniert jetzt... ich bin vorerst glücklich aber wenn ich zukünftige fehler gleich vermeiden könnte wäre das schön

Last edited by LPF; 08/01/11 15:46.

..oooO .........
..(....)..Oooo..
...\..(...(....)..
....\_)....)../..
...........(_/...
...ICH WAR....
........HIER....
Re: wo kommt der Script crash (E 1513) her ??? [Re: LPF] #379364
08/01/11 15:55
08/01/11 15:55
Joined: May 2007
Posts: 2,043
Germany
Lukas Offline

Programmer
Lukas  Offline

Programmer

Joined: May 2007
Posts: 2,043
Germany
Was Rackscha meinte ist, dass, wenn du die Entitiy, der du my_uoc zugewiesen hast, entfernst, camera_follow noch weiterläuft. Das heißt du musst dich selbst darum kümmern, dass diese Funktion angehalten wird, damit es keinen Crash gibt, weil der "ent"-Pointer dann nicht mehr gültig ist. Wenn du statt einem Parameter einen globalen Pointer nimmst, gilt das gleiche.

Wenn du das, was du in dieser Funktion machst, direkt in der action machen würdest, dann hättest du das Problem nicht, denn die action wird automatisch gestoppt, wenn du die Entity entfernst. Zusätzlich kannst du while(me) statt while(1) schreiben um nochmal extra sicher zu gehen.


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