nguyenduccu
10-09-12, 09:51 PM
<b><font color=red>[Chỉ có thành viên mới xem link được. <a href="register.php"> Nhấp đây để đăng ký thành viên......</a>]</font></b>
vào \gameserver\setting\item\001\equip\greenequip.txt
nhìn ID đồ của nó mà thay, cơ chế rất đơn giản, nếu đồ có phân 2 hệ nam nữ thì đầu tiên là nam, đến lần thứ 2 là nữ ( tương đương 10 món ) 5 món thì là cả 2 dùng chung, nên chỉ có 1 vài món nó phân theo hệ, và trong đó có cái đồ nội và ngoại, thì phải test đúng hệ nào thì add vào, quy trình là kim - mộc - thủy - hỏa - thổ
kim (nam ) thì đằng nhau sẽ là Kim (nữ) rồi đến hệ khác , nhìn vào item khác thấy nó có cái điểm rất dễ nhớ
nam và nữ thường cách nhau 5 con số, ví dụ áo nam 1000 thì nữ sẽ là 1005 , 1001 thì nữ là 1006,
đây chỉ là gợi ý, còn tự mò đi cho rành, cũng không khó cho lắm
sửa trong 2 file changeitem_npc và changeitemhk_npc, mỗi file là 1 bộ đồ
tớ khuyến mại cho cái code đổi bộ Bích Huyết ( trang bị pet )
local tbNpc = Npc:GetClass("changeitempet");
local REQUIRE_ITEM = {
[1] =
{
{
{
string.format("%s,%s,%s,%s", 18, 1, 1192, 2),
},
50
},
},
[2] =
{
{
{
string.format("%s,%s,%s,%s", 18, 1, 1192, 3),
},
50
},
},
[3] =
{
{
{
string.format("%s,%s,%s,%s", 18, 1, 1192, 4),
},
50
},
},
[4] =
{
{
{
string.format("%s,%s,%s,%s", 18, 1, 1192, 6),
},
50
},
},
[5] =
{
{
{
string.format("%s,%s,%s,%s", 18, 1, 1192, 10),
},
50
},
},
};
function tbNpc:OnDialog_1()
local tbOpt = {
{"<color=yellow>Ta Muốn Tìm hiểu thêm về Hợp Thành.<color>", self.OnDialog_3, self},--
{"<color=yellow>Ta Muốn Hợp Thành Vật Phẩm Bích Huyết.<color>", self.OnDialog_2, self},--
{"Kết thúc đối thoại"},
}
local szMsg = "Ta sẽ giúp nhà ngươi Ghép lại các mảnh ghép,nhưng phải trả công cho ta 300 Vạn Lượng,khả năng thành công là không lớn.nhà ngươi có chấp nhận không?";
Dialog:Say(szMsg, tbOpt);
end;
function tbNpc:OnDialog_3()
local tbOpt = {};
tbOpt = Lib:MergeTable( tbOpt,{
{"Trở về", self.OnDialog_1, self},
{"Đóng"},
});
Dialog:Say(
" Để hợp thành Vật Phẩm Bích Huyết.Nhà ngươi cần sưu tập <color=red>50<color> <color=yellow>Mảnh Ghép vật phẩm cực phẩm<color> cùng loại.\n"..
" Sau khi sưu tập đủ <color=red>10<color> <color=yellow>Mảnh Ghép vật phẩm cực phẩm<color>,Nhà ngươi cần chuẩn bị tiền công cho ta là <color=yellow>300 Vạn Lượng<color>\n"..
" Khi đã chuẩn bị đủ 2 thứ cần thiết.Nhà ngươi hãy đưa vật phẩm và tiền công cho ta.ta giúp nhà ngươi hợp thành.Tuy nhiên khả năng thành công là <color=red>30%<color> nên sẽ rất khó khăn\n"..
" Nếu thành công ngươi sẽ nhận được vật phẩm.nếu thất bại ta sẽ đền bù một <color=yellow> Rương Mảnh ghép<color> cho nhà ngươi."
,tbOpt);
return 0;
end;
function tbNpc:OnDialog_2()
local nValue = me.nSeries;
if (nValue == 0) then
local tbOpt = {{"Kết thúc đối thoại"}};
local szMsg = "<color=cyan>" .. me.szName .. "<color> hãy gia nhập môn phái";
Dialog:Say(szMsg, tbOpt);
return;
end;
local tbOpt = {
{"Ta Muốn Hợp Thành <color=gold>Vũ Khí Bích Huyết<color>", self.TakeInItem1, self},
{"Ta Muốn Hợp Thành <color=gold>Y Phục Bích Huyết<color>", self.TakeInItem2, self},
{"Ta Muốn Hợp Thành <color=gold>Giới Chỉ Bích Huyết<color>", self.TakeInItem3, self},
{"Ta Muốn Hợp Thành <color=gold>Hộ Phù Bích Huyết<color>", self.TakeInItem4, self},
{"Ta Muốn Hợp Thành <color=gold>Hộ Uyển Bích Huyết<color>", self.TakeInItem5, self},
{"Kết thúc đối thoại"},
}
local szMsg = "Ta sẽ giúp nhà ngươi Ghép lại các mảnh ghép,nhưng phải trả công cho ta 300 Vạn Lượng,khả năng thành công là không lớn.nhà ngươi có chấp nhận không?";
Dialog:Say(szMsg, tbOpt);
end;
function tbNpc:TakeInItem1()
local nValue = me.nSeries;
local szMsg = "Ta sẽ giúp nhà ngươi Ghép lại các mảnh ghép,nhưng phải trả công cho ta 300 Vạn Lượng,khả năng thành công là không lớn.nhà ngươi có chấp nhận không?";
szMsg = "Vui lòng đặt vào 50 Mảnh Ghép tương ứng.Khả năng hợp thành là không cao.Nhà Ngươi hãy suy nghĩ thật kĩ";
Dialog:OpenGift(szMsg, nil, {self.OnOpenGiftOk, self, nValue});
end;
function tbNpc:TakeInItem2()
local nValue = me.nSeries+1;
local szMsg = "Ta sẽ giúp nhà ngươi Ghép lại các mảnh ghép,nhưng phải trả công cho ta 300 Vạn Lượng,khả năng thành công là không lớn.nhà ngươi có chấp nhận không?";
szMsg = "Vui lòng đặt vào 50 Mảnh Ghép tương ứng.Khả năng hợp thành là không cao.Nhà Ngươi hãy suy nghĩ thật kĩ";
Dialog:OpenGift(szMsg, nil, {self.OnOpenGiftOk, self, nValue});
end;
function tbNpc:TakeInItem3()
local nValue = me.nSeries+2;
local szMsg = "Ta sẽ giúp nhà ngươi Ghép lại các mảnh ghép,nhưng phải trả công cho ta 300 Vạn Lượng,khả năng thành công là không lớn.nhà ngươi có chấp nhận không?";
szMsg = "Vui lòng đặt vào 50 Mảnh Ghép tương ứng.Khả năng hợp thành là không cao.Nhà Ngươi hãy suy nghĩ thật kĩ";
Dialog:OpenGift(szMsg, nil, {self.OnOpenGiftOk, self, nValue});
end;
function tbNpc:TakeInItem4()
local nValue = me.nSeries+3;
local szMsg = "Ta sẽ giúp nhà ngươi Ghép lại các mảnh ghép,nhưng phải trả công cho ta 300 Vạn Lượng,khả năng thành công là không lớn.nhà ngươi có chấp nhận không?";
szMsg = "Vui lòng đặt vào 50 Mảnh Ghép tương ứng.Khả năng hợp thành là không cao.Nhà Ngươi hãy suy nghĩ thật kĩ";
Dialog:OpenGift(szMsg, nil, {self.OnOpenGiftOk, self, nValue});
end;
function tbNpc:TakeInItem5()
local nValue = me.nSeries+4;
local szMsg = "Ta sẽ giúp nhà ngươi Ghép lại các mảnh ghép,nhưng phải trả công cho ta 300 Vạn Lượng,khả năng thành công là không lớn.nhà ngươi có chấp nhận không?";
szMsg = "Vui lòng đặt vào 50 Mảnh Ghép tương ứng.Khả năng hợp thành là không cao.Nhà Ngươi hãy suy nghĩ thật kĩ";
Dialog:OpenGift(szMsg, nil, {self.OnOpenGiftOk, self, nValue});
end;
function tbNpc:OnOpenGiftOk(nValue, tbItemObj)
local nFaction = me.nFaction;
local nRouteId = me.nRouteId;
local nSex = me.nSex;
local nMyMoney = me.nCashMoney; --GetCash();
if (nMyMoney < 3000000) then
Dialog:Say("Không đủ 300 Vạn Lượng, có đủ rồi hãy quay lại.");
return 0;
end
local tbItemList = {};
for _, pItem in pairs(tbItemObj) do
if (self:ChechItem(pItem, REQUIRE_ITEM[nValue], tbItemList) ~= 1) then
me.Msg("Có Vật Phẩm không đủ tiêu chuẩn.");
return 0;
end;
end
local bResult = false;
for i = 1, #REQUIRE_ITEM[nValue] do
if (REQUIRE_ITEM[nValue][i][2] ~= tbItemList[i]) then
bResult = true;
end;
end;
if (bResult) then
me.Msg("Số lượng Mảnh Ghép Cực Phẩm không đúng.");
return 0;
end;
for _, pItem in pairs(tbItemObj) do
if me.DelItem(pItem[1]) ~= 1 then
return 0;
end
end
if (nValue == 1) then
me.CostMoney(5000000,0);
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {7000,3000};
local tbAward =
{
[1] = {18, 1,1190, 2};
[2] = {5,19,1,1};
}
for i = 1, 2 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
local pItem = me.AddItem(unpack(tbAward[nIndex]));
pItem.Bind(1);
if (nIndex == 2) then
local szMsg = string.format("Chúc mừng người chơi<color=cyan>%s<color> Đã may mắn hợp thành thành công<color=cyan>%s<color> ", me.szName, pItem.szName);
KDialog.NewsMsg(1, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
me.Msg("Hợp thành thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
me.SendMsgToFriend("Hảo hữu của bạn [<color=yellow>" .. me.szName
.. "<color>] Hợp thành thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Hợp thành thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Hợp thành thất bại nhận được <color=yellow>"..pItem.szName.."<color>.");
end
end
if (nValue == 2) then
me.CostMoney(5000000,0);
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {7000,3000};
local tbAward =
{
[1] = {18, 1,1190, 2};
[2] = {5,20,1,1};
}
for i = 1, 2 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
local pItem = me.AddItem(unpack(tbAward[nIndex]));
pItem.Bind(1);
if (nIndex == 2) then
local szMsg = string.format("Chúc mừng người chơi<color=cyan>%s<color> Đã may mắn hợp thành thành công<color=cyan>%s<color> ", me.szName, pItem.szName);
KDialog.NewsMsg(1, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
me.Msg("Hợp thành thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
me.SendMsgToFriend("Hảo hữu của bạn [<color=yellow>" .. me.szName
.. "<color>] Hợp thành thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Hợp thành thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Hợp thành thất bại nhận được <color=yellow>"..pItem.szName.."<color>.");
end
end
if (nValue == 3) then
me.CostMoney(5000000,0);
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {7000,3000};
local tbAward =
{
[1] = {18, 1,1190, 2};
[2] = {5,21,1,1};
}
for i = 1, 2 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
local pItem = me.AddItem(unpack(tbAward[nIndex]));
pItem.Bind(1);
if (nIndex == 2) then
local szMsg = string.format("Chúc mừng người chơi<color=cyan>%s<color> Đã may mắn hợp thành thành công<color=cyan>%s<color> ", me.szName, pItem.szName);
KDialog.NewsMsg(1, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
me.Msg("Hợp thành thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
me.SendMsgToFriend("Hảo hữu của bạn [<color=yellow>" .. me.szName
.. "<color>] Hợp thành thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Hợp thành thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Hợp thành thất bại nhận được <color=yellow>"..pItem.szName.."<color>.");
end
end
if (nValue == 4) then
me.CostMoney(5000000,0);
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {7000,3000};
local tbAward =
{
[1] = {18, 1,1190, 2};
[2] = {5,23,1,1};
}
for i = 1, 2 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
local pItem = me.AddItem(unpack(tbAward[nIndex]));
pItem.Bind(1);
if (nIndex == 2) then
local szMsg = string.format("Chúc mừng người chơi<color=cyan>%s<color> Đã may mắn hợp thành thành công<color=cyan>%s<color> ", me.szName, pItem.szName);
KDialog.NewsMsg(1, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
me.Msg("Hợp thành thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
me.SendMsgToFriend("Hảo hữu của bạn [<color=yellow>" .. me.szName
.. "<color>] Hợp thành thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Hợp thành thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Hợp thành thất bại nhận được <color=yellow>"..pItem.szName.."<color>.");
end
end
if (nValue == 5) then
me.CostMoney(5000000,0);
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {7000,3000};
local tbAward =
{
[1] = {18, 1,1190, 2};
[2] = {5,22,1,1};
}
for i = 1, 2 do
nAdd = nAdd + tbRate[i];
if nAdd >= nRand then
nIndex = i;
break;
end
end
local pItem = me.AddItem(unpack(tbAward[nIndex]));
pItem.Bind(1);
if (nIndex == 2) then
local szMsg = string.format("Chúc mừng người chơi<color=cyan>%s<color> Đã may mắn hợp thành thành công<color=cyan>%s<color> ", me.szName, pItem.szName);
KDialog.NewsMsg(1, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
me.Msg("Hợp thành thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
me.SendMsgToFriend("Hảo hữu của bạn [<color=yellow>" .. me.szName
.. "<color>] Hợp thành thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Hợp thành thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Hợp thành thất bại nhận được <color=yellow>"..pItem.szName.."<color>.");
end
end
end;
-- 檢測是否是需要的物品
function tbNpc:ChechItem(pItem, tbItemList, tbCountList)
if (not pItem) then
return 0;
end;
local szItem = string.format("%s,%s,%s,%s",pItem[1].nGenre, pItem[1].nDetail, pItem[1].nParticular, pItem[1].nLevel);
for i = 1, #tbItemList do
local tbI = tbItemList[i];
for j = 1, #tbI[1] do
if (szItem == tbI[1][j]) then
tbCountList[i] = (tbCountList[i] or 0) + pItem[1].nCount;
return 1;
end;
end;
end;
return 0;
end;
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.