Gamestudio Links
Zorro Links
Newest Posts
Zorro 2.70
by jcl. 09/29/25 09:24
optimize global parameters SOLVED
by dBc. 09/27/25 17:07
ZorroGPT
by TipmyPip. 09/27/25 10:05
assetHistory one candle shift
by jcl. 09/21/25 11:36
Plugins update
by Grant. 09/17/25 16:28
AUM Magazine
Latest Screens
Rocker`s Revenge
Stug 3 Stormartillery
Iljuschin 2
Galactic Strike X
Who's Online Now
2 registered members (TipmyPip, 1 invisible), 18,731 guests, and 7 spiders.
Key: Admin, Global Mod, Mod
Newest Members
krishna, DrissB, James168, Ed_Love, xtns
19168 Registered Users
Previous Thread
Next Thread
Print Thread
Rate Thread
Page 1 of 2 1 2
lite-C Playerbewegung Problem #218310
07/27/08 20:10
07/27/08 20:10
Joined: Jan 2005
Posts: 74
Deutschland
Maschine Offline OP
Junior Member
Maschine  Offline OP
Junior Member

Joined: Jan 2005
Posts: 74
Deutschland
Hallo Zusammen,
Ich Beginne gerade mit lite-C, und habe wohl gerade einen gewaltigen Block im Kopf.
ich habe gerade eine action für meine Playerfigur geschrieben, und wundere mich warum es nicht funktioniert.
Helft mir bitte auf die Sprünge,
hier die action:
action playermove2()
{
plmod = my;
while (pl_energie > 0)
{
if (key_w){pl_speed.x = 10 * time_step;}
if (key_s){pl_speed.x = -10 * time_step;}
if (key_a){pl_speed.y = 5 * time_step;}
if (key_d){pl_speed.y = -5 * time_step;}
c_move (my, vector(pl_speed.x, pl_speed.y, pl_speed.z), nullvector, GLIDE);
wait (1);
}
}

sobald ich eine der 4 Tasten drücke hört die figur nicht mehr auf zu gehen, wo ist mein Fehler?
bin seit einigen Monaten nicht mehr mit 3dgs im Gange gewesen, lese Handbuch, andere Scripte und weis nicht mehr weiter.


Eine Stimme sprach zu mir:" Lächle und sei froh... es könnte schlimmer kommen".
Ich lächelte und war froh... und es kam schlimmer!
Re: lite-C Playerbewegung Problem [Re: Maschine] #218316
07/27/08 21:01
07/27/08 21:01
Joined: Aug 2003
Posts: 7,440
Red Dwarf
Michael_Schwarz Offline
Senior Expert
Michael_Schwarz  Offline
Senior Expert

Joined: Aug 2003
Posts: 7,440
Red Dwarf
nun, weil du die geschwindigkeit SETZT sobald du eine taste drückst, aber nicht mehr auf 0 ZURÜCKSETZT sobald du die tasten loslässt.

Abgesehen davon ist dein versuch nicht sehr effizient. Aber das beiseite, sonst guter anfang.

Falls du möchtest, kannst du dir meinen artikel über Half-Life movement in 3dgs mal durchlesen:

http://3dgsnerd.xware-cg.com/code-snippet-1/


"Sometimes JCL reminds me of Notch, but more competent" ~ Kiyaku
Re: lite-C Playerbewegung Problem [Re: Michael_Schwarz] #218649
07/29/08 17:58
07/29/08 17:58
Joined: Jan 2005
Posts: 74
Deutschland
Maschine Offline OP
Junior Member
Maschine  Offline OP
Junior Member

Joined: Jan 2005
Posts: 74
Deutschland
Hallo Michael,
Danke für die schnelle Antwort, habe pl_speed.x und pl_speed.y nach der c-move-Zeile auf 0 gesetzt.
Nun funktioniert es.
Habe Deinen Artikel gelesen Kopiert und ausgedruckt...
bin noch nicht soweit das zu begreifen...
Danke auch für das Lob (guter Anfang) aber warum ist der Code in Deinen Augen nicht effizient?
Diese Frage stelle ich nicht empört oder beleidigt, vielmehr will ich lernen.
Ich habe einige wenige Beispiele zur Playerbewegung gelesen, er war immer so ähnlich vom Ablauf.
Ich habe globale Variablen gewählt, weil der Gegner sie verarbeiten soll, d.h. er soll seine Entscheidungen nach dem Zustand, Status des Players richten. oder was genau meinst Du??


Eine Stimme sprach zu mir:" Lächle und sei froh... es könnte schlimmer kommen".
Ich lächelte und war froh... und es kam schlimmer!
Re: lite-C Playerbewegung Problem [Re: Maschine] #218656
07/29/08 18:32
07/29/08 18:32
Joined: Jan 2007
Posts: 221
F
Fenriswolf Offline
Member
Fenriswolf  Offline
Member
F

Joined: Jan 2007
Posts: 221
Hallo,

Quote:
Ich habe globale Variablen gewählt, weil der Gegner sie verarbeiten soll, d.h. er soll seine Entscheidungen nach dem Zustand, Status des Players richten.

Anstatt der globalen Variablen kannst du auch Entityskills verwenden:
Code:
#define SPEED_X 0
#define SPEED_Y 1
#define SPEED_Z 2

...

my.skill[SPEED_X] = ...;

Die kannst du dann außerdem universell für alle Entities verwenden, die sich bewegen (also auch für die Gegner).


Die bedingten Anweisungen kannst du ebenfalls los werden:
Code:
my.skill[SPEED_X] = (key_w - key_s) * 10 * time_step;
my.skill[SPEED_Y] = (key_d - key_a) * 10 * time_step;


Letzte Sache: Die Schwerkraft sollte keine relative sondern eine absolute Geschwindigkeit sein.
Code:
c_move (my, vector(my.skill[SPEED_X], my.skill[SPEED_Y], 0), vector(0, 0, my.skill[SPEED_Z]), GLIDE);


Das als kleiner Denkanstoß; ich hoffe es hilft. : )

Re: lite-C Playerbewegung Problem [Re: Fenriswolf] #218657
07/29/08 18:46
07/29/08 18:46
Joined: Jan 2005
Posts: 74
Deutschland
Maschine Offline OP
Junior Member
Maschine  Offline OP
Junior Member

Joined: Jan 2005
Posts: 74
Deutschland
Hallo Fenriswolf,
Es wird mir sehr helfen, danke.
eine nebenfrage noch:
Ich war lange nicht mehr hier im Forum und sehe, wenn code im Post eingefügt wird diese scrollbaren Boxen.
vieleicht ne blöde Frage , aber wie macht Ihr das?


Eine Stimme sprach zu mir:" Lächle und sei froh... es könnte schlimmer kommen".
Ich lächelte und war froh... und es kam schlimmer!
Re: lite-C Playerbewegung Problem [Re: Maschine] #218661
07/29/08 19:09
07/29/08 19:09
Joined: Jan 2007
Posts: 221
F
Fenriswolf Offline
Member
Fenriswolf  Offline
Member
F

Joined: Jan 2007
Posts: 221
Quote:
[code][/code]

Zwischen die Code-Tags schreibst du deinen Code rein.
Die Code-Tags kannst du automatisch einfügen lassen, indem du den Rautenzeichen-Button über dem Eingabefeld benutzt (nur in großer Ansicht):

Re: lite-C Playerbewegung Problem [Re: Fenriswolf] #218667
07/29/08 19:44
07/29/08 19:44
Joined: Jan 2005
Posts: 74
Deutschland
Maschine Offline OP
Junior Member
Maschine  Offline OP
Junior Member

Joined: Jan 2005
Posts: 74
Deutschland
mein Dank wird Dir auf ewig nachschleichen!!

gleich mal ein Test
Code:
blabla blubber 

hura!


Eine Stimme sprach zu mir:" Lächle und sei froh... es könnte schlimmer kommen".
Ich lächelte und war froh... und es kam schlimmer!
Re: lite-C Playerbewegung Problem [Re: Maschine] #218818
07/30/08 19:29
07/30/08 19:29
Joined: Jan 2005
Posts: 74
Deutschland
Maschine Offline OP
Junior Member
Maschine  Offline OP
Junior Member

Joined: Jan 2005
Posts: 74
Deutschland
Hallo Fenriswolf,
habe mal Deine Vorschläge versucht umzusetzen,
hier mein Ergebnis:
Code:
///////////////////////////////
#include <acknex.h>
#include <default.c>
///////////////////////////////
#DEFINE pl_speed_x, SKILL1;
#DEFINE pl_speed_y, SKILL2;
#DEFINE pl_speed_z, SKILL3;
#DEFINE pl_energie, SKILL4;

#DEFINE pl_weg_x, SKILL1;
#DEFINE pl_weg_y, SKILL2;
#DEFINE pl_weg_z, SKILL3;


///////////////////////////////
ENTITY* pl_mod;


///////////////////////////////

function main()
{
	fps_max = 150;
	video_mode = 9; 		// Starteinstellung für 1280 * 1024
	video_depth = 32; 	// Starteinstellung für 32 Bit Farbtiefe
	video_screen = 1; 	// Starteinstellung für Fullscreen   	

	level_load ("shooter.wmb");
	wait (2);
}
///////////////////////////////
action playermove()
{
	pl_mod = my;
	pl_energie = 100;
	pl_speed_x = 10;
	pl_speed_y = 5;
	while (pl_energie > 0)
	{
		my.pl_weg_x = (key_w - key_s) * pl_speed_x * time_step;
		my.pl_weg_y = (key_d - key_a) * pl_speed_y * time_step;
		c_move (my, vector(pl_weg.x, pl_weg.y, 0), nullvector, GLIDE);
		wait(1);
	}
} 


nun bekomme ich beim Testlauf eine Fehlermeldung in zeile 5
"DEFINE undeclared identifer"

Kannst Du oder jemand anders mir weiterhelfen??

Habe mir mal eben den ganzen Post angesehen...
manch einer mag jetzt denken der ist zu faul nachzulesen.
Ich habe mir vor einer Ewigkeit hier meinen Anranzer (zu Recht)abgeholt weil ich wohl zu ungeduldig war auch habe ich böse über die Templates und Conitec hergezogen, aber ich habe nie, und werde es auch nie, erwarten das mir hier ein vollständiger Code geliefert wird!
Dazu habe ich viel zu viele Flausen im Kopf wie mein Game aussehen soll.
aber mit 49 Jahren lernt man nicht mehr so toll, und ich habe das Gefühl, das sich mit der Version 7 und lite-C einiges geändert hat. Zudem habe ich in manch einer Woche nur 5 - 6 Stunden Zeit für Computer. Ich brauche eine Starthilfe, wenn ich den Anfang erst wieder habe läufts auch wieder


Recht langweiliger Roman, aber ich hatte das Gefühl ich müsste dies mal schreiben,
sorry...


Last edited by Maschine; 07/30/08 20:05. Reason: Nachtrag

Eine Stimme sprach zu mir:" Lächle und sei froh... es könnte schlimmer kommen".
Ich lächelte und war froh... und es kam schlimmer!
Re: lite-C Playerbewegung Problem [Re: Maschine] #218823
07/30/08 20:12
07/30/08 20:12
Joined: Aug 2003
Posts: 7,440
Red Dwarf
Michael_Schwarz Offline
Senior Expert
Michael_Schwarz  Offline
Senior Expert

Joined: Aug 2003
Posts: 7,440
Red Dwarf
Define ist unter lite-c anders als unter c-script, deshalb der fehler, probier mal das:

Code:
#DEFINE pl_speed_x 1;
#DEFINE pl_speed_y 2;
#DEFINE pl_speed_z 3;
#DEFINE pl_energie 4;

#DEFINE pl_weg_x 5;
#DEFINE pl_weg_y 6;
#DEFINE pl_weg_z 7;

...
Code:
my.skill[pl_weg_x] = (key_w - key_s) * my.skill[pl_speed_x] * time_step;
my.skill[pl_weg_y] = (key_d - key_a) * my.skill[pl_speed_y] * time_step;
c_move (my, vector(my.skill[pl_weg_x], my.skill[pl_weg_y], 0), nullvector, GLIDE);


sorry auch für die späte antwort, ich war aber recht lange beschäftigt wink

ineffizient meine ich z.b. in deinem (ersten) versuch weil du per IF abgefragt hast ob key_s/w/a/d gedrückt wird. Wie du aber ja schon gelernt hast, kannst du ein paar mikrozyklen rechenleistung sparen indem du keinen vergleich machst, sondern einfach den wert von key_* nimmst - da dieser bei "gedrückt" 1 ergibt - und mit dem speed wert multiplizierst, desweiteren finde ich (wenn es gravitation gibt, wenn nicht dann kannst du diesen part ignorieren) das 2 c_moves besser sind, einen für die bewegung und einen für die umwelteinflüsse, weil es sonst später sehr sehr schwer wird treppen zu steigen oder gar nur ganz leichte steigungen hochzugehen wink

ansonsten, du lernst fix, sehr gut und weiter so!


"Sometimes JCL reminds me of Notch, but more competent" ~ Kiyaku
Re: lite-C Playerbewegung Problem [Re: Michael_Schwarz] #219028
07/31/08 17:57
07/31/08 17:57
Joined: Jan 2005
Posts: 74
Deutschland
Maschine Offline OP
Junior Member
Maschine  Offline OP
Junior Member

Joined: Jan 2005
Posts: 74
Deutschland
Moin,
habe mal den Code geändert:
Code:
///////////////////////////////
#include <acknex.h>
#include <default.c>
///////////////////////////////
#DEFINE pl_speed_x 1;
#DEFINE pl_speed_y 2;
#DEFINE pl_speed_z 3;
#DEFINE pl_energie 4;

#DEFINE pl_weg_x 5;
#DEFINE pl_weg_y 6;
#DEFINE pl_weg_z 7;


///////////////////////////////
ENTITY* pl_mod;


///////////////////////////////

function main()
{
	fps_max = 150;
	video_mode = 9; 		// Starteinstellung für 1280 * 1024
	video_depth = 32; 	// Starteinstellung für 32 Bit Farbtiefe
	video_screen = 1; 	// Starteinstellung für Fullscreen   	

	level_load ("shooter.wmb");
	wait (2);
}
///////////////////////////////
action playermove()
{
	pl_mod = my;
	pl_energie = 100;
	pl_speed_x = 10;
	pl_speed_y = 5;
	while (pl_energie > 0)
	{
		my.skill[pl_weg_x] = (key_w - key_s) * my.skill[pl_speed_x] * time_step;
		my.skill[pl_weg_y] = (key_d - key_a) * my.skill[pl_speed_y] * time_step;
		c_move (my, vector(my.skill[pl_weg_x], my.[pl_weg_y], 0), nullvector, GLIDE);
		wait(1);
	}
} 


Es kommt die gleiche Meckermeldung:

[img:left]D:\Eigene Daten\Screenshoot\box.cpt[/img]

Ich habe auch andere Varianten ausprobiert, immer das selbe...
Auch die Beispiele aus der Hilfe habe ich genau so versucht...
es geht nicht!

Ich habe die Sybex Edition, da ist ein gedrucktes Handbuch dabei, allerding besteht es Hauptsächlich aus den Workshops von Georg Pirvu, von skills keine Rede.
Ich habe auch die A6 (6.6) von Conitec, habe mich beim Neukauf für Sybex entschieden des Handbuches wegen.
wenn ich die Hilfe der A6 und der A7 vergleiche, kommt es mir vor als wurde die A7 Hilfe zum großen Teil nur 1 zu 1 kopiert.
Oder kann es sein, daß die beiden Dateien
#include <acknex.h>
#include <default.c>
evtl bei mir zerschossen sind? Soweit ich es verstanden habe sind die doch für die Übersetzung wdl/c-script zu lite-c zuständig...
HELP!


Hmmm, Bild einfügen hat nicht geklappt jedenfalls ist die Meldung genau wie vorher.



Last edited by Maschine; 07/31/08 18:01.

Eine Stimme sprach zu mir:" Lächle und sei froh... es könnte schlimmer kommen".
Ich lächelte und war froh... und es kam schlimmer!
Page 1 of 2 1 2

Gamestudio download | 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