Gamestudio Links
Zorro Links
Newest Posts
Executing Trades on Next Bar Open
by Zheka. 06/20/24 14:26
Lapsa's very own thread
by rki. 06/19/24 11:27
A simple game ...
by VoroneTZ. 06/18/24 10:50
Face player all the time ...
by bbn1982. 06/18/24 10:25
Zorro Beta 2.61: PyTorch
by jcl. 06/10/24 14:42
New FXCM FIX Plugin
by flink. 06/04/24 07:30
AUM Magazine
Latest Screens
The Bible Game
A psychological thriller game
SHADOW (2014)
DEAD TASTE
Who's Online Now
1 registered members (AndrewAMD), 1,298 guests, and 2 spiders.
Key: Admin, Global Mod, Mod
Newest Members
Mino, squik, AemStones, LucasJoshua, Baklazhan
19061 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
Nur einmal bewegen bitte! #333721
07/18/10 16:56
07/18/10 16:56
Joined: May 2010
Posts: 48
I
Ich_bin_Batman Offline OP
Newbie
Ich_bin_Batman  Offline OP
Newbie
I

Joined: May 2010
Posts: 48
Hallo liebe 3DGS Community,
Ich habe ein Script für meine Kiste geschrieben, eine ganz normale Kiste eben.
Das Script sollte so funktionieren:
Die kiste ist da, man schlägt einmal drauf und sie bewegt sich ein Stückchen,man schlägt noch einmal sie bewegt sich wieder ein Stückchen und beim dritten mal geht sie kaputt.
So weit in der Theorie....

Jedoch wenn ich meine Kiste "angreife" bewegt sie sich(besonders bei einem längeren Angriff) 2 mal.
Kurz: Es ist so als würde ich einmal angreifen die Kiste jedoch 2 mal verschieben.Ich hoffe ihr versteht es denn ich bin nicht allzu gut im schildern von Problemen.

Der Code für den Player basiert auf dem KHMovement von David Lancaster.


Code der Kiste:
Code:
var staerke=0;
var entfernung=20; //wie weit sie sich bewegt
var laenge = 0;

entity* target_enemy;
var boom_var;
var animdist;



action Kiste
{

   my.gravity = 6;
   my.polygon = ON;
 	your = target_enemy;
 	my.skill80==1;
	you = player;
	my.shadow = on;
	my.health = 5000;
	enemy_NR = 2;
	my.enable_scan = on;
	my.enable_entity = ON;
	my.FLAG1 = on;
	Lebensanzeige_verschwindet(); 
Kiste_Schaden();
	while(animdist < 100)
 {

	
		IF (my.hit_by_player == 1) 
		{
			my.move_x = player.move_x;
			my.move_y = player.move_y;
			my.move_z = player.move_z;
			while(player == NULL){wait(1);}
			
			c_move(my,nullvector,my.move_x,use_aabb | ignore_passable | glide);
			IF (player.animblend == blend || player.animblend < attack_a || my.animblend > attack_f) { my.hit_by_player = 0; }
		}
		 wait(1); 
		IF (player.animblend >= stand && target_enemy == my && player_lock_on == 0) && (player.animblend < attack_a || player.animblend > attack_f) { target_enemy = null; }
		IF (target_enemy == my && vec_dist(my.x,player.x) > 600) { target_enemy = null; }
		wait(1);

			if(my.health < -150)
			{

not_visiert();	
my.TRANSLUCENT = on;
my.alpha = 100;
my.enable_scan = off;
my.passable = on;
while(animdist < 100)
{
	
animdist += 5.5 * time_step; //gewünschte geschwindigkeit
ent_cycle("explo",animdist);
if(animdist > 15)
{

my.alpha -= 8;

}
wait(1);
}

			}

}
if(animdist > 100)
{

my.invisible = on;
animdist == 0;
Lade_c3();
}

}

function Kiste_Schaden
{

while(player == NULL){wait(1);}
while(1)
{


if(Player_hit_enemy == 1 && laenge < 6 )
{
if(player.animblend == attack_c)
{
	my.health = -160;
}
staerke=0;

if(player.animblend == attack_a && player.animate < 40 || player.animblend == attack_b && player.animate < 45)
{

my.x+=entfernung*cos(atk_pen)*time_step;
my.y+=entfernung*sin(atk_pen)*time_step; //schiesse ihn in die Richtung in die er schaut
my.z+=staerke*time_step; //lass ihn in die Luft fliegen
laenge += 3*time_step;
atk_once = 1;

}
else
{

	Player_hit_enemy = 0;
	laenge = 0;
	atk_once = 0;

} 
}
else
{

	Player_hit_enemy = 0;
	laenge = 0;
	atk_once = 0;

}

wait(1);
}
}



Es stehen ein paar Sachen drin die vollkommen unnötig sind dafür muss ich mich entschuldigen durch das ganze Rumprobieren herrscht dort einiges Durcheinander.

MFG Batman

Last edited by Ich_bin_Batman; 07/19/10 01:12.
Re: Nur einmal bewegen bitte! [Re: Ich_bin_Batman] #333739
07/18/10 19:31
07/18/10 19:31
Joined: Aug 2007
Posts: 1,922
Schweiz
Widi Offline
Serious User
Widi  Offline
Serious User

Joined: Aug 2007
Posts: 1,922
Schweiz
Das ist c script. Bitte poste das nächste mal unter "C-Script and WDL". Dort ist die Wahrscheinlichkeit höher, dass sich jemand den Code anschaut, der c script auch beherrscht.

Re: Nur einmal bewegen bitte! [Re: Widi] #333841
07/19/10 12:56
07/19/10 12:56
Joined: May 2010
Posts: 48
I
Ich_bin_Batman Offline OP
Newbie
Ich_bin_Batman  Offline OP
Newbie
I

Joined: May 2010
Posts: 48
Ok danke, ich weiß das C-scripter nur noch selten zu finden sind.Jedoch ist es für mich nicht das große Problem es von LIte-c in C-script zu übersetzen , einfach nur das Prinzip würde vollkommen ausreichen.Wenn die Hilfe sozusagen in Form von Lite-c kommt wäre das nicht schlimm.
Ich danke trotzdem für das aufmerksam machen.Vielleicht stößt ja ein MOD auf den Therad , und könnte ihn verschieben.Denn ich will nicht umbedingt 2 mal den gleichen Therad aufmachen.

Re: Nur einmal bewegen bitte! [Re: Ich_bin_Batman] #333850
07/19/10 13:59
07/19/10 13:59
Joined: Nov 2008
Posts: 216
J
jane Offline
Member
jane  Offline
Member
J

Joined: Nov 2008
Posts: 216
Im KHMovement-script sind, soweit ich mich erinnern kann attack-combis integriert.
Wenn also so eine Combi ausgelöst wird werden mehrere attack`s ausgelöst.
Sollte mit einer längeren wait am Ende der "function Kiste_Schaden" zu beheben
sein (besser ein sleep(1);). Wenn das noch nicht den gewünschten Erfolg bringt,
einfach mal noch ein wait(8) oder höher ans Ende der "if(player.animblend == attack_a ...", damit der Schaden an der Kiste nur einmal pro Angriff wirkt.

Re: Nur einmal bewegen bitte! [Re: jane] #333855
07/19/10 14:41
07/19/10 14:41
Joined: May 2010
Posts: 48
I
Ich_bin_Batman Offline OP
Newbie
Ich_bin_Batman  Offline OP
Newbie
I

Joined: May 2010
Posts: 48
Ok das hat jetzt irgendwie nicht so ganz hingehauen.
Selbst bei Sleep(200) sehe ich keine Veränderung
Und beim wait(8) am ende der IF anweisung passiert folgendes:
Sie bewegt sie sich ca.3 mal bei jedem Angriff , nur das sie sich jetzt nur noch ein paar Pixel weit bewegt.

PS: Trotzdem,Danke für die schnelle Antwort smile

Re: Nur einmal bewegen bitte! [Re: Ich_bin_Batman] #333909
07/19/10 22:29
07/19/10 22:29
Joined: Nov 2008
Posts: 216
J
jane Offline
Member
jane  Offline
Member
J

Joined: Nov 2008
Posts: 216
Sorry, ist schon eine Weile her als ich noch mit wdl gearbeitet habe.

Probier doch mal der "if(player.animblend == attack_a ..." ein
"... && atk_once==0" als Bedingung zu geben, so sollte die Bewegung nur
einmal ausgeführt werden da die "atk_once" ja nach der Bewegung auf 1 gesetzt wird.

Re: Nur einmal bewegen bitte! [Re: jane] #333918
07/20/10 00:31
07/20/10 00:31
Joined: May 2010
Posts: 48
I
Ich_bin_Batman Offline OP
Newbie
Ich_bin_Batman  Offline OP
Newbie
I

Joined: May 2010
Posts: 48
Hmm... Jetzt bewegt es sich so ruckelig...wie soll man sagen so stückchenweiße, schwer zu erklären, sorry.
Verstehst du wie ich das mein?

Re: Nur einmal bewegen bitte! [Re: Ich_bin_Batman] #334126
07/21/10 13:10
07/21/10 13:10
Joined: Nov 2008
Posts: 216
J
jane Offline
Member
jane  Offline
Member
J

Joined: Nov 2008
Posts: 216
Wenn Du für den Player die KHMovement nutz, kannst Du für die bewegung der Kiste doch die Vorwärtsbewegung des Players bei der attack verwenden. In der enemy.wdl
wird der Gegner ja auch bei jeder Atacke so weit zurückbewegt wie der Player vorwärts geht, und das sieht doch recht flüssig aus. In der Version der
KHMovement die ich zum testen habe wird das über eine c_move(... , in der Action enemy_dummy sauber erledigt. Dort wird dem Gegner (bzw. der Kiste in Deinem Falle)
einfach die Bewegung des Players als Strecke und Richtung zur Bewegung gegeben.

Ich werde es im Laufe des Nachmittags mal durchtesten.

Last edited by jane; 07/21/10 13:23.
Re: Nur einmal bewegen bitte! [Re: jane] #334163
07/21/10 16:50
07/21/10 16:50
Joined: Nov 2008
Posts: 216
J
jane Offline
Member
jane  Offline
Member
J

Joined: Nov 2008
Posts: 216
Versuchs mal auf der Basis, natürlich müssen Deine Explosion
usw. wieder eingefügt werden, aber die Bewegung der Kiste sollte so hinhauen. Wenn in der Kiste_Schaden nur noch
Test-Variablen gesteuert werden ... ist die überflüssig.

Code:
var staerke=0;
var entfernung=20; //wie weit sie sich bewegt
var laenge = 0;
var Player_hit_enemy;
var atk_once = 0;

DEFINE health, skill20;

entity* target_enemy;
var boom_var;
var animdist;

function Kiste_Schaden;

function Kiste_gravity() 
{
	trace_mode = ignore_me+ignore_passable+use_box;
	result = trace(vector(my.x,my.y,my.z),vector(my.x,my.y,my.z - 4000));
	IF (result > 0) {	my.z -= 1 * time_step; }
}

action Kiste
{

	my.gravity = 6;
	my.polygon = ON;
	your = target_enemy;
	my.skill80==1;
	you = player;
	my.shadow = on;
	my.health = 500;
	//	enemy_NR = 2;
	my.entity_type = 2;
	my.enable_scan = on;
	my.FLAG1 = on;
	//Lebensanzeige_verschwindet();
	Kiste_Schaden();
	
	while(player == NULL){wait(1);}
	
	while(1)
	{
		Kiste_gravity();
		
		IF (my.hit_by_player == 1) 
		{
			my.move_x = player.move_x;
			my.move_y = player.move_y;
			my.z+=2*time_step; //lass Kiste in die Luft fliegen	
			
			
			c_move(my,nullvector,my.move_x,use_polygon | ignore_passable | glide);
			IF (player.animblend == blend || player.animblend < attack_a) { my.health-=240; my.hit_by_player = 0; }
		}
		IF (player.animblend >= stand && target_enemy == my && player_lock_on == 0) && (player.animblend < attack_a || player.animblend > attack_f) { target_enemy = null; }
		IF (target_enemy == my && vec_dist(my.x,player.x) > 300) { target_enemy = null; }

		if(my.health < 0)
		{
			//			not_visiert();	
			my.TRANSLUCENT = on;
			my.alpha = 100;
			my.enable_scan = off;
			my.passable = on;
			target_enemy = null;
			while(animdist < 100)
			{
				
				animdist += 5.5 * time_step; //gewünschte geschwindigkeit
				ent_cycle("explo",animdist);
				if(animdist > 15)
				{

					my.alpha -= 8;

				}
				wait(1);
			}

		}
		wait(1);
	}
	if(animdist > 100)
	{
		my.invisible = on;
		//		animdist == 0;
		//Lade_c3();
	}
}

function Kiste_Schaden
{
	while(1)
	{
		if(my.health > 0)
		{
			laenge += 3*time_step;
			atk_once = 1;
		}
		else
		{
			Player_hit_enemy = 0;
			laenge = 0;
			atk_once = 0;
		}
		wait(1);
	}
}



Re: Nur einmal bewegen bitte! [Re: jane] #334324
07/22/10 15:05
07/22/10 15:05
Joined: May 2010
Posts: 48
I
Ich_bin_Batman Offline OP
Newbie
Ich_bin_Batman  Offline OP
Newbie
I

Joined: May 2010
Posts: 48
Danke für die Mühe^^

Ich habe mit dem veränderten script viel rumprobiert jedoch klappt es einfach nich Pro Angriff eine fließende,kleine,ruckelfreie Bewegung hinzukriegen.

Page 1 of 2 1 2

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