freeway 发表于 2011-10-30 09:16:46

MUSH 中怎么调用另一个插件内的函数呢?

RT MUSH 中怎么调用另一个插件内的函数呢?

北大侠客行MUD,中国最好的MUD

littleknife 发表于 2011-10-30 12:18:49

如果一个插件已经形成,其实就是已经封装了(我的理解)。调用其函数好像不成。
另外,若一个插件里有可用函数,直接拷贝过来到自己的脚本不就可以了。为什么要去调用呢?

mygame 发表于 2011-10-30 16:07:50

CallPlugin函数可以

freeway 发表于 2011-10-30 22:38:14

回复 3# mygame


mygame 同学说的对
测试通过,但是只能传递string,不能传递table

freeway 发表于 2011-10-30 22:44:11

回复 2# littleknife


是这样的,我有三个插件,地图插件,HP插件,和任务插件。
任务插件,需要知道角色当前的气血,潜能,经验,和当前所处的房间信息。
如果不能共享插件,就必须把HP和MAP的触发再拷贝一份给任务插件,这样比较麻烦。

能通过 callplugin 传递共享信息,省了很多事。
callplugin 就像是提供了接口服务,可惜只能string,不能table
serialize.save 保存的信息怎么再转成table呢

mygame 发表于 2011-10-30 23:21:50

CallPlugin调用函数

GetPluginVariable调用变量,变量应该可以是table,没有测试!
两个结合下不知道行不行

freeway 发表于 2011-10-30 23:38:14

本帖最后由 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 15:52:51

本帖最后由 wdzyss 于 2011-11-1 03:55 PM 编辑

插件封装得时候不要把lua也封装进去就可以了,可以用require和dofile来调用这个lua.
就像GM一样,他的地图插件里就没把mapper.lua封进去
页: [1]
查看完整版本: MUSH 中怎么调用另一个插件内的函数呢?