blog

基本的なLUAアプリケーション

このゲームのインターフェイスはLUAで書かれていますが、これはWOWとまったく同じです。年末です。...

Apr 14, 2021 · 3 min. read
シェア

ゲーム内のインターフェイスはLUAで書かれていて、これはWOWと全く同じです。年末だし。

lua言語ルール:

  lua_State *L = lua_open(); //LUAステートマシンの作成   
luaopen_base(L); //     
const char *buf = "print('hello, world!')";   
lua_dostring(buf); //例)bufをluaに書き込んで実行する。   
lua_close(L); // Lを閉じる   
lua_pushstring(L, "var"); //スタックに変数名を置く]   
lua_getglobal(L, "var"); //変数の値はスタックの一番上にある。   
int var = lua_tonumber(L, -1); //スタックの一番上の要素を取得する   
lua_tostring( ls, -1 ); //取得栈顶的的元素, 一般用于参数传递   
lua_pushstring( ls, s_szPlayer ); //例:文字列要素をスタックに押し込む。   
lua_pushnumber(L, 200); //ある数値要素をスタックに押し込む。   
lua_register(L, "foo", foo); 
 // ++Luaで書かれた関数fooは、Luaスクリプトで呼び出せるようにLuaに登録されている。 

Luaでは、関数は変数と等価なので、この方法で関数を取得できます:

lua_getglobal(L, "main");//この関数はスタックの一番上にある。 

これで、この関数を呼び出し、正しい引数を渡すことができます:

lua_pushnumber(L, 100); //引数を積み重ねる   
lua_pcall(L, 1, 1, 0); //调用函数,有一个参数,一个返回值   //返回值现在栈顶   
int result = lua_tonumber(L, -1); 

     #include " 例.h" 
 #include "lauxlib.h" 
 #include " 例lib.h" 
 int foo( 例_State *L) 
 { 
  例: // まず、スクリプトがこの関数を実行したときにスタックに押された引数を取り出す。 
  // この関数は1つの引数を取り、2つの戻り値を持つとする。 
 //get the first parameter 
 
 const char *par =  例_tostring(L, -1); 
  例: printf(")%s
", par); 
 //push the first result 
 
  例_pushnumber(L, 100); 
 //push the second result 
 
  例_pushnumber(L, 200); 
 //return 2 result 
 
 return 2; 
 } 
 int main(int argc, char *argv[]){ 
 lua_State *L = lua_open(); 
  例_base(L); 
  例_io(L); 
 lua_register(L, "foo", foo); 
 const char *buf = "r1, r2 = foo("hello") print(r1..r2)"; 
 lua_dostring(L, buf); 
 lua_close(L); 
 return 0; 
 } 
Read next

Androidチュートリアル - UIコントロール_AlertDialog

プロンプトボックスの形式で情報を表示するUIコントロールです。

Jan 23, 2021 · 2 min read