六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 454|回复: 0

关于LUA应用笔本操作

[复制链接]

升级  78.6%

856

主题

856

主题

856

主题

探花

Rank: 6Rank: 6

积分
2572
 楼主| 发表于 2013-2-4 12:14:51 | 显示全部楼层 |阅读模式
关于LUA应用笔本操作死本文要介绍的内容,主要是来了解并学习LUA应用。游戏中的界面都是用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);  
  • //把自己在C++中编写的函数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 "lua.h"   
  •    #include "lauxlib.h"   
  • #include "lualib.h" int foo(lua_State *L) {   
  • //首先取出脚本执行这个函数时压入栈的参数   
  • //假设这个函数提供一个参数,有两个返回值   
  • //get the first parameter const char *par = lua_tostring(L, -1);   
  • printf("%s\n", par); //push the first result lua_pushnumber(L, 100);   
  • //push the second result lua_pushnumber(L, 200);   
  • //return 2 result return 2;    
  • }   
  • int main(int argc, char *argv[]){    
  •  lua_State *L = lua_open();   
  • luaopen_base(L);   
  • luaopen_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;    
  • }
小结:关于LUA应用笔本操作的内容介绍完了,希望通过LUA应用内容的学习能对你有所帮助!
【编辑推荐】
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表