19 12
发新话题
打印

[讨论] 初级魔力lua解析

6.如何创立MSG指令(例:/1 /2)bbs.mocwww.com' {( B& [9 `5 c
今天先来讲点简单的知识,顺便复习一下旧知识点中比较重要的获取(get)函数和设置(set)函数的区别,本帖停更也是由于深感自身讲的知识点先后顺序有些问题魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 j. [3 g, v# Y5 y
魔力lua包含了三大块知识点
6 }2 |$ m5 T" C9 o5 y. v0 P' \6 U魔力私服,最新魔力宝贝私服技术交流1:lua编程基础知识(不需要太深入的lua技术即可)
" j6 X( i$ |9 G2 ebbs.mocwww.com2:mysql基础知识(不需要太深入的mysql技术,但要会节省资源和防止疯狂读写)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 l: w  q2 T/ l: C
3:魔力封包知识(高端lua开发必备)魔力私服,最新魔力宝贝私服技术交流" I! F% @5 s8 H3 p6 b

- U1 d$ E5 h( a5 _8 @* B( l本帖只讲述lua在魔力中是如何运行的,这三块知识点都需要你们自己去学习
0 g; S: y0 Z6 o* _/ D- l0 |魔力私服,最新魔力宝贝私服技术交流
8 M" L5 s7 \8 l( Q; w—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート下面我们进入今天的教学
, p% W, y" C) t* s* Zlua的远程指令主要依靠NL.RegTalkEvent(Dofile, FuncName)达成
7 G6 m+ c6 I* f' _8 s魔力私服,最新魔力宝贝私服技术交流该函数的作用是[创建对话事件],它可以全局框架注册& }8 v3 l9 g& U  k( F2 o: J
一般使用Delegate.RegDelTalkEvent("XXX")创建全局对话事件魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; [2 b1 S9 W& y7 N/ S
NL.RegTalkEvent的返回函数明细:魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 i( T; @, j1 d1 e7 W
TalkEventCallBack(CharIndex, Msg, Color, Range, Size)# m6 K8 Y  f1 }0 p4 T
参数说明bbs.mocwww.com- I6 |; w! j6 ?8 m
CharIndex: 数值型 响应事件的对象index,该值由Lua引擎传递给本函数。
3 B! \0 g5 k5 I# O6 X0 @—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートMsg: 文本型 话的内容,该值由Lua引擎传递给本函数。bbs.mocwww.com+ x& T* y5 t8 l) L/ a- Y6 U
Color: 数值型 说话颜色,该值由Lua引擎传递给本函数。
; l. l, |$ f, ]& |: N4 vRange: 数值型 说话音量(范围),该值由Lua引擎传递给本函数。
: [1 E8 X# f6 l7 X1 G+ X0 u- mbbs.mocwww.comSize: 数值型 说话字体大小,该值由Lua引擎传递给本函数。魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 d& Z0 [' k5 B0 e8 m# A9 i) a6 l
返回值
. t& ^: Z; d% I+ b. ^( c, V" k" K—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート返回0拦截说话内容,返回1正常发送
1 s- N/ l4 J6 J5 g妖城在线论坛
. R  B) m5 L% \6 m' Q5 D7 J' r妖城在线论坛小知识复习:当形参由lua引擎传递一个可用实参时,你不需要填写形参具体值,并且可以传递给其他函数的空白形参,让其拥有实际数值,传递时候要注意传参的类型,空白形参的函数中,空白形参若只能填写数值型魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' B5 F% t- v! G! m2 c) ?. I: f
传递过来的数值就必须是数值型(这种情况可以先设置一个变量   a=tonumber(lua引擎传递的字符串型传参) 然后把变量a填入空白形参的函数形参中)
' L* `5 k4 b# [# _' T妖城在线论坛
" l$ y2 I8 T. c) r- a妖城在线论坛文字太过干涩,下面用实例解释今天的知识点妖城在线论坛; I* q- {0 |" f, p9 M0 G
该例实现了用指令整理身上的道具的功能
6 u6 N7 B- V' [. C6 v; q0 k魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
2 B3 e6 c6 @' x/ Q妖城在线论坛local zhengli = "/zl"--整理指令,此处需要""把内容定义为字符串
! W- K0 t/ g5 w, i! r) G0 m--  ***************************************************************************************************** --—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' I6 f  R0 m* q
Delegate.RegDelTalkEvent("zlTalkEvent");--全局注册对话事件函数
$ n. g: q7 {. }# D—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力宝贝私服技术交流' g* Q8 A6 P  [. Q4 b+ ?
function zlTalkEvent(player,msg,color,range,size)--调用对话事件函数的返回函数魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表  c9 k2 ~8 J& m
        if(msg==zhengli) then--检测MSG=整理指令时则执行下述函数块内容妖城在线论坛) {4 V. D8 h! K+ Z0 T7 f
                NLG.SortItem(player)--调用GA封装的整理道具函数,其中NLG.SortItem(player)的(player)值由function zlTalkEvent(player,msg,color,range,size)这个返回函数赋予
) s( {9 \. ]3 z$ T; n! Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表        end
  G. V( d9 m* ~5 ^* a- p. u% H; R& M魔力私服,最新魔力宝贝私服技术交流end7 @6 d- k* V0 @7 X
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート, x! d2 v' d0 j8 F! W7 G
上述实例中,如果单独拿NLG.SortItem(player)出来,(player)的值会是nil,是没有任何数值的,它是一个标准的设置函数,需要从获取函数中获得形参的实值(魔力lua的函数的形参分为2种,获取函数(get)和设置函数(set))魔力私服,最新魔力宝贝私服技术交流& H# Q7 @3 [1 _& C5 q
教学用指令整理道具.7z (453 Bytes)
0 {- N: E( B4 z1 z4 V5 I1 I/ p—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ |& R$ B  P$ Y% \6 ^. y( g
[ 本帖最后由 王宫召唤士盖兹 于 2019-5-31 02:07 编辑 ]

TOP

引用:
原帖由 staki 于 2019-8-3 03:12 发表
6 ^# Q* c' ?0 K& j# G# w% f3 C% Z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート建议出个GP的 GA好像在这身败名裂了
魔力私服,最新魔力宝贝私服技术交流! Q; W7 `  o; ]4 F% I
妖城在线论坛8 u0 c5 O" d( n$ M
GP没2键端无法操作,只是学lua基础都一样的
( d- E: I9 b8 y! ~6 h妖城在线论坛 我不更新就是涉及的具体操作太多,通用性不高,没有更新的必要魔力私服,最新魔力宝贝私服技术交流3 h! k* T4 W. N
我本身秉持授人与鱼不如授人于渔的想法,才写了这个帖子
! h5 i; K0 N* V8 i; i" N能看懂本帖之前写的内容,足够了魔力私服,最新魔力宝贝私服技术交流5 \' ~# D! J% C1 V  S  Q- o+ b! n; E
bbs.mocwww.com* x! w6 ~) O/ M
备注:—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% I9 U0 @7 p! q
既然回帖了,就再讲一下魔力lua的基础运行流程:—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ R. T/ L  E; S- V8 n0 ^
1:GMSV启动时加载GMSV内置的魔力lua模块妖城在线论坛  J4 q( P; M2 e3 n
2:GMSV自动加载初始lua-init.lua   该lua是由GMSV自动加载的(无需写dofile加载)bbs.mocwww.com* U& I9 ]3 T% P. ?
3:init.lua 加载运行内部代码    此时会有大量dofile,一般是加载基础框架相关的东西 有兴趣可以参考init.lua内部代码,包括框架全局注册这类关键脚本,都是此时加载的魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 v3 V% q! `/ p1 t) Z
4:init.lua中有一行dofile(Lua_Path.."Config.lua"),加载Cofig.luabbs.mocwww.com2 A+ e& n7 W0 ~) @7 H
5:Cofig.lua加载各种Module文件夹内的lua  (至于Cofig.lua内用于加载lua的Loadlua函数究竟是GA哪个脚本内写的,可以给大家当成一个最后的课后考题,找出他,能找到他,我相信你就会发现魔力LUA的运行逻辑是如此简单)
: [/ H2 b9 Z  R' x3 q1 H* F—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート提示:GP的Loadlua函数在  lua\include\Global.lua 这个文件内
+ H5 G( D% L) o; Q" G* h魔力私服,最新魔力宝贝私服技术交流提示2:GA的Loadlua函数在 lua\System某个文件夹内bbs.mocwww.com! {5 L- B0 e& x

- l, I1 O1 i) O1 A* Obbs.mocwww.com[ 本帖最后由 王宫召唤士盖兹 于 2019-8-3 12:59 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-20 20:44 发表
' a" `( I2 V7 {, L/ Z" Ubbs.mocwww.com我看了在线修改人物名字的lua ,其实SQL是改数据库的,但是真正起作用的是最后两行,直接改对象的名字。
  C0 E. j! E. N" f妖城在线论坛
' ^$ A8 Z0 S! h魔力私服,最新魔力宝贝私服技术交流                local query = "Update tbl_character set `Name` = '".._data.."' Where Cdkey = '"..Char.GetData(_Pl ...
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表  A; Z' N: U1 k" f- k' {9 q

' }" z, B5 q- [' Y( r* B' G) r2 \  Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表lua修改玩家内存只是修改了GMSV内的内存,在玩家客户端内并没有显示,因此需要用UpChar函数更新玩家客户端显示
3 V; m% S. Z0 Z, l( M同理还有NPC创建时候使用的UpChar函数,这个函数如果是由全局注册init来触发的,会导致你即使重载脚本,NPC也加载不出来,必须重启服务器(重新加载init)才行—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート" g' [. c* a5 w1 C0 |4 Q8 x
备注:创建NPC也可以用其他函数或者if,GE不要使用if,会有奇怪的错误妖城在线论坛3 Q$ }( D) i& \2 [9 @: }+ f3 f
魔力私服,最新魔力宝贝私服技术交流1 X& ?" D7 N8 w0 f; u
GE的教程和GA是互通的,他们只不过是文件夹不一样,文件名不一样,函数名不一样,但运行逻辑都是一样的,只是WIN7和WIN10的区别而已,只要能看懂本帖说的GA的内容,GE和GP自然就懂了—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 V. c# y2 P: d9 ^5 m- Z! Y5 b

" M  L: c- ?* z4 o* z! n, Kbbs.mocwww.com[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 11:22 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-30 15:47 发表 bbs.mocwww.com" Q( \2 Y: K6 R8 C3 n
我知道更新完了,要UpChar函数刷新,但是现在遇到的问题,我想用sql函数直接改item表里面的  宠物卡  的字段,5 a9 ~% a1 ~+ u( L+ p/ i" Z; q& k0 H
是直接update操作数据库,运行后看数据库也更新成功了,但是人物一退出又会重新保存未修改前的数据了。 ...
" U8 y  x* X! S: S. Y. [—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
9 d& ~# Y) U" A- q! Q妖城在线论坛更新道具数据是另一个函数Item.UpItem,不是NLG.UpChar
& G) f( H/ a- w! x9 E" zhttp://api.cgex.in/index.html#Item_UpItem
8 X  {- v0 R1 C6 s妖城在线论坛
2 {% C7 E' m# a* u, A, f妖城在线论坛备注:还有更新宠物信息,并对玩家客户端进行更新的Pet.UpPet(Player,Pos)bbs.mocwww.com1 L/ N7 Q  v' Y3 }* U! L# [. k/ f
bbs.mocwww.com! ~7 ~3 A6 i7 @0 j/ }' W7 U- s9 J
[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 16:05 编辑 ]

TOP

 19 12
发新话题