19 12
发新话题
打印

[讨论] 初级魔力lua解析

6.如何创立MSG指令(例:/1 /2)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ [- r9 g: i4 K4 p3 y# \+ q
今天先来讲点简单的知识,顺便复习一下旧知识点中比较重要的获取(get)函数和设置(set)函数的区别,本帖停更也是由于深感自身讲的知识点先后顺序有些问题
1 ?# ~& h* i2 {/ S+ J8 X妖城在线论坛魔力lua包含了三大块知识点—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: l. `# K! B; T% U$ V/ a& O
1:lua编程基础知识(不需要太深入的lua技术即可)
# [3 L" Y& \1 K—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2:mysql基础知识(不需要太深入的mysql技术,但要会节省资源和防止疯狂读写)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート$ I% z& h- K+ i- J/ m6 V
3:魔力封包知识(高端lua开发必备)
% `& P! {1 I% C8 D5 A0 X—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力宝贝私服技术交流' V+ @+ V- r% i* v, M( M8 q
本帖只讲述lua在魔力中是如何运行的,这三块知识点都需要你们自己去学习
0 y, i/ d8 |3 Pbbs.mocwww.com
8 w- E' s$ M' ?% b- F* Mbbs.mocwww.com下面我们进入今天的教学妖城在线论坛& K- m1 i7 F1 |0 w) N
lua的远程指令主要依靠NL.RegTalkEvent(Dofile, FuncName)达成% T) F' ~+ ~' W/ c, t. p  q
该函数的作用是[创建对话事件],它可以全局框架注册
( L3 \2 K- ]* p+ E# O/ H魔力私服,最新魔力宝贝私服技术交流一般使用Delegate.RegDelTalkEvent("XXX")创建全局对话事件
% y2 A  J+ M- D# w/ E% u0 Z魔力私服,最新魔力宝贝私服技术交流NL.RegTalkEvent的返回函数明细:—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 T  g0 _* k9 O  i, d
TalkEventCallBack(CharIndex, Msg, Color, Range, Size)
% h+ b& B) @/ \/ s参数说明
& y5 s9 ?0 Z1 j% dbbs.mocwww.comCharIndex: 数值型 响应事件的对象index,该值由Lua引擎传递给本函数。妖城在线论坛& L! [. ]+ y* U1 i+ [
Msg: 文本型 话的内容,该值由Lua引擎传递给本函数。
6 V) ~5 q* K9 Y  Xbbs.mocwww.comColor: 数值型 说话颜色,该值由Lua引擎传递给本函数。
# p5 f( h% ~5 a2 e* D" I, ]bbs.mocwww.comRange: 数值型 说话音量(范围),该值由Lua引擎传递给本函数。妖城在线论坛$ P& h/ [/ U4 g; O* Z4 S( _
Size: 数值型 说话字体大小,该值由Lua引擎传递给本函数。魔力私服,最新魔力宝贝私服技术交流; F5 ]6 t' ~! X) {7 v
返回值魔力私服,最新魔力宝贝私服技术交流+ n& {7 m+ V0 d
返回0拦截说话内容,返回1正常发送魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( x7 `2 R3 B& W3 T
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表) d) d6 b5 m* F; P* G
小知识复习:当形参由lua引擎传递一个可用实参时,你不需要填写形参具体值,并且可以传递给其他函数的空白形参,让其拥有实际数值,传递时候要注意传参的类型,空白形参的函数中,空白形参若只能填写数值型
% o  P: L5 q7 H, L, h3 U; `魔力私服,最新魔力宝贝私服技术交流传递过来的数值就必须是数值型(这种情况可以先设置一个变量   a=tonumber(lua引擎传递的字符串型传参) 然后把变量a填入空白形参的函数形参中)
2 g6 c/ e+ P7 t6 f—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# o) `, `) e) f: r
文字太过干涩,下面用实例解释今天的知识点bbs.mocwww.com$ F1 M4 @' ?* j1 Z* d4 R5 d
该例实现了用指令整理身上的道具的功能
2 W3 E7 x& M( F# j魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
0 y  }* M0 ~$ I& ]+ x8 {8 rlocal zhengli = "/zl"--整理指令,此处需要""把内容定义为字符串妖城在线论坛* k) Y0 |* O3 j6 T1 d
--  ***************************************************************************************************** --1 ]2 k2 C& z. X% m
Delegate.RegDelTalkEvent("zlTalkEvent");--全局注册对话事件函数
3 s! b4 D. `$ p妖城在线论坛魔力私服,最新魔力宝贝私服技术交流$ z, V9 z) s1 q1 f% f+ o# I# z
function zlTalkEvent(player,msg,color,range,size)--调用对话事件函数的返回函数魔力私服,最新魔力宝贝私服技术交流( x1 J( f+ ^4 ?; ?; y
        if(msg==zhengli) then--检测MSG=整理指令时则执行下述函数块内容
$ x9 c; `0 c0 `& E魔力私服,最新魔力宝贝私服技术交流                NLG.SortItem(player)--调用GA封装的整理道具函数,其中NLG.SortItem(player)的(player)值由function zlTalkEvent(player,msg,color,range,size)这个返回函数赋予魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 q3 ?$ Z  M1 L% u4 H. P
        endbbs.mocwww.com2 i% K& A5 ^) l, n  u
end
  j: h5 D  Q$ p—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート妖城在线论坛* {- O4 _) \8 D9 E( w- c; t" s
上述实例中,如果单独拿NLG.SortItem(player)出来,(player)的值会是nil,是没有任何数值的,它是一个标准的设置函数,需要从获取函数中获得形参的实值(魔力lua的函数的形参分为2种,获取函数(get)和设置函数(set))1 V2 y- r( H3 i; c
教学用指令整理道具.7z (453 Bytes) 妖城在线论坛4 n+ Z1 G% F4 s8 g) c

3 f6 e9 E6 `( L魔力私服,最新魔力宝贝私服技术交流[ 本帖最后由 王宫召唤士盖兹 于 2019-5-31 02:07 编辑 ]

TOP

引用:
原帖由 staki 于 2019-8-3 03:12 发表
, i* m0 u5 o9 t" h. H* R6 x—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート建议出个GP的 GA好像在这身败名裂了
3 \1 M2 V$ c5 r' `. _# S

4 S  {- H  K8 S* `, v6 L2 _GP没2键端无法操作,只是学lua基础都一样的
' W) J- S% G$ F! T. H魔力私服,最新魔力宝贝私服技术交流 我不更新就是涉及的具体操作太多,通用性不高,没有更新的必要—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート6 O" J% f/ ?/ y/ n" _
我本身秉持授人与鱼不如授人于渔的想法,才写了这个帖子妖城在线论坛6 ]6 K5 R/ O3 V
能看懂本帖之前写的内容,足够了
) ?+ n2 F$ j$ L4 o—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
3 [1 I- }1 y) n3 a( |7 P7 D2 [8 x妖城在线论坛备注:—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* d, S5 S$ @6 D1 P
既然回帖了,就再讲一下魔力lua的基础运行流程:
8 U% M% G% }* h, R妖城在线论坛1:GMSV启动时加载GMSV内置的魔力lua模块—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; r8 R" i% Q2 \9 e* ~
2:GMSV自动加载初始lua-init.lua   该lua是由GMSV自动加载的(无需写dofile加载)妖城在线论坛6 U8 Q# b9 S3 v) v6 U6 M6 \7 r1 N
3:init.lua 加载运行内部代码    此时会有大量dofile,一般是加载基础框架相关的东西 有兴趣可以参考init.lua内部代码,包括框架全局注册这类关键脚本,都是此时加载的魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 q$ Y' e' }( p# b- C+ u
4:init.lua中有一行dofile(Lua_Path.."Config.lua"),加载Cofig.lua. q" \1 x$ C4 a/ q. D3 }9 U
5:Cofig.lua加载各种Module文件夹内的lua  (至于Cofig.lua内用于加载lua的Loadlua函数究竟是GA哪个脚本内写的,可以给大家当成一个最后的课后考题,找出他,能找到他,我相信你就会发现魔力LUA的运行逻辑是如此简单)
! W! F/ p" P9 q# }—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート提示:GP的Loadlua函数在  lua\include\Global.lua 这个文件内
# ^' l' C+ {( O5 |, @妖城在线论坛提示2:GA的Loadlua函数在 lua\System某个文件夹内
+ }+ @5 ^+ v- \$ D7 i魔力私服,最新魔力宝贝私服技术交流
! Z  w: s" U& l6 }4 K魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表[ 本帖最后由 王宫召唤士盖兹 于 2019-8-3 12:59 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-20 20:44 发表
! S1 Y9 N$ w3 _& T妖城在线论坛我看了在线修改人物名字的lua ,其实SQL是改数据库的,但是真正起作用的是最后两行,直接改对象的名字。bbs.mocwww.com7 W  z1 V/ H9 ?/ ~

+ V5 t9 y. R$ Q8 k+ obbs.mocwww.com                local query = "Update tbl_character set `Name` = '".._data.."' Where Cdkey = '"..Char.GetData(_Pl ...
0 @+ n5 K7 r- C: y! \" c3 q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート妖城在线论坛9 Z- `2 o; p( K# Y2 d
lua修改玩家内存只是修改了GMSV内的内存,在玩家客户端内并没有显示,因此需要用UpChar函数更新玩家客户端显示魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表7 t+ t- _/ K! e! E# {2 X* P
同理还有NPC创建时候使用的UpChar函数,这个函数如果是由全局注册init来触发的,会导致你即使重载脚本,NPC也加载不出来,必须重启服务器(重新加载init)才行
. y5 ^5 g* S) I( T( n备注:创建NPC也可以用其他函数或者if,GE不要使用if,会有奇怪的错误
' }8 e9 f% t. J5 h# O—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート妖城在线论坛% J+ z, h' M' G- J0 I
GE的教程和GA是互通的,他们只不过是文件夹不一样,文件名不一样,函数名不一样,但运行逻辑都是一样的,只是WIN7和WIN10的区别而已,只要能看懂本帖说的GA的内容,GE和GP自然就懂了
: t# n0 j8 v* s' B/ ?2 v  ebbs.mocwww.combbs.mocwww.com& U) q0 {: j. q8 ^
[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 11:22 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-30 15:47 发表
4 @5 j+ g2 M% H" Qbbs.mocwww.com我知道更新完了,要UpChar函数刷新,但是现在遇到的问题,我想用sql函数直接改item表里面的  宠物卡  的字段,; T: S# F8 d: Q* k* z
是直接update操作数据库,运行后看数据库也更新成功了,但是人物一退出又会重新保存未修改前的数据了。 ...
' |' x2 l$ }. \3 Q$ B% F—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
8 C; t" X: m( T( J, x+ H魔力私服,最新魔力宝贝私服技术交流更新道具数据是另一个函数Item.UpItem,不是NLG.UpChar
8 m3 |8 Q' R* D* Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表http://api.cgex.in/index.html#Item_UpItem
) n  p9 D0 O- G/ z+ z4 L0 F妖城在线论坛bbs.mocwww.com+ T3 [$ W( D- f( {2 l
备注:还有更新宠物信息,并对玩家客户端进行更新的Pet.UpPet(Player,Pos)魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表8 X+ l& P3 E2 h, H+ b2 [8 ]

0 @, b! M; L8 V1 D+ ^$ P% x魔力私服,最新魔力宝贝私服技术交流[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 16:05 编辑 ]

TOP

 19 12
发新话题