19 12
发新话题
打印

[讨论] 初级魔力lua解析

6.如何创立MSG指令(例:/1 /2)) k1 |! T! E* a! d) {
今天先来讲点简单的知识,顺便复习一下旧知识点中比较重要的获取(get)函数和设置(set)函数的区别,本帖停更也是由于深感自身讲的知识点先后顺序有些问题
! B6 F9 e; m8 P- H- C; N- v魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表魔力lua包含了三大块知识点
# k; k9 W7 |( K2 J—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1:lua编程基础知识(不需要太深入的lua技术即可)bbs.mocwww.com* y' r, d' o' ?+ l5 d/ u* p
2:mysql基础知识(不需要太深入的mysql技术,但要会节省资源和防止疯狂读写)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; V5 z0 f3 z, q0 j2 V
3:魔力封包知识(高端lua开发必备)妖城在线论坛4 J. n0 B. w; F1 i- l6 g6 t8 T
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* `/ y1 L$ ^  g' B: E% a$ P9 q* e' @
本帖只讲述lua在魔力中是如何运行的,这三块知识点都需要你们自己去学习
4 [6 t8 F& U1 B& w( ^% {, e; z—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
& n/ b) Y9 N  c( T; @bbs.mocwww.com下面我们进入今天的教学
0 c% y& {7 v) Y1 E2 u; slua的远程指令主要依靠NL.RegTalkEvent(Dofile, FuncName)达成—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* S- v% Q5 p% w: F" y  |
该函数的作用是[创建对话事件],它可以全局框架注册魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% X, ^1 r+ v; t2 C6 J, o/ g; T
一般使用Delegate.RegDelTalkEvent("XXX")创建全局对话事件
, K6 P( `/ C% jbbs.mocwww.comNL.RegTalkEvent的返回函数明细:魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 Z* o- i6 e6 T6 u
TalkEventCallBack(CharIndex, Msg, Color, Range, Size)魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% R( v6 h1 G* \' R: }
参数说明妖城在线论坛4 @; B. Y. A1 v: G
CharIndex: 数值型 响应事件的对象index,该值由Lua引擎传递给本函数。—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート4 l: i9 l, L5 \0 u" C( ?( e
Msg: 文本型 话的内容,该值由Lua引擎传递给本函数。
3 j  V$ I9 Z( U2 B( J/ p: P魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Color: 数值型 说话颜色,该值由Lua引擎传递给本函数。bbs.mocwww.com' P7 @$ [1 {$ N: H, _
Range: 数值型 说话音量(范围),该值由Lua引擎传递给本函数。bbs.mocwww.com, M. l2 I  }5 S( }1 x1 H
Size: 数值型 说话字体大小,该值由Lua引擎传递给本函数。魔力私服,最新魔力宝贝私服技术交流! t5 j# q% \5 S) ]# }, ?
返回值魔力私服,最新魔力宝贝私服技术交流; v6 @3 g/ Q5 C& {
返回0拦截说话内容,返回1正常发送
- L1 T" [1 b  C0 t% Ebbs.mocwww.com
, v' q2 G# _# c6 k# Z: ]7 {! O小知识复习:当形参由lua引擎传递一个可用实参时,你不需要填写形参具体值,并且可以传递给其他函数的空白形参,让其拥有实际数值,传递时候要注意传参的类型,空白形参的函数中,空白形参若只能填写数值型bbs.mocwww.com# r: M+ i8 o$ a+ s) G/ r& Y+ s9 |
传递过来的数值就必须是数值型(这种情况可以先设置一个变量   a=tonumber(lua引擎传递的字符串型传参) 然后把变量a填入空白形参的函数形参中)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート5 T  D9 T+ A, r8 m' E, A

8 l. a8 s6 ^& R- q* K8 abbs.mocwww.com文字太过干涩,下面用实例解释今天的知识点
. k' T) V3 L* G1 `7 r% L该例实现了用指令整理身上的道具的功能3 @4 f, c; E) E$ a, t6 z+ n

0 g$ A9 q/ A" ?- Y9 Ibbs.mocwww.comlocal zhengli = "/zl"--整理指令,此处需要""把内容定义为字符串
( R: F9 I  m8 B- y# T* L) Sbbs.mocwww.com--  ***************************************************************************************************** --bbs.mocwww.com2 M9 }6 A6 \7 e8 `/ d- v% T- o
Delegate.RegDelTalkEvent("zlTalkEvent");--全局注册对话事件函数
9 F: e3 Y/ B/ u0 q6 v魔力私服,最新魔力宝贝私服技术交流
6 H. j9 U0 \6 \1 a魔力私服,最新魔力宝贝私服技术交流function zlTalkEvent(player,msg,color,range,size)--调用对话事件函数的返回函数
3 ^& M* c) k# T0 G8 y        if(msg==zhengli) then--检测MSG=整理指令时则执行下述函数块内容魔力私服,最新魔力宝贝私服技术交流9 J5 E. o8 q/ [- Z) `/ T( n9 M6 m5 \
                NLG.SortItem(player)--调用GA封装的整理道具函数,其中NLG.SortItem(player)的(player)值由function zlTalkEvent(player,msg,color,range,size)这个返回函数赋予
6 r8 k% F$ x8 K, _1 A—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート        end—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート/ y8 ~9 r% b4 U
end
1 I4 F8 }8 q$ ?8 o1 e8 t4 `魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
* W  n, c& r0 X( Q- c9 u5 J魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表上述实例中,如果单独拿NLG.SortItem(player)出来,(player)的值会是nil,是没有任何数值的,它是一个标准的设置函数,需要从获取函数中获得形参的实值(魔力lua的函数的形参分为2种,获取函数(get)和设置函数(set))魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表5 e$ N# c4 l8 W6 R- U
教学用指令整理道具.7z (453 Bytes) 妖城在线论坛* d7 @, w3 U( t- C# E% \

& }/ `) C1 r" @0 F$ ^—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート[ 本帖最后由 王宫召唤士盖兹 于 2019-5-31 02:07 编辑 ]

TOP

引用:
原帖由 staki 于 2019-8-3 03:12 发表 bbs.mocwww.com" U# q, D# t5 G! T
建议出个GP的 GA好像在这身败名裂了
8 ^( F8 F2 [" \6 L妖城在线论坛—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート0 H# G8 S# e; E4 I; |
GP没2键端无法操作,只是学lua基础都一样的
- F6 m8 x- k) e+ Z魔力私服,最新魔力宝贝私服技术交流 我不更新就是涉及的具体操作太多,通用性不高,没有更新的必要魔力私服,最新魔力宝贝私服技术交流0 {$ u8 h" i6 E  b7 h8 N) z
我本身秉持授人与鱼不如授人于渔的想法,才写了这个帖子6 [( d0 t7 x- o% L% m# Q
能看懂本帖之前写的内容,足够了
5 N, F  J# S7 a! ]魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表妖城在线论坛  I5 C; n. j" E+ Y
备注:魔力私服,最新魔力宝贝私服技术交流0 C) w$ A$ c$ Q, L3 t/ E5 S) U1 y6 I
既然回帖了,就再讲一下魔力lua的基础运行流程:
: h3 E2 N/ E9 k* x- Cbbs.mocwww.com1:GMSV启动时加载GMSV内置的魔力lua模块bbs.mocwww.com  ]( c1 N4 q. u, S, o1 a/ l
2:GMSV自动加载初始lua-init.lua   该lua是由GMSV自动加载的(无需写dofile加载)bbs.mocwww.com; K5 J2 L8 H4 _7 l
3:init.lua 加载运行内部代码    此时会有大量dofile,一般是加载基础框架相关的东西 有兴趣可以参考init.lua内部代码,包括框架全局注册这类关键脚本,都是此时加载的
( z' A# r' M4 C" S: c5 Z妖城在线论坛4:init.lua中有一行dofile(Lua_Path.."Config.lua"),加载Cofig.lua—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ k" o" a4 Y( H& V5 A6 q% l) D
5:Cofig.lua加载各种Module文件夹内的lua  (至于Cofig.lua内用于加载lua的Loadlua函数究竟是GA哪个脚本内写的,可以给大家当成一个最后的课后考题,找出他,能找到他,我相信你就会发现魔力LUA的运行逻辑是如此简单)
4 S  V6 o9 |" G4 T8 s% V妖城在线论坛提示:GP的Loadlua函数在  lua\include\Global.lua 这个文件内
% F" Q# @6 j" m. n" Y/ a' Bbbs.mocwww.com提示2:GA的Loadlua函数在 lua\System某个文件夹内
( |+ T  A4 v& [2 t
+ _$ Z" x# s0 B. \: g9 F! ?  O魔力私服,最新魔力宝贝私服技术交流[ 本帖最后由 王宫召唤士盖兹 于 2019-8-3 12:59 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-20 20:44 发表
7 W, N, [5 {3 J% m& n6 }+ Z6 Pbbs.mocwww.com我看了在线修改人物名字的lua ,其实SQL是改数据库的,但是真正起作用的是最后两行,直接改对象的名字。
  ]# N4 Y% a7 Z' K8 a—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート
) m3 e& g. _( y1 }4 p4 z+ V                local query = "Update tbl_character set `Name` = '".._data.."' Where Cdkey = '"..Char.GetData(_Pl ...
bbs.mocwww.com. w% m# a, M* M% [- K, g4 a7 L. ^* y
妖城在线论坛5 a; a! w  j0 p- e, C* i- _
lua修改玩家内存只是修改了GMSV内的内存,在玩家客户端内并没有显示,因此需要用UpChar函数更新玩家客户端显示妖城在线论坛2 L; X( `! a( A# x7 _
同理还有NPC创建时候使用的UpChar函数,这个函数如果是由全局注册init来触发的,会导致你即使重载脚本,NPC也加载不出来,必须重启服务器(重新加载init)才行
' V- p7 L2 `* a- @7 F4 C备注:创建NPC也可以用其他函数或者if,GE不要使用if,会有奇怪的错误5 `& Z$ F( B7 l, N9 d7 F

4 p  S6 x4 j& i; G魔力私服,最新魔力宝贝私服技术交流GE的教程和GA是互通的,他们只不过是文件夹不一样,文件名不一样,函数名不一样,但运行逻辑都是一样的,只是WIN7和WIN10的区别而已,只要能看懂本帖说的GA的内容,GE和GP自然就懂了; q! S7 l6 L* N$ Y
魔力私服,最新魔力宝贝私服技术交流) f; Z9 V1 t' J2 y
[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 11:22 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-30 15:47 发表 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表# S2 W' B2 {3 I: p4 G* I% e
我知道更新完了,要UpChar函数刷新,但是现在遇到的问题,我想用sql函数直接改item表里面的  宠物卡  的字段,bbs.mocwww.com( A; b: [5 R, ]' P/ l
是直接update操作数据库,运行后看数据库也更新成功了,但是人物一退出又会重新保存未修改前的数据了。 ...
妖城在线论坛- d/ i4 _; \3 ~- |7 B6 n8 z
& R8 k6 v% a- G; p% A, P- E
更新道具数据是另一个函数Item.UpItem,不是NLG.UpChar* x! F1 y4 F" |) N. v
http://api.cgex.in/index.html#Item_UpItem* G! R9 F' M  X% R4 J  A8 R
bbs.mocwww.com3 a: x' j$ F0 U& L' w
备注:还有更新宠物信息,并对玩家客户端进行更新的Pet.UpPet(Player,Pos)
, D! t! a# t: e1 [- ]+ R; E魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表3 g* Q1 o6 @" t0 ^
[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 16:05 编辑 ]

TOP

 19 12
发新话题