
标题: [魔力私服分享] LUA腳本 簡易生蛋 道具參數LUA_usePetEgg [打印本页]
作者: jeff10363 时间: 2016-4-27 11:18 标题: LUA腳本 簡易生蛋 道具參數LUA_usePetEgg
今天分享一個寫出來 很簡單的腳本魔力私服,最新魔力宝贝私服技术交流' `7 N: q, ], K6 x9 N1 [
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表" u+ J7 K- N6 W. l! @( w
這個腳本 可以拿來做為 道具參數的呼應 參考文章吧?! Q$ X% p* j9 N1 u( Z, ]' A' U
懂得應用的話 可以弄成各種東西=""=- |4 ?: K3 D9 h P
5 Y& f4 T1 L8 s' K9 ~4 I魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表
4 y: s' @; \% k* ~. p$ C$ f魔力私服,最新魔力宝贝私服技术交流
0 S# e2 q. B5 ]魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表我們通常要寫寵物蛋
$ k$ }% T- e+ o- c, z* U妖城在线论坛都會反覆的在 npc 底下 新增對應的txt 檢查道具 刪除道具 產生寵物 妖城在线论坛4 E- o5 y- G2 I! G7 @5 |- l' M# R
可是對我來說 繁瑣的去新增txt 煩煩的=""=魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表0 E# `5 \5 Z9 O3 v
2 d+ i1 ^/ {- a7 [$ P% Q—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート所以就寫了 一個簡易生蛋的功能,下面附上GBK的檔案~((轉檔沒測試過 有問題在跟我講
# ], N2 _1 Y. J- \1 G—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表/ U3 _4 @8 H% j. ]* {! k' k1 w
【示演】
% B$ K0 O2 e( C* u+ L0 R; o3 ^—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート在道具itemset.txt新增LUA_usePetEgg類型的道具
2 y2 v1 b9 q. z1 j2 w+ u魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表參數 則設定enemy裡頭的怪物ID 下方參數 設定 1 代表虎人編號—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート! o9 J! ?1 H4 @; X! I+ R: z' B t
套用LUA後 以後只要新增itemset.txt 就可以了~~~妖城在线论坛* u W D! F" `
魔力私服,最新魔力宝贝私服技术交流3 i# \( y! y$ U% x8 M
' A) W9 a) T5 A! o7 F, T% L0 q7 f魔力私服,最新魔力宝贝私服技术交流蛋? 虎人的蛋 1 LUA_usePetEgg 90001078 99451 0 43 0 1 0 93 1 1 1 1 0 0 0 0 1 0 100 0 0 05 x3 r; h. F$ y+ C) {
% V% ~9 j- R6 c, |1 j! M) B( ], _6 i! \
# i I' j. p% [9 q* i3 Mbbs.mocwww.com【腳本內容】复制内容到剪贴板
代码:
--2016/04/27 阿晉
--简易生蛋功能
--
--
--免新增npc底下 生蛋脚本 直接透过item参数诞生宝宝
--
--注册一个道具使用参数
NL.RegItemString(nil, "PetEgg", "LUA_usePetEgg");
function PetEgg(player,toplayer,itemSlot)
--取到道具的自定參數
local ItemIndex=Char.GetItemIndex(player,itemSlot);
--复制内值
local itemval=Item.GetData(ItemIndex,%道具_自用参数%);
if(Char.PetNum(player)==5)then
NLG.SystemMessage(player,"宠物栏已满,无法使用。");
return;
end
Item.Kill(player,ItemIndex,itemSlot);
Char.GivePet(player,itemval,0);
--Char.GivePet(player,itemval,1);--满档
end【後記】
; u$ R5 n7 o- Q* ^5 O
! v' R, Q' t8 P* Y5 W2 Cbbs.mocwww.com1.這個蛋只會檢查是否 有寵物欄空間魔力私服,最新魔力宝贝私服技术交流. a) }# d& k- X" l0 M- D0 j
2.請勿讓他堆疊 刪除道具 是刪除那一整格 而非數量 否則可能整格蛋 刪光光魔力私服,最新魔力宝贝私服技术交流, E3 o: o7 A0 W+ H) l0 F
3.符合寵物空間 刪除道具 產生寵物
- F* P0 S1 j! s! v9 n4 ^魔力私服,最新魔力宝贝私服技术交流4.Char.GivePet(player,itemval,1); 更改這個可以產生 滿檔寶寶
( O/ c# t2 V% U+ V) ?$ h' }妖城在线论坛5.另外 這個lua產生的效果很陽春-..-沒有窗口
: Z" S' t0 M: R& C3 m- `- ~4 G# w妖城在线论坛
$ n" _+ L; H: R6 }! R K K. U魔力私服,最新魔力宝贝私服技术交流魔力私服,最新魔力宝贝私服技术交流* t) p0 N# @0 D. |
【安裝方法】; S1 r1 c; U) q2 `* B/ \
1.版本確認 GA版本
0 N/ K7 u+ B, Q4 I5 o. u8 j5 |# a—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート2.把PetEgg.lua 丟到 lua\Module 下面bbs.mocwww.com8 ^. M/ O! B' L3 X" o( V' X
3.Config內新增
e% S4 }* H' P3 V0 f6 U' z魔力私服,最新魔力宝贝私服技术交流useModule("PetEgg");
1 C) K1 ?0 a" A b4 `, Hbbs.mocwww.combbs.mocwww.com1 v9 w9 ~" r! H3 F
[ 本帖最后由 jeff10363 于 2016-4-27 13:53 编辑 ]
附件: PetEgg.rar (2016-4-27 11:18, 500 Bytes) / 该附件被下载次数 298
http://bbs.mocwww.com/attachment.php?aid=17192
作者: 易凡 时间: 2016-4-27 13:49
感谢分享,我抛装引玉一下。。。。因为这个道具功能,我当初也做过。不过因为引擎不一样,所以我下面发的代码仅供参考~~
作者: 易凡 时间: 2016-4-27 13:57
道具使用事件代码:复制内容到剪贴板
代码:
--_player:使用道具的角色
--_item:使用道具的索引实例
--_slot:被使用道具所在栏位
--返回值:1表示正常使用道具,0表示禁止使用道具
function RItemUseEvent(_player,_item,_slot)
--容错
if _slot < 0 or _slot > 27 then
return 0;
end
if _item == -1 then
return 0;
end
--判断是否已鉴定
if Item.GetData(_item,%ITEM_LEAKLEVEL%) == 0 then
NLG.SystemMessage(_player,"未鉴定道具不可使用");
return 0;
end
local _itemid = Item.GetData(_item,%ITEM_ID%);
local _itemname = Item.GetData(_item,%ITEM_TRUENAME%);
local _itemusefunc = Item.GetData(_item,%ITEM_USEFUNC%);
--给予宠物,参数有一个或者两个:宠物编号,是否满档
if _itemusefunc == "LUA_useGivePet" then
Char.SetData(_player,LuaSetup.TMP_ItemSelect,_slot);
NLG.CallNpcTalked(tbl_npc.GivePetNpc_id16,_player);
return 1;
end;
return 1;
end功能NPC的实现代码复制内容到剪贴板
代码:
--GivePet——GivePetNpc_id16——Lua脚本
function GivePetNpc_id16_Talked(_npc,_player)
--判断玩家身上是否有足够的宠物栏空位
if Char.PetSpace(_player) == 0 then
MyFun.EndWindow(_player,"\\n\\n\\n\\n@c您的宠物栏满了,请先整理!");
return;
end
--验证缓存的道具
local _item = MyFun.CheckItemBuffer(_player,"LUA_useGivePet");
if _item == nil then
return;
end;
local _itemname = Item.GetData(_item,%ITEM_TRUENAME%);
local _arg = Item.GetData(_item,%ITEM_ARGUMENT%);
local _argstl = MyFun.Split(_arg,",");
local _enemyid = tonumber(_argstl[1]);
if _enemyid == nil then
MyFun.EndWindow(_player,"\\n\\n\\n\\n@c道具参数有误,请截图联系GM\\nError:LUA_useGivePet");
return;
end
local _full = 0;
if (#_argstl == 2) and (_argstl[2] == "1") then
_full = 1;
end
local _enemyindex = Data.GetIndex(%FILE_ENEMY%,_enemyid);
if _enemyindex == nil then
return;
end
local _enemybaseid = Data.GetInt(%FILE_ENEMY%,_enemyindex,%ENEMYDATA_TEMPNO%);
local _enemybaseindex = Data.GetIndex(%FILE_ENEMYBASE%,_enemybaseid);
local _enemylv = Data.GetInt(%FILE_ENEMY%,_enemyindex,%ENEMYDATA_LV_MAX%);
if _enemybaseindex == nil then
return;
end
local _enemybasename = Data.GetChar(%FILE_ENEMYBASE%,_enemybaseindex,%E_T_NAME%);
local _str = "\\n\\n 您确定要使用“".._itemname.."”吗?\\n"
.."\\n 召唤魔族:".._enemybasename
.."\\n 魔族等级:".._enemylv.."级";
if _full == 1 then
_str = _str.."\\n 魔族档次:满档";
else
_str = _str.."\\n 魔族档次:随机档";
end
NLG.ShowWindowTalked(_player,_npc,%WINDOW_MESSAGETYPE_MESSAGE%,%BUTTON_OK_CANCEL%,LuaSetup.MySeqno+1,_str);
return;
end
function GivePetNpc_id16_WTalked(_npc,_player,_seqno,_select,_data)
local _seqno = _seqno - LuaSetup.MySeqno;
--验证缓存的道具
local _item = MyFun.CheckItemBuffer(_player,"LUA_useGivePet");
if _item == nil then
return;
end;
local _itemid = Item.GetData(_item,%ITEM_ID%);
local _arg = Item.GetData(_item,%ITEM_ARGUMENT%);
local _argstl = MyFun.Split(_arg,",");
local _enemyid = tonumber(_argstl[1]);
local _full = 0;
if (#_argstl == 2) and (_argstl[2] == "1") then
_full = 1;
end
if (tonumber(_seqno)==1) then
if (tonumber(_select) == %BUTTON_OK%) then
Char.DelItem(_player,_itemid,1);
local _pet = Char.GivePet(_player,_enemyid,_full);
if _pet ~= nil then
NLG.SystemMessage(_player,"获得了宠物『"..Char.GetData(_pet,%CHAR_Name%).."』");
NLG.UpChar(_pet);
end
return;
else
return;
end
return;
end
return;
end
function GivePetNpc_id16_LoopEvent(_npc)
return;
end创建这个功能NPC的createnpc代码复制内容到剪贴板
代码:
--GivePet——GivePetNpc_id16
function GivePetNpc_id16_Create()
if (GivePetNpc_id16 == nil) then
GivePetNpc_id16 = NL.CreateNpc("GivePet",100453,0,779,0,11,4);
tbl_npc.GivePetNpc_id16=GivePetNpc_id16;
Char.SetTalkedEvent("lua/Npc/GivePet_id16.lua","GivePetNpc_id16_Talked", GivePetNpc_id16);
Char.SetWindowTalkedEvent(nil,"GivePetNpc_id16_WTalked", GivePetNpc_id16);
--Char.SetLoopEvent(nil,"GivePetNpc_id16_LoopEvent", GivePetNpc_id16,1000);
end
enditemset数据范例
0 r2 A8 Y2 b6 x6 @2 }, e魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表召唤卡? 『满档黄蜂』召唤卡 314,1 LUA_useGivePet 60501 27489 26 0 1 0 0 1 1 1 1 0 0 0 0 1 0 0 605011 605011 100 0 0 0! @0 L3 m0 d* A* ?
比如参数直接写314就是随机档次了,314,1就是满档6 ^' r6 j2 _/ L, d
魔力私服,最新魔力宝贝私服技术交流1 p% ]) V4 Z. |- X/ \
确实比较方便妖城在线论坛$ O+ t- v9 j0 T* ? U6 |: R
图片附件: 11.jpg (2016-4-27 13:57, 102.9 KB) / 该附件被下载次数 179
http://bbs.mocwww.com/attachment.php?aid=17193
作者: jeff10363 时间: 2016-4-27 14:07
感謝站長提供 語法參照$ h7 L h/ J4 E# A6 c0 ]9 w! V9 U0 S
哈 原來拖GA接口的福 才可以寫的這麼簡短bbs.mocwww.com' d, S6 V0 x& L4 u
魔力私服,最新魔力宝贝私服技术交流' h/ m1 }; _* Y
魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表% I( l, n- n# R$ E2 S
現在還在試寫-...-魔力私服,最新魔力宝贝私服技术交流+ c0 N, } M0 m/ N) @, W; y+ y7 J
# b E/ F u2 x& E$ C! x6 {% A—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート1.寵物技能捲軸(點寵 開窗 選寵學)
( |# a$ z/ \( A+ s+ M妖城在线论坛 學習特殊技能使用..
4 f% w& b" x, |7 t魔力私服,最新魔力宝贝私服技术交流=>不用開 寵技npc / s! z& L1 a" z7 a
還怕別人一次學五隻
: N7 C: h8 y/ [" p5 v% F- [0 W—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート或是另外做一個獨立 隔開的地圖 來限制
' |. O$ Y) B$ t2 ?1 g4 `bbs.mocwww.com
4 }% n! i( ^! {8 p! h. G% D2.封印盒子bbs.mocwww.com, c w; c/ x c, D) A% D
把不可交異的東西 水鏡、哥、弟戒、放大鏡
: d" C0 G; m O" u# x* m) J) j—魔力私服,魔力宝贝私服技术,DELPHI编程,魔力寶貝, 魔力宝贝, 크로스게이트,クロスゲート裝進去 只有本人(檢查CDK 跟 角色ID)
: M: U9 _1 _6 [% Y魔力私服,最新魔力私服,魔力宝贝私服,魔力宝贝私服技术,魔力宝贝私服,私服架设技术,妖城,FLASH,电影,黑客,网络,网吧,破解,入侵,注册表才可以打開 方便收到分身那 節省道具攔空間妖城在线论坛8 v/ E6 }; v8 A: T
妖城在线论坛# [& W [' M0 K* r @% C! v! M0 b* M
[ 本帖最后由 jeff10363 于 2016-4-27 14:09 编辑 ]
作者: 易凡 时间: 2016-4-27 15:55
复制内容到剪贴板
代码:
--宠物技能学习——Pet_AddSkillNpc_id13——Lua脚本
--道具参数格式:techid,cost
--cost可选,不填写,则表示免费,如果填写-1则表示使用tech.txt中定义的价格
function Pet_AddSkillNpc_id13_Talked(_npc,_player)
local _str = MyFun.ShowSelectPetstr(_player,"学习技能");
NLG.ShowWindowTalked(_player,_npc,%WINDOW_MESSAGETYPE_SELECT%,%BUTTON_CANCEL%,LuaSetup.MySeqno+1,_str);
return;
end
function Pet_AddSkillNpc_id13_WTalked(_npc,_player,_seqno,_select,_data)
local _seqno = _seqno - LuaSetup.MySeqno;
--验证缓存的道具
local _item = MyFun.CheckItemBuffer(_player,"LUA_usePetAddSkill");
if _item == nil then
return;
end;
local _arg = Item.GetData(_item,%ITEM_ARGUMENT%);
local _argstl = MyFun.Split(_arg,",");
local _techid = tonumber(_argstl[1]);
local _needgold = 0;
local _techindex = Data.GetIndex(%FILE_TECH%,_techid);
if _techindex == nil then
MyFun.EndWindow(_player,"\\n\\n\\n\\n@c技能ID错误,请截图联系GM");
return;
end
local _techname = Data.GetChar(%FILE_TECH%,_techindex,%TECH_NAME%);
if #_argstl == 2 then
if tonumber(_argstl[2]) ~= -1 then
_needgold = tonumber(_argstl[2]);
else
local _techcost = Data.GetInt(%FILE_TECH%,_techindex,%TECH_COST%);
if _techcost ~= "" then
_needgold = tonumber(_techcost);
end
end
end
--选择宠物后确认
if (tonumber(_seqno)==1 and _data~=nil) then
if tonumber(_select) == %BUTTON_CANCEL% then
return;
end
--容错
if MyFun.CheckSelectWindowData(_player,_data,5) == false then
return;
end
local _petpos = tonumber(_data) - 1;
local _pet = Char.GetPet(_player,_petpos);
if _pet == nil then
MyFun.EndWindow(_player,"\\n\\n\\n\\n@c您选择的位置没有宠物,请重新选择!");
return;
end
--这里加一个验证,禁止部分宠物学习指定技能
if (Char.GetData(_pet,%PET_PetId%) >= 20921) and (Char.GetData(_pet,%PET_PetId%) <= 20924) and (_techid == 8900) then
MyFun.EndWindow(_player,"\\n\\n\\n\\n@c很抱歉,出生系列牛头怪禁止学习宠物邮件");
return;
end
local _itemname = Item.GetData(_item,%ITEM_TRUENAME%);
local _petname = Char.GetData(_pet,%CHAR_Name%);
local _petlv = Char.GetData(_pet,%CHAR_Lv%);
Char.SetData(_player,LuaSetup.TMP_PetSelect,_petpos);
local _str = "\\n\\n 已选宠物:".._petname.."\\n 当前等级:".._petlv.." 级\\n\\n 您确定要让这只宠物学习新技能——\\n “".._techname.."”吗?";
if _needgold > 0 then
_str = _str.."\\n 这将需要花费".._needgold.."G";
end
NLG.ShowWindowTalked(_player,
_npc,
%WINDOW_MESSAGETYPE_MESSAGE%,
%BUTTON_YES_NO%,
LuaSetup.MySeqno+2,
_str);
return;
end
--进行学习技能操作
if (tonumber(_seqno)==2) then
if tonumber(_select) == %BUTTON_NO% then
--将缓存释放
Char.SetData(_player,LuaSetup.TMP_ItemSelect,0);
Char.SetData(_player,LuaSetup.TMP_PetSelect,0);
return;
end
local _pet = MyFun.CheckPetBuffer(_player);
if _pet == nil then
return;
end
local _petname = Char.GetData(_pet,%CHAR_Name%);
local _petlv = Char.GetData(_pet,%CHAR_Lv%);
local _itemid = Item.GetData(_item,%ITEM_ID%);
if Char.ItemNum(_player,_itemid) > 0 then
--先判断金币是否充足
if Char.GetData(_player,%PLAYER_Gold%) < _needgold then
MyFun.EndWindow(_player,"\\n\\n\\n\\n@c您的魔币不足以支付该技能学习费用!");
return;
end
--尝试学习技能
local _ret = Pet.AddSkill(_pet,_techid);
if _ret == nil then
MyFun.EndWindow(_player,"\\n\\n\\n\\n@c学习失败,可能宠物的技能已满了!");
return;
end
Char.DelItem(_player,_itemid,1);--删除道具
if _needgold > 0 then
Char.AddGold(_player,-_needgold);
end
NLG.UpChar(_pet);
NLG.SystemMessage(_player,"[系统提示] 您的宠物“".._petname.."”已成功习得新技能“".._techname.."”");
--将缓存释放
Char.SetData(_player,LuaSetup.TMP_ItemSelect,0);
Char.SetData(_player,LuaSetup.TMP_PetSelect,0);
return;
end
end
return;
end
function Pet_AddSkillNpc_id13_LoopEvent(_npc)
return;
end复制内容到剪贴板
代码:
--组合宠物选择框
function MyFun.ShowSelectPetstr(_player,_keystr)
local _keystrnew = "操作";
if _keystr ~= nil then
_keystrnew = _keystr;
end
local _str = "3|\\n\\n 请选择您要".._keystrnew.."的宠物!\\n\\n";
local _str2 = "";
local _str3 = "";
for i=0,4 do
local _pet = Char.GetPet(_player,i);
if (_pet == nil) then
_str = _str .. " *空*\\n";
else
_str2 = Char.GetData(_pet,%CHAR_Name%);
_str2 = " "..string.format("%-20s",_str2);
_str3 = "LV"..Char.GetData(_pet,%CHAR_Lv%);
_str2 = string.format("%20s",_str2);
_str = _str.._str2.._str3.."\\n";
end
end
return _str;
end复制内容到剪贴板
代码:
--验证缓存的所选择宠物
function MyFun.CheckPetBuffer(_player)
local _slot = Char.GetData(_player,LuaSetup.TMP_PetSelect);
if _slot < 0 or _slot > 4 then
MyFun.EndWindow(_player,"\\n\\n\\n\\n@c宠物栏异常,请截图联系GM");
return;
end
local _pet = Char.GetPet(_player,_slot)
if _pet == nil then
MyFun.EndWindow(_player,"\\n\\n\\n\\n@c您所选择的宠物异常,请截图联系GM");
return;
else
return _pet;
end
end复制内容到剪贴板
代码:
--分割字符串
function MyFun.Split(szFullString, szSeparator)
local nFindStartIndex = 1;
local nSplitIndex = 1;
local nSplitArray = {};
while true do
local nFindLastIndex = string.find(szFullString, szSeparator, nFindStartIndex);
if not nFindLastIndex then
nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, string.len(szFullString));
break;
end
nSplitArray[nSplitIndex] = string.sub(szFullString, nFindStartIndex, nFindLastIndex - 1);
nFindStartIndex = nFindLastIndex + string.len(szSeparator);
nSplitIndex = nSplitIndex + 1;
end
return nSplitArray;
end
--结束窗口
function MyFun.EndWindow(_player,_str)
local _fd = Char.GetData(_player,%PLAYERWORK_Fd%);
local _objindex = Char.GetData(_player,%CHARWORK_ObjIndex%);
Protocol.WN_Send(_fd,%WINDOW_MESSAGETYPE_MESSAGE%,%BUTTON_OK%,LuaSetup.EndWindowSeqno,_objindex,_str);
return;
end
--判断选择窗口异常
function MyFun.CheckSelectWindowData(_player,_data,_max)
if (_data == "") or (_data == nil) or (tonumber(_data) == nil) then
MyFun.EndWindow(_player,"@c\\n\\n\\n\\n异常选项处理失败,请截图联系客服!");
return false;
end
if (tonumber(_data) > _max or tonumber(_data) < 1) then
MyFun.EndWindow(_player,"@c\\n\\n\\n\\n异常选项处理失败,请截图联系客服!");
return false;
end
return true;
end
| 欢迎光临 妖城在线论坛 (http://bbs.mocwww.com/) |
Powered by Discuz! 6.0.0 |