View Full Version : [KT] Xin hỏi về cách thêm một món đồ nhất định khi giết quái ?
huylouis1996
08-10-12, 01:59 AM
function BaiHuTang:OnDeath_Boss(pNpc)
local pKillerPlayer = pNpc.GetPlayer();
if (pKillerPlayer) then
self:AddRepute(pKillerPlayer, 10);
--self:AwardWeiWang(pKillerPlayer, 2, 10);
self:AwardXinDe(pKillerPlayer, 100000);
local nMapId = pKillerPlayer.nMapId
local nBaiHuLevel = BaiHuTang:GetLevelByMapId(nMapId);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pKillerPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
local nTeamId = pKillerPlayer.nTeamId;
if (0 == nTeamId) then
return;
end
local tbPlayerId, nMemberCount = KTeam.GetTeamMemberList(nTeamId);
for i, nPlayerId in pairs(tbPlayerId) do
local pPlayer = KPlayer.GetPlayerObjById(nPlayerId);
if (pPlayer and pPlayer.nId ~= pKillerPlayer.nId and pPlayer.nMapId == him.nMapId) then
--self:AwardWeiWang(pPlayer, 2);
self:AwardXinDe(pPlayer, 100000);
self:AddRepute(pPlayer, 10);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
end
end
end
end
Đây là file BHD
Mình có thử thêm vào đoạn code trong script phần OnDeath như VipBK nói nhưng khi đánh chết 3 quái của 3 ải BHD thì mình chẳng thấy xuất hiện vật phẩm nào xuất hiện trong người .
Bác nào pro chỉ em là thêm đoạn code rơi đồ nhất định với số lượng nhất định khi đánh chết quái ở dòng nào đc k ạ :D
Em cảm ơn nhiều
Sesshomaru
08-10-12, 02:06 AM
rơi vật phẩm boss chỉnh trong setting
setting\npc\droprate\baihutang
Bạn chỉnh trong script nó ko rớt là đúng rồi.ko rớt bất kì vật phẩm nào luôn ý chứ:))
ví dụ mình làm ok:
boss Lý Thanh - tần lăng 3
file script của nó: script\boss\qinshihuang\npc\boss_qinshihuang.lua
local tbJingying = Npc:GetClass("boss_qinjingying");
function tbJingying:OnDeath(pNpcKiller)
Boss.tbUniqueBossCallOut[him.nTemplateId] = nil;
local pPlayer = pNpcKiller.GetPlayer();
if not pPlayer then
return 0;
end
pPlayer.AddItem(18,1,114,9);
pPlayer.AddItem(18,1,114,9);
...
ở trên mình muốn sau khi kill boss nhận được 2 viên Huyền Tinh cấp 9 khóa
DEMO:
<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>
Như hình trên ta thấy ngoài vật phẩm nhận được (random) còn có 2 HT 9 (chắc chắn 100%)
huylouis1996
08-10-12, 10:59 PM
vậy bạn sửa giúp mình cái code trên để nó rớt vật phẩm ngoài vật phẩm random ra đc k VipBK
mở file: gameserver\script\pvp\baihutang_gs.lua
function BaiHuTang:OnDeath_Boss(pNpc)
local pKillerPlayer = pNpc.GetPlayer();
if (pKillerPlayer) then
self:AddRepute(pKillerPlayer, 10);
--self:AwardWeiWang(pKillerPlayer, 2, 10);
self:AwardXinDe(pKillerPlayer, 100000);
local nMapId = pKillerPlayer.nMapId
local nBaiHuLevel = BaiHuTang:GetLevelByMapId(nMapId);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pKillerPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
local nTeamId = pKillerPlayer.nTeamId;
if (0 == nTeamId) then
return;
end
local tbPlayerId, nMemberCount = KTeam.GetTeamMemberList(nTeamId);
for i, nPlayerId in pairs(tbPlayerId) do
local pPlayer = KPlayer.GetPlayerObjById(nPlayerId);
if (pPlayer and pPlayer.nId ~= pKillerPlayer.nId and pPlayer.nMapId == him.nMapId) then
--self:AwardWeiWang(pPlayer, 2);
self:AwardXinDe(pPlayer, 100000);
self:AddRepute(pPlayer, 10);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
pPlayer.AddItem(...);
end
end
end
end
kakakura
26-10-12, 09:57 AM
mở file: gameserver\script\pvp\baihutang_gs.lua
function BaiHuTang:OnDeath_Boss(pNpc)
local pKillerPlayer = pNpc.GetPlayer();
if (pKillerPlayer) then
self:AddRepute(pKillerPlayer, 10);
--self:AwardWeiWang(pKillerPlayer, 2, 10);
self:AwardXinDe(pKillerPlayer, 100000);
local nMapId = pKillerPlayer.nMapId
local nBaiHuLevel = BaiHuTang:GetLevelByMapId(nMapId);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pKillerPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
local nTeamId = pKillerPlayer.nTeamId;
if (0 == nTeamId) then
return;
end
local tbPlayerId, nMemberCount = KTeam.GetTeamMemberList(nTeamId);
for i, nPlayerId in pairs(tbPlayerId) do
local pPlayer = KPlayer.GetPlayerObjById(nPlayerId);
if (pPlayer and pPlayer.nId ~= pKillerPlayer.nId and pPlayer.nMapId == him.nMapId) then
--self:AwardWeiWang(pPlayer, 2);
self:AwardXinDe(pPlayer, 100000);
self:AddRepute(pPlayer, 10);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
pPlayer.AddItem(...);
end
end
end
end
Sao mình làm như vậy nó báo lỗi, đánh xong không nhận được gì, àh cho mình hỏi muốn chỉnh nhận cố định khi làm hoàn thành TDC thì chỉnh chổ nào vậy ?
Sao mình làm như vậy nó báo lỗi, đánh xong không nhận được gì, àh cho mình hỏi muốn chỉnh nhận cố định khi làm hoàn thành TDC thì chỉnh chổ nào vậy ?
- mình vẫn nhận bình thường, bạn xem lại cách làm nhé
- TDC: tìm file lua của nó rồi làm tương tự
kakakura
09-11-12, 10:11 PM
TDC tìm không thấy nhĩ, mò cả buổi chả thấy đâu,
Còn BHD chắc đúng không vậy mình làm như thế này :
function BaiHuTang:OnDeath_Boss(pNpc)
local pKillerPlayer = pNpc.GetPlayer();
if (pKillerPlayer) then
.....
....
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
pPlayer.AddItem(18,1,114,12); -- them day
pPlayer.AddItem(18,1,114,12); -- them day
end
end
end
end
kiemphap
11-11-12, 06:26 PM
Vip ơi hướng dẫn mình cụ thể cách thêm item (vài item khác nhau theo từng lần đánh) nhận được khi đánh chết HKL, Lam KL, Hắc KL với nhé. Thanks nhiều \m/
Vip ơi hướng dẫn mình cụ thể cách thêm item (vài item khác nhau theo từng lần đánh) nhận được khi đánh chết HKL, Lam KL, Hắc KL với nhé. Thanks nhiều \m/
mở file lua của nó rồi làm hoàn toàn tương tự như trên
kiemphap
12-11-12, 10:30 AM
Hay mình lấy file đó up lên VIP làm giúp mình với nhé? Mình mới tập làm nên còn mù mờ quá ~:>
thanhdinh10
15-07-13, 03:37 PM
mở file: gameserver\script\pvp\baihutang_gs.lua
function BaiHuTang:OnDeath_Boss(pNpc)
local pKillerPlayer = pNpc.GetPlayer();
if (pKillerPlayer) then
self:AddRepute(pKillerPlayer, 10);
--self:AwardWeiWang(pKillerPlayer, 2, 10);
self:AwardXinDe(pKillerPlayer, 100000);
local nMapId = pKillerPlayer.nMapId
local nBaiHuLevel = BaiHuTang:GetLevelByMapId(nMapId);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pKillerPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
local nTeamId = pKillerPlayer.nTeamId;
if (0 == nTeamId) then
return;
end
local tbPlayerId, nMemberCount = KTeam.GetTeamMemberList(nTeamId);
for i, nPlayerId in pairs(tbPlayerId) do
local pPlayer = KPlayer.GetPlayerObjById(nPlayerId);
if (pPlayer and pPlayer.nId ~= pKillerPlayer.nId and pPlayer.nMapId == him.nMapId) then
--self:AwardWeiWang(pPlayer, 2);
self:AwardXinDe(pPlayer, 100000);
self:AddRepute(pPlayer, 10);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
pPlayer.AddItem(...);
end
end
end
end
Vấn đề đã lâu nhưng mình xin hỏi lại :)
Mình đã add item theo cách của Vipbk nhưng gặp 1 vấn đề đó là cứ qua 1 ải BHD là nhận được item mình đã add vào có cách nào để khi đi hết ải thứ 3 mới nhận được item ko ?
Nhờ mọi người chỉ giáo. Thank ! :)
mrkutepro
15-07-13, 04:30 PM
Vấn đề đã lâu nhưng mình xin hỏi lại :)
Mình đã add item theo cách của Vipbk nhưng gặp 1 vấn đề đó là cứ qua 1 ải BHD là nhận được item mình đã add vào có cách nào để khi đi hết ải thứ 3 mới nhận được item ko ?
Nhờ mọi người chỉ giáo. Thank ! :)
Gợi ý thôi nhé. Bạn có thể thêm 1 task bất kỳ, khi bắt đầu vào trận bạch hổ đường, set giá trị task về 0, khi nhân vật qua mỗi tầng tăng task lên 1, sau đó dùng hiểm kiểm tra giá trị task nếu >= 3 thì cho phép Add Item 8-x
thanhdinh10
15-07-13, 05:41 PM
Gợi ý thôi nhé. Bạn có thể thêm 1 task bất kỳ, khi bắt đầu vào trận bạch hổ đường, set giá trị task về 0, khi nhân vật qua mỗi tầng tăng task lên 1, sau đó dùng hiểm kiểm tra giá trị task nếu >= 3 thì cho phép Add Item 8-x
bạn gợi ý mình hiểu ý bạn nhưng với newbie như mình chưa hiểu gì về task cả, bạn có thể cho mình 1 đoạn code tương tự như thế để mình có thể dựa vào đó mà làm ko ? Thanks bạn rất nhiều :)
mrkutepro
15-07-13, 06:15 PM
bạn gợi ý mình hiểu ý bạn nhưng với newbie như mình chưa hiểu gì về task cả, bạn có thể cho mình 1 đoạn code tương tự như thế để mình có thể dựa vào đó mà làm ko ? Thanks bạn rất nhiều :)
Ok. mình sẽ hướng dẫn đơn giản hơn không dùng tast. Đúng theo yêu cầu của bạn qua 3 cửa mới nhận được thưởng
B1. Mở file này lên theo đường dẫn \script\pvp\baihutang_def.lua
B2. Tìm tới hàm có tên:
function BaiHuTang:OnPlayerTrap(nMapId)
B3. Tìm tới đoạn code này trong hàm trên:
if (nToMapId == 225 or nToMapId == 233 or nToMapId == 274 or nToMapId ==821) then
BaiHuTang:KickOutMission(me, nToMapId);
end
Sau đó thêm mắm muối vào tùy bạn. Ví dụ cho 1 cái túi phúc khi qua cửa tầng 3:
if (nToMapId == 225 or nToMapId == 233 or nToMapId == 274 or nToMapId ==821) then
BaiHuTang:KickOutMission(me, nToMapId);
me.AddItem(18,1,80,1); --TÚI PHÚC HOÀNG KIM
end
Không cần khai báo task
thanhdinh10
15-07-13, 07:41 PM
Ok. mình sẽ hướng dẫn đơn giản hơn không dùng tast. Đúng theo yêu cầu của bạn qua 3 cửa mới nhận được thưởng
B1. Mở file này lên theo đường dẫn \script\pvp\baihutang_def.lua
B2. Tìm tới hàm có tên:
function BaiHuTang:OnPlayerTrap(nMapId)
B3. Tìm tới đoạn code này trong hàm trên:
if (nToMapId == 225 or nToMapId == 233 or nToMapId == 274 or nToMapId ==821) then
BaiHuTang:KickOutMission(me, nToMapId);
end
Sau đó thêm mắm muối vào tùy bạn. Ví dụ cho 1 cái túi phúc khi qua cửa tầng 3:
if (nToMapId == 225 or nToMapId == 233 or nToMapId == 274 or nToMapId ==821) then
BaiHuTang:KickOutMission(me, nToMapId);
me.AddItem(18,1,80,1); --TÚI PHÚC HOÀNG KIM
end
Không cần khai báo task
Cảm ơn bạn rất nhiều ! mình đã làm được :)
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.