nh0kk3n2310
19-12-12, 10:05 PM
mình dùng script này để nâng cấp ấn mà sao cứ bị lỗi ở chỗ có vật phẫm ko đủ tiêu chuẩn hoài :-S (mặc dù đúng hết số lượng vật phẩm :-(()
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 tbNpc:OnDialog_1()
local tbOpt = {
{"<color=yellow>Ta muốn tìm hiểu thêm về luyện hóa Luân Hồi Ấn.<color>", self.OnDialog_3, self},--
{"<color=yellow>Ta muốn nâng cấp Luân Hồi Ấn.<color>", self.OnDialog_2, self},--
{"Kết thúc đối thoại"},
}
local szMsg = "Ta sẽ giúp nhà ngươi nâng cấp ấn,nhưng phải trả công cho ta ngâ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(
" Tối đa nhà ngươi chỉ có thể luyện hóa <color=Red>5 lần<color>,phí luyện hóa là <color=gold>300 vạn<color>,mỗi lần sẽ tính theo quy tắc sau:\n"..
" Lần 1: <color=yellow>1 Luân Hồi Ấn[Thường] + 3 HTB +100vạn bạc<color>\n"..
" Lần 2: <color=yellow>1 Luân Hồi Ấn[Sơ] + 6 HTB +200vạn bạc<color>\n"..
" Lần 3: <color=yellow>1 Luân Hồi Ấn[Trung] + 9 HTB +300vạn bạc<color>\n"..
" Lần 4: <color=yellow>1 Luân Hồi Ấn[Cao] + 12 HTB +400vạn bạc<color>\n"..
" Lần 5: <color=yellow>1 Luân Hồi Ấn[Thần] + 15 HTB +500vạn bạc<color>\n"..
" Tỉ lệ thành công cho mỗi lần là <color=pink>10%<color>\n"..
" Lưu ý: <color=red>Không nên cường hóa trước khi nâng cấp ấn.Khi nâng cấp ấn sẽ trở về trạng thái ban đầu <color=red>chưa cường hóa<color>. Khi cường hóa thất bại bạn sẽ nhận lại Luân Hồi Ấn."
, 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 Nâng cấp Luân Hồi Ấn<color=green>[Sơ]<color>", self.TakeInItem1, self},--
{"Ta Muốn Nâng cấp Luân Hồi Ấn<color=blue>[Trung]<color>", self.TakeInItem2, self},--
{"Ta Muốn Nâng cấp Luân Hồi Ấn<color=gold>[Cao]<color>", self.TakeInItem3, self},--
{"Ta Muốn Nâng cấp Luân Hồi Ấn<color=yellow>[Thần]<color>", self.TakeInItem4, self},--
{"Ta Muốn Nâng cấp Luân Hồi Ấn<color=yellow>[Thánh]<color>", self.TakeInItem5, self},--
{"Kết thúc đối thoại"},
}
local szMsg = "Ta sẽ giúp nhà ngươi Nâng cấp Ấn,nhưng phải trả công cho ta ,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 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 Nâng cấp 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 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 Nâng cấp 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 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 Nâng cấp 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 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 Nâng cấp 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 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 Nâng cấp 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 đủ 100 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 Vật 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 nâng cấp 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>] Nâng cấp công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Nâng cấp thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Nâng cấp 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 Nâng cấp 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>] Nâng cấp thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Nâng cấp thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Nâng cấp 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 Nâng cấp 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>] Nâng cấp thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Nâng cấp thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Nâng cấp 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 Nâng cấp 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>] Nâng cấp thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Nâng cấp thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Nâng cấp 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 Nâng cấp thành công <color=cyan>%s<color>", me.szName, pItem.szName);
KDialog.NewsMsg(1, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
me.Msg("Nâng cấp 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>] Nâng cấp thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Nâng cấp thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Nâng cấp 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;
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 tbNpc:OnDialog_1()
local tbOpt = {
{"<color=yellow>Ta muốn tìm hiểu thêm về luyện hóa Luân Hồi Ấn.<color>", self.OnDialog_3, self},--
{"<color=yellow>Ta muốn nâng cấp Luân Hồi Ấn.<color>", self.OnDialog_2, self},--
{"Kết thúc đối thoại"},
}
local szMsg = "Ta sẽ giúp nhà ngươi nâng cấp ấn,nhưng phải trả công cho ta ngâ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(
" Tối đa nhà ngươi chỉ có thể luyện hóa <color=Red>5 lần<color>,phí luyện hóa là <color=gold>300 vạn<color>,mỗi lần sẽ tính theo quy tắc sau:\n"..
" Lần 1: <color=yellow>1 Luân Hồi Ấn[Thường] + 3 HTB +100vạn bạc<color>\n"..
" Lần 2: <color=yellow>1 Luân Hồi Ấn[Sơ] + 6 HTB +200vạn bạc<color>\n"..
" Lần 3: <color=yellow>1 Luân Hồi Ấn[Trung] + 9 HTB +300vạn bạc<color>\n"..
" Lần 4: <color=yellow>1 Luân Hồi Ấn[Cao] + 12 HTB +400vạn bạc<color>\n"..
" Lần 5: <color=yellow>1 Luân Hồi Ấn[Thần] + 15 HTB +500vạn bạc<color>\n"..
" Tỉ lệ thành công cho mỗi lần là <color=pink>10%<color>\n"..
" Lưu ý: <color=red>Không nên cường hóa trước khi nâng cấp ấn.Khi nâng cấp ấn sẽ trở về trạng thái ban đầu <color=red>chưa cường hóa<color>. Khi cường hóa thất bại bạn sẽ nhận lại Luân Hồi Ấn."
, 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 Nâng cấp Luân Hồi Ấn<color=green>[Sơ]<color>", self.TakeInItem1, self},--
{"Ta Muốn Nâng cấp Luân Hồi Ấn<color=blue>[Trung]<color>", self.TakeInItem2, self},--
{"Ta Muốn Nâng cấp Luân Hồi Ấn<color=gold>[Cao]<color>", self.TakeInItem3, self},--
{"Ta Muốn Nâng cấp Luân Hồi Ấn<color=yellow>[Thần]<color>", self.TakeInItem4, self},--
{"Ta Muốn Nâng cấp Luân Hồi Ấn<color=yellow>[Thánh]<color>", self.TakeInItem5, self},--
{"Kết thúc đối thoại"},
}
local szMsg = "Ta sẽ giúp nhà ngươi Nâng cấp Ấn,nhưng phải trả công cho ta ,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 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 Nâng cấp 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 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 Nâng cấp 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 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 Nâng cấp 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 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 Nâng cấp 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 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 Nâng cấp 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 đủ 100 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 Vật 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 nâng cấp 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>] Nâng cấp công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Nâng cấp thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Nâng cấp 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 Nâng cấp 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>] Nâng cấp thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Nâng cấp thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Nâng cấp 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 Nâng cấp 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>] Nâng cấp thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Nâng cấp thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Nâng cấp 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 Nâng cấp 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>] Nâng cấp thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Nâng cấp thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Nâng cấp 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 Nâng cấp thành công <color=cyan>%s<color>", me.szName, pItem.szName);
KDialog.NewsMsg(1, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
me.Msg("Nâng cấp 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>] Nâng cấp thành công <color=cyan>"
.. pItem.szName .."<color>");
me.Msg("Nâng cấp thành công nhận được <color=yellow>"..pItem.szName.."<color>.");
elseif (nIndex == 1) then
me.Msg("Nâng cấp 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;