World of Gothic Archiv > Editing
Rückgabeparameter bei TAs?
Seite 1 von 1  1 
07.08.2002, 15:37 #1
GülleMüller
Beiträge: 472
Rückgabeparameter bei TAs?
Hi
me stellt sich jetzt mal dumm!

Was sind die Vor/Nachteile von Rückgabeparametern in Zuständen/Tagesabläufen?
Hab zwar massig neu geschrieben, aber so recht nen Unterschied habsch nich gefunden...
07.08.2002, 15:52 #2
HornOx
Beiträge: 1.458

Was genau meinst du mit Rückgabeparametern?
Die vorhandenen ZS und TA beginnen alle(?) mit "func void" und liefern daher nix zurück, ein Return mit Parameter ist wegen dem void schwachsinnig. Wozu auch? Sie werden ja eh nicht vom Script aufgerufen, den Rückgabewert könnte man also nicht weiterverarbeiten...
07.08.2002, 16:13 #3
GülleMüller
Beiträge: 472

Bei GuidePC_loop,FollowPC_loop,Guard_loop,usw. wird (bei mir jedefalls) int zurückgegeben. Außerdem würde Const int LOOP_CONTINUE und _END keinen Sinn machen...
Mit dem Benutzen von MOBSIs hängts glaub ich net zusammen, weil HerbAlchemy nix zurück gibt...
07.08.2002, 23:15 #4
HornOx
Beiträge: 1.458

Gut das ich doch noch das "?" hinter "alle" gesetzt habe ;) Die Verarbeitung des Rückgabewerts erfolgt aber wirklich nicht per script sondern wird von irgendelchen Engine-internen Funktionen übernommen.
Btw, ist "Rückgabeparameter" ein Synonym von Rückgabewert?
Mal ein paar Codeschnipsel als Beispiel wie ich es verstanden habe:
code\:
func int ZS_MM_EatBody_loop()
{
PrintDebugNpc(PD_MST_LOOP,"ZS_MM_EatBody_loop");

if !Hlp_IsValidNpc(other) //Body weg
{
return LOOP_END;
};
return LOOP_CONTINUE;
};
Wenn der Körper/das Futter nicht mehr da ist wird der Zustand beendet (und der vorherige ist wieder aktiv(?)), wenn nicht dann ißt das Vieh weiter.
code\:
CONST INT LOOP_CONTINUE = 0;
CONST INT LOOP_END = 1;
Wenn bei einer Funktion nix zurückgegeben wird entspricht das Return false bzw Return 0 bzw return LOOP_CONTINUE. => d.h. alle Zustände die nix zurückgeben beenden sich nicht selbstständig sondern werden nur durch ereignisse beendet.


Tipp am Rande:
code\:
PROTOTYPE My_C_INFO (C_INFO) { //für Standartdialoge
nr = 50;
important = False;
condition = func_true;
permanent = False;
};
PROTOTYPE MyEnd_C_INFO (C_INFO) { //für "Ende"-Dialoge
nr = 999;
important = False;
condition = func_true;
permanent = True;
information = My_Exit_Info;
description = DIALOG_ENDE;
};
func int func_true () {
Return True;
};
FUNC VOID My_Exit_Info() {
AI_StopProcessInfos ( self );
};
Damit spart man sich ne Menge Funktionen/Zeilen in denen eh immer das gleiche steht...
09.08.2002, 10:47 #5
GülleMüller
Beiträge: 472

stimmt, is was dran... wie gut, daß ich mich noch extra dumm gestellt habe ;)

Dank
[EDIT]
GüMü
quote:
Btw, ist "Rückgabeparameter" ein Synonym von Rückgabewert?

uups, stimmt. Es handelt sich ja hierbei um nen Zahlenwert net um nen String/char/sonstiges, deshalb muß es auch Rückgabewert heißen....
[/EDIT]
Seite 1 von 1  1