ftd2025 发表于 2021-10-18 16:59:49

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










q372717258 发表于 2021-10-19 17:40:00

大神!!!!!!

dzt 发表于 2021-10-20 16:10:09

已经有lua版的引擎了吗?
没找到在哪呢?
原生脚本写得我头疼,想试试lua版本
能给个链接吗

ftd2025 发表于 2021-10-20 16:14:13

dzt 发表于 2021-10-20 16:10
已经有lua版的引擎了吗?
没找到在哪呢?
原生脚本写得我头疼,想试试lua版本


目前lua引擎功能同步到0629左右,正在测试,正式区暂时不要用比较好,还有待进一步完善,在自己的工作群找客服索取或代理技术总群下载,引擎包:996M2(2021.10.13.0_64位).rar。

dzt 发表于 2021-10-20 16:15:29

ftd2025 发表于 2021-10-20 16:14
目前lua引擎功能同步到0629左右,正在测试,正式区暂时不要用比较好,还有待进一步完善,在自己的工作群 ...

好的,谢谢大神

kobz3i 发表于 2021-11-4 10:39:27

6666666666666666666

lowenwen 发表于 2021-11-6 23:05:31

lua如果是像神途那样就好了, 比如 lualib:SetExp(player, 500)   
不要像龙族那样CHANGEEXP(" 500")

song 发表于 2021-11-9 13:34:51

6666666666666666666666666666666666666

zyfxin 发表于 2021-11-16 21:30:51

lowenwen 发表于 2021-11-6 23:05
lua如果是像神途那样就好了, 比如 lualib:SetExp(player, 500)   
不要像龙族那样CHANGEEXP(" 500")...

比那个还惨吧

shenyue 发表于 2021-11-19 12:29:31

客户端执行Lua不需要提供函数,自己从服务端发送Lua代码,客户端使用loadstring()执行。设置是否允许访问、提交信息等,可以自己封装
页: [1] 2
查看完整版本: 996m2(lua)引擎目前急缺功能和新增功能建议