Lua神途123自定义调用函数脚本参数
来源:神途 2019-12-06 作者:新开传奇网站 阅读:次 点击提交
Lua神途123调用函数参数
假设你在脚本中定义了一个函数:
function main(number)
number = number + 1
return number
end
在你的游戏代码中,你希望在某个时刻调用这个函数取得它的返回值。
在Lua中,函数等同于变量,所以你可以这样来取得这个函数:
lua_getglobal(L, "main");//函数现在栈顶
现在,我们可以调用这个函数,并传递给它正确的参数:
lua_pushnumber(L, 100); //将参数压栈
lua_pcall(L, 1, 1, 0); //调用函数,有一个参数,一个返回值
//返回值现在栈顶
int result = lua_tonumber(L, -1);
result 就是函数的返回值
完整的测试代码如下:
#include "lua.h"
#include "lauxlib.h"
#include "lualib.h"
int main(int argc, char *argv[])
{
lua_State *L = lua_open();
// 此处记住,当你使用的是5.1版本以上的Lua时,请修改以下这句为luaL_openlibs(L);
luaopen_base(L);
const char *buf = "function main(number) number = number + 1 return number end";
lua_dostring(buf);
lua_getglobal(L, "main");
lua_pushnumber(L, 100);
lua_pcall(L, 1, 1, 0);
int result = lua_tonumber(L, -1);
assert(result == 101);
lua_close(L);
return 0;
}
Lua神途123脚本调用程序
Lua神途传奇手游本身定位在一种轻量级的,灵活的,可扩充的脚本语言,这意味着你可以自由的扩充Lua,为你自己的游戏量身定做一个脚本语言。
你可以在主机程序中向脚本提供你自定的api,供脚本调用。
Lua定义了一种类型:lua_CFunction,这是一个函数指针,它的原型是:
typedef int (*lua_CFunction) (lua_State *L);
这意味着只有这种类型的函数才能向Lua注册。
首先,我们定义一个函数
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;
}
我们可以在脚本中这样调用这个函数
r1, r2 = foo("hello")
print(r1..r2)
完整的测试代码如下:
extern "C"
{
#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();
// 此处记住,当你使用的是5.1版本以上的Lua时,请修改以下两句为luaL_openlibs(L);
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;
}
程序输出:
hello
100200
2019-12-06录入
神途 Lua神途123自定义调用函数脚本参数转载请保留源文出处:http://haost123.com
上一篇:在神途手游游戏中如何使用LUA神途脚本语言
下一篇:没有了
猜你可能喜欢的神途攻略文章
2020-02-05
在好神途123相信每一个玩家都想拥有非常不错的发展效果了,毕竟谁不想成为一个高手呢。对于玩家们来说,想要成为一个非常好神途123强悍的玩家,那就需要付出很多努力了,并且在...
2024-03-12
最新迷失单职业传奇手游1.95无英雄合击版是你从未体验过的全新版本,为大伙儿产生传奇时代的精彩纷呈感受,在游戏里面打开你的1.95刺影传奇手游作战。 热门手机游戏采用了经典的...
2020-03-31
好神途123礼包新区推广新手攻略: 新手神途123上线领取 QQ 群 领取礼包- 获得绑定金币还有随机回城 *2 拿着身上的绑定金币去商店买一套垃圾绑定装备就可以开始刷怪神途之旅 刷怪干什...
2020-03-15
对于道士来说,前期的176复古传奇sf新服战术自然是不断获得技能并且积累一定的游戏经验。所以,选择道士职业的游戏玩家需要每天坚持上线坚持练习,当然,在游戏中还要不但的积...
2020-04-14
神途热门争分夺秒活动时间每天下午1:30分开放想要在zhaosf123神途私服传奇新开游戏中成为强者那么很简单,一种是充钱,一种就是不断的刷怪来获得更强力的装备。 而在真分夺秒zhao...