77

回帖

1万

金币

6617

积分

积分
6617
发表于 2021-10-18 16:59:49 | 显示全部楼层 |阅读模式

马上注册,下载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:让客户端执行一段脚本
  1. ssr.SendScript(play, "if a == 1 then ssr.say('执行成功') end")
复制代码
    示例2:在客户端上声明一个全局变量
  1. <div>     local MyTbl = {1,2,3,4,{2,2,2}}</div><div>     ssr.SendScript(play, "MyVar = "..serialize(MyTbl))</div>
复制代码

     示例3:让客户端执行一个本地全局函数
  1.      ssr.SendScript(play, "MyFunc(param)")
复制代码


问题2:目前lua引擎仍旧在完善功能,大部分原脚本的功能或事件、参数等暂不支持,所以需要一个lua脚本和原脚本相互调用的功能。
建议2:
A、功能:lua脚本调用/执行原脚本ssr.Lua2Script(play, 文件路径+文件名, @脚本段),play=玩家本人或怪物,地图调用时可为map代码,系统调用时可省略或为0, 文件路径+文件名类同CheckTextList,支持绝对路径,“@脚本段”指定脚本段(@不能省略,因为有些可能用的是其他符号,如:“!!脚本段”等,所以需要由脚本开发者自行维护)
   示例:
  1.    function MyFunc(play)
  2.       if ssr.Lua2Script(play, "..\QuestDiary\脚本目录\调用脚本.txt", "@我的脚本") then
  3.         ssr.say("调用成功")
  4.       else
  5.         ssr.say("调用失败,可能文件或脚本段不存在")
  6.       end
  7.    end
复制代码

   ;--------------------------------------
   ;调用脚本.txt内容
  1.    [@我的脚本]
  2.    #IF
  3.    #ACT
  4.    SENDMSG 6 调用或执行成功
复制代码


   建议同时增加支持第二种:直接在lua脚本内嵌套原脚本格式
  1.    function MyFunc(play)
  2.       ;直接使用脚本
  3.       if ssr.ExecuteScript(play,
  4.       [[
  5.         #IF
  6.         #ACT
  7.         SENDMSG 6 执行成功
  8.       ]]
  9.       ) then
  10.         ssr.say(play, "执行成功")
  11.       else
  12.         ssr.say(play, "执行失败")
  13.       end
  14.    end
复制代码


B、功能:原脚本调用/执行lua脚本【Script2Lua 脚本路径 脚本函数 参数1 参数2 参数3...参数N】
   脚本路径:同 ssr.Lua2Script ,指定脚本文件所在目录
   脚本函数:指定脚本文件内的指定函数
   参数1..N:提交时可以附加多个参数,可省略
  1.    [@我的脚本]
  2.    #IF
  3.    #ACT
  4.    Script2Lua ..\QuestDiary\脚本目录\调用脚本.lua MyFunc A B C 4 5 6
  5.    ;----------------------------------
  6.    ;调用脚本.lua内容 play=玩家本人或怪物,地图调用时可以为map代码,系统调用时可省略或为0
  7.    function MyFunc(play, p1, p2, p3, p4)
  8.       ssr.say("本次使用脚本的是:"..play..",附加参数:"..p1..","..p2..","..p3..","..p4..","..p5..","..p6)
复制代码


   建议同时增加支持第二种:直接在lua脚本内嵌套原脚本格式,参数为字符串格式,属性类似loadString()
  1.    #IF
  2.    #ACT
  3.    ExecuteLua [[if a == 1 then ssr.say("调用成功") end]]
复制代码


PS:如果需要我们配合测试,请在代理技术总群内联系“星辰传奇”










评分

参与人数 1金币 +10 贡献 +10 收起 理由
二仆仆 + 10 + 10

查看全部评分

最后回复时间:2022-02-25 14:00:19官方回复了此贴
回复

使用道具 举报

42

回帖

1561

金币

914

积分

积分
914
发表于 2021-10-19 17:40:00 | 显示全部楼层
大神!!!!!!
回复

使用道具 举报

15

回帖

145

金币

109

积分

积分
109
发表于 2021-10-20 16:10:09 | 显示全部楼层
已经有lua版的引擎了吗?
没找到在哪呢?
原生脚本写得我头疼,想试试lua版本
能给个链接吗
回复

使用道具 举报

77

回帖

1万

金币

6617

积分

积分
6617
 楼主| 发表于 2021-10-20 16:14:13 | 显示全部楼层
dzt 发表于 2021-10-20 16:10
已经有lua版的引擎了吗?
没找到在哪呢?
原生脚本写得我头疼,想试试lua版本

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

使用道具 举报

15

回帖

145

金币

109

积分

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

好的,谢谢大神
回复

使用道具 举报

105

回帖

1055

金币

724

积分

积分
724
发表于 2021-11-4 10:39:27 | 显示全部楼层
6666666666666666666
回复

使用道具 举报

60

回帖

3128

金币

1765

积分

积分
1765
发表于 2021-11-6 23:05:31 | 显示全部楼层
lua如果是像神途那样就好了, 比如 lualib:SetExp(player, 500)   
不要像龙族那样  CHANGEEXP(" 500")
回复

使用道具 举报

1570

回帖

2008

金币

1898

积分

积分
1898
发表于 2021-11-9 13:34:51 | 显示全部楼层
6666666666666666666666666666666666666
回复

使用道具 举报

14

回帖

498

金币

322

积分

积分
322
发表于 2021-11-16 21:30:51 | 显示全部楼层
lowenwen 发表于 2021-11-6 23:05
lua如果是像神途那样就好了, 比如 lualib:SetExp(player, 500)   
不要像龙族那样  CHANGEEXP(" 500")  ...

比那个还惨吧  
回复

使用道具 举报

112

回帖

5295

金币

3071

积分

积分
3071
发表于 2021-11-19 12:29:31 | 显示全部楼层
客户端执行Lua不需要提供函数,自己从服务端发送Lua代码,客户端使用loadstring()执行。设置是否允许访问、提交信息等,可以自己封装
回复

使用道具 举报