996m2(lua)引擎目前急缺功能和新增功能建议
本帖最后由 ftd2025 于 2021-10-19 17:49 编辑问题1:通过CocosStudio创建的功能,不能与服务端产生交互
建议1:
A、功能:增加客户端与服务端的数据交互接口,让客户端可以访问服务端指定目录的指定函数,并提交相关参数
B、命令:ssr.SubmitData("脚本文件","目标函数","附加参数")
“指定目录”:是指 QuestDiary 固定的目录名称,如996m2_Form,就是说接口只能访问996m2_Form目录,其他目录禁止通过接口直接访问
“脚本文件”:服务端指定目录下的脚本文件名称,如“装备回收.lua”
“目标函数”:脚本文件下的目标函数,如“function MyFunc(play, ...)”,play为玩家本人,“...”为附加参数
“附加参数”:提交时附加的字符串,需要多个参数时使用“#”号隔开,如:ssr.SubmitData("装备回收","MyFunc","a#b#c"),服务端将会接收到[...]多个参数
*注意:服务端脚本中,应该增加接口,表示“允许访问的函数”,没被允许访问的函数,禁止通过客户端直接访问。有多个
*比如:ssr.AllowForm("main1","main2"),表示main1和main2允许访问,其他如main3则不允许访问。但main3可以在main1和main2和脚本内部正常调用。
C、功能:增加服务端与客户端数据交互接口,使服务端可以让客户端执行指定脚本
D、命令:ssr.SendScript(play, "lua脚本字符串")
示例1:让客户端执行一段脚本
ssr.SendScript(play, "if a == 1 then ssr.say('执行成功') end") 示例2:在客户端上声明一个全局变量
<div> local MyTbl = {1,2,3,4,{2,2,2}}</div><div> ssr.SendScript(play, "MyVar = "..serialize(MyTbl))</div>
示例3:让客户端执行一个本地全局函数
ssr.SendScript(play, "MyFunc(param)")
问题2:目前lua引擎仍旧在完善功能,大部分原脚本的功能或事件、参数等暂不支持,所以需要一个lua脚本和原脚本相互调用的功能。
建议2:
A、功能:lua脚本调用/执行原脚本ssr.Lua2Script(play, 文件路径+文件名, @脚本段),play=玩家本人或怪物,地图调用时可为map代码,系统调用时可省略或为0, 文件路径+文件名类同CheckTextList,支持绝对路径,“@脚本段”指定脚本段(@不能省略,因为有些可能用的是其他符号,如:“!!脚本段”等,所以需要由脚本开发者自行维护)
示例:
function MyFunc(play)
if ssr.Lua2Script(play, "..\QuestDiary\脚本目录\调用脚本.txt", "@我的脚本") then
ssr.say("调用成功")
else
ssr.say("调用失败,可能文件或脚本段不存在")
end
end
;--------------------------------------
;调用脚本.txt内容
[@我的脚本]
#IF
#ACT
SENDMSG 6 调用或执行成功
建议同时增加支持第二种:直接在lua脚本内嵌套原脚本格式
function MyFunc(play)
;直接使用脚本
if ssr.ExecuteScript(play,
[[
#IF
#ACT
SENDMSG 6 执行成功
]]
) then
ssr.say(play, "执行成功")
else
ssr.say(play, "执行失败")
end
end
B、功能:原脚本调用/执行lua脚本【Script2Lua 脚本路径 脚本函数 参数1 参数2 参数3...参数N】
脚本路径:同 ssr.Lua2Script ,指定脚本文件所在目录
脚本函数:指定脚本文件内的指定函数
参数1..N:提交时可以附加多个参数,可省略
[@我的脚本]
#IF
#ACT
Script2Lua ..\QuestDiary\脚本目录\调用脚本.lua MyFunc A B C 4 5 6
;----------------------------------
;调用脚本.lua内容 play=玩家本人或怪物,地图调用时可以为map代码,系统调用时可省略或为0
function MyFunc(play, p1, p2, p3, p4)
ssr.say("本次使用脚本的是:"..play..",附加参数:"..p1..","..p2..","..p3..","..p4..","..p5..","..p6)
建议同时增加支持第二种:直接在lua脚本内嵌套原脚本格式,参数为字符串格式,属性类似loadString()
#IF
#ACT
ExecuteLua []
PS:如果需要我们配合测试,请在代理技术总群内联系“星辰传奇”:lol
大神!!!!!! 已经有lua版的引擎了吗?
没找到在哪呢?
原生脚本写得我头疼,想试试lua版本
能给个链接吗 dzt 发表于 2021-10-20 16:10
已经有lua版的引擎了吗?
没找到在哪呢?
原生脚本写得我头疼,想试试lua版本
目前lua引擎功能同步到0629左右,正在测试,正式区暂时不要用比较好,还有待进一步完善,在自己的工作群找客服索取或代理技术总群下载,引擎包:996M2(2021.10.13.0_64位).rar。 ftd2025 发表于 2021-10-20 16:14
目前lua引擎功能同步到0629左右,正在测试,正式区暂时不要用比较好,还有待进一步完善,在自己的工作群 ...
好的,谢谢大神 6666666666666666666 lua如果是像神途那样就好了, 比如 lualib:SetExp(player, 500)
不要像龙族那样CHANGEEXP(" 500") 6666666666666666666666666666666666666 lowenwen 发表于 2021-11-6 23:05
lua如果是像神途那样就好了, 比如 lualib:SetExp(player, 500)
不要像龙族那样CHANGEEXP(" 500")...
比那个还惨吧 客户端执行Lua不需要提供函数,自己从服务端发送Lua代码,客户端使用loadstring()执行。设置是否允许访问、提交信息等,可以自己封装
页:
[1]
2