|
马上注册,下载996引擎,与更多游戏开发者交流。
您需要 登录 才可以下载或查看,没有账号?注册
×
本帖最后由 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 [[if a == 1 then ssr.say("调用成功") end]]
复制代码
PS:如果需要我们配合测试,请在代理技术总群内联系“星辰传奇”
|
评分
-
查看全部评分
最后回复时间:2022-02-25 14:00:19官方回复了此贴
-
二仆仆 2022-02-25 14:00:19
|