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 (AndrewAMD, 1 invisible), 1,369 guests, and 1 spider.
Key: Admin, Global Mod, Mod
Newest Members
Hanky27, firatv, wandaluciaia, Mega_Rod, EternallyCurious
19051 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Kollision und Auslösen von Events #361822
03/05/11 12:56
03/05/11 12:56
Joined: Feb 2011
Posts: 20
N
Neoxit Offline OP
Newbie
Neoxit  Offline OP
Newbie
N

Joined: Feb 2011
Posts: 20
Einen Wunderschönen!

Folgendes Problem:
Ich habe ein Raumschiff und flieg damit durch die Gegend. Wenn einer der Laserschüsse mit c_move ein Entity trifft, wird dieser Partikel aufgelöst und ein kleiner Explosionseffekt (schusstreffer) wird aufgerufen. Wie kann ich nun den Entitiy darauf reagieren lassen? In dem Beispiel: Wie kann ich den Skill4 (in den Fall als HP) nun reduzieren. So das er erkennt das der schuss a. von einem Spieler kommt. Und b. das er überhaupt erkennt das es ein Schuss war. Ich habe etwas über event_shoot gelesen. Allerdings funktioniert es nicht so wie ich mir in etwa vorgestellt habe, eventuell auch einfach falsch interpretiert. Seht selber:

Schuss Funktion:

Code:
function Waffenschuss_01()
{
	var lifetimer = 350;
	
	me.flags |= TRANSLUCENT | BRIGHT;
	//you = player;
	vec_set(my.pan, you.pan);
	
	
	
	while(1)
	{
		effect(PartikelWaffenschuss_01,1,vector(me.x,me.y,me.z),nullvector);		
		// KOLLISION DES SCHUSSES
		if(c_move(me,vector(350*time_step,0,0),nullvector,IGNORE_PASSABLE | IGNORE_YOU | IGNORE_SPRITES | ACTIVATE_SHOOT ) <= 0)
		{
			effect(PartikelPlasmaExplosion_01,10,vector(me.x,me.y,me.z),nullvector);
			ent_remove(me);
			return;
		}
		
		lifetimer -= 1;
		
		if(lifetimer <= 0)
		{
			ent_remove(me);
			return;
		}
		
		wait(1);
	}
}



Und die Action (In dem Fall ein Asteroid) die Bspw darauf reagieren soll:

Code:
action Asteroid()
{
	me.skill1 = random(3)-5; // PanSpeed
	me.skill2 = random(3)-5; // TiltSpeed
	me.skill3 = random(5)-10; // RollSpeed
	
	me.skill4 = 100; // Lebensenergie
	
	while(me)
	{
		
		//Debugtest = me.skill4;
		
		me.pan += me.skill1*time_step;
		me.tilt += me.skill2*time_step;
		
		if(event_type == EVENT_SHOOT)
		{
			me.skill4 -= 20;
		}
		
		if(me.skill4 <= 0)
		{
			ptr_remove(me);
		}
		
		
		wait(1);
	}
	
}



Last edited by Neoxit; 03/05/11 12:56.
Re: Kollision und Auslösen von Events [Re: Neoxit] #361826
03/05/11 13:13
03/05/11 13:13
Joined: Jan 2011
Posts: 797
Da wo du nicht bist! Muhahaha!
xxxxxxx Offline
User
xxxxxxx  Offline
User

Joined: Jan 2011
Posts: 797
Da wo du nicht bist! Muhahaha!
ich würde sowas anstelle der c_move bedingung versuchen:
Code:
c_move(...);//kein ACTIVE_SHOOT
if(you&&HIT_TARGET)
{
    you.skill4-=20;
    effeckt(blablabla);//position = hit.x
    ent_remove(me);
    return;
}


und so sollte der asteroid code aussehen
Code:
action Asteroid()
{
	me.skill1 = random(3)-5; // PanSpeed
	me.skill2 = random(3)-5; // TiltSpeed
	me.skill3 = random(5)-10; // RollSpeed
	me.skill4 = 100;
	while(skill4 > 0)
	{
		me.pan += me.skill1*time_step;
		me.tilt += me.skill2*time_step;
		wait(1);
	}
	ptr_remove(me);
}


xxxxxxx


Es ist immer wieder erstaunlich, dass Leute die riesen Scripte schreiben die einfachsten sachen nicht können zb. mich mit SIEBEN x zu schreiben! tongue
Re: Kollision und Auslösen von Events [Re: xxxxxxx] #361827
03/05/11 13:17
03/05/11 13:17
Joined: Feb 2011
Posts: 20
N
Neoxit Offline OP
Newbie
Neoxit  Offline OP
Newbie
N

Joined: Feb 2011
Posts: 20
Ok mit dem Code hätte ich nun allerdings in der Schussfunktion "Eingestellt" was passiert wenn irgendwas getroffen wird. Nämlich das dort HP abgezogen werden. Wenn ich nun aber bei einigen anderen mit dem Selben schuss andere dinge berechnen möchte würde er mir dennoch von skill4. 20 abziehen. Daher würde ich gern wissen ob es möglich ist auch in der Action vom Getroffenen Objekt entsprechend zu reagieren.

Re: Kollision und Auslösen von Events [Re: Neoxit] #361828
03/05/11 13:25
03/05/11 13:25
Joined: Jan 2011
Posts: 797
Da wo du nicht bist! Muhahaha!
xxxxxxx Offline
User
xxxxxxx  Offline
User

Joined: Jan 2011
Posts: 797
Da wo du nicht bist! Muhahaha!
für den asteoriten(oberhalb der while schleife)
Code:
my.emask |= (ENABLE_ENTITY);//ENABLE_IMPACT geht auch
my.event = reaktion;


jetz muss nur noch der push wert der stoßenden entity(also des laser strahls) kleiner werden und natürlich in der function "reaktion" noch 20 von skill4 abgezogen werden!
xxxxxxx


Es ist immer wieder erstaunlich, dass Leute die riesen Scripte schreiben die einfachsten sachen nicht können zb. mich mit SIEBEN x zu schreiben! tongue

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