__Jie__
17-06-20, 10:45 PM
Hôm nay có 1 bạn chat hỏi làm thế nào để đánh boss 55 75 95 . Khi boss chết thông báo vật phẩm rớt ra giống Tần Thủy Hoàng.
Mặc dù bạn ấy đã copy hàm DeathLoseItem(tbLoseItem) bỏ vào script của boss 55 75 95 mà vẫn không được.
Mạn phép share lại các bước thực hiện.
B1 :
Vào gameserver\script\boss tìm file boss_schedule_gs.lua
Chèn thêm pNpc.SetLoseItemCallBack(1); vào trong hàm if pNpc then
function Boss:DoCallOut(nTemplateId, nLevel, nSeries, nMapId, nMapX, nMapY) local nMapIndex = SubWorldID2Idx(nMapId);
if nMapIndex < 0 then
return;
end
-- Boss已被召出而且未被打死
if self.tbUniqueBossCallOut[nTemplateId] then
return 0;
end
local pNpc = KNpc.Add(nTemplateId, nLevel, nSeries, nMapIndex, nMapX, nMapY, 0, 1)
if pNpc then
-- Jie add
pNpc.SetLoseItemCallBack(1);
--------------------
self.tbUniqueBossCallOut[nTemplateId] = 1;
<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>
if Boss.Qinshihuang:OnBossCallOut(pNpc) == 1 then
return;
end
local szMsg = string.format("Nghe nói có người phát hiện Võ lâm cao thủ <color=white>%s<color> tại <color=green>%s<color> khu vực thường lui tới!",
pNpc.szName, GetMapNameFormId(nMapId));
KDialog.NewsMsg(0, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
end
end
B2 vào gameserver\script\npc tìm uniqueboss.lua
chép thêm đoạn DeathLoseItem(tbLoseItem) vào
function tbUniqueBoss:DeathLoseItem(tbLoseItem)
local tbItem = tbLoseItem.Item;
local szMsg = "<color=green>"..him.szName.." chết để lại vật phẩm:<color>\n";
local tbList = {};
-- 列清单
for _, nItemId in pairs(tbItem or {}) do
local pItem = KItem.GetObjById(nItemId);
if pItem then
local szName = pItem.szName;
if not tbList[szName] then
tbList[szName] = 1;
else
tbList[szName] = tbList[szName] + 1;
end
end
end
for szItemName, nCount in pairs(tbList or {}) do
szMsg = szMsg .. "<color=yellow>" .. szItemName .. " - " .. nCount .. " cái<color>\n";
end
KDialog.MsgToGlobal(szMsg);
end
B3. Khởi động lại game và dùng hàm call boss đánh chơi hoặc chờ đến giờ boss ra test.
<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> (<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>)
P/S khi gọi boss bằng thẻ GM or túi tân thủ nhớ dùng hàm này
local pNpc = KNpc.Add2( nID , nLevel, nSeries , nMapId, nPosX, nPosY, 0, 1);
pNpc.SetLoseItemCallBack(1);
Mặc dù bạn ấy đã copy hàm DeathLoseItem(tbLoseItem) bỏ vào script của boss 55 75 95 mà vẫn không được.
Mạn phép share lại các bước thực hiện.
B1 :
Vào gameserver\script\boss tìm file boss_schedule_gs.lua
Chèn thêm pNpc.SetLoseItemCallBack(1); vào trong hàm if pNpc then
function Boss:DoCallOut(nTemplateId, nLevel, nSeries, nMapId, nMapX, nMapY) local nMapIndex = SubWorldID2Idx(nMapId);
if nMapIndex < 0 then
return;
end
-- Boss已被召出而且未被打死
if self.tbUniqueBossCallOut[nTemplateId] then
return 0;
end
local pNpc = KNpc.Add(nTemplateId, nLevel, nSeries, nMapIndex, nMapX, nMapY, 0, 1)
if pNpc then
-- Jie add
pNpc.SetLoseItemCallBack(1);
--------------------
self.tbUniqueBossCallOut[nTemplateId] = 1;
<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>
if Boss.Qinshihuang:OnBossCallOut(pNpc) == 1 then
return;
end
local szMsg = string.format("Nghe nói có người phát hiện Võ lâm cao thủ <color=white>%s<color> tại <color=green>%s<color> khu vực thường lui tới!",
pNpc.szName, GetMapNameFormId(nMapId));
KDialog.NewsMsg(0, Env.NEWSMSG_COUNT, szMsg);
KDialog.MsgToGlobal(szMsg);
end
end
B2 vào gameserver\script\npc tìm uniqueboss.lua
chép thêm đoạn DeathLoseItem(tbLoseItem) vào
function tbUniqueBoss:DeathLoseItem(tbLoseItem)
local tbItem = tbLoseItem.Item;
local szMsg = "<color=green>"..him.szName.." chết để lại vật phẩm:<color>\n";
local tbList = {};
-- 列清单
for _, nItemId in pairs(tbItem or {}) do
local pItem = KItem.GetObjById(nItemId);
if pItem then
local szName = pItem.szName;
if not tbList[szName] then
tbList[szName] = 1;
else
tbList[szName] = tbList[szName] + 1;
end
end
end
for szItemName, nCount in pairs(tbList or {}) do
szMsg = szMsg .. "<color=yellow>" .. szItemName .. " - " .. nCount .. " cái<color>\n";
end
KDialog.MsgToGlobal(szMsg);
end
B3. Khởi động lại game và dùng hàm call boss đánh chơi hoặc chờ đến giờ boss ra test.
<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> (<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>)
P/S khi gọi boss bằng thẻ GM or túi tân thủ nhớ dùng hàm này
local pNpc = KNpc.Add2( nID , nLevel, nSeries , nMapId, nPosX, nPosY, 0, 1);
pNpc.SetLoseItemCallBack(1);