admin 发表于 2019-11-1 07:29:50

GA framework 3.0 新特征与迁移

====================GA framework 3.0====================
GA框架3.0版本完全兼容老脚本,使你的代码更加优美易维护
##迁移方法##
1,将您的旧Module文件夹下所有文件复制到本框架的Module中
2,将您的Config.lua文件复制到本文件夹中并覆盖
3,将您的System/BaseModule/luac.lua文件复制到本文件夹同目录中并覆盖(今后可以单独注册 见新特征②)
4,启动GA的gmsv尝试看看有无错误
无论何时请记得备份您的所有脚本

##新特征##
3.0框架新特征请见 Module\ac.lua 中的演示脚本

##注意##
存在未知BUG等潜在风险,在经过测试前,请勿用于正式环境

##性能提升##
3.0框架中减少了对动态脚本加载的依赖,性能提升约10%

下载回复可见:**** Hidden Message *****


=========================================================
新特征 ①
支持以 Event.RegFunction.Name 的方式进行注册事件

1 以传统框架 Delegate 的方式注册事件
请注意,由于众多接口新不支持 Delegate 注册事件,所以仅以兼容老脚本的方式存在
新脚本不建议使用 Delegate 注册事件 演示代码如下

Delegate.RegDelLoginEvent("AC_LoginEvent");
function AC_LoginEvent(player,msg,color,range,size)
      NLG.SystemMessage(player, "我登录了1。")
end


2 以传统 NL 的方式注册事件
在GA3.0框架中,NL库不再只能注册唯一一个事件,可以在各脚本中多次注册互不影响
支持的注册事件可以请看GA白皮书 http://lua.cgdev.me
新脚本中建议使用 演示代码如下

NL.RegLoginEvent(nil, "AC_LoginEvent2")
function AC_LoginEvent2(player,msg,color,range,size)
      NLG.SystemMessage(player, "我登录了2。")
end


3 Event 自注册
在GA3.0框架中,Event.RegFunction.Name 是最建议使用注册事件的方式
其中Name为自定义,可以是任意字符(请不要以数字开头)
可以使用的自注册事件的可见 init.lua 中的TBL_AllOCEV
新脚本中建议使用 演示代码如下

function Event.RegLoginEvent.AC(player,msg,color,range,size)
      NLG.SystemMessage(player, "我登录了3。")
end


新特征 ②
luac.lua 支持以 Event.RegFunction.Name 的方式进行注册了
请注意:您的luac.lua脚本中有内容的话,并不影响其注册,2个函数会同时被执行
3.0框架是100%兼容旧框架的,只是建议以后使用 Event.ScriptCall.Name 的方式进行注册

function Event.ScriptCall.AC(npc, player, s)
      if(string.find(s,"likeme"))then               
                Char.SetData(player,%对象_形象%,Char.GetData(npc, %对象_形象%));
                Char.SetData(player,%对象_原形%,Char.GetData(npc, %对象_原形%));
                Char.SetData(player,%对象_原始图档%,Char.GetData(npc, %对象_原始图档%));
                NLG.UpChar(player);
                return 1;
      end      
end



新特征 ③
以内置的方式支持了try/catch异常捕获函数
如果你要查看所有堆栈调用关系,可以把try换成sracetry,在errors中就会提示更多有用信息

function Event.RegLoginEvent.ACTest(player)
         try {
             -- try 代码块
             function ()
                  xxx()
                  NLG.SystemMessage(player,"执行过来了(因为上面的xxx()是错误,实际上这里不会被显示。)")
             end
      }

      catch {
             -- 发生异常后,被执行
             function (errors)
                  NLG.SystemMessage(player,"[错误]"..os.date().." "..errors)
             end
      }
end


新特征 ④
以Protocol.OnRecv注册封包事件函数,不再只能注册唯一一个事件,可以在各脚本中多次注册互不影响
Protocol.OnRecv(Dofile, FuncName, PacketID)



























无语 发表于 2019-11-1 11:50:48

吃饱了没事干 ,东西不错 就不知道有几个会用 或者能使用的 :lol:lol:lol:lol:lol

admin 发表于 2019-11-1 17:27:55

无语 发表于 2019-11-1 11:50
吃饱了没事干 ,东西不错 就不知道有几个会用 或者能使用的

= = 这是gmsv的引擎呀 又不是客户端 很多人会用

草狼lz 发表于 2019-11-1 17:36:20

赞一个,最近更新好快

y262 发表于 2019-11-1 18:05:13

GA framework 3.0

admin 发表于 2019-11-1 18:07:31

2019.11.1 18:07分再次更新特征4请大家重新下载

a160701 发表于 2019-11-1 19:11:52

赞一个,最近更新好快

米洛 发表于 2019-11-4 09:23:02

赞赞赞~更新太给力了~

叶子 发表于 2019-11-4 13:10:00

:L竟然还回复可见..

岚宇丶 发表于 2019-11-8 15:36:02

感謝大佬..拿下來看看..
页: [1] 2 3 4 5 6
查看完整版本: GA framework 3.0 新特征与迁移