Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* xct myfunction */
- if(!LLX_Next()) {
- Print("Which script function should I execute?");
- return;
- };
- var int fnc; fnc = MEM_FindParserSymbol(LLX_Tok);
- if (fnc == -1) {
- Print("Function not found");
- return;
- };
- var int ret;
- var zCPar_Symbol sym;
- MEM_AssignInst (sym, MEM_ReadIntArray (contentSymbolTableAddress, symbID));
- ret = (sym.offset==zPAR_TYPE_STRING);
- msg = ConcatStrings("Calling: ", LLX_Tok);
- PrintDebug(msg);
- Print(msg);
- if MEM_ReadInt(
- // Tut mir wirklich leid dieses Chaos.. Ich hab nur leider keine
- // Ahnung wie man sonst die strings direkt pushen könnte?
- var int rtnVar;rtnVar = 0;
- var string argstr0; var string argstr1; var string argstr2; var string argstr3; var string argstr4; var string argstr5; var string argstr6; var string argstr7; var string argstr8;
- var int argint0; var int argint1; var int argint2; var int argint3; var int argint4; var int argint5; var int argint6; var int argint7; var int argint8;
- var int args; var int argcnt; var int argstrcnt; var int argintcnt; args = 0; argcnt = 0; argstrcnt = 0; argintcnt = 0;
- // Argumente einlesen
- var int i;
- var int pos; pos = MEM_StackPos.position;
- if(LLX_Next()) {
- chr = STR_GetCharAt(LLX_Tok, 0);
- if (chr==33) {
- rtnVar = 1;
- MEM_GetParserSymbol(STR_SubStr(LLX_Tok, 1, LLX_Len-2));
- };
- if((47<chr&&chr<58)||chr==34||(64<chr&&chr<91) {
- LLX_Tok = STR_SubStr(LLX_Tok, 1, STR_Len(LLX_Tok)-1);
- if(chr==83) {
- PrintDebug("SaveString");
- if(argstrcnt==0) { argstr0 = Str_SubStr(LLX_Tok, 1, LLX_Len-2); };
- if(argstrcnt==1) { argstr1 = Str_SubStr(LLX_Tok, 1, LLX_Len-2); };
- if(argstrcnt==2) { argstr2 = Str_SubStr(LLX_Tok, 1, LLX_Len-2); };
- if(argstrcnt==3) { argstr3 = Str_SubStr(LLX_Tok, 1, LLX_Len-2); };
- if(argstrcnt==4) { argstr4 = Str_SubStr(LLX_Tok, 1, LLX_Len-2); };
- if(argstrcnt==5) { argstr5 = Str_SubStr(LLX_Tok, 1, LLX_Len-2); };
- if(argstrcnt==6) { argstr6 = Str_SubStr(LLX_Tok, 1, LLX_Len-2); };
- if(argstrcnt==7) { argstr7 = Str_SubStr(LLX_Tok, 1, LLX_Len-2); };
- if(argstrcnt==8) { argstr8 = Str_SubStr(LLX_Tok, 1, LLX_Len-2); };
- argstrcnt += 1;
- args = (args<<1)+1;
- argcnt += 1;
- }
- else {
- PrintDebug("SaveInt");
- i = STR_ToInt(LLX_Tok);
- if(argintcnt==0) { argint0 = i; };
- if(argintcnt==1) { argint1 = i; };
- if(argintcnt==2) { argint2 = i; };
- if(argintcnt==3) { argint3 = i; };
- if(argintcnt==4) { argint4 = i; };
- if(argintcnt==5) { argint5 = i; };
- if(argintcnt==6) { argint6 = i; };
- if(argintcnt==7) { argint7 = i; };
- if(argintcnt==8) { argint8 = i; };
- argintcnt += 1;
- args = (args<<1)+0;
- argcnt += 1;
- };
- };
- MEM_StackPos.position = pos;
- };
- // Argumente umdrehen (freundlicher bei der Verwendung..)
- PrintDebug(IntToString(args));
- var int argsc; argsc = 0;
- i = 0;
- pos = MEM_StackPos.position;
- if(i < argcnt) {
- argsc += (args&1)<<(argcnt-1-i);
- args = args>>1;
- i += 1;
- MEM_StackPos.position = pos;
- };
- args = argsc;
- PrintDebug(IntToString(args));
- // Argumente pushen
- argstrcnt = 0; argintcnt = 0;
- var int argcurr;
- pos = MEM_StackPos.position;
- if(argcnt) {
- argcnt -= 1;
- argcurr = args&1;
- args = args>>1;
- if(argcurr) {
- if(argstrcnt==0) { MEM_PushStringParam(argstr0); };
- if(argstrcnt==1) { MEM_PushStringParam(argstr1); };
- if(argstrcnt==2) { MEM_PushStringParam(argstr2); };
- if(argstrcnt==3) { MEM_PushStringParam(argstr3); };
- if(argstrcnt==4) { MEM_PushStringParam(argstr4); };
- if(argstrcnt==5) { MEM_PushStringParam(argstr5); };
- if(argstrcnt==6) { MEM_PushStringParam(argstr6); };
- if(argstrcnt==7) { MEM_PushStringParam(argstr7); };
- if(argstrcnt==8) { MEM_PushStringParam(argstr8); };
- argstrcnt += 1;
- }
- else {
- if(argintcnt==0) { MEM_PushIntParam(argint0); };
- if(argintcnt==1) { MEM_PushIntParam(argint1); };
- if(argintcnt==2) { MEM_PushIntParam(argint2); };
- if(argintcnt==3) { MEM_PushIntParam(argint3); };
- if(argintcnt==4) { MEM_PushIntParam(argint4); };
- if(argintcnt==5) { MEM_PushIntParam(argint5); };
- if(argintcnt==6) { MEM_PushIntParam(argint6); };
- if(argintcnt==7) { MEM_PushIntParam(argint7); };
- if(argintcnt==8) { MEM_PushIntParam(argint8); };
- argintcnt += 1;
- };
- MEM_StackPos.position = pos;
- };
- MEM_CallByID(fnc);
- if
- if(ret!=-1) {
- if(ret) {
- if (rtnVar) {
- MEM_Assign();
- } else {
- Console_WriteLine(MEM_PopStringResult());
- }
- else {
- if (rtnVar) {
- MEM_Assign();
- } else {
- Print(IntToString(MEM_PopIntResult()));
- };
- };
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement