PDA

View Full Version : [KT] Lỗi NPC Tống Kim.. Không vào được tống kim khi di lần 2



hxhhxhz
23-10-16, 09:36 PM
a cho e hõi lỗi này với ạ

<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>

e đi dc 1 trận tống kim gia dụ quan xong ra..

típ tục đi trận thứ 2 nhưng khi click zô npc nó báo thế này ạ

mong a giúp e với...


-- ļУξű
-- zhouchenfei create 2007-09-17

local tbNpc = Npc:GetClass("mubingxiaowei");

function tbNpc:Init()
if (self.tbMapNpc) then -- ֧
return;
end

local tbMapNpc = {}; -- ͨͼIdѰļУξ
for nLevel, tbMId in pairs(Battle.MAPID_LEVEL_CAMP) do
for nBattleSeq, tbMapId in pairs(tbMId) do
for nCampId, nMapId in pairs(tbMapId) do
tbMapNpc[nMapId] = Lib:NewClass(Battle.tbNpcBase, nMapId, nLevel, nCampId, nBattleSeq);
end
end
end

self.tbMapNpc = tbMapNpc;
end

-- ļУξԻ
function tbNpc:OnDialog()
local tbNpc = self.tbMapNpc[him.nMapId];

tbNpc:OnDialog();
end

-- һļУξĻ
local tbNpcBase = Battle.tbNpcBase or {}; -- ֧

tbNpcBase.tbBattleSeq = {" 1", " Nhị", " 3"};

function tbNpcBase:init(nMapId, nLevel, nCampId, nBattleSeq)
self.nMapId = nMapId;
self.nLevel = nLevel;
self.nCampId = nCampId;
self.nBattleSeq = nBattleSeq;
self.tbDialog = Battle.tbCampDialog[self.nCampId];
end

-- ˢ£ʹӵӦӪ
function tbNpcBase:Refresh()
local tbMission = Battle:GetMission(self.nLevel, self.nBattleSeq);
if (tbMission) then
self.tbMission = tbMission;
self.tbCamp = tbMission.tbCamps[self.nCampId];
else
self.tbMission = nil;
self.tbCamp = nil;
end
end

function tbNpcBase:OnDialog()
self:Refresh();

if (me.IsFreshPlayer() == 1) then
Dialog:Say("Bạn chưa gia nhập môn phái, gia nhập rồi hãy quay lại!");
return;
end

if not GLOBAL_AGENT then
if (0 == self:AwardGood()) then
return;
end
end

Battle:DbgOut("tbNpcBase:OnDialog", self, self.nMapId, self.tbMission);
if (not self.tbMission) then
Dialog:Say("Đại quân tuần tra chiến trường vẫn chưa xuất phát, hãy tiếp tục thao luyện và đợi thông báo.");
return;
end

if (0 == self:CheckMaxNum()) then
Dialog:Say(self.tbDialog[1]);
return;
end
local pPlayer = me;
local nCheckResult = self:CheckPlayer();
if (1 == nCheckResult) then
local nPLLevel = Battle.LEVEL_LIMIT[self.nLevel];
Dialog:Say(string.format(self.tbDialog[2], nPLLevel),
{
{string.format("Ta muốn gia nhập quân <color=red>%s<color>", Battle.NAME_CAMP[self.nCampId]), self.OnSingleJoin, self, pPlayer},
{"Để ta suy nghĩ đã"},
}
);
elseif (2 == nCheckResult) then
Dialog:Say("Ngươi muốn vào chiến trường bây giờ sao? Lúc chiến đấu, ngươi và người khác hợp thành tổ đội giết địch, một công đôi việc.",
{
{"Ta muốn vào chiến trường", self.OnSingleJoin, self, pPlayer},
{"Chờ chút hãy nói"},
}
);
end
end

-- һνսĻֶӦĽ1ʾ0ʾü
function tbNpcBase:AwardGood()
-- жǷܸ轱
local pPlayer = me;
if (self.tbMission) then
local nCampId = pPlayer.GetTask(Battle.TSKGID, Battle.TASKID_BTCAMP);
local nMyBTKey = pPlayer.GetTask(Battle.TSKGID, Battle.TSK_BTPLAYER_KEY);
local nBTKey = self.tbMission.nBattleKey;
local nDiaFlag = 0;

local nBattleSeqA = math.fmod(nMyBTKey, 10);
local nBattleSeqB = math.fmod(nBTKey, 10);
local nBattleTimeA = nMyBTKey - nBattleSeqA;
local nBattleTimeB = nBTKey - nBattleSeqB;

-- idһʾͬһʱβͬΣDzͬһʱ
if (nMyBTKey ~= nBTKey) then
-- ͬһʱεıʾҿܴһγ
if (nBattleTimeA == nBattleTimeB) then
nDiaFlag = 1;
end
else -- ͬid
-- սֿʼ˾ͲˣֱӼԻ
if (self.tbMission.nState == 2) then
return 1;
end
-- ͬһȴͬһӪ
if (0 ~= nCampId and self.nCampId ~= nCampId) then
nDiaFlag = 2;
end
end

if (nDiaFlag == 1) then
Dialog:Say(string.format(self.tbDialog[8], Battle.NAME_GAMELEVEL[self.nLevel], self.tbBattleSeq[nBattleSeqA], Battle.NAME_CAMP[nCampId]));
return 0;
elseif (nDiaFlag == 2) then
Dialog:Say(self.tbDialog[5]);
return 0;
end
end

--local nAwardPai = pPlayer.GetTask(Battle.TSKGID, Battle.TSK_BTPLAYER_ZHANCHANGLINGPAI);
--local nAwardFu = pPlayer.GetTask(Battle.TSKGID, Battle.TSK_BTPLAYER_FUDAI);
--local nBouns = pPlayer.GetTask(Battle.TSKGID, Battle.TSK_BTPLAYER_TOTALBOUNS);

--if (nAwardPai + nAwardFu + nBouns > 0) then
--local nPaiCount = 0;
--local nFuCount = 0;
--local szMsg = string.format("Điểm tích lũy chiến trường lần trước của ngươi là %d", nBouns);
--local nFinalBouns = 0;

--if (nBouns > 0) then
--nFinalBouns = nBouns;
--local nMyUse = pPlayer.GetTask(Battle.TSKGID, Battle.TSK_BTPLAYER_USEBOUNS);
--if (nMyUse + nBouns > Battle.BATTLES_POINT2EXP_MAXEXP) then
--nFinalBouns = Battle.BATTLES_POINT2EXP_MAXEXP - nMyUse;
--end
--end
--if (nFinalBouns > 0) then
--szMsg = szMsg .. string.format(", có thể nhận %d điểm phần thưởng kinh nghiệm", nFinalBouns);
--elseif (nFinalBouns == 0 and nBouns > 0) then
--szMsg = szMsg .. string.format(", điểm tích lũy đổi kinh nghiệm tuần này của ngươi đã đạt giới hạn <color=yellow>500.000<color>, trong tuần không thể đổi kinh nghiệm nhưng vẫn nhận được phần thưởng điểm cống hiến gia tộc", nFinalBouns);
--end

--if (nAwardPai > 0 and nAwardFu > 0) then
--szMsg = szMsg .. string.format(", có thể nhận 1 Lệnh bài chiến trường %s và 2 Túi Phúc Hoàng Kim", Battle.NAME_GAMELEVEL[nAwardPai]);
--nPaiCount = 1;
--nFuCount = nAwardFu;
--elseif (nAwardFu > 0) then
--szMsg = szMsg .. ", có thể nhận 1 Túi Phúc";
--nFuCount = nAwardFu;
--end
--local tbOpt = {
--{"Đồng ý", self.OnAwardGood, self, pPlayer, nAwardPai, nPaiCount, nFuCount, nBouns, nFinalBouns},
--{"Nói tiếp đi"},
--};
--local _, _, szExtendInfo = SpecialEvent.ExtendAward:DoCheck("Battle", pPlayer, nBouns, self.nLevel);
--Dialog:Say(szMsg..szExtendInfo..", muốn nhận bây giờ?", tbOpt);
--return 0;
--end
--return 1;
end

--function tbNpcBase:OnAwardGood(pPlayer, nItemId, nPaiCount, nFuCount, nBouns, nFinalBouns)
--if (0 == Battle:AwardGood(pPlayer, nItemId, nPaiCount, nFuCount, nBouns, self.nLevel)) then
-- Ƶĵȼ
--pPlayer.Msg("Hành trang của bạn không đủ chỗ, không thể nhận phần thưởng");
--else
--local szMsg = string.format("Điểm tích lũy chiến trường lần trước của ngươi là %d", nBouns);
--if (nFinalBouns > 0) then
--szMsg = szMsg .. string.format(", đã nhận %d điểm phần thưởng kinh nghiệm", nFinalBouns);
--elseif (nFinalBouns == 0 and nBouns > 0) then
--szMsg = szMsg .. string.format(", điểm tích lũy đổi kinh nghiệm tuần này của ngươi đã đạt giới hạn <color=yellow>500.000<color>, trong tuần không thể đổi kinh nghiệm nhưng vẫn nhận được phần thưởng điểm cống hiến gia tộc", nFinalBouns);
--end
--if (nPaiCount > 0) then
--szMsg = szMsg .. string.format(", nhận được 1 %s <color=green>Lệnh bài chiến trường<color> và 2 <color=yellow>Túi Phúc Hoàng Kim<color>.", Battle.NAME_GAMELEVEL[nItemId]);
--elseif (nFuCount > 0) then
--szMsg = szMsg .. ", nhận được 1 <color=yellow>Túi Phúc Hoàng Kim<color>."
--end
--pPlayer.Msg(szMsg);
--end
--return;
--end

function tbNpcBase:CheckMaxNum()
local nMyCampCount = self.tbCamp:GetPlayerCount();
if (Battle.BTPLNUM_HIGHBOUND <= nMyCampCount) then
return 0;
end
return 1;
end

-- ҵĵȼӪ
-- ֵ0Ҳܽ룻1ұδԲμӣ2ұˣԽ
function tbNpcBase:CheckPlayer()
if (not self.tbMission) then
Dialog:Say("Đại quân tuần tra chiến trường vẫn chưa xuất phát, hãy tiếp tục thao luyện và đợi thông báo.");
return;
end

local pPlayer = me;

local nJoinLevel = Battle:GetJoinLevel(pPlayer);
local nCampId = pPlayer.GetTask(Battle.TSKGID, Battle.TASKID_BTCAMP);
local nFlag = 1;

local nMyBTKey = pPlayer.GetTask(Battle.TSKGID, Battle.TSK_BTPLAYER_KEY);
local nBTKey = self.tbMission.nBattleKey;
local nDiaFlag = 0;


local nBattleSeqA = math.fmod(nMyBTKey, 10);
local nBattleSeqB = math.fmod(nBTKey, 10);
local nBattleTimeA = nMyBTKey - nBattleSeqA;
local nBattleTimeB = nBTKey - nBattleSeqB;

if (nMyBTKey ~= nBTKey) then
if (nBattleTimeA == nBattleTimeB) then
nDiaFlag = 1;
end
else
if (0 ~= nCampId and self.nCampId ~= nCampId) then
nDiaFlag = 2;
elseif (0 ~= nCampId and self.nCampId == nCampId) then
nFlag = 2;
end
end

if (nFlag == 1) then
if (self.nLevel > nJoinLevel) then
local tbOpt = {
-- {"˽ս۵Ϣ", self.OnBattleInfo, self},
{"Được rồi"},
};
Dialog:Say("Trình độ của ngươi chưa đạt, hãy về cố gắng luyện tập sau này quay lại góp sức cho nước nhà!", tbOpt);
return 0;
end

if (pPlayer.IsFreshPlayer() == 1) then
Dialog:Say("Bạn chưa gia nhập môn phái, gia nhập rồi hãy quay lại!");
return 0;
end

if (self.nLevel < nJoinLevel) then --
Dialog:Say(string.format("Ngươi đã tinh thông võ nghệ, hãy đi tham gia chiến trường <color=yellow>%s<color>!", Battle.NAME_GAMELEVEL[nJoinLevel]));
return 0;
end
end

if (nDiaFlag == 1) then
Dialog:Say(string.format(self.tbDialog[8], Battle.NAME_GAMELEVEL[self.nLevel], self.tbBattleSeq[nBattleSeqA], Battle.NAME_CAMP[nCampId]));
return 0;
elseif (nDiaFlag == 2) then
Dialog:Say(self.tbDialog[5]);
return 0;
end

if (0 == self:CheckNumDif(self.nLevel)) then
local nSongNum = self.tbMission.tbCamps[Battle.CAMPID_SONG].nPlayerCount;
local nJinNum = self.tbMission.tbCamps[Battle.CAMPID_JIN].nPlayerCount;
local szMsg = string.format("Hiện tại quân số hai bên là: <color=orange>Tống: %d<color>, <color=purple>Kim: %d<color>, so với quân địch, ta tạm thời thiếu hụt quân số, ngươi hãy kiên nhẫn chờ đợi tí nữa quay lại.", nSongNum, nJinNum);
Dialog:Say(szMsg);
return 0;
end

return nFlag;
end

function tbNpcBase:CheckNumDif(nJoinLevel)
local nMyCampNum = self.tbCamp:GetPlayerCount();
local nEnemyCampNum = self.tbCamp.tbOppCamp:GetPlayerCount();
if (nMyCampNum < Battle.tbBTPLNUM_LOWBOUND[nJoinLevel]) then
return 1;
end
local nTemp = nMyCampNum - nEnemyCampNum;
local nDifNumLimit = math.max(Battle.BTPLNUM_NUMDIF, (nMyCampNum + nEnemyCampNum) * 0.1);
if (nTemp >= nDifNumLimit) then
return 0;
end
return 1;
end

-- ѡ˽ս
function tbNpcBase:OnSingleJoin(pPlayer)
self:Refresh();

if (0 == self:CheckPlayer()) then
return;
end

self:DoSingleJoin(pPlayer);
end


function tbNpcBase:OnNewEnter(pPlayer, nNowTime)
if (0 == self:CheckPlayer()) then
return;
end
self:DoSingleJoin(pPlayer);
Battle:ResetBonus(pPlayer, nNowTime);
end

-- ִս
function tbNpcBase:DoSingleJoin(pPlayer)
local pPlayerOld = me;
if (not self.tbMission) then -- 쳣
me = pPlayer;
Dialog:Say("Ngươi đã đến trễ, lần sau hãy quay lại");
me = pPlayerOld;
return;
elseif (self.tbMission.nState == 2) then -- սֿʼ
pPlayer.Msg(self.tbDialog[4]);
else -- սֻûʼ
me = pPlayer;
Dialog:Say(self.tbDialog[3]);
me = pPlayerOld;
end
if (self.tbMission.nState == 2) then -- սֿʼż¼Ӫսid
--¼ҲμνսĴ
local nBTKey = self.tbMission.nBattleKey;
local bIsDiffBattle = Battle:IsDiffBattle(pPlayer, nBTKey)
if (bIsDiffBattle and 1 == bIsDiffBattle) then
Stats.Activity:AddCount(pPlayer, Stats.TASK_COUNT_BATTLE, 1);
end

pPlayer.SetTask(Battle.TSKGID, Battle.TSK_BTPLAYER_KEY, self.tbMission.nBattleKey);
pPlayer.SetTask(Battle.TSKGID, Battle.TASKID_BTCAMP, self.nCampId);

end
self.tbMission:JoinPlayer(pPlayer, self.nCampId);
end

function tbNpcBase:OnBattleInfo() -- todo
self:Refresh();
end

Battle.tbNpcBase = tbNpcBase;

tbNpc:Init();

code của npc.. e để mặc định vẫn bị , e đã thử bỏ 1 số dòng nhưng vẫn zậy
mong cao nhân chỉ giáo ạ

hxhhxhz
24-10-16, 08:39 AM
a cho e hõi lỗi này với ạ

<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>

e đi dc 1 trận tống kim gia dụ quan xong ra..

Típ tục đi trận thứ 2 nhưng khi click zô npc nó báo thế này ạ

mong a giúp e với...


-- ļуξű
-- zhouchenfei create 2007-09-17

local tbnpc = npc:getclass("mubingxiaowei");

function tbnpc:init()
if (self.tbmapnpc) then -- ֧
return;
end

local tbmapnpc = {}; -- ͨͼidѱļуξ
for nlevel, tbmid in pairs(battle.mapid_level_camp) do
for nbattleseq, tbmapid in pairs(tbmid) do
for ncampid, nmapid in pairs(tbmapid) do
tbmapnpc[nmapid] = lib:newclass(battle.tbnpcbase, nmapid, nlevel, ncampid, nbattleseq);
end
end
end

self.tbmapnpc = tbmapnpc;
end

-- ļуξի
function tbnpc:ondialog()
local tbnpc = self.tbmapnpc[him.nmapid];

tbnpc:ondialog();
end

-- һļуξļ
local tbnpcbase = battle.tbnpcbase or {}; -- ֧

tbnpcbase.tbbattleseq = {" 1", " nhị", " 3"};

function tbnpcbase:init(nmapid, nlevel, ncampid, nbattleseq)
self.nmapid = nmapid;
self.nlevel = nlevel;
self.ncampid = ncampid;
self.nbattleseq = nbattleseq;
self.tbdialog = battle.tbcampdialog[self.ncampid];
end

-- ˢ£ʹӵӧӫ
function tbnpcbase:refresh()
local tbmission = battle:getmission(self.nlevel, self.nbattleseq);
if (tbmission) then
self.tbmission = tbmission;
self.tbcamp = tbmission.tbcamps[self.ncampid];
else
self.tbmission = nil;
self.tbcamp = nil;
end
end

function tbnpcbase:ondialog()
self:refresh();

if (me.isfreshplayer() == 1) then
dialog:say("bạn chưa gia nhập môn phái, gia nhập rồi hãy quay lại!");
return;
end

if not global_agent then
if (0 == self:awardgood()) then
return;
end
end

battle:dbgout("tbnpcbase:ondialog", self, self.nmapid, self.tbmission);
if (not self.tbmission) then
dialog:say("đại quân tuần tra chiến trường vẫn chưa xuất phát, hãy tiếp tục thao luyện và đợi thông báo.");
return;
end

if (0 == self:checkmaxnum()) then
dialog:say(self.tbdialog[1]);
return;
end
local pplayer = me;
local ncheckresult = self:checkplayer();
if (1 == ncheckresult) then
local npllevel = battle.level_limit[self.nlevel];
dialog:say(string.format(self.tbdialog[2], npllevel),
{
{string.format("ta muốn gia nhập quân <color=red>%s<color>", battle.name_camp[self.ncampid]), self.onsinglejoin, self, pplayer},
{"để ta suy nghĩ đã"},
}
);
elseif (2 == ncheckresult) then
dialog:say("ngươi muốn vào chiến trường bây giờ sao? Lúc chiến đấu, ngươi và người khác hợp thành tổ đội giết địch, một công đôi việc.",
{
{"ta muốn vào chiến trường", self.onsinglejoin, self, pplayer},
{"chờ chút hãy nói"},
}
);
end
end

-- һνսļֶӧľ1ʾ0ʾü
function tbnpcbase:awardgood()
-- жƿܸ轱
local pplayer = me;
if (self.tbmission) then
local ncampid = pplayer.gettask(battle.tskgid, battle.taskid_btcamp);
local nmybtkey = pplayer.gettask(battle.tskgid, battle.tsk_btplayer_key);
local nbtkey = self.tbmission.nbattlekey;
local ndiaflag = 0;

local nbattleseqa = math.fmod(nmybtkey, 10);
local nbattleseqb = math.fmod(nbtkey, 10);
local nbattletimea = nmybtkey - nbattleseqa;
local nbattletimeb = nbtkey - nbattleseqb;

-- idһʾͬһʱβͬσDzͬһʱ
if (nmybtkey ~= nbtkey) then
-- ͬһʱεıʾҿܴһγ
if (nbattletimea == nbattletimeb) then
ndiaflag = 1;
end
else -- ͬid
-- սֿʼ˾ͲˣֱӼի
if (self.tbmission.nstate == 2) then
return 1;
end
-- ͬһȴͬһӫ
if (0 ~= ncampid and self.ncampid ~= ncampid) then
ndiaflag = 2;
end
end

if (ndiaflag == 1) then
dialog:say(string.format(self.tbdialog[8], battle.name_gamelevel[self.nlevel], self.tbbattleseq[nbattleseqa], battle.name_camp[ncampid]));
return 0;
elseif (ndiaflag == 2) then
dialog:say(self.tbdialog[5]);
return 0;
end
end

--local nawardpai = pplayer.gettask(battle.tskgid, battle.tsk_btplayer_zhanchanglingpai);
--local nawardfu = pplayer.gettask(battle.tskgid, battle.tsk_btplayer_fudai);
--local nbouns = pplayer.gettask(battle.tskgid, battle.tsk_btplayer_totalbouns);

--if (nawardpai + nawardfu + nbouns > 0) then
--local npaicount = 0;
--local nfucount = 0;
--local szmsg = string.format("điểm tích lũy chiến trường lần trước của ngươi là %d", nbouns);
--local nfinalbouns = 0;

--if (nbouns > 0) then
--nfinalbouns = nbouns;
--local nmyuse = pplayer.gettask(battle.tskgid, battle.tsk_btplayer_usebouns);
--if (nmyuse + nbouns > battle.battles_point2exp_maxexp) then
--nfinalbouns = battle.battles_point2exp_maxexp - nmyuse;
--end
--end
--if (nfinalbouns > 0) then
--szmsg = szmsg .. String.format(", có thể nhận %d điểm phần thưởng kinh nghiệm", nfinalbouns);
--elseif (nfinalbouns == 0 and nbouns > 0) then
--szmsg = szmsg .. String.format(", điểm tích lũy đổi kinh nghiệm tuần này của ngươi đã đạt giới hạn <color=yellow>500.000<color>, trong tuần không thể đổi kinh nghiệm nhưng vẫn nhận được phần thưởng điểm cống hiến gia tộc", nfinalbouns);
--end

--if (nawardpai > 0 and nawardfu > 0) then
--szmsg = szmsg .. String.format(", có thể nhận 1 lệnh bài chiến trường %s và 2 túi phúc hoàng kim", battle.name_gamelevel[nawardpai]);
--npaicount = 1;
--nfucount = nawardfu;
--elseif (nawardfu > 0) then
--szmsg = szmsg .. ", có thể nhận 1 túi phúc";
--nfucount = nawardfu;
--end
--local tbopt = {
--{"đồng ý", self.onawardgood, self, pplayer, nawardpai, npaicount, nfucount, nbouns, nfinalbouns},
--{"nói tiếp đi"},
--};
--local _, _, szextendinfo = specialevent.extendaward:docheck("battle", pplayer, nbouns, self.nlevel);
--dialog:say(szmsg..szextendinfo..", muốn nhận bây giờ?", tbopt);
--return 0;
--end
--return 1;
end

--function tbnpcbase:onawardgood(pplayer, nitemid, npaicount, nfucount, nbouns, nfinalbouns)
--if (0 == battle:awardgood(pplayer, nitemid, npaicount, nfucount, nbouns, self.nlevel)) then
-- ƶĵȼ
--pplayer.msg("hành trang của bạn không đủ chỗ, không thể nhận phần thưởng");
--else
--local szmsg = string.format("điểm tích lũy chiến trường lần trước của ngươi là %d", nbouns);
--if (nfinalbouns > 0) then
--szmsg = szmsg .. String.format(", đã nhận %d điểm phần thưởng kinh nghiệm", nfinalbouns);
--elseif (nfinalbouns == 0 and nbouns > 0) then
--szmsg = szmsg .. String.format(", điểm tích lũy đổi kinh nghiệm tuần này của ngươi đã đạt giới hạn <color=yellow>500.000<color>, trong tuần không thể đổi kinh nghiệm nhưng vẫn nhận được phần thưởng điểm cống hiến gia tộc", nfinalbouns);
--end
--if (npaicount > 0) then
--szmsg = szmsg .. String.format(", nhận được 1 %s <color=green>lệnh bài chiến trường<color> và 2 <color=yellow>túi phúc hoàng kim<color>.", battle.name_gamelevel[nitemid]);
--elseif (nfucount > 0) then
--szmsg = szmsg .. ", nhận được 1 <color=yellow>túi phúc hoàng kim<color>."
--end
--pplayer.msg(szmsg);
--end
--return;
--end

function tbnpcbase:checkmaxnum()
local nmycampcount = self.tbcamp:getplayercount();
if (battle.btplnum_highbound <= nmycampcount) then
return 0;
end
return 1;
end

-- ҵĵȼӫ
-- ֵ0ҳܽ룻1ұδբμӣ2ұˣխ
function tbnpcbase:checkplayer()
if (not self.tbmission) then
dialog:say("đại quân tuần tra chiến trường vẫn chưa xuất phát, hãy tiếp tục thao luyện và đợi thông báo.");
return;
end

local pplayer = me;

local njoinlevel = battle:getjoinlevel(pplayer);
local ncampid = pplayer.gettask(battle.tskgid, battle.taskid_btcamp);
local nflag = 1;

local nmybtkey = pplayer.gettask(battle.tskgid, battle.tsk_btplayer_key);
local nbtkey = self.tbmission.nbattlekey;
local ndiaflag = 0;


local nbattleseqa = math.fmod(nmybtkey, 10);
local nbattleseqb = math.fmod(nbtkey, 10);
local nbattletimea = nmybtkey - nbattleseqa;
local nbattletimeb = nbtkey - nbattleseqb;

if (nmybtkey ~= nbtkey) then
if (nbattletimea == nbattletimeb) then
ndiaflag = 1;
end
else
if (0 ~= ncampid and self.ncampid ~= ncampid) then
ndiaflag = 2;
elseif (0 ~= ncampid and self.ncampid == ncampid) then
nflag = 2;
end
end

if (nflag == 1) then
if (self.nlevel > njoinlevel) then
local tbopt = {
-- {"˽ս۵ϣ", self.onbattleinfo, self},
{"được rồi"},
};
dialog:say("trình độ của ngươi chưa đạt, hãy về cố gắng luyện tập sau này quay lại góp sức cho nước nhà!", tbopt);
return 0;
end

if (pplayer.isfreshplayer() == 1) then
dialog:say("bạn chưa gia nhập môn phái, gia nhập rồi hãy quay lại!");
return 0;
end

if (self.nlevel < njoinlevel) then --
dialog:say(string.format("ngươi đã tinh thông võ nghệ, hãy đi tham gia chiến trường <color=yellow>%s<color>!", battle.name_gamelevel[njoinlevel]));
return 0;
end
end

if (ndiaflag == 1) then
dialog:say(string.format(self.tbdialog[8], battle.name_gamelevel[self.nlevel], self.tbbattleseq[nbattleseqa], battle.name_camp[ncampid]));
return 0;
elseif (ndiaflag == 2) then
dialog:say(self.tbdialog[5]);
return 0;
end

if (0 == self:checknumdif(self.nlevel)) then
local nsongnum = self.tbmission.tbcamps[battle.campid_song].nplayercount;
local njinnum = self.tbmission.tbcamps[battle.campid_jin].nplayercount;
local szmsg = string.format("hiện tại quân số hai bên là: <color=orange>tống: %d<color>, <color=purple>kim: %d<color>, so với quân địch, ta tạm thời thiếu hụt quân số, ngươi hãy kiên nhẫn chờ đợi tí nữa quay lại.", nsongnum, njinnum);
dialog:say(szmsg);
return 0;
end

return nflag;
end

function tbnpcbase:checknumdif(njoinlevel)
local nmycampnum = self.tbcamp:getplayercount();
local nenemycampnum = self.tbcamp.tboppcamp:getplayercount();
if (nmycampnum < battle.tbbtplnum_lowbound[njoinlevel]) then
return 1;
end
local ntemp = nmycampnum - nenemycampnum;
local ndifnumlimit = math.max(battle.btplnum_numdif, (nmycampnum + nenemycampnum) * 0.1);
if (ntemp >= ndifnumlimit) then
return 0;
end
return 1;
end

-- ѡ˽ս
function tbnpcbase:onsinglejoin(pplayer)
self:refresh();

if (0 == self:checkplayer()) then
return;
end

self:dosinglejoin(pplayer);
end


function tbnpcbase:onnewenter(pplayer, nnowtime)
if (0 == self:checkplayer()) then
return;
end
self:dosinglejoin(pplayer);
battle:resetbonus(pplayer, nnowtime);
end

-- ִս
function tbnpcbase:dosinglejoin(pplayer)
local pplayerold = me;
if (not self.tbmission) then -- 쳣
me = pplayer;
dialog:say("ngươi đã đến trễ, lần sau hãy quay lại");
me = pplayerold;
return;
elseif (self.tbmission.nstate == 2) then -- սֿʼ
pplayer.msg(self.tbdialog[4]);
else -- սֻûʼ
me = pplayer;
dialog:say(self.tbdialog[3]);
me = pplayerold;
end
if (self.tbmission.nstate == 2) then -- սֿʼż¼ӫսid
--¼ҳμνսĵ
local nbtkey = self.tbmission.nbattlekey;
local bisdiffbattle = battle:isdiffbattle(pplayer, nbtkey)
if (bisdiffbattle and 1 == bisdiffbattle) then
stats.activity:addcount(pplayer, stats.task_count_battle, 1);
end

pplayer.settask(battle.tskgid, battle.tsk_btplayer_key, self.tbmission.nbattlekey);
pplayer.settask(battle.tskgid, battle.taskid_btcamp, self.ncampid);

end
self.tbmission:joinplayer(pplayer, self.ncampid);
end

function tbnpcbase:onbattleinfo() -- todo
self:refresh();
end

battle.tbnpcbase = tbnpcbase;

tbnpc:init();

code của npc.. E để mặc định vẫn bị , e đã thử bỏ 1 số dòng nhưng vẫn zậy
mong cao nhân chỉ giáo ạ
upssssssssssssssssssssssssssssssssssssssssssssssss sssssssssssssss

tuidangvui
24-10-16, 09:00 AM
<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>

hxhhxhz
24-10-16, 09:18 AM
<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>

e lấy 3 sever, sever nào cũng thay qua và bị ..
k bjt có khi do time fime k ạ

tuidangvui
24-10-16, 09:21 AM
lấy file của sv shinichi bỏ qua thử

hxhhxhz
24-10-16, 09:28 AM
lấy file của sv shinichi bỏ qua thử

e là e k bjt này là lỗi do npc hay lỗi do scrip phần thưởng đó a

tuidangvui
24-10-16, 09:32 AM
ác, nếu xào nấu phần thưởng thì thua, trước h thường thích ngâm nguyên gốc, nên ko rõ mấy cái chế biến thêm :(

hxhhxhz
24-10-16, 09:33 AM
ác, nếu xào nấu phần thưởng thì thua, trước h thường thích ngâm nguyên gốc, nên ko rõ mấy cái chế biến thêm :(

e chỉ chỉnh phần thưởng theo hạng thôi a.. còn lại để nguyên
nhưng sever của e full 89 ..
nên e k bjt nó bị sao nữa

tuidangvui
24-10-16, 09:43 AM
Cũng đang bị lỗi TK, do thử xào nấu sao đó, h ko vào dc TK luôn, ghét bỏ luôn, ko ngâm nữa =)), chép lại file gốc ban đầu, vào lại TK bình thường, fẻ, ko dám dụng nữa, hại não quá :((

hxhhxhz
24-10-16, 09:46 AM
Cũng đang bị lỗi TK, do thử xào nấu sao đó, h ko vào dc TK luôn, ghét bỏ luôn, ko ngâm nữa =)), chép lại file gốc ban đầu, vào lại TK bình thường, fẻ, ko dám dụng nữa, hại não quá :((

<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>

hxhhxhz
24-10-16, 09:55 AM
Cũng đang bị lỗi TK, do thử xào nấu sao đó, h ko vào dc TK luôn, ghét bỏ luôn, ko ngâm nữa =)), chép lại file gốc ban đầu, vào lại TK bình thường, fẻ, ko dám dụng nữa, hại não quá :((

đã thay hết mà vẫn bị a ơi :(
-------------------------------------------------