Показать сообщение отдельно
Старый 17.09.2011, 12:51   #13
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,374
Написано 2,478 полезных сообщений
(для 6,866 пользователей)
Ответ: Вы не поверите, но LUA Wrapper для Blitz3D

Ещё семпл:
Include "Lua_Include.bb"

Local L = LuaL_NewState()
LuaL_OpenLibs(L)
Lua_InitInterface(L, "CallFunction")

Local Status = LuaL_LoadFile(L, "Beispiel.lua")
If 
Status Then RuntimeError("Error while loading script!" + Chr(10) + Lua_ToString(L, 1))

Status = Lua_PCall(L, 0, 0, 0) ;Wichtig: Script vor den Funktionsaufrufen mindestens einmal ausfьhren, damit die Funktionsnamen registriert werden
If Status Then RuntimeError("Error while executing script!" + Chr(10) + Lua_ToString(L, 1))


Lua_GetGlobal(L, "TestFunktion1") ;Funktion auf den Stack bringen
Lua_PushNumber
(L, 42) ;Erstes  Argument auf den Stack
Lua_PushNumber
(L, 25) ;Zweites Argument auf den Stack

Lua_PCall
(L, 2, 1, 0) ;Die erste Funktion mit zwei Argumenten aufrufen und nur einen Rьckgabewert akzeptieren

Local ReturnValue 
= Lua_ToNumber(L, -1) ;Rьckgabewert vom Stack holen

Print("TestFunktion1(42, 25): " + ReturnValue)

Lua_Pop(L, 1) ;Rьckgabewert lцschen und Stack in den Originalzustand zurьckfьhren




Lua_GetGlobal
(L, "TestFunktion2")
Lua_PCall(L, 0, LUA_MULRET, 0) ;Zweite Funktion ohne Argumente aufrufen und beliebig viele Rьckgabewerte akzeptieren

;Rьckgabewerte sind in "direct order" auf dem Stack, d.h. letzter Rьckgabewert liegt zuoberst
Local ReturnValue3
# = Lua_ToNumber(L, -1)
Local ReturnValue2$ = Lua_ToString(L, -2)
Local ReturnValue1  = Lua_ToNumber(L, -3)

Print(
"TestFunktion2(): " + ReturnValue1 + ", " + ReturnValue2 + ", " + ReturnValue3)

Lua_Pop(L, 3) ;Rьckgabewerte lцschen und Stack in den Originalzustand zurьckfьhren

Lua_Close
(L)
WaitKey()
End

Function Lua_UserFunction()
End Function 
Beispiel.lua
function TestFunktion1(A, B) 
   return 
A + B 
end 

function TestFunktion2() 
   return 
1337, "Hello World!", 3.1415926 
end 
Сори за неметску жзяцлю. И почему они не пишут по английски...

И чего я так пыжусь по поводу этого луа? Он же мне нафиг не нужен. Откуда эта ответственность за эту тему...
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием