19 12
发新话题
打印

[讨论] 初级魔力lua解析

6.如何创立MSG指令(例:/1 /2)
/ d  H0 ~; b1 K* \  nbbs.mocwww.com今天先来讲点简单的知识,顺便复习一下旧知识点中比较重要的获取(get)函数和设置(set)函数的区别,本帖停更也是由于深感自身讲的知识点先后顺序有些问题, ?6 ^) D7 y) e# y
魔力lua包含了三大块知识点5 }- e( R4 z' G+ r2 f" ^; |8 h
1:lua编程基础知识(不需要太深入的lua技术即可)妖城在线论坛$ u" y- l1 O7 ^
2:mysql基础知识(不需要太深入的mysql技术,但要会节省资源和防止疯狂读写)妖城在线论坛7 |+ S9 C5 I( {! d% O
3:魔力封包知识(高端lua开发必备)
2 D  {4 Y2 e' Y1 F) ^0 {! U  Dbbs.mocwww.com
/ c" q6 {- w/ I/ ~: v$ G5 [% {/ k. K本帖只讲述lua在魔力中是如何运行的,这三块知识点都需要你们自己去学习
, u9 V8 u6 p' v* r! N/ Z魔力私服,最新魔力宝贝私服技术交流. |% e% _7 D( K8 w) d* \1 C) `
下面我们进入今天的教学
7 |; v* g2 T( n" f—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートlua的远程指令主要依靠NL.RegTalkEvent(Dofile, FuncName)达成妖城在线论坛( G+ H3 ~  [" l5 W! [3 ]! M
该函数的作用是[创建对话事件],它可以全局框架注册bbs.mocwww.com2 }4 d* M3 f6 z2 K" @* p* Y
一般使用Delegate.RegDelTalkEvent("XXX")创建全局对话事件3 p7 ?: O8 [, t+ S2 }+ h) L
NL.RegTalkEvent的返回函数明细:
- l2 {9 o- M2 @* C0 xbbs.mocwww.comTalkEventCallBack(CharIndex, Msg, Color, Range, Size)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! y0 P; w4 C& a& Q! K9 ~1 ^" |
参数说明魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( h0 k* z4 v8 W+ _1 d
CharIndex: 数值型 响应事件的对象index,该值由Lua引擎传递给本函数。魔力私服,最新魔力宝贝私服技术交流- S/ h2 N: @3 d6 c; Z8 L
Msg: 文本型 话的内容,该值由Lua引擎传递给本函数。魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( Y( j8 h! G1 R5 o, c
Color: 数值型 说话颜色,该值由Lua引擎传递给本函数。
2 g3 e' ^* I$ M" s- E$ FRange: 数值型 说话音量(范围),该值由Lua引擎传递给本函数。2 H" H; b, ]7 a( _/ f& i, }
Size: 数值型 说话字体大小,该值由Lua引擎传递给本函数。
1 {) E' F5 m/ ~+ b& q5 \  h7 f' v返回值—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート; V& I# @6 S' E3 Y0 [# V
返回0拦截说话内容,返回1正常发送妖城在线论坛9 a% x1 b2 J, X8 N7 u: V- [
& y" u  p% K* T7 _% W) |& ]
小知识复习:当形参由lua引擎传递一个可用实参时,你不需要填写形参具体值,并且可以传递给其他函数的空白形参,让其拥有实际数值,传递时候要注意传参的类型,空白形参的函数中,空白形参若只能填写数值型魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表& O( H* s, Z  \% U8 f* x
传递过来的数值就必须是数值型(这种情况可以先设置一个变量   a=tonumber(lua引擎传递的字符串型传参) 然后把变量a填入空白形参的函数形参中)
* @9 Z/ V; S  m/ l$ j
' r  i+ s. B/ r$ f2 [, r% _妖城在线论坛文字太过干涩,下面用实例解释今天的知识点
' K7 T2 ?3 o* a' |" W妖城在线论坛该例实现了用指令整理身上的道具的功能
9 P9 l% R- {- \, Z4 D* J$ R2 \3 R, j, ^% J) F1 J( i. E; f
local zhengli = "/zl"--整理指令,此处需要""把内容定义为字符串
& b" Z% H* n/ x9 r) W1 j魔力私服,最新魔力宝贝私服技术交流--  ***************************************************************************************************** --魔力私服,最新魔力宝贝私服技术交流/ I. S9 G4 {6 z9 R* r
Delegate.RegDelTalkEvent("zlTalkEvent");--全局注册对话事件函数妖城在线论坛- t& G1 N$ L' ~; p+ E: q
—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート' O' M' g4 [" W% u! z
function zlTalkEvent(player,msg,color,range,size)--调用对话事件函数的返回函数: |3 U# g5 O, P# H) ^
        if(msg==zhengli) then--检测MSG=整理指令时则执行下述函数块内容—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 g, Q) g0 ]  t4 [
                NLG.SortItem(player)--调用GA封装的整理道具函数,其中NLG.SortItem(player)的(player)值由function zlTalkEvent(player,msg,color,range,size)这个返回函数赋予魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 t3 w/ E( i& v, w& H: @
        end
% U2 F2 m! b, P- W' u—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲートend
) M7 Y: m: c4 V7 g妖城在线论坛
, R, p' \& G) W) s0 p3 {: |4 }! nbbs.mocwww.com上述实例中,如果单独拿NLG.SortItem(player)出来,(player)的值会是nil,是没有任何数值的,它是一个标准的设置函数,需要从获取函数中获得形参的实值(魔力lua的函数的形参分为2种,获取函数(get)和设置函数(set))
8 A7 S5 A9 Q, x% u6 B1 G魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 教学用指令整理道具.7z (453 Bytes)
6 e3 G  _% R5 {/ E, z妖城在线论坛
7 b, v$ L1 G7 Q3 x9 E魔力私服,最新魔力宝贝私服技术交流[ 本帖最后由 王宫召唤士盖兹 于 2019-5-31 02:07 编辑 ]

TOP

引用:
原帖由 staki 于 2019-8-3 03:12 发表 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表* A9 `0 N- ?) V3 u5 [/ p
建议出个GP的 GA好像在这身败名裂了
魔力私服,最新魔力宝贝私服技术交流* p  Z. Z6 F1 ^: {7 w2 z
魔力私服,最新魔力宝贝私服技术交流7 C1 v) c$ E( F7 {8 q
GP没2键端无法操作,只是学lua基础都一样的
$ u8 O4 [: C% `- B 我不更新就是涉及的具体操作太多,通用性不高,没有更新的必要魔力私服,最新魔力宝贝私服技术交流8 p8 v3 X# N' ~1 N& ~7 l: @
我本身秉持授人与鱼不如授人于渔的想法,才写了这个帖子
% {, \# k# R$ f+ i+ C, Kbbs.mocwww.com能看懂本帖之前写的内容,足够了
, }1 D, P9 D# e. v1 G; x& C5 t( f—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! q* R7 ~9 Z; X8 |3 }" l$ u! r6 ^
备注:
, w- B8 J3 m! g- s, N" u# ]妖城在线论坛既然回帖了,就再讲一下魔力lua的基础运行流程:
5 x; }, C1 }0 Z1:GMSV启动时加载GMSV内置的魔力lua模块
1 j5 }9 D6 r: r7 k" o8 Y2:GMSV自动加载初始lua-init.lua   该lua是由GMSV自动加载的(无需写dofile加载)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート* X1 l9 _: W7 ^- M
3:init.lua 加载运行内部代码    此时会有大量dofile,一般是加载基础框架相关的东西 有兴趣可以参考init.lua内部代码,包括框架全局注册这类关键脚本,都是此时加载的5 m- B* {+ Z+ @4 [+ Z+ @
4:init.lua中有一行dofile(Lua_Path.."Config.lua"),加载Cofig.lua魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表  k- u/ V+ F0 b1 t- U
5:Cofig.lua加载各种Module文件夹内的lua  (至于Cofig.lua内用于加载lua的Loadlua函数究竟是GA哪个脚本内写的,可以给大家当成一个最后的课后考题,找出他,能找到他,我相信你就会发现魔力LUA的运行逻辑是如此简单)魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表1 @+ {8 C9 ?( o! `0 M5 D% z
提示:GP的Loadlua函数在  lua\include\Global.lua 这个文件内魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( `+ A% ~/ a) A7 @# D# \  c7 m
提示2:GA的Loadlua函数在 lua\System某个文件夹内妖城在线论坛' H5 G8 \1 s) V; P9 N( Y

3 c9 U% @+ w! K" u1 E: mbbs.mocwww.com[ 本帖最后由 王宫召唤士盖兹 于 2019-8-3 12:59 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-20 20:44 发表
: D- w- [  y0 V3 B0 R$ L" Z5 a我看了在线修改人物名字的lua ,其实SQL是改数据库的,但是真正起作用的是最后两行,直接改对象的名字。bbs.mocwww.com1 V! A" P$ i3 b/ c& S- {6 F

6 U; P  h% E- Q" r/ s7 z: H—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート                local query = "Update tbl_character set `Name` = '".._data.."' Where Cdkey = '"..Char.GetData(_Pl ...
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 C( c; ~1 M; x& h
bbs.mocwww.com7 j/ c5 ]1 V" n  c6 l
lua修改玩家内存只是修改了GMSV内的内存,在玩家客户端内并没有显示,因此需要用UpChar函数更新玩家客户端显示
8 ?6 ~0 S! d. I4 `魔力私服,最新魔力宝贝私服技术交流同理还有NPC创建时候使用的UpChar函数,这个函数如果是由全局注册init来触发的,会导致你即使重载脚本,NPC也加载不出来,必须重启服务器(重新加载init)才行
3 K8 K2 E1 y; T妖城在线论坛备注:创建NPC也可以用其他函数或者if,GE不要使用if,会有奇怪的错误
( a, ]! S$ K% \- C9 y' n( a妖城在线论坛—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート: t$ _. o. S" i$ S1 x" R
GE的教程和GA是互通的,他们只不过是文件夹不一样,文件名不一样,函数名不一样,但运行逻辑都是一样的,只是WIN7和WIN10的区别而已,只要能看懂本帖说的GA的内容,GE和GP自然就懂了
  j; o) t) N; r2 H2 |" A. o1 f妖城在线论坛
) }/ x6 Z$ c$ C9 T8 O魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 11:22 编辑 ]

TOP

引用:
原帖由 rolser 于 2019-8-30 15:47 发表
5 k0 X$ a  g; C. f/ @. U我知道更新完了,要UpChar函数刷新,但是现在遇到的问题,我想用sql函数直接改item表里面的  宠物卡  的字段,5 \* h6 e9 T- T7 u* f5 Y( a5 H
是直接update操作数据库,运行后看数据库也更新成功了,但是人物一退出又会重新保存未修改前的数据了。 ...
魔力私服,最新魔力宝贝私服技术交流" z+ B0 o: \! F7 G8 g3 j
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表. }- a5 [2 W6 a1 j: H- L5 l( r
更新道具数据是另一个函数Item.UpItem,不是NLG.UpChar妖城在线论坛& v4 c$ m( \2 Y  t  g3 x
http://api.cgex.in/index.html#Item_UpItem
( M3 c( ^# |' @+ a6 u" [+ g/ m- V魔力私服,最新魔力宝贝私服技术交流+ J% m5 V1 C" F; {+ O! G$ Z
备注:还有更新宠物信息,并对玩家客户端进行更新的Pet.UpPet(Player,Pos)bbs.mocwww.com5 ^  y- T7 l! {0 Q2 ]
妖城在线论坛8 C, h: p& T# ^( \. O" h: [$ B0 A
[ 本帖最后由 王宫召唤士盖兹 于 2019-8-30 16:05 编辑 ]

TOP

 19 12
发新话题