19 12
发新话题
打印

[讨论] 初级魔力lua解析

6.如何创立MSG指令(例:/1 /2)妖城在线论坛7 A+ j. K6 S# I4 B! y! E3 A) _
今天先来讲点简单的知识,顺便复习一下旧知识点中比较重要的获取(get)函数和设置(set)函数的区别,本帖停更也是由于深感自身讲的知识点先后顺序有些问题
; p. |/ U6 L* K% h5 r# _! P, T魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表魔力lua包含了三大块知识点
/ O0 T2 O' u4 K; |" t  o' q, tbbs.mocwww.com1:lua编程基础知识(不需要太深入的lua技术即可)
$ m" v. L0 z; ~& e( Xbbs.mocwww.com2:mysql基础知识(不需要太深入的mysql技术,但要会节省资源和防止疯狂读写)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート- W+ @$ t8 J' o, }5 l6 O
3:魔力封包知识(高端lua开发必备)魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表9 u3 b. b6 F  i4 C$ E$ g: C
魔力私服,最新魔力宝贝私服技术交流; p2 G; D9 {. p% m0 @! }+ |
本帖只讲述lua在魔力中是如何运行的,这三块知识点都需要你们自己去学习
7 J8 N/ ?# V; Q. t0 p) [: N0 {—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! l9 Y0 [$ `( T) e; g. z$ K
下面我们进入今天的教学魔力私服,最新魔力宝贝私服技术交流8 D$ g  _$ h! b6 [  t
lua的远程指令主要依靠NL.RegTalkEvent(Dofile, FuncName)达成
8 t7 J: A* U$ j; q魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表该函数的作用是[创建对话事件],它可以全局框架注册魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. H& P5 ~* D0 R
一般使用Delegate.RegDelTalkEvent("XXX")创建全局对话事件1 p7 o5 W8 N0 D" W0 d: `
NL.RegTalkEvent的返回函数明细:妖城在线论坛9 W# ?4 m; P2 a5 w9 j
TalkEventCallBack(CharIndex, Msg, Color, Range, Size)魔力私服,最新魔力宝贝私服技术交流9 m/ o% F, H; n* n( |4 Y
参数说明—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' u/ r2 |) X6 B: a- G; E3 s
CharIndex: 数值型 响应事件的对象index,该值由Lua引擎传递给本函数。—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート# D8 x( q4 H# J
Msg: 文本型 话的内容,该值由Lua引擎传递给本函数。bbs.mocwww.com& t0 y5 Y3 f( I. _5 q- e
Color: 数值型 说话颜色,该值由Lua引擎传递给本函数。
! b0 @$ t7 i& o6 o" C9 r—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートRange: 数值型 说话音量(范围),该值由Lua引擎传递给本函数。魔力私服,最新魔力宝贝私服技术交流1 a9 z0 c6 f# n) A
Size: 数值型 说话字体大小,该值由Lua引擎传递给本函数。bbs.mocwww.com% z; ~: `* H& S- E1 P; E. ^3 F7 t9 V5 x
返回值—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* T: B! _- f: B1 O  D) e# `
返回0拦截说话内容,返回1正常发送魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表: B6 J# {$ B$ Y' ~& L7 B
bbs.mocwww.com& f: r6 R9 `, i5 r
小知识复习:当形参由lua引擎传递一个可用实参时,你不需要填写形参具体值,并且可以传递给其他函数的空白形参,让其拥有实际数值,传递时候要注意传参的类型,空白形参的函数中,空白形参若只能填写数值型
# [* M9 c; k0 M; s! ~& ^bbs.mocwww.com传递过来的数值就必须是数值型(这种情况可以先设置一个变量   a=tonumber(lua引擎传递的字符串型传参) 然后把变量a填入空白形参的函数形参中)bbs.mocwww.com" P; X9 b$ l6 x+ f7 a, ?

! I1 \, V- U, j) Xbbs.mocwww.com文字太过干涩,下面用实例解释今天的知识点魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% {" d4 t$ M4 K( o
该例实现了用指令整理身上的道具的功能魔力私服,最新魔力宝贝私服技术交流1 A2 a; R( ?# t9 X8 e

. f: x! @7 v# [( c" m( b' C7 N魔力私服,最新魔力宝贝私服技术交流local zhengli = "/zl"--整理指令,此处需要""把内容定义为字符串
6 R7 @& X3 h! J6 |1 w2 V' [. B6 u- e妖城在线论坛--  ***************************************************************************************************** --bbs.mocwww.com" h2 |' E* h4 E- ?
Delegate.RegDelTalkEvent("zlTalkEvent");--全局注册对话事件函数魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" w' S' j3 _2 ]  r; t9 \

0 I- ]# J+ r! h  j8 T* {4 n—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートfunction zlTalkEvent(player,msg,color,range,size)--调用对话事件函数的返回函数
1 g8 ?' D( P; W9 B2 C1 Y7 T* j4 Xbbs.mocwww.com        if(msg==zhengli) then--检测MSG=整理指令时则执行下述函数块内容
% F3 l4 \2 ~' r% ]9 r魔力私服,最新魔力宝贝私服技术交流                NLG.SortItem(player)--调用GA封装的整理道具函数,其中NLG.SortItem(player)的(player)值由function zlTalkEvent(player,msg,color,range,size)这个返回函数赋予
( [* m% O) ^' c5 _& _/ B- [7 e魔力私服,最新魔力宝贝私服技术交流        end魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' i, H- z5 Z' D7 G
end
: A* I; X0 ?! _7 f, i5 Rbbs.mocwww.com妖城在线论坛% O; Q2 A" {" v; U9 W7 \6 ^3 Y
上述实例中,如果单独拿NLG.SortItem(player)出来,(player)的值会是nil,是没有任何数值的,它是一个标准的设置函数,需要从获取函数中获得形参的实值(魔力lua的函数的形参分为2种,获取函数(get)和设置函数(set))
6 U% |- n: y" ]0 @4 h2 Jbbs.mocwww.com 教学用指令整理道具.7z (453 Bytes) $ x$ o9 n( `1 V' ?4 \/ c6 A' ]; H& p1 L
6 H( c; l/ }4 |) R3 w
[ 本帖最后由 王宫召唤士盖兹 于 2019-5-31 02:07 编辑 ]

TOP

引用:
原帖由 staki 于 2019-8-3 03:12 发表
& H0 C+ Z9 M/ x- n4 C建议出个GP的 GA好像在这身败名裂了
& Q5 k$ A0 t1 B8 }魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表妖城在线论坛6 x* ~. z0 [4 u  N/ ^% ]8 g- Z: l5 C
GP没2键端无法操作,只是学lua基础都一样的—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート% }! H6 d' Z' v! _
我不更新就是涉及的具体操作太多,通用性不高,没有更新的必要bbs.mocwww.com) \4 a! U% Z, r( ]. U8 }" S- x
我本身秉持授人与鱼不如授人于渔的想法,才写了这个帖子
5 c2 R; b8 z. b" D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表能看懂本帖之前写的内容,足够了魔力私服,最新魔力宝贝私服技术交流( W' S' I( z4 n# I1 h
bbs.mocwww.com: I8 \9 @/ ~' v1 b0 m4 Y7 ^: {
备注:魔力私服,最新魔力宝贝私服技术交流4 a) y2 U# h  c4 K( ]8 L
既然回帖了,就再讲一下魔力lua的基础运行流程:魔力私服,最新魔力宝贝私服技术交流. P8 |6 G& A2 M. V! G- `, C. \
1:GMSV启动时加载GMSV内置的魔力lua模块魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 V. K7 Z: ^4 o# ^
2:GMSV自动加载初始lua-init.lua   该lua是由GMSV自动加载的(无需写dofile加载)! G* t/ s) K% O
3:init.lua 加载运行内部代码    此时会有大量dofile,一般是加载基础框架相关的东西 有兴趣可以参考init.lua内部代码,包括框架全局注册这类关键脚本,都是此时加载的
  u: U; c, j% ^. c9 X" Tbbs.mocwww.com4:init.lua中有一行dofile(Lua_Path.."Config.lua"),加载Cofig.lua: \3 O+ l  s4 E3 j3 k( V
5:Cofig.lua加载各种Module文件夹内的lua  (至于Cofig.lua内用于加载lua的Loadlua函数究竟是GA哪个脚本内写的,可以给大家当成一个最后的课后考题,找出他,能找到他,我相信你就会发现魔力LUA的运行逻辑是如此简单)bbs.mocwww.com" Z! B* m2 G- U* C5 ~0 W
提示:GP的Loadlua函数在  lua\include\Global.lua 这个文件内1 F: V* J# ^0 A/ f& t
提示2:GA的Loadlua函数在 lua\System某个文件夹内
5 a0 \: o9 i! s% e4 Z9 O2 D2 |—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
, G9 z( D* [, A# }, s[ 本帖最后由 王宫召唤士盖兹 于 2019-8-3 12:59 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-20 20:44 发表 魔力私服,最新魔力宝贝私服技术交流" Z* w! y! D! N% b6 y' O
我看了在线修改人物名字的lua ,其实SQL是改数据库的,但是真正起作用的是最后两行,直接改对象的名字。魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表4 @/ b" n, D# g
魔力私服,最新魔力宝贝私服技术交流; l( n& r& r3 {. o
                local query = "Update tbl_character set `Name` = '".._data.."' Where Cdkey = '"..Char.GetData(_Pl ...
9 H. X+ x4 n/ @# s( m# P魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 h5 A- {7 ]5 h4 D
lua修改玩家内存只是修改了GMSV内的内存,在玩家客户端内并没有显示,因此需要用UpChar函数更新玩家客户端显示魔力私服,最新魔力宝贝私服技术交流! X; x2 a- Z2 P9 a3 v  b
同理还有NPC创建时候使用的UpChar函数,这个函数如果是由全局注册init来触发的,会导致你即使重载脚本,NPC也加载不出来,必须重启服务器(重新加载init)才行3 |0 z4 R1 A( j2 x, i% K+ x# c$ \
备注:创建NPC也可以用其他函数或者if,GE不要使用if,会有奇怪的错误
# y0 X% B% d- x9 }5 ?  e2 m—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力宝贝私服技术交流2 K; U# ]3 E4 a- N
GE的教程和GA是互通的,他们只不过是文件夹不一样,文件名不一样,函数名不一样,但运行逻辑都是一样的,只是WIN7和WIN10的区别而已,只要能看懂本帖说的GA的内容,GE和GP自然就懂了魔力私服,最新魔力宝贝私服技术交流) H' x/ @. z/ j, P( w

  [0 s0 \. O- p' R4 ?9 g妖城在线论坛[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 11:22 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-30 15:47 发表 —魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! G4 G5 j, R' h4 o! i. A
我知道更新完了,要UpChar函数刷新,但是现在遇到的问题,我想用sql函数直接改item表里面的  宠物卡  的字段,
1 m( r" t8 f- T5 U2 W( _+ L—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート是直接update操作数据库,运行后看数据库也更新成功了,但是人物一退出又会重新保存未修改前的数据了。 ...
- {' O% c" X9 P4 j9 g3 a1 E/ H
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 U* y5 r) w' \! v0 F
更新道具数据是另一个函数Item.UpItem,不是NLG.UpChar
( L* C9 W( n" ]8 r3 m7 m妖城在线论坛http://api.cgex.in/index.html#Item_UpItem妖城在线论坛3 \, {4 }  m  f, \7 z7 ~/ M

: Y) U- t! |+ i8 g. a2 X" Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表备注:还有更新宠物信息,并对玩家客户端进行更新的Pet.UpPet(Player,Pos)妖城在线论坛- k8 f" j! ~( C$ H

; T- Q# R$ L% d6 m; x魔力私服,最新魔力宝贝私服技术交流[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 16:05 编辑 ]

TOP

 19 12
发新话题