小妖

- UID
- 43204
- 精华
- 0
- 积分
- 33
- 威望
- 0 度
|
19楼
大 中
小 发表于 2019-2-27 17:27 只看该作者
五:关于如何创建一个luaNPC
4 a2 \9 w( _3 u6 h; ^/ Y& v. V8 E魔力私服,最新魔力宝贝私服技术交流本章节比较偏向于实用,而不是基础知识,因此,我们直接上脚本实例给大家看,如果大家觉得论坛排版太过混乱,就下载文件用编译器打开观看(强烈推荐)
% r: t7 Y* O! z0 {2 Q# rbbs.mocwww.com
教学用声望(fram)牌.7z (2.97 KB)
! V' H( G$ w& |) n, l, h' p红色为实际代码,紫色为注释 bbs.mocwww.com% _9 }* \& G4 l. |' z* W. |
bbs.mocwww.com- ]1 ]7 b% `7 J$ N g
Delegate.RegInit("farm_Init");
9 K* i: Y; B+ G5 g! v" _( I魔力私服,最新魔力宝贝私服技术交流--注册全局函数RegInit,每次创建lua的NPC都需要先注册—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート8 ~0 K5 t( f2 T# x5 A4 g
bbs.mocwww.com, Y0 ^* ]8 J6 g7 B, J5 h
function farm_Init()--调用全局函数RegInit
) R- `$ r6 g; z9 J( t8 X4 s5 B8 _魔力私服,最新魔力宝贝私服技术交流 fram_create();--创建一个函数,此处是为了让下面能调用到,不需要写具体功能,具体功能由下方赋予,赋予它后,它负责传递给全局函数RegInit,然后让RegInit运行函数
9 Z: M- D; c' r2 a9 V魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 --在一般lua中,函数书写完毕后,必须调用才会运行,魔力lua引擎常常省略这步,但创建NPC时无法省略魔力私服,最新魔力宝贝私服技术交流: u2 b; h, N+ V3 ?% }0 L( c* {) B
return 0;--返回值填非负数的任意值即可,此处必填,没有返回值时lua的NPC会创建失败bbs.mocwww.com0 s* n. ]- A; ^( ~, g p& C
end
6 J, ]6 \( ^9 `( l8 }, N% M6 {魔力私服,最新魔力宝贝私服技术交流( Y" x0 C& u: Y- z- J( e9 h3 j: c3 \
function fram_create() --声望查询妖城在线论坛/ D5 d1 ^# j3 W) N* j; y' Y
if (chuangjianNPC == nil) then--如果没有NPC则创建NPC妖城在线论坛! X2 j4 [, n7 N2 Q
chuangjianNPC = NL.CreateNpc(nil, "farm_Init");妖城在线论坛! d' S* g- ~4 n/ W9 }
--NL.CreateNPC(Dofile, InitFuncName)
- p; ~% T% J. N1 X* o) {妖城在线论坛 --函数功能魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表6 z% S. f% M, q9 v7 `; J8 Z
--使用Lua脚本创建NPC,并执行Dofile文件中的InitFuncName函数。(也就是运行一次该函数,不运行是会失败的)妖城在线论坛4 T2 A2 S6 r) j, N3 M
--Dofile: 要加载的脚本文件名,如果为当前文件,则定义nil即可妖城在线论坛+ H0 }8 Q9 p. ^; Q( ~, `/ w
--InitFuncName: Init函数的名称,NPC创建后执行的函数,也就是我们第一行的全局注册函数RegInit的名称妖城在线论坛* Z- E2 f/ C0 i% [& [
Char.SetData(chuangjianNPC,%对象_形象%,10414);
" @- n1 O2 j9 R0 W1 V3 Z9 f. d Char.SetData(chuangjianNPC,%对象_原形%,10414);
7 h' d0 |6 |5 I. p8 @4 b妖城在线论坛 Char.SetData(chuangjianNPC,%对象_X%,231);
7 V$ ~9 k2 ?' u- N8 |; \魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 Char.SetData(chuangjianNPC,%对象_Y%,84);魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' L3 W: M+ Z# l6 g
Char.SetData(chuangjianNPC,%对象_地图%,1000);魔力私服,最新魔力宝贝私服技术交流4 g. O0 I7 O% O: J g* m6 |! U/ y
Char.SetData(chuangjianNPC,%对象_方向%,4);
5 S, r3 d* P# |) I+ y# q* g$ ]3 @3 ]% x2 y魔力私服,最新魔力宝贝私服技术交流 Char.SetData(chuangjianNPC,%对象_名字%,"阿蒙的声望查询牌");
1 _/ H! d' [) r) R/ x2 g魔力私服,最新魔力宝贝私服技术交流 NLG.UpChar(chuangjianNPC);bbs.mocwww.com' L4 x; B+ A/ y, @
--NLG.UpChar(CharIndex)
: o/ T! i5 w0 Z: z) N, h—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート --检查CharIndex对象的改变并且向所有有关联的玩家发送该对象的数据更新封包。(不发送封包玩家客户端处见不到这个NPC的形象,因为图档属于客户端内容)妖城在线论坛/ |! h$ z8 c' R1 R
Char.SetTalkedEvent(nil, "Framchuangkou", chuangjianNPC);--创建对话事件,仅作选择对话窗口类型和显示MSG效果之用bbs.mocwww.com( \/ V! t6 \$ f6 l$ H# }
Char.SetWindowTalkedEvent(nil, "Framgongneng", chuangjianNPC);--创建对话事件的回馈,写具体的luaNPC功能魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表; Z$ K% W0 E& G/ [$ r
end --创建↑上述2个事件后就可以调用他们的返回函数,分别为:. ^$ v- [5 Q. F+ L$ u1 |& [4 E
--CharTalkedCallBack(CharIndex, TalkerCharIndex)
+ Y! [; d8 A! ^7 n魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 --CharWindowTalkedCallBack(CharIndex, TalkerCharIndex,SeqNo,Select,Data)
0 K3 I/ v6 D' X( Z妖城在线论坛end
$ q' Q/ |$ e1 w( [2 C魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表--[[Char.SetTalkedEvent(Dofile,FuncName,CharIndex)—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート7 {2 h+ n0 u; @4 A5 X; @4 j
函数功能:为对象index设置对话开启事件的回调函数,对象在开启对话的时候会触发该函数,由Lua引擎将Callback的参数传递给指定的Callback并执行。
% b7 h J, i: i1 Z魔力私服,最新魔力宝贝私服技术交流Dofile: 要加载的脚本文件名,如果为当前文件,则定义nil即可 备注:如果写加载的脚本文件名别忘了加"",即"文件名"魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表( R+ {) n2 @: l) j$ t$ D6 E4 O
FuncName: 触发的Lua函数的名称,本功能里面为"Framchuangkou"
" b# N% X. ]- \( h) |+ Ebbs.mocwww.comCharIndex:触发这个函数的对象index。本功能里面为chuangjianNPC
4 b6 a S* K& h' a魔力私服,最新魔力宝贝私服技术交流]]
: h, V1 S/ \6 b2 ~5 N% x# X妖城在线论坛--[[Char.SetWindowTalkedEvent(Dofile,FuncName,CharIndex); r. a+ `3 [& P3 ~; x0 D8 Z
函数功能:为对象index设置对话事件的回调函数,对象在进行对话交互的时候会触发该函数,由Lua引擎将Callback的参数传递给指定的Callback并执行。
9 ~, C; B* g: ? u# b魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表Dofile: 要加载的脚本文件名,如果为当前文件,则定义nil即可 备注:如果写加载的脚本文件名别忘了加"",即"文件名"魔力私服,最新魔力宝贝私服技术交流; ?! v6 R" |7 M/ A' D, a( }
FuncName: 触发的Lua函数的名称,本功能里面为"Framgongneng"
5 t6 f7 M- A/ i7 O, G2 _魔力私服,最新魔力宝贝私服技术交流CharIndex: 设置的对象index。本功能里面为chuangjianNPC
& p$ I5 s+ y# ^5 h9 h0 H" T* O—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート]]* f4 p, ]; W3 ~2 E* h
, W1 n( I( C; K% V% J魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表function Framchuangkou(_NpcIndex,_PlayerIndex)--调用返回函数CharTalkedCallBack(CharIndex, TalkerCharIndex)
d! Y5 ?; f# Y) u妖城在线论坛 --CharIndex: 响应事件的对象index,该值由Lua引擎传递给本函数。(一般是NPC)
& m) P; j% i& t, z" P7 }bbs.mocwww.com --TalkerCharIndex: 触发事件的对象index,该值由Lua引擎传递给本函数。(一般是玩家)妖城在线论坛8 M; e" K/ `( M$ f" [: C" u2 y' X0 T/ N
--(_NpcIndex,_PlayerIndex)这类形参名字不重要,下方或者上方代码调用时候一致即可,实际值会由LUA引擎自动填写并传递
, T' @2 Q7 }' E# u" C; r魔力私服,最新魔力宝贝私服技术交流 if (NLG.CanTalk(_NpcIndex,_PlayerIndex) == true) then--用NLG.CanTalk判断两个对象(_NpcIndex,_PlayerIndex)是否在可交谈范围内(距离两格以内)
$ ~1 `# o% i# `& s' d& \, C魔力私服,最新魔力宝贝私服技术交流 WindowMsg = "1\\n第一行只能写MSG不能选择\\n 你来找我有什么事情吗?\\n第三行\\nHi,我想查查我现在有多少声望啦!\\n第五行\\n(⊙o⊙)…点错了……\\n第七行\\n第八行\\n第九行";
) u) k; E" n6 H( W9 G4 i魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 NLG.ShowWindowTalked(_PlayerIndex,_NpcIndex,%窗口_选择框%,%按钮_关闭%,1,WindowMsg);- P9 e" L2 g6 x/ H
--%窗口_选择框%的格式:先写非选择行数(1-8,不能为0,最小为1行)\\n内容MSG(空行需要自己加\\n,最多有9行内容可写)
z0 @, x6 ^. w; N) c妖城在线论坛 --NLG.ShowWindowTalked函数自己查白皮书吧,很简单,此处WindowMsg是个变量,赋值了一段MSG,也可以直接写在NLG.ShowWindowTalked内,由于对话框类普遍文字较多,推荐写个变量,比较美观魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表2 \3 T4 \2 J+ V; X5 I
--%窗口_选择框%是个窗口常量,可以自行查阅白皮书窗口常量类型,替换成其他窗口(例如%窗口_巨信息框%)
6 o: L5 H8 ?- H# \, Xbbs.mocwww.com --每个窗口常量都有自己的书写方式,这和魔力data里的写法是一样的,参考魔力脚本即可魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表+ E; k/ n' Q- e0 i
end魔力私服,最新魔力宝贝私服技术交流$ G* M. M' n- B# \4 \; t) _
return;
h0 r6 I9 {# s, g* Q, @) j1 Dbbs.mocwww.comend魔力私服,最新魔力宝贝私服技术交流1 C3 N! H% T3 y: r
$ q1 F$ b" q" Xbbs.mocwww.comfunction Framgongneng(_NpcIndex,_PlayerIndex,_SqeNo,_select,_data)--调用返回函数CharWindowTalkedCallBack(CharIndex, TalkerCharIndex,SeqNo,Select,Data)魔力私服,最新魔力宝贝私服技术交流, s% E$ R8 @5 d( a* ?1 C2 g3 J
--CharIndex: 响应事件的对象index,该值由Lua引擎传递给本函数。(一般是NPC)
+ S" g' x( v! ^/ a5 b! D魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 --TalkerCharIndex: 触发事件的对象index,该值由Lua引擎传递给本函数。(一般是玩家)# l8 j) Q6 I: o* q
--SeqNo: 来源对话框的ID,该值由Lua引擎传递给本函数。(不用写实际值,写个形参即可)
( ~" F! d5 a* F+ J6 I妖城在线论坛 --Select: 玩家所按下的按钮的值或选择框中的选项的值。—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート+ K* k+ `0 E" S' r# C* g
--Data: 客户端所传递回来的值,这个值将根据不同的窗口类型而不同。
- e. j0 z. y) H( @6 {魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 --(_NpcIndex,_PlayerIndex,_SqeNo,_select,_data)这类形参名字不重要,下方或者上方代码调用时候一致即可,实际值会由LUA引擎自动填写并传递bbs.mocwww.com; `; H* w6 \2 R) b9 O! c7 F6 m! V
local selectitem = tonumber(_data) ;--tonumber函数默认功能是把()内的值(可以是数值型字符串或者16进制数值)转换为10进制数值,这边用是因为_data在lua引擎内返回的是string(字符串类型),需要转换为number(数值类型)
! d, s' ~1 E, I妖城在线论坛 --延伸介绍:tonumber(e [, base]):写法tonumber(需要转换的值,需要转换的进制)进制可写2-36进制,不填为默认10进制,本处脚本就是默认把lua引擎返回的_data转换为10进制数字
" ~; D8 K" r1 e: X* D( @魔力私服,最新魔力宝贝私服技术交流 --详细解释:这个函数会尝试将它的参数转换为数字,如果参数已经是一个数字或者是一个可以转换成数字的字符串,那么这个函数就会返回转换后的数字,否者返回nil表示无法转换。这个函数有一个额外的参数base可以来指定参数的进制,它的取值范围是[2,36],当这个参数超过10的时候,使用A代表10(大小写都可以),B代表11,以此类推最后Z代表35,默认的这个参数是10,数字能有一个小数部分,也会有一个指数部分,只有可识别的整数可以被接受。
1 I8 e+ B% n; l) P8 c. U I --selectitem是个自定义变量,此处看不懂请先抽出几小时看lua基础视频教程
7 t0 p7 |; v3 }9 C. p4 r0 W+ bbbs.mocwww.com if (selectitem == 1) then--_data返回值为%窗口_选择框%的具体行数,一共是0-8九行,0为第一行,但选择框在魔力里面第一行是无法使用的,故正常都从1-8开始返回,此处得看你上面的非选择行数值填了几魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% M1 O R3 c5 P) [5 v: Y' v
NLG.ShowWindowTalked(_PlayerIndex,_NpcIndex,%窗口_信息框%,%按钮_关闭%,1,"没啥事");魔力私服,最新魔力宝贝私服技术交流. P S# f- l% ]* J% N
end
. p- V* o- T \/ d( i' w妖城在线论坛 if (selectitem == 2) then妖城在线论坛1 b* O9 I. j7 H5 R$ i, X8 a
NLG.ShowWindowTalked(_PlayerIndex,_NpcIndex,%窗口_信息框%,%按钮_关闭%,1,"显示_select数值和数值类型" .. _select .. type(_select) .. "!");妖城在线论坛: Q( {! e2 K$ x* T
end魔力私服,最新魔力宝贝私服技术交流- g& G) P0 k7 P9 A1 H: q( ^
if (selectitem == 3) then
; M- ^4 q0 _- v0 T; P魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 Msg = "\\n\\n你现在已经有"..Char.GetData(_PlayerIndex,%对象_声望%).."点声望噢!\\n\\n没达到目标的话不要灰心,继续努力噢";
" y$ M* L& d" @! |- K—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート NLG.ShowWindowTalked(_PlayerIndex,_NpcIndex,%窗口_信息框%,%按钮_关闭%,1,Msg);
# u# ?5 u1 l1 A& ]9 l2 c妖城在线论坛 end魔力私服,最新魔力宝贝私服技术交流. t, O* ~) i$ j# o( |6 `) C2 S
if (selectitem == 4) then
9 [: X4 Q7 i( H4 v! B2 Y魔力私服,最新魔力宝贝私服技术交流 NLG.ShowWindowTalked(_PlayerIndex,_NpcIndex,%窗口_信息框%,%按钮_关闭%,1,"显示_data数值和数值类型" .. _data .. type(_data) .. "!");
- S6 N- o- g' c- d: H. W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート end妖城在线论坛% i `$ J( @0 j ]
if (selectitem == 5) then
9 R3 \8 j: S" B: U& x; r; e魔力私服,最新魔力宝贝私服技术交流 NLG.ShowWindowTalked(_PlayerIndex,_NpcIndex,%窗口_信息框%,%按钮_关闭%,1,"\\n\\n不要乱点人家嘛~人家可是很忙的!");魔力私服,最新魔力宝贝私服技术交流7 n& k$ `( M7 z, j' J
end
6 k0 w+ Q- |; U1 K if (selectitem == 6) then
$ I% p: v6 _( R+ l魔力私服,最新魔力宝贝私服技术交流 NLG.ShowWindowTalked(_PlayerIndex,_NpcIndex,%窗口_信息框%,%按钮_关闭%,1,"显示_PlayerIndex数值和数值类型" .. _PlayerIndex .. type(_PlayerIndex) .. "!");魔力私服,最新魔力宝贝私服技术交流1 n; S& n4 o$ E9 I9 A' T+ [( t
end
3 a9 ]) ]9 n1 q6 Q# h魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 if (selectitem == 7) thenbbs.mocwww.com. y6 y* K% Y2 n N. R) Y# u) G
NLG.ShowWindowTalked(_PlayerIndex,_NpcIndex,%窗口_信息框%,%按钮_关闭%,1,"这是_data数值".._data);
1 S# B( `9 H- A+ y, Z5 r# K魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表 end
/ X; t R% W; A5 U—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート if (selectitem == 8) then魔力私服,最新魔力宝贝私服技术交流2 e/ C1 X. n2 b# Z8 K- d4 k
NLG.ShowWindowTalked(_PlayerIndex,_NpcIndex,%窗口_信息框%,%按钮_关闭%,1,"这是_data数值".._data);bbs.mocwww.com& a3 @ F/ G' R( i( ~1 t& A
end
- G+ v* J, q* w% L5 P( d魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表end
3 K C# C, W* W魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表--选择窗口最多可写8条,当然,也可以不用全部写出来,只要上方MSG直接空2行(\\n\\n),下面选择框selectitem不写即可(selectitem == 空的那行的数值 的这条直接不写)
8 k) B+ a, O3 r2 w; g) I
3 T/ k# U. G3 E9 N% o R魔力私服,最新魔力宝贝私服技术交流能看懂本实例就能明白如何创建一个Lua的NPC,然后我们可以利用该NPC,去实现各种功能,例如宠物算档,匹配组队(创建一个NPC到777地图,利用指令,比如/1,让玩家和NPC远程对话,实现功能) 妖城在线论坛' l: `* f$ J7 B& T" t
下面附加一份没注释版本的声望牌lua 代码经过了优化,有兴趣的可以对比一下原版声望牌lua 妖城在线论坛- X+ Y; r! Y1 L1 k- M1 }* I* Z
优化代码后的fram-无注释版.7z (943 Bytes)
bbs.mocwww.com7 O7 i2 l9 E% {# s
0 y2 o: U! ]1 g8 A$ F本节中就利用了上面说过的tonumber函数,课外习题,如果不用tonumber函数,最后选择框的代码 2 [9 v: `" {: f( `
if (selectitem == 2) then 妖城在线论坛7 H* Z, O! W- \) Y' j
之中的(selectitem == 2)应该怎么写? 魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表' ^& d" t9 ?1 E5 S" F
bbs.mocwww.com/ C4 T2 `* D ?: }# U
下一节我们讲如何创立/1/2这类远程指令  依然是不负责任的看心情更新
8 e: {- R8 M# Z) h4 Abbs.mocwww.com
/ a6 J D' `3 i6 I, ?* R1 d( b0 |魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表[ 本帖最后由 王宫召唤士盖兹 于 2019-2-27 17:36 编辑 ]
|