PDA

View Full Version : [KT] Xin các pro chỉ giáo cách add vật phẩm khi giết boss Quân Doanh, Vạn Hoa Cốc



dutoanvna
15-07-24, 12:30 PM
Em có chơi 1 số sv và giờ về chơi offline vì không có thời gian cày online như trước. Em thấy các sv khi giết boss Quân Doanh, boss hầm Vạn Hoa Cốc sẽ có thông báo phần thưởng và add phần thưởng như đồng, bạc khóa, đồng khóa, huyền tinh vào nhân vật.

Các pro cho em hỏi sử dụng hàm gì và đưa vào file nào để có được cái đó ạ? Em xin chân thành cảm ơn!

anhtuanapt
15-07-24, 05:27 PM
Em có chơi 1 số sv và giờ về chơi offline vì không có thời gian cày online như trước. Em thấy các sv khi giết boss Quân Doanh, boss hầm Vạn Hoa Cốc sẽ có thông báo phần thưởng và add phần thưởng như đồng, bạc khóa, đồng khóa, huyền tinh vào nhân vật.

Các pro cho em hỏi sử dụng hàm gì và đưa vào file nào để có được cái đó ạ? Em xin chân thành cảm ơn!

tìm file npc đó coi có hàm ondeath thì edit thêm cái mình cần vào player xem đc ko :D

satthupro95
15-07-24, 09:29 PM
Tìm đến file \script\task\armycamp\define.lua xuống cuối cùng tạo 1 function dạng, sau này muốn cập nhật thêm thưởng chỉ cần thay đổi trong function này:

function SpecialEvent:AwardKillFinalBossQD(pPlayer)
if pPlayer then
if pPlayer.CountFreeBagCell() >= 5 then
-- Thêm thưởng vào đây ví dụ
pPlayer.AddStackItem(18,1,114,8,{bForceBind = 1},1); -- 1 Huyền Tinh 8; bForceBind 1 Khóa, 0 Không Khóa
pPlayer.AddExp(10000000); -- 10tr EXP
pPlayer.AddBindMoney(500000,0); -- 50 vạn Bạc Khóa
pPlayer.AddBindCoin(150000); -- 15 vạn Đồng Khóa
end
end
end

BOSS Cổ Vương - \script\task\armycamp\100_110\npc\guwang.lua
Tìm đến function tbGuWang:OnDeath(pNpc) đoạn
for _, player in ipairs(tbPlayList) do
SpecialEvent:AwardKillFinalBossQD(player) -- Thêm function thưởng vào
Task.OldPlayerTask:AddPlayerTaskValue(player.nId, 2082, 4);
end;

BOSS Hoàn Nhan Lượng - \script\task\armycamp\110_120\npc\hongliandiyunpc. lua
Tìm đến function tbBoss5:OnDeath(pNpc) đoạn
for _, teammate in ipairs(tbPlayList) do
SpecialEvent:AwardKillFinalBossQD(teammate) -- Thêm function thưởng vào
Setting:SetGlobalObj(teammate);
TaskAct:Talk(self.tbText[0], self.TalkEnd, self, tbInstancing);
Setting:RestoreGlobalObj();
end;

BOSS Thợ Cả - \script\task\armycamp\90_100\npc\caishiqu\boss.lua
Tìm đến function tbNpc_1:OnDeath(pNpc) đoạn
for _, player in ipairs(tbPlayList) do
SpecialEvent:AwardKillFinalBossQD(player) -- Thêm function thưởng vào
Task.OldPlayerTask:AddPlayerTaskValue(player.nId, 2082, 4);
end;

dutoanvna
16-07-24, 02:09 AM
Tìm đến file \script\task\armycamp\define.lua xuống cuối cùng tạo 1 function dạng, sau này muốn cập nhật thêm thưởng chỉ cần thay đổi trong function này:

function SpecialEvent:AwardKillFinalBossQD(pPlayer)
if pPlayer then
if pPlayer.CountFreeBagCell() >= 5 then
-- Thêm thưởng vào đây ví dụ
pPlayer.AddStackItem(18,1,114,8,{bForceBind = 1},1); -- 1 Huyền Tinh 8; bForceBind 1 Khóa, 0 Không Khóa
pPlayer.AddExp(10000000); -- 10tr EXP
pPlayer.AddBindMoney(500000,0); -- 50 vạn Bạc Khóa
pPlayer.AddBindCoin(150000); -- 15 vạn Đồng Khóa
end
end
end

BOSS Cổ Vương - \script\task\armycamp\100_110\npc\guwang.lua
Tìm đến function tbGuWang:OnDeath(pNpc) đoạn
for _, player in ipairs(tbPlayList) do
SpecialEvent:AwardKillFinalBossQD(player) -- Thêm function thưởng vào
Task.OldPlayerTask:AddPlayerTaskValue(player.nId, 2082, 4);
end;

BOSS Hoàn Nhan Lượng - \script\task\armycamp\110_120\npc\hongliandiyunpc. lua
Tìm đến function tbBoss5:OnDeath(pNpc) đoạn
for _, teammate in ipairs(tbPlayList) do
SpecialEvent:AwardKillFinalBossQD(teammate) -- Thêm function thưởng vào
Setting:SetGlobalObj(teammate);
TaskAct:Talk(self.tbText[0], self.TalkEnd, self, tbInstancing);
Setting:RestoreGlobalObj();
end;

BOSS Thợ Cả - \script\task\armycamp\90_100\npc\caishiqu\boss.lua
Tìm đến function tbNpc_1:OnDeath(pNpc) đoạn
for _, player in ipairs(tbPlayList) do
SpecialEvent:AwardKillFinalBossQD(player) -- Thêm function thưởng vào
Task.OldPlayerTask:AddPlayerTaskValue(player.nId, 2082, 4);
end;

Em cảm ơn ạ!
30 charrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr rrrrrrrrrrrrrrrrrrrrrrrrr

dutoanvna
16-07-24, 12:27 PM
Tìm đến file \script\task\armycamp\define.lua xuống cuối cùng tạo 1 function dạng, sau này muốn cập nhật thêm thưởng chỉ cần thay đổi trong function này:

function SpecialEvent:AwardKillFinalBossQD(pPlayer)
if pPlayer then
if pPlayer.CountFreeBagCell() >= 5 then
-- Thêm thưởng vào đây ví dụ
pPlayer.AddStackItem(18,1,114,8,{bForceBind = 1},1); -- 1 Huyền Tinh 8; bForceBind 1 Khóa, 0 Không Khóa
pPlayer.AddExp(10000000); -- 10tr EXP
pPlayer.AddBindMoney(500000,0); -- 50 vạn Bạc Khóa
pPlayer.AddBindCoin(150000); -- 15 vạn Đồng Khóa
end
end
end

BOSS Cổ Vương - \script\task\armycamp\100_110\npc\guwang.lua
Tìm đến function tbGuWang:OnDeath(pNpc) đoạn
for _, player in ipairs(tbPlayList) do
SpecialEvent:AwardKillFinalBossQD(player) -- Thêm function thưởng vào
Task.OldPlayerTask:AddPlayerTaskValue(player.nId, 2082, 4);
end;

BOSS Hoàn Nhan Lượng - \script\task\armycamp\110_120\npc\hongliandiyunpc. lua
Tìm đến function tbBoss5:OnDeath(pNpc) đoạn
for _, teammate in ipairs(tbPlayList) do
SpecialEvent:AwardKillFinalBossQD(teammate) -- Thêm function thưởng vào
Setting:SetGlobalObj(teammate);
TaskAct:Talk(self.tbText[0], self.TalkEnd, self, tbInstancing);
Setting:RestoreGlobalObj();
end;

BOSS Thợ Cả - \script\task\armycamp\90_100\npc\caishiqu\boss.lua
Tìm đến function tbNpc_1:OnDeath(pNpc) đoạn
for _, player in ipairs(tbPlayList) do
SpecialEvent:AwardKillFinalBossQD(player) -- Thêm function thưởng vào
Task.OldPlayerTask:AddPlayerTaskValue(player.nId, 2082, 4);
end;

À, bác cho em hỏi đối với Vạn Hoa Cốc thì thế nào ạ?

Em có code một đoạn vào nhưng chỉ có người giết boss mới nhận được phần thưởng, phải làm thế nào để cả team nhận được ạ?

satthupro95
17-07-24, 12:18 AM
Vào script\task\treasuremap\treasure_head.lua kéo xuống cuối, tạo 1 function dạng

function TreasureMap:AwardKillFinalBossTBD(pPlayer)
if pPlayer then
if pPlayer.CountFreeBagCell() >= 5 then
-- Thêm thưởng vào đây ví dụ
pPlayer.AddStackItem(18,1,114,8,{bForceBind = 1},1); -- 1 Huyền Tinh 8; bForceBind 1 Khóa, 0 Không Khóa
pPlayer.AddExp(10000000); -- 10tr EXP
pPlayer.AddBindMoney(500000,0); -- 50 vạn Bạc Khóa
pPlayer.AddBindCoin(150000); -- 15 vạn Đồng Khóa
end
end
end

Tìm đến script của con boss cần add thưởng, tìm function :OnDeath(pNpcKiller) thêm vào sau đoạn if (pPlayer) then

local nTeamId = pPlayer.nTeamId;
if nTeamId == 0 then -- Nếu người hạ boss không có tổ đội, add thưởng chỉ 1 mình
TreasureMap:AwardKillFinalBossTBD(pPlayer)
else -- Nếu người hạ boss có tổ đội
local tbPlayerId, nMemberCount = KTeam.GetTeamMemberList(nTeamId);
for i, nPlayerId in pairs(tbPlayerId) do
local pTeamPlayer = KPlayer.GetPlayerObjById(nPlayerId);
if (pTeamPlayer) then -- Kiểm tra có đứng cùng map không
TreasureMap:AwardKillFinalBossTBD(pTeamPlayer)
end
end
end

dutoanvna
17-07-24, 12:19 PM
Vào script\task\treasuremap\treasure_head.lua kéo xuống cuối, tạo 1 function dạng

function TreasureMap:AwardKillFinalBossTBD(pPlayer)
if pPlayer then
if pPlayer.CountFreeBagCell() >= 5 then
-- Thêm thưởng vào đây ví dụ
pPlayer.AddStackItem(18,1,114,8,{bForceBind = 1},1); -- 1 Huyền Tinh 8; bForceBind 1 Khóa, 0 Không Khóa
pPlayer.AddExp(10000000); -- 10tr EXP
pPlayer.AddBindMoney(500000,0); -- 50 vạn Bạc Khóa
pPlayer.AddBindCoin(150000); -- 15 vạn Đồng Khóa
end
end
end

Tìm đến script của con boss cần add thưởng, tìm function :OnDeath(pNpcKiller) thêm vào sau đoạn if (pPlayer) then

local nTeamId = pPlayer.nTeamId;
if nTeamId == 0 then -- Nếu người hạ boss không có tổ đội, add thưởng chỉ 1 mình
TreasureMap:AwardKillFinalBossTBD(pPlayer)
else -- Nếu người hạ boss có tổ đội
local tbPlayerId, nMemberCount = KTeam.GetTeamMemberList(nTeamId);
for i, nPlayerId in pairs(tbPlayerId) do
local pTeamPlayer = KPlayer.GetPlayerObjById(nPlayerId);
if (pTeamPlayer) then -- Kiểm tra có đứng cùng map không
TreasureMap:AwardKillFinalBossTBD(pTeamPlayer)
end
end
end

Em cảm ơn bác, em đã làm được rồi ạ! :)

30 charrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr