19 12
发新话题
打印

[讨论] 初级魔力lua解析

6.如何创立MSG指令(例:/1 /2)
9 w! T3 \3 W, }, H$ m* b+ s妖城在线论坛今天先来讲点简单的知识,顺便复习一下旧知识点中比较重要的获取(get)函数和设置(set)函数的区别,本帖停更也是由于深感自身讲的知识点先后顺序有些问题
1 n3 x+ W1 t, z* h1 H+ v魔力lua包含了三大块知识点
4 p/ C/ |3 x7 ^: F, _bbs.mocwww.com1:lua编程基础知识(不需要太深入的lua技术即可)魔力私服,最新魔力宝贝私服技术交流( Q! S: E& r1 R7 k6 X$ h
2:mysql基础知识(不需要太深入的mysql技术,但要会节省资源和防止疯狂读写)
* q; @( g; d, ~4 Z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート3:魔力封包知识(高端lua开发必备)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 L4 o! o) c: r3 g( ]% _

7 g) X5 c" k! N4 b% K0 A魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表本帖只讲述lua在魔力中是如何运行的,这三块知识点都需要你们自己去学习魔力私服,最新魔力宝贝私服技术交流! K. J' d" Q% |, g8 y

* T' W2 u$ @# e, l9 g, L: d1 J: K# Z下面我们进入今天的教学
, O$ g5 e- j1 J3 O) Ulua的远程指令主要依靠NL.RegTalkEvent(Dofile, FuncName)达成
; I' f* S( @0 y# _: j% N* _# P" ]8 _! Pbbs.mocwww.com该函数的作用是[创建对话事件],它可以全局框架注册魔力私服,最新魔力宝贝私服技术交流8 q4 V, }* A2 R" g. v2 r
一般使用Delegate.RegDelTalkEvent("XXX")创建全局对话事件
% r# I% Z1 b# @魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表NL.RegTalkEvent的返回函数明细:妖城在线论坛2 L' \& ]& ~4 F! D
TalkEventCallBack(CharIndex, Msg, Color, Range, Size)魔力私服,最新魔力宝贝私服技术交流; J7 M& v0 T2 x
参数说明妖城在线论坛* W) w% @9 |/ o( S, b' A
CharIndex: 数值型 响应事件的对象index,该值由Lua引擎传递给本函数。
$ x+ u* b8 V1 hMsg: 文本型 话的内容,该值由Lua引擎传递给本函数。
3 g0 Z% W: c! }; M—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートColor: 数值型 说话颜色,该值由Lua引擎传递给本函数。
5 s4 k2 Z( Y4 c1 r6 J' \Range: 数值型 说话音量(范围),该值由Lua引擎传递给本函数。魔力私服,最新魔力宝贝私服技术交流* i: x9 Y& g; |1 Y: i5 `
Size: 数值型 说话字体大小,该值由Lua引擎传递给本函数。bbs.mocwww.com1 T! x5 n8 a, c
返回值bbs.mocwww.com) d% B  r  e- O- v
返回0拦截说话内容,返回1正常发送
' f3 Y. K" `7 Xbbs.mocwww.com/ \6 a% Q) i: r: [  w* Y
小知识复习:当形参由lua引擎传递一个可用实参时,你不需要填写形参具体值,并且可以传递给其他函数的空白形参,让其拥有实际数值,传递时候要注意传参的类型,空白形参的函数中,空白形参若只能填写数值型妖城在线论坛. F! N! h8 m- T$ R  B- f
传递过来的数值就必须是数值型(这种情况可以先设置一个变量   a=tonumber(lua引擎传递的字符串型传参) 然后把变量a填入空白形参的函数形参中)
$ _5 p* F8 l3 |/ u! o4 K5 C妖城在线论坛
5 Y( l* n3 }# X% J/ zbbs.mocwww.com文字太过干涩,下面用实例解释今天的知识点妖城在线论坛* v4 S  a, X' J( y# a
该例实现了用指令整理身上的道具的功能妖城在线论坛, R/ f- j0 |  e' ^6 q+ W* t
bbs.mocwww.com# z, i+ Y2 C* S* p/ }
local zhengli = "/zl"--整理指令,此处需要""把内容定义为字符串& S4 X, w1 S- Y& q! b6 {
--  ***************************************************************************************************** --! _9 U1 Y( Q% X
Delegate.RegDelTalkEvent("zlTalkEvent");--全局注册对话事件函数妖城在线论坛# t# h/ a: b3 D. I, g% k) y
3 ~# k; t1 I5 W0 `5 Z. c2 G
function zlTalkEvent(player,msg,color,range,size)--调用对话事件函数的返回函数
+ A* K: y" D1 X妖城在线论坛        if(msg==zhengli) then--检测MSG=整理指令时则执行下述函数块内容
0 x" D$ T. S" ?- R+ o" G0 |. `魔力私服,最新魔力宝贝私服技术交流                NLG.SortItem(player)--调用GA封装的整理道具函数,其中NLG.SortItem(player)的(player)值由function zlTalkEvent(player,msg,color,range,size)这个返回函数赋予
% G0 _6 w: c' f4 ?$ g0 i6 s魔力私服,最新魔力宝贝私服技术交流        end魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 k1 E2 Y1 ~8 N, ^$ k0 M6 G/ s
end
3 F) \2 s7 o, Y妖城在线论坛
, C- b% g3 ^% ~3 L& M7 E3 Q2 g魔力私服,最新魔力宝贝私服技术交流上述实例中,如果单独拿NLG.SortItem(player)出来,(player)的值会是nil,是没有任何数值的,它是一个标准的设置函数,需要从获取函数中获得形参的实值(魔力lua的函数的形参分为2种,获取函数(get)和设置函数(set))
( H: K( N2 p. r% c3 w妖城在线论坛 教学用指令整理道具.7z (453 Bytes) 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% z$ z4 f: q( J; U& W1 G+ P
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- t" q5 T1 V% H9 ^7 Q- @2 b! _
[ 本帖最后由 王宫召唤士盖兹 于 2019-5-31 02:07 编辑 ]

TOP

引用:
原帖由 staki 于 2019-8-3 03:12 发表 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 D; @( ?$ J' @
建议出个GP的 GA好像在这身败名裂了
; P% n& g3 k" x2 F- b. j妖城在线论坛
# B/ K$ p7 ^" E3 p, Y: o2 gbbs.mocwww.comGP没2键端无法操作,只是学lua基础都一样的
! m  t& e" {4 Q' f9 g$ \+ q" }魔力私服,最新魔力宝贝私服技术交流 我不更新就是涉及的具体操作太多,通用性不高,没有更新的必要魔力私服,最新魔力宝贝私服技术交流7 l+ b% I, f7 A$ K4 ~, u
我本身秉持授人与鱼不如授人于渔的想法,才写了这个帖子
- \/ Z; A1 G1 @# Z妖城在线论坛能看懂本帖之前写的内容,足够了魔力私服,最新魔力宝贝私服技术交流3 B2 O  E' G1 g+ y: B8 @& g
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表$ c% i* u& |! B2 `
备注:
) q! N% l4 U  q9 R2 ~1 O既然回帖了,就再讲一下魔力lua的基础运行流程:
5 R( _2 p' U: d# ]$ |6 H8 s5 F1:GMSV启动时加载GMSV内置的魔力lua模块妖城在线论坛. z# o) w3 c# l5 j3 t; h
2:GMSV自动加载初始lua-init.lua   该lua是由GMSV自动加载的(无需写dofile加载)
$ [; f5 M+ I0 h, L' t+ k. K9 T' J3:init.lua 加载运行内部代码    此时会有大量dofile,一般是加载基础框架相关的东西 有兴趣可以参考init.lua内部代码,包括框架全局注册这类关键脚本,都是此时加载的
/ H1 H, J( Y7 W/ C6 v4:init.lua中有一行dofile(Lua_Path.."Config.lua"),加载Cofig.lua0 k/ [! `6 `( l; R3 z
5:Cofig.lua加载各种Module文件夹内的lua  (至于Cofig.lua内用于加载lua的Loadlua函数究竟是GA哪个脚本内写的,可以给大家当成一个最后的课后考题,找出他,能找到他,我相信你就会发现魔力LUA的运行逻辑是如此简单)
6 {' y/ k! z) i7 e, u) e—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート提示:GP的Loadlua函数在  lua\include\Global.lua 这个文件内
' y% M. o" Z5 M% D% v6 z魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表提示2:GA的Loadlua函数在 lua\System某个文件夹内bbs.mocwww.com5 P( a5 h0 l+ v+ X% H# r

  p4 h1 Z. Q) s: a! }2 S8 l—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート[ 本帖最后由 王宫召唤士盖兹 于 2019-8-3 12:59 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-20 20:44 发表 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート) F8 B3 G, T0 q7 J
我看了在线修改人物名字的lua ,其实SQL是改数据库的,但是真正起作用的是最后两行,直接改对象的名字。
9 D! B; V! u/ N$ R  xbbs.mocwww.com
" L( S# q2 B9 d                local query = "Update tbl_character set `Name` = '".._data.."' Where Cdkey = '"..Char.GetData(_Pl ...
妖城在线论坛( ~. D) F9 S# K% A; q/ {

* D/ [$ R( c$ L' H& [; O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表lua修改玩家内存只是修改了GMSV内的内存,在玩家客户端内并没有显示,因此需要用UpChar函数更新玩家客户端显示
, f( m1 n2 {, J( ^/ |6 P8 S同理还有NPC创建时候使用的UpChar函数,这个函数如果是由全局注册init来触发的,会导致你即使重载脚本,NPC也加载不出来,必须重启服务器(重新加载init)才行—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2 E+ f: A+ z+ y
备注:创建NPC也可以用其他函数或者if,GE不要使用if,会有奇怪的错误
6 G1 l, o- h# \7 M魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
1 H4 Q% h! h; I* m  CGE的教程和GA是互通的,他们只不过是文件夹不一样,文件名不一样,函数名不一样,但运行逻辑都是一样的,只是WIN7和WIN10的区别而已,只要能看懂本帖说的GA的内容,GE和GP自然就懂了
! m  o& ~8 {) |$ t2 }# sbbs.mocwww.com
# a3 n; o# P& C魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 11:22 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-30 15:47 发表
" I$ i' ^1 ^# l1 O0 s$ S魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表我知道更新完了,要UpChar函数刷新,但是现在遇到的问题,我想用sql函数直接改item表里面的  宠物卡  的字段,魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 _* w9 D: i7 Z1 y$ A3 I  H
是直接update操作数据库,运行后看数据库也更新成功了,但是人物一退出又会重新保存未修改前的数据了。 ...
% V" N; ?7 o: X  R* m魔力私服,最新魔力宝贝私服技术交流—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1 U, P! \" f( v$ v8 H2 O
更新道具数据是另一个函数Item.UpItem,不是NLG.UpChar妖城在线论坛6 ]6 b8 X" n8 Y. p4 W  A7 D$ ]
http://api.cgex.in/index.html#Item_UpItem
8 A8 n2 N1 t# D5 b6 x% ?妖城在线论坛魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表, |& Q* h' i# W1 Z/ N6 m5 C
备注:还有更新宠物信息,并对玩家客户端进行更新的Pet.UpPet(Player,Pos)魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* ?: c" ?. C8 Q; o) o0 p

, N' h+ ]1 j1 F, f6 ?魔力私服,最新魔力宝贝私服技术交流[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 16:05 编辑 ]

TOP

 19 12
发新话题