Gamestudio Links
Zorro Links
Newest Posts
Executing Trades on Next Bar Open
by vicknick. 06/13/24 08:51
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
1 registered members (Ayumi), 1,170 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
AemStones, LucasJoshua, Baklazhan, Hanky27, firatv
19059 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 4 1 2 3 4
ent_create action zuweisen? #312770
02/26/10 13:45
02/26/10 13:45
Joined: Nov 2006
Posts: 116
benija Offline OP
Member
benija  Offline OP
Member

Joined: Nov 2006
Posts: 116
Hallo,

ich bin gerade dabei meiner Spielfigur (Modell) die Fähigkeit des Schießens zu programmieren.

Wenn die Taste "u" gedrückt wird, wird die funktion ent_create aufgerufen um eine Art Kugel zu erzeugen.
Code:
kugel = ent_create("CUBE.MDL",vector(my.x, my.y, my.z+50), shoot_right);



nun stellt sich mir die Frage, wie ich dieser neuen Entity ein Event zuweisen kann. Also wenn die "Kugel" auf einen Gegner trifft, soll ein Event ausgeführt werden.

Wie kann ich dies tun?

Re: ent_create action zuweisen? [Re: benija] #312773
02/26/10 13:51
02/26/10 13:51
Joined: Apr 2005
Posts: 3,076
Germany, NRW
rvL_eXile Offline

3D Artist
rvL_eXile  Offline

3D Artist

Joined: Apr 2005
Posts: 3,076
Germany, NRW
schreibe die Action anstatt der shoot_right hinein.
Die Event definition kommt natürlich auch in die Action.
Die Event Function kommt seperat...

Beispiel:

Code:
Function Event_fnc
{
  if(event_type==event_entity)
  {
   //do something...
  }
}
Action My_action
{
Kugel=my;
event_entity=on;
my_event=Event_fnc;
//hier der rest der Action...
}

Function Main
{
 on_u=ent_create("CUBE.MDL",vector(my.x, my.y, my.z+50), my_action);
}



Nicht getestet, aber glaube das der Aufbau korrekt ist...

cYa Sebastian

Last edited by rvL_eXile; 02/26/10 13:55.

Tutorials:
[Blender]Terrain creation ENG/GER
[Blender]Low Poly Tree Modeling
[GIMP]Create a Texture for Terrains
CLICK HERE


Re: ent_create action zuweisen? [Re: benija] #312775
02/26/10 13:54
02/26/10 13:54
Joined: May 2009
Posts: 445
Peine, Germany
Razoron Offline
Senior Member
Razoron  Offline
Senior Member

Joined: May 2009
Posts: 445
Peine, Germany
Das machst du mit c_trace und ENABLE_SHOOT/EVENT_SHOOT

bei c_trace muss ACTIVATE_SHOOT als Flag gesetzt sein.

Aus dem Manual:

EVENT_SHOOT
ENABLE_SHOOT
Von einer c_trace-Anweisung mitACTIVATE_SHOOT getroffen.
Modifiziert:
you-Pointer auf tracende Entity, so es eine gibt.
Beispiel:
function shoot_event()
{
if (event_type == EVENT_SHOOT)
{
ent_playsound(my,whamm,50);
ptr_remove(me); // disappear when hit
}
}

action exploding_barrel_shoot()
{
my.emask |= ENABLE_SHOOT;
my.event = shoot_event;
}

EDIT:Boa, nein schon wieder 2 1/2 Minuten zu spät -.-..

Last edited by Razoron; 02/26/10 13:55.
Re: ent_create action zuweisen? [Re: Razoron] #312798
02/26/10 14:27
02/26/10 14:27
Joined: Nov 2006
Posts: 116
benija Offline OP
Member
benija  Offline OP
Member

Joined: Nov 2006
Posts: 116
danke für eure Antworten, haben mir weiter geholfen, allerdings funktioniert das schießen noch nicht ganz.

ich habe das PlayerModel, dieser habe ich eine Action zugewiesen, auf a nach rechts bewegen, d nach links bewegen und space springen. Zusätzlich habe ich nun programmiert, dass wenn a oder d und gleichzeitig u gedrückt wird, die Person in die jeweilige Richtung schießt.

Allerdings hapert es genau daran. Meine Idee war, dass ich mit ent_create eine Art Kugel erzeuge, die sich dann mit c_move in die jeweilige Richtung bewegt.

hier ein Teil der Player Action:
Code:
if(key_d)
		{
			my.pan = 0;
			ent_animate(my, "run", stat_perc, ANM_CYCLE);
			if(key_u)
				{
					//my.pan = 0;
					ent_animate(my, "attack", stat_perc, ANM_CYCLE);
		   		you = ent_create("CUBE.MDL",vector(my.x+50, my.y, my.z+50), aShoot_Right);
		   		//wait(1);
					stat_perc+=1;
				}
			stat_perc +=3;
			move_entity = 8;
		}



hier die Shoot Actions:

Code:
function shoot_left()
{
	if(event_type == EVENT_BLOCK)
	{
		ptr_remove(me);
	}
}

action aShoot_Left()
{
	my.emask |= (ENABLE_BLOCK);
	my.event = shoot_left;
	while(1)
	{
		c_move(my,nullvector, vector(-5,0,0),GLIDE);
		wait(1);
	}
}

function shoot_right()
{
	if(event_type == EVENT_BLOCK)
	{
		ent_remove(you);
	}	
}

action aShoot_Right()
{
	my.emask |= (ENABLE_BLOCK);
	my.event = shoot_right;
	while(1)
	{
		c_move(my,nullvector, vector(5,0,0),GLIDE);
		wait(1);
	}
}



wo liegt mein Fehler?

Re: ent_create action zuweisen? [Re: benija] #312805
02/26/10 14:33
02/26/10 14:33
Joined: Apr 2005
Posts: 3,076
Germany, NRW
rvL_eXile Offline

3D Artist
rvL_eXile  Offline

3D Artist

Joined: Apr 2005
Posts: 3,076
Germany, NRW
Anstatt der beiden Actions verschachtel das ganz mal in einer Function...
Das entfernen der Entitys machst du dann nochmals ausserhalb in einer Seperaten Function.

Beispiel:
Code:
Function Shoot
{
  if(key_a==1)
  {
   //baller wild rum
  }

  if(key_d==1)
  {
   //baller wild rum #2
  }
}

Function Remove_Bullet
{
//remove me (beide Pouinter abfragen
}



cYa Sebastian


Tutorials:
[Blender]Terrain creation ENG/GER
[Blender]Low Poly Tree Modeling
[GIMP]Create a Texture for Terrains
CLICK HERE


Re: ent_create action zuweisen? [Re: rvL_eXile] #312809
02/26/10 14:40
02/26/10 14:40
Joined: Mar 2007
Posts: 112
MikeS Offline
Member
MikeS  Offline
Member

Joined: Mar 2007
Posts: 112
Nun ja, mal ne ganz dumme frage, was genau funktioniert denn nicht richtig beim schießen?

definier mal genau welches problem du hast :-)


aber ich glaube ich hab da ein problem entdeckt, vielleicht ist das ja dein problem:

function shoot_right()
{
if(event_type == EVENT_BLOCK)
{
ent_remove(you);
}
}


Ein Block ist keine entity und kann somit nicht von ent_remove(you) beeinflusst werden (glaub ich jedenfalls, korrigiert mich wenn ich falsch liege).
auserdem wird deine kugel so keine entity erkennen, sondern das event nur ausführen, wenn es einen level block trift.
zudem wird sich die kugel nicht selbst entfernen, sondern die getroffene entity wird entfernt.

also, auch bei events wird die getroffene entity auf you gesetzt.


also, setzt mal das event auf EVENT_ENTITY
und den ent_remove auf me.



gruß

Mike

Last edited by MikeS; 02/26/10 14:53.
Re: ent_create action zuweisen? [Re: MikeS] #312810
02/26/10 14:42
02/26/10 14:42
Joined: Apr 2005
Posts: 3,076
Germany, NRW
rvL_eXile Offline

3D Artist
rvL_eXile  Offline

3D Artist

Joined: Apr 2005
Posts: 3,076
Germany, NRW
ich gehe davon aus, das Shoot_l nicht funktioniert... Da keine Kugel dafür erstellt wird..

Achja, schreibe mal den Pointer Kugel in die C_Move definitionen anstatt des "my" Pointers, das kann dir eventuelle Probleme ersparen...

Last edited by rvL_eXile; 02/26/10 14:45.

Tutorials:
[Blender]Terrain creation ENG/GER
[Blender]Low Poly Tree Modeling
[GIMP]Create a Texture for Terrains
CLICK HERE


Re: ent_create action zuweisen? [Re: MikeS] #312816
02/26/10 14:54
02/26/10 14:54
Joined: Nov 2006
Posts: 116
benija Offline OP
Member
benija  Offline OP
Member

Joined: Nov 2006
Posts: 116
die Kuglen bleiben an der PlayerFigur hängen, außerdem werden diese in einem Punkt erzeugt und wenn ich die u taste loslasse, werden sie nach rechts gescickt

Re: ent_create action zuweisen? [Re: benija] #312818
02/26/10 14:57
02/26/10 14:57
Joined: Nov 2006
Posts: 116
benija Offline OP
Member
benija  Offline OP
Member

Joined: Nov 2006
Posts: 116
Problem gelöst...

IGNORE_MODELS

Re: ent_create action zuweisen? [Re: benija] #312819
02/26/10 14:58
02/26/10 14:58
Joined: Mar 2007
Posts: 112
MikeS Offline
Member
MikeS  Offline
Member

Joined: Mar 2007
Posts: 112
Ah, dann füge mal ein:

action aShoot_Left()
{
my.emask |= (ENABLE_BLOCK);
my.event = shoot_left;
while(1)
{
c_move(my,nullvector, vector(-5,0,0),GLIDE);
wait(1);
}
}


Player = you;
c_move(my,nullvector, vector(-5,0,0),GLIDE | IGNORE_YOU);


Hm, IGNORE MODELS ist vielleicht nicht genau das was du willst, da damit alle models ignoriert werden, auch eventuelle gegner Models

Ich würds mit Ignore you machen, und den player als you definieren


du kannst das auch mit ner entfernungsabfrage kombinieren, damit event entities , das ja den gegner auf you setzt nicht ignoriert wird, also z,b.

if (vec_dist(my.x,player.x) < 20)
{
player = you
c_move...... | IGNORE_YOU);
}
c_move....... GLIDE); // also ohne Ignore you


Last edited by MikeS; 02/26/10 15:05.
Page 1 of 4 1 2 3 4

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