PDA

View Full Version : [KT] Cần giúp đỡ về tống kim



tranhocthanh
13-11-23, 09:35 PM
function tbMSBase:OnDeath(pKillerNpc)
-- 不是在比赛时间内不能加分
if (2 ~= self.nState) then
return 0;
end
local nCurTime = tonumber(GetLocalDate("%H%M"));
local pPlayer = me;
local nGroupId = self:GetPlayerGroupId(pPlayer);
assert(nGroupId > 0);
self.tbRule:OnLeave(pPlayer);
local tbDeathBattleInfo = Battle:GetPlayerData(pPlayer);

self.tbCamps[nGroupId]:OnPlayerDeath(tbDeathBattleInfo);
local pKillerPlayer = pKillerNpc.GetPlayer();
if (pKillerPlayer) then
local nKillerGroupId = self:GetPlayerGroupId(pKillerPlayer);
assert(nKillerGroupId > 0);
if (nKillerGroupId == nGroupId) then
return;
end

local tbKillerBattleInfo = Battle:GetPlayerData(pKillerPlayer);
-- if (nCurTime >= 2050 and nCurTime <= 2200) then

-- pKillerPlayer.AddJbCoin(200);
-- end

local szMsg = string.format("%s %s <color=yellow>%s<color> đẩy lùi %s %s <color=yellow>%s<color>",
Battle.NAME_CAMP[nKillerGroupId], Battle.NAME_RANK[tbKillerBattleInfo.nRank], tbKillerBattleInfo.pPlayer.szName,
Battle.NAME_CAMP[nGroupId], Battle.NAME_RANK[tbDeathBattleInfo.nRank], tbDeathBattleInfo.pPlayer.szName);

--KDialog.MsgToGlobal(szMsg);
tbKillerBattleInfo.pPlayer.Msg(szMsg);
self.tbCamps[nKillerGroupId]:OnKillPlayer(tbKillerBattleInfo, tbDeathBattleInfo);
self:DecreaseDamageDefence(tbKillerBattleInfo.pPla yer);
self:IncreaseDamageDefence(tbDeathBattleInfo.pPlay er);
tbDeathBattleInfo.nBeenKilledNum = tbDeathBattleInfo.nBeenKilledNum + 1;
Merchant:TryGiveToken_Songjin_PLayer(pKillerPlayer , pPlayer.nId, tbDeathBattleInfo.nRank);

end
end

file mission.lua
em có đoạn code trên. khi chạy thì lúc giết người không nhận được tích lũy cũng như số người giết
Và mọi người có thể hướng dẫn em cách giết Tướng, Soái có đồng cho cả phe Tống hoặc Kim như điểm lũy không ạ

sindhand
16-11-23, 12:18 AM
function tbMSBase:OnDeath(pKillerNpc)
-- 不是在比赛时间内不能加分
if (2 ~= self.nState) then
return 0;
end
local nCurTime = tonumber(GetLocalDate("%H%M"));
local pPlayer = me;
local nGroupId = self:GetPlayerGroupId(pPlayer);
assert(nGroupId > 0);
self.tbRule:OnLeave(pPlayer);
local tbDeathBattleInfo = Battle:GetPlayerData(pPlayer);

self.tbCamps[nGroupId]:OnPlayerDeath(tbDeathBattleInfo);
local pKillerPlayer = pKillerNpc.GetPlayer();
if (pKillerPlayer) then
local nKillerGroupId = self:GetPlayerGroupId(pKillerPlayer);
assert(nKillerGroupId > 0);
if (nKillerGroupId == nGroupId) then
return;
end

local tbKillerBattleInfo = Battle:GetPlayerData(pKillerPlayer);
-- if (nCurTime >= 2050 and nCurTime <= 2200) then

-- pKillerPlayer.AddJbCoin(200);
-- end

local szMsg = string.format("%s %s <color=yellow>%s<color> đẩy lùi %s %s <color=yellow>%s<color>",
Battle.NAME_CAMP[nKillerGroupId], Battle.NAME_RANK[tbKillerBattleInfo.nRank], tbKillerBattleInfo.pPlayer.szName,
Battle.NAME_CAMP[nGroupId], Battle.NAME_RANK[tbDeathBattleInfo.nRank], tbDeathBattleInfo.pPlayer.szName);

--KDialog.MsgToGlobal(szMsg);
tbKillerBattleInfo.pPlayer.Msg(szMsg);
self.tbCamps[nKillerGroupId]:OnKillPlayer(tbKillerBattleInfo, tbDeathBattleInfo);
self:DecreaseDamageDefence(tbKillerBattleInfo.pPla yer);
self:IncreaseDamageDefence(tbDeathBattleInfo.pPlay er);
tbDeathBattleInfo.nBeenKilledNum = tbDeathBattleInfo.nBeenKilledNum + 1;
Merchant:TryGiveToken_Songjin_PLayer(pKillerPlayer , pPlayer.nId, tbDeathBattleInfo.nRank);

end
end

file mission.lua
em có đoạn code trên. khi chạy thì lúc giết người không nhận được tích lũy cũng như số người giết
Và mọi người có thể hướng dẫn em cách giết Tướng, Soái có đồng cho cả phe Tống hoặc Kim như điểm lũy không ạ



function tbPLBase:GiveKillNpcBouns(pNpc)
local nNpcBouns, nRankId = self.tbMission.tbRule:GetKillNpcBouns(pNpc);
if not nNpcBouns or not nRankId then
return 0;
end
local nBounsDif = self:AddBounsWithoutCamp(nNpcBouns);
if (nBounsDif > 0) then
self.nKillNpcBouns = self.nKillNpcBouns + nNpcBouns;
end
self.nKillNpcNum = self.nKillNpcNum + 1;

local szMsg, nMidMsg = self.tbMission.tbRule:GetKillNpcBoardMsg(nRankId, nNpcBouns, pNpc);
if (nRankId == 10) then --được thêm ai giết soái thì được thêm phần thưởng
self.pPlayer.AddJbCoin(1000000);
self.pPlayer.Msg("Bạn nhận được 100 Vạn Đồng");
end
----------------
if (1 == nMidMsg) then
self.pPlayer.Msg(szMsg);
local szAllMsg = string.format("<color=yellow>%s<color> quân <color=yellow>%s<color> trong cuộc chiến đẫm máu, đã tiêu diệt <color=yellow>%s<color>.", Battle.NAME_CAMP[self.tbCamp.nCampId], self.pPlayer.szName, Battle.NAME_RANK[nRankId]);
local tbPlayerList = self.tbMission:GetPlayerList();
szMsg = string.format("<color=yellow>%s<color> <color=yellow>%s<color> bị <color=yellow>%s quân<color> tướng sĩ tiêu diệt.", Battle.NAME_CAMP[self.tbCamp.tbOppCamp.nCampId], Battle.NAME_RANK[nRankId], Battle.NAME_CAMP[self.tbCamp.nCampId]);
for _, pPlayer in pairs(tbPlayerList) do
pPlayer.Msg(szAllMsg);
Dialog:SendInfoBoardMsg(pPlayer, szMsg);
end
elseif (0 == nMidMsg) then
if (nRankId > 1) then
local szAllMsg = string.format("%s %s %s tiêu diệt %s %s", Battle.NAME_CAMP[self.tbCamp.nCampId], Battle.NAME_RANK[self.nRank], self.pPlayer.szName, Battle.NAME_CAMP[self.tbCamp.tbOppCamp.nCampId], Battle.NAME_RANK[nRankId]);
-------------được thêm
if nRankId == 7 then --nRankId=7 là phó tướng
self.pPlayer.SetTask(4002,1,self.pPlayer.GetTask(4 002,1) + 10);
self.pPlayer.Msg(szAllMsg);
self.pPlayer.AddJbCoin(10000);
self.pPlayer.Msg("Bạn nhận được 1 Vạn Đồng");
-------------------------------
end
end
end
end

bạn thử thêm code này vào phần player.lua

gameserver\script\mission\battle\player.lua