MUSH 中怎么调用另一个插件内的函数呢?
RT MUSH 中怎么调用另一个插件内的函数呢?北大侠客行MUD,中国最好的MUD 如果一个插件已经形成,其实就是已经封装了(我的理解)。调用其函数好像不成。
另外,若一个插件里有可用函数,直接拷贝过来到自己的脚本不就可以了。为什么要去调用呢? CallPlugin函数可以 回复 3# mygame
mygame 同学说的对
测试通过,但是只能传递string,不能传递table 回复 2# littleknife
是这样的,我有三个插件,地图插件,HP插件,和任务插件。
任务插件,需要知道角色当前的气血,潜能,经验,和当前所处的房间信息。
如果不能共享插件,就必须把HP和MAP的触发再拷贝一份给任务插件,这样比较麻烦。
能通过 callplugin 传递共享信息,省了很多事。
callplugin 就像是提供了接口服务,可惜只能string,不能table
serialize.save 保存的信息怎么再转成table呢 CallPlugin调用函数
GetPluginVariable调用变量,变量应该可以是table,没有测试!
两个结合下不知道行不行 本帖最后由 freeway 于 2011-10-30 11:46 PM 编辑
GetPluginVariable 我试了下,似乎只有在按下mush的保存按钮,state目录下生成Variable文件后,才可以被 GetPluginVariable 捕捉到。不知道你们测试是否也是这样。
上面的问题,我找了个解决办法
角色HP插件中做个别名,执行pushinfo()
function pushinfo()
--给任务追踪插件提供角色信息
if PluginSupports ("5fcea3707a1d11ce12505f6d", "task.get_health_info") ~= error_code.eOK then
Note ("'task.get_health_info' 函数无效")
else
local health_info_string ="health_info =" .. serialize.save_simple (health_info)
CallPlugin ("5fcea3707a1d11ce12505f6d", "task.get_health_info", health_info_string)
end
end
任务插件中,马上就有信息返回,这样做妥妥的。{:7_279:}
task.get_health_info = function (stringx)
assert (loadstring (stringx)) ()
for k, v in pairs (health_info) do
Note (k, " = ", v)
end
end 本帖最后由 wdzyss 于 2011-11-1 03:55 PM 编辑
插件封装得时候不要把lua也封装进去就可以了,可以用require和dofile来调用这个lua.
就像GM一样,他的地图插件里就没把mapper.lua封进去
页:
[1]