Code:
local tbNpc = Npc:GetClass("changeahk");
local REQUIRE_ITEM = {
[1] =
{
{
{
string.format("%s,%s,%s,%s", 18, 1, 377, 1),
},
3,
},
{
{
string.format("%s,%s,%s,%s", 1, 16, 13, 1),
},
1,
},
},[2] =
{
{
{
string.format("%s,%s,%s,%s", 18, 1, 377, 1),
},
6,
},
{
{
string.format("%s,%s,%s,%s", 1, 16, 16, 2),
},
1,
},
},[3] =
{
{
{
string.format("%s,%s,%s,%s", 18, 1, 377, 1),
},
9,
},
{
{
string.format("%s,%s,%s,%s", 1, 16, 17, 2),
},
1,
},
},[4] =
{
{
{
string.format("%s,%s,%s,%s", 18, 1, 377, 1),
},
12,
},
{
{
string.format("%s,%s,%s,%s", 1, 16, 18, 2),
},
1,
},
},[5] =
{
{
{
string.format("%s,%s,%s,%s", 18, 1, 377, 1),
},
15,
},
{
{
string.format("%s,%s,%s,%s", 1, 16, 19, 2),
},
1,
},
},
};
function tbDoian:OnDialog()
local nState = me.GetTask(3006, 2);
local szButtonColor = (nState < 20 and "") or "<color=gray>";
local tbOpt =
{
{"<color=yellow>Ta Muốn Nâng Cấp Long Ấn<color>", self.longanupdate, self},
{"<color=yellow>Ta Muốn Nâng Cấp Luân Hồi Ấn<color>", self.luanhoianupdate, self},
{"Kết thúc đối thoại"},
}
Dialog:Say("<color=yellow>Nhà Sưu Tập Vũ Khí:<color> \nXin chào <color=cyan>" ..me.szName.. "<color> ! ",tbOpt);
end
function tbDoian:luanhoianupdate()
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 szMsg = "Ngươi muốn nâng cấp ấn?";
local tbItemId2 = {1,16,13,1,0,0};
local tbItemId3 = {1,16,16,2,0,0};
local tbItemId4 = {1,16,17,2,0,0};
local tbItemId5 = {1,16,18,2,0,0};
local tbItemId6 = {1,16,19,2,0,0};
local tbItemId7 = {1,16,20,2,0,0};
local nCount2 = me.GetItemCountInBags(1,16,13,1);
local nCount3 = me.GetItemCountInBags(1,16,16,2);
local nCount4 = me.GetItemCountInBags(1,16,17,2);
local nCount5 = me.GetItemCountInBags(1,16,18,2);
local nCount6 = me.GetItemCountInBags(1,16,19,2);
local nCount7 = me.GetItemCountInBags(1,16,20,2);
if nCount2 < 1 or nCount3 < 1 or nCount4 < 1 or nCount5 < 1 or nCount6 < 1 or nCount7 < 1 then
Dialog:Say("<color=wheat>Trong hành trang của bạn không có vật phẩm yêu cầu<color>");
return 0;
else if nCount2 == 2
local tbOpt = {
{"Nâng Cấp Luân Hồi Ấn[Thường]", self.updateluanhoianthuong1, self},
}
Dialog:Say(szMsg, tbOpt);
else if nCount3 == 3
{"Nâng Cấp Luân Hồi Ấn[Sơ]", self.updateluanhoianthuong2, self},
}
Dialog:Say(szMsg, tbOpt);
else if nCount4 == 4
{"Nâng Cấp Luân Hồi Ấn[Trung]", self.updateluanhoianthuong3, self},
}
Dialog:Say(szMsg, tbOpt);
else if nCount5 == 5
{"Nâng Cấp Luân Hồi Ấn[Cao]", self.updateluanhoianthuong4, self},
}
Dialog:Say(szMsg, tbOpt);
else if nCount6 == 6
{"Nâng Cấp Luân Hồi Ấn[Hồn]", self.updateluanhoianthuong5, self},
}
Dialog:Say(szMsg, tbOpt);
else if nCount7 == 7
{"Nâng Cấp Luân Hồi Ấn[Thần]", self.updateluanhoianthuong6, self},
}
Dialog:Say(szMsg, tbOpt);
end
end
end
function tbNpc:updateluanhoianthuong1()
local nValue = me.nSeries;
local szMsg = "Ta sẽ giúp nhà ngươi Nâng cấp Ấn,nhưng phải trả công cho ta 100 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 Luân Hòi Ấn + 3HTB vào.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:updateluanhoianthuong2()
local nValue = me.nSeries+1;
local szMsg = "Ta sẽ giúp nhà ngươi Nâng cấp Ấn,nhưng phải trả công cho ta 200 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 Huyền Vũ Án + 6HTB vào.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:updateluanhoianthuong3()
local nValue = me.nSeries+2;
local szMsg = "Ta sẽ giúp nhà ngươi Nâng cấp Ấn,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 Bạch Hỗ Ấn + 9HTB vào.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:updateluanhoianthuong4()
local nValue = me.nSeries+3;
local szMsg = "Ta sẽ giúp nhà ngươi Nâng cấp Ấn,nhưng phải trả công cho ta 400 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 Chu Tước Ấn + 12HTB vào.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:updateluanhoianthuong5()
local nValue = me.nSeries+4;
local szMsg = "Ta sẽ giúp nhà ngươi Nâng cấp Ấn,nhưng phải trả công cho ta 500 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 Thanh Long Ấn + 15HTB vào.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 < 1000000) then
Dialog:Say("Không đủ Tiền Vạn, 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(1000000,0);
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {4000, 6000};
local tbAward =
{
[1] = {1, 16, 13, 1};
[2] = {1,16,16,2};
}
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.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(2000000,0);
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {4000, 6000};
local tbAward =
{
[1] = {1, 16, 13, 1};
[2] = {1,16,17,2};
}
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.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(3000000,0);
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {4000, 6000};
local tbAward =
{
[1] = {1, 16, 13, 1};
[2] = {1,16,18,2};
}
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.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(4000000,0);
local i = 0;
local nAdd = 0;
local nRand = 0;
local nIndex = 0;
-- random
nRand = MathRandom(1, 10000);
-- fill 3 rate
local tbRate = {4000, 6000};
local tbAward =
{
[1] = {1, 16, 13, 1};
[2] = {1,16,19,2};
}
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.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 = {4000, 6000};
local tbAward =
{
[1] = {1, 16, 13, 1};
[2] = {1,16,20,2};
}
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;