eval() function ?

Posted By: Fussfoehn

eval() function ? - 09/03/08 19:46

hi Leute,

Für mein Studium hab ich vor einiger Zeit angefangen mit Adobe Flash zu arbeiten. Glücklicherweise ist der darin verwendete Actionscript dem C-Script sehr ähnlich, was mir noch heute rießen Vorteile bringt.
Als ich jetzt vor kurzem wieder mein 3dgs Projekt aufgenommen habe, stellte ich fest dass ich vorher nie eine Funktion wie die eval() funktion von flash benutzt habe.

Gibt es für C-skript auch solch eine Funktion oder einen weg seinen Skript wie mit der Funktion zu vereinfachen?

Die eval() funktion macht z.B. folgendes


var variable123 = 100;
var andere_variable = 123;
...
temp = eval("variable"+andere_variable);//temp wär jetzt 100


das system prüft also was in den Klammern steht und führt die funktion aus


oder auch folgendes wäre möglich



entity* player3;

action playeraction
{
player3 = me;
}

temp = 3;
eval("player"+temp).x += 100;

// player3 wird jetzt 100 quants bewegt


die funktion kann viele funktionen unheimlich stark vereinfachen und übersichtlicher machen. Ich hoffe es gibt eine ähnliche funktion und wenn nicht würd ich das sehr vermissen.

mfg
Posted By: TechMuc

Re: eval() function ? - 09/03/08 20:35

in WDL:

var get_var=0;
var juhu=4;
function bla()
{
execute("get_var = juhu+5;");
//get_var = 9
}

in Lite-C

var* get_var=0;
var juhu = 4;

void bla()
{
get_var = var_for_name("juhu");
*get_var += 4; // = 8
}

möglich ist auch:

LITE-C: var_for_name("juhu = 20"); //ohne semikolon

in WDL: execute("juhu = juhu+25;"); //mit semikolon

ACHTUNG: Beide Befehle arbeiten langsam!!! Habe das früher mal nachgemessen. Eine einfache Anweisung wie execute("temp=1;"); ist 100 (!!!) mal langsamer als einfach nur temp=1; im code.

Daher NICHT exzessiv nutzen sondern auf Lite-C/WDL Variablen Pointer zurückgreifen.
Posted By: Fussfoehn

Re: eval() function ? - 09/04/08 19:50

dankö
Posted By: Fussfoehn

Re: eval() function ? - 09/06/08 00:02

mh irgendwie erreich ich damit aber nich das was ich will..

also ich hab zum beispiel folgenden befehl:

temp_ketten_links = ent_create(tank2_ketten_links,my.x,panzer2_ketten);

jetzt will ich zb. bei tank2_ketten_links oder bei der action panzer2_ketten die zahl 2 abhöngig vonner variable machen also so:
temp_ketten_links = ent_create(tank"PLAYERNR"_ketten_links,my.x,panzer"PLAYERNR"_ketten);

nur das das halt nicht so einfach geht^^

mit actionscript würde das so ausschauen:
temp_ketten_links = ent_create(eval("tank"+PLAYERNR+"_ketten_links"),my.x,eval("panzer"+PLAYERNR+"_ketten"));


© 2024 lite-C Forums