PDA

View Full Version : [KT] Lỗi Đánh Xong Boss Thủ Lĩnh Bạch Hổ Đường 1 mà không qua được 2



rinnegan
09-12-14, 05:26 AM
Mình đang đi bhd Hoàng Kim
Đã mở các map
821 0 0 0 0 0 4 0 Đại điện Bạch Hổ Đường (cao)
822 0 0 0 0 0 4 0 Bạch Hổ 1_Đông (Hoàng Kim)
823 0 0 0 0 0 4 0 Bạch Hổ 1_Nam (Hoàng Kim)
824 0 0 0 0 0 4 0 Bạch Hổ 1_Tây (Hoàng Kim)
825 0 0 0 0 0 4 0 Bạch Hổ 1_Bắc (Hoàng Kim)
826 0 0 0 0 0 4 0 Bạch Hổ 2_Âm (Hoàng Kim)
827 0 0 0 0 0 4 0 Bạch Hổ 2_Dương (Hoàng Kim)
828 0 0 0 0 0 4 0 Bạch Hổ 3 (Hoàng Kim)
<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>
Có mở lối vào bạch hổ đường 2 rồi mà chạy lại đó nó hok đưa sang. đã thế nó còn thêm phần thưởng qua ải liên tục mới vui chứ.
em cũng hok biết sữa sao nữa. đây là file baihutang_def.lua


BaiHuTang.TSKG_PVP_ACT = 2009;
BaiHuTang.TSK_BaiHuTang_PKTIMES = 1;
BaiHuTang.MAX_ONDDAY_PKTIMES = EventManager.IVER_nBaiHuTangCount;
BaiHuTang.SIX_NUMBERS = 1000000;

BaiHuTang.TIMELEFT = Env.GAME_FPS * 60 * 30;

BaiHuTang.nTimes = 1; --平台开启奖励倍数

BaiHuTang.RESTSTATE = 0; -- 0 无活动状态
BaiHuTang.APPLYSTATE = 1; -- 1 报名状态
BaiHuTang.FIGHTSTATE = 2; -- 2 PK状态
BaiHuTang.nActionState = 0;

BaiHuTang.nTaskId = 0;

BaiHuTang.ChuJi = 225;
BaiHuTang.ChuJi2 = 274;
BaiHuTang.ChuJi3 = 333;
BaiHuTang.GaoJi = 233;
BaiHuTang.Goldlen = 821;
BaiHuTang.tbMapList = {225, 274, 233, 821};

BaiHuTang.tbIsOpen = {};
BaiHuTang.nRegisterId = nil;
BaiHuTang.nRegisterIdLeft = nil;
BaiHuTang.nBossNo = nil;
BaiHuTang.tbDaDianPos = {};
BaiHuTang.tbPKPos = {};
BaiHuTang.tbMapKey = {};
BaiHuTang.tbTrapList = {};
BaiHuTang.tbSysMsg = {};
BaiHuTang.tbAnimalPos = {};
BaiHuTang.tbNumber = {};
BaiHuTang.tbMapId = {};
BaiHuTang.tbBatte = {};
BaiHuTang.tbNpcLevel = {45, 55, 65, 85, 95, 105, 110, 115, 120};
BaiHuTang.tbBossShowMsg = {3, 4, 5};
BaiHuTang.TSKGID = 2009;
BaiHuTang.TASK_USED_NUM = 3;
BaiHuTang.TASK_WEEK_ID = 4;

BaiHuTang.TSK_LIMITWEIWANG = 2;
BaiHuTang.LIMITWEIWANG = 30;

BaiHuTang.BAIHUTANG_REPUTE_CAMP = 5;
BaiHuTang.BAIHUTANG_REPUTE_CALSS= 1;

BaiHuTang.nStateJour = 0;
BaiHuTang.END = 7;

BaiHuTang.tbGetAwardCount = {};

-- 队长的领袖荣誉
BaiHuTang.HONOR ={{[3] = 6, [4] = 9, [5] = 12, [6] = 15}, -- 第一关
{[3] = 6, [4] = 9, [5] = 12, [6] = 15}, -- 第二关
{[3] = 12, [4] = 18, [5] = 24, [6] = 30}, -- 第三关
};

BaiHuTang.STATE_TRANS =
{ --时间有延迟
-- 状态 定时时间 时间到回调函数(函数返回0表示不在继 续定时,结束活动)
{1, Env.GAME_FPS * 60 * 10, "ShowGongGao" }, -- 显示公告
{2, Env.GAME_FPS * 60 * 10, "ShowGongGao" }, -- 显示公告
{3, Env.GAME_FPS * 60 * 5, "ShowGongGao" }, -- 显示公告
{4, Env.GAME_FPS * 60 * 12, "CallBoss" }, -- Call 第一层BOSS
{5, Env.GAME_FPS * 60 * 9, "CallBoss" }, -- Call 第二层BOSS
{6, Env.GAME_FPS * 60 * 9, "CallBoss" }, -- Call 第三层BOSS
{BaiHuTang.END}
};

BaiHuTang.szApplyMsg = "Khiêu chiến Bạch Hổ Đường đã bắt đầu báo danh, Các nhận vật có đẳng cấp trên 50 có thể đến các thành thị lớn để tham gia khiêu chiến.";

function BaiHuTang:OnPlayerTrap(nMapId)
if (self.tbIsOpen[nMapId] ~= 1) then
return;
end

-- 添加福袋
if me.CountFreeBagCell() >= 1 then
me.AddExp(20000000)
me.AddItem(18,1,80,1);--Túi Phúc Hoàng Kim
me.AddStackItem(18,1,1335,1,self.tbItemInfo,10);--5 chân nguyên tu luyện đơn
me.AddStackItem(18,1,1334,1,self.tbItemInfo,10);--5 Thánh linh bảo hạp hồn
me.AddStackItem(18,1,1334,1,self.tbItemInfo,10);--5 Thánh linh bảo hạp hồn
me.AddItem(18,1,2100,1).Bind(1);-- 1 Cuốc
me.AddItem(18,1,2076,1).Bind(1);-- 1 Gậy Đập Bóng (Thường)
--me.AddItem(18,10,11,2).Bind(2);-- Tien Xu
me.AddBindCoin(500000);--50v đồng khóa
--me.AddExp(100000000);
else
me.Msg("Hành trang đầy, không nhận được <color=yellow>túi phúc hoàng kim<color>");
end


--闯关成功,添加10点声望
local nTang = BaiHuTang:GetFloor(nMapId);
-- điểm phúc duyên
--local nPhucDuyen = nTang*50;
-- self:AddRepute(me, nPhucDuyen);
-- me.Msg(string.format("Qua Ải Thành Công Nhận <color=gold>%s Điểm Phúc Duyên<color>",nPhucDuyen));
self:AddRepute(me, 10);
local nPrestige = 1;
if BaiHuTang:GetLevelByMapId(nMapId) == 1 and TimeFrame:GetStateGS("OpenOneAdvBaiHuTang") == 1 then
nPrestige = math.floor(nPrestige / 2);
end
me.AddKinReputeEntry(nPrestige, "baihutang") -- 江湖威望
me.AddOfferEntry(10, WeeklyTask.GETOFFER_TYPE_BAIHUTANG); -- 每通过一层增加10点贡献度

-- 增加帮会建设资金和相应个人、族长� �帮主的股份
local nStockBaseCount = 10; -- 股份基数
Tong:AddStockBaseCount_GS1(me.nId, nStockBaseCount, 0.7, 0.2, 0.1, 0, 0, WeeklyTask.GETOFFER_TYPE_BAIHUTANG);
local nLevel = BaiHuTang:GetLevelByMapId(nMapId);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTang", me, nLevel, BaiHuTang:GetFloor(nMapId))
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
local nToMapId = self.tbMapKey[nMapId];
-- 踢出mission
if (nToMapId == 225 or nToMapId == 233 or nToMapId == 274 or nToMapId ==821) then
BaiHuTang:KickOutMission(me, nToMapId);
end
if (nToMapId) then
local tbSect = self.tbPKPos[MathRandom(#self.tbPKPos)];
me.NewWorld(nToMapId, tbSect.nX / 32, tbSect.nY / 32);
end
end

function BaiHuTang:SetTrapList()
self.tbMapKey[226] = 230; self.tbMapKey[228] = 230;
self.tbMapKey[234] = 238; self.tbMapKey[236] = 238;
self.tbMapKey[227] = 231; self.tbMapKey[229] = 231;
self.tbMapKey[235] = 239; self.tbMapKey[237] = 239;
self.tbMapKey[230] = 232; self.tbMapKey[231] = 232;
self.tbMapKey[238] = 240; self.tbMapKey[239] = 240;
self.tbMapKey[232] = 225; self.tbMapKey[240] = 233;
-- 初级第二场
self.tbMapKey[275] = 279; self.tbMapKey[277] = 279;
self.tbMapKey[276] = 280; self.tbMapKey[278] = 280;
self.tbMapKey[279] = 281; self.tbMapKey[280] = 281;
self.tbMapKey[281] = 274;

-- 初级第三场
self.tbMapKey[334] = 338; self.tbMapKey[336] = 338;
self.tbMapKey[335] = 339; self.tbMapKey[337] = 339;
self.tbMapKey[338] = 340; self.tbMapKey[339] = 340;
self.tbMapKey[340] = 333;

--黄金白虎堂
self.tbMapKey[822] = 826; self.tbMapKey[823] = 826;
self.tbMapKey[824] = 827; self.tbMapKey[825] = 827;
self.tbMapKey[826] = 828; self.tbMapKey[827] = 828;
self.tbMapKey[828] = 821;

local tbTestTrap = {};
local tbTest = {};
local tbMapIdList = {226,227,228,229,230,231,232,235,234,236,237,238,2 39,240,
275, 276, 277, 278, 279, 280, 281,
334, 335, 336, 337, 338, 339, 340,
822, 823, 824, 825, 826, 827, 828,
};
for _, nIndex in ipairs(tbMapIdList) do
tbTest = Map:GetClass(nIndex);
tbTestTrap = tbTest:GetTrapClass("to_exit");
if (tbTestTrap) then
tbTestTrap.OnPlayer = function (self)
BaiHuTang:OnPlayerTrap(nIndex);
end
end
if (tbTestTrap) then
table.insert(self.tbTrapList, tbTestTrap);
end
end
end

local tbChuJiMap = Map:GetClass(BaiHuTang.ChuJi); -- 初级(1)
local tbChuJiMap2 = Map:GetClass(BaiHuTang.ChuJi2); -- 初级(2)
local tbChuJiMap3 = Map:GetClass(BaiHuTang.ChuJi3); -- 初级(3)

--进入大殿就为战斗状态
function tbChuJiMap:OnEnter(szParam)
me.SetFightState(1); --设置战斗状态
me.nPkModel = Player.emKPK_STATE_PRACTISE;
end
--离开时设回非战斗状态
function tbChuJiMap:OnLeave(szParam)
me.SetFightState(0); --设置战斗状态
me.nPkModel = Player.emKPK_STATE_PRACTISE;
end
--进入大殿就为战斗状态
function tbChuJiMap2:OnEnter(szParam)
me.SetFightState(1); --设置战斗状态
me.nPkModel = Player.emKPK_STATE_PRACTISE;
end
--离开时设回非战斗状态
function tbChuJiMap2:OnLeave(szParam)
me.SetFightState(0); --设置战斗状态
me.nPkModel = Player.emKPK_STATE_PRACTISE;
end

--进入大殿就为战斗状态
function tbChuJiMap3:OnEnter(szParam)
me.SetFightState(1); --设置战斗状态
me.nPkModel = Player.emKPK_STATE_PRACTISE;
end
--离开时设回非战斗状态
function tbChuJiMap3:OnLeave(szParam)
me.SetFightState(0); --设置战斗状态
me.nPkModel = Player.emKPK_STATE_PRACTISE;
end

local tbGaoJi = Map:GetClass(BaiHuTang.GaoJi);
--进入大殿就为战斗状态
function tbGaoJi:OnEnter(szParam)
me.nPkModel = Player.emKPK_STATE_PRACTISE;
me.SetFightState(1); --设置战斗状态
end

--离开时设回非战斗状态
function tbGaoJi:OnLeave(szParam)
me.nPkModel = Player.emKPK_STATE_PRACTISE;
me.SetFightState(0); --设置战斗状态
end

local tbGoldlen = Map:GetClass(BaiHuTang.Goldlen);
--进入大殿就为战斗状态
function tbGoldlen:OnEnter(szParam)
me.nPkModel = Player.emKPK_STATE_PRACTISE;
me.SetFightState(1); --设置战斗状态
end

--离开时设回非战斗状态
function tbGoldlen:OnLeave(szParam)
me.nPkModel = Player.emKPK_STATE_PRACTISE;
me.SetFightState(0); --设置战斗状态
end

local tbSecondChuYang = Map:GetClass(230); --初级二层阳 (1)
local tbSecondChuYin = Map:GetClass(231); --初级二层阴 (1)
local tbSecondChuYang2 = Map:GetClass(279); --初级二层阳 (2)
local tbSecondChuYin2 = Map:GetClass(280); --初级二层阴 (2)
local tbSecondChuYin3 = Map:GetClass(338); --初级二层阴 (3)
local tbSecondChuYang3 = Map:GetClass(339); --初级二层阴 (3)

function tbSecondChuYin:OnEnter(szParam)
end

function tbSecondChuYang:OnEnter(szParam)
end

function tbSecondChuYang2:OnEnter(szParam)
end

function tbSecondChuYin2:OnEnter(szParam)
end

local tbSecondGaoYang = Map:GetClass(238); --高级二层阳
local tbSecondGaoYin = Map:GetClass(239); --高级二层阴

function tbSecondGaoYin:OnEnter(szParam)
end

function tbSecondGaoYang:OnEnter(szParam)
end


local tbLastMapGao = Map:GetClass(240);
function tbLastMapGao:OnEnter(szParam)
end
function tbLastMapGao:OnLeave(szParam)
BaiHuTang:OnKickPlayer(me, 233);
end

local tbLastMapChu = Map:GetClass(232);
function tbLastMapChu:OnEnter(szParam)
end
function tbLastMapChu:OnLeave(szParam)
BaiHuTang:OnKickPlayer(me, 225);
end

--黄金白虎堂
local tbSecondGoldenYang = Map:GetClass(826); --高级二层阳
local tbSecondGoldenYin = Map:GetClass(827); --高级二层阴
function tbSecondGoldenYang:OnEnter(szParam)
end

function tbSecondGoldenYin:OnEnter(szParam)
end

local tbLastMapGolden = Map:GetClass(828); --高级二层阴

function tbLastMapGolden:OnEnter(szParam)
end
function tbLastMapGolden:OnLeave(szParam)
BaiHuTang:OnKickPlayer(me, 821);
end



function BaiHuTang:init()
local tbNumColSet = {["TRAPX"]=1, ["TRAPY"]=1};
local tbData = {};
tbData = Lib:LoadTabFile("\\setting\\pvp\\map\\chuanrudian_dadian.txt", tbNumColSet);
for _, tbRow in ipairs(tbData) do
local tbPos = {
nX = tbRow.TRAPX;
nY = tbRow.TRAPY;
}
table.insert(BaiHuTang.tbDaDianPos, tbPos);
end
tbData = Lib:LoadTabFile("\\setting\\pvp\\map\\xiaoguai.txt", tbNumColSet);
for _, tbRow in ipairs(tbData) do
local tbPos = {
nX = tbRow.TRAPX;
nY = tbRow.TRAPY
};
table.insert(BaiHuTang.tbAnimalPos, tbPos);
end
tbData = Lib:LoadTabFile("\\setting\\pvp\\map\\chuanrudian_pk.txt", tbNumColSet);
for _, tbRow in ipairs(tbData) do
local tbPos = {
nX = tbRow.TRAPX;
nY = tbRow.TRAPY;
}
table.insert(BaiHuTang.tbPKPos, tbPos);
end
BaiHuTang.tbBatte[self.ChuJi] = {MapId = {
{ 226, 227, 228, 229,
275, 276, 277, 278,
334, 335, 336, 337}; --第一层地图
{ 230, 231,
279, 280,
338, 339 }; --第二层地图
{232, 281, 340}; --第三层地图
};
tbNpcTemp = {2660, 2681, 2685}; --小怪模板Id
tbBossTemp = {2661, 2682, 2686} --Boss模板Id
};

BaiHuTang.tbBatte[self.GaoJi] = {MapId = {
{234, 235, 236, 237};
{238, 239};
{240};
};
tbNpcTemp = {2662, 2683, 2687};
tbBossTemp = {2663, 2684, 2688};
};
BaiHuTang.tbBatte[self.Goldlen] = {MapId = {
{822, 823, 824, 825};
{826, 827};
{828};
};
tbNpcTemp = {3683, 3685, 3687};
tbBossTemp = {3684, 3686, 3688};
};
BaiHuTang:SetTrapList();

self.tbSysMsg[1] = "Hoạt động Bạch Hổ Đường chính thức bắt đầu.";
self.tbSysMsg[2] = "Bạch hổ đường ngừng đăng ký, hoạt động bắt đầu";
self.tbSysMsg[3] = "Bạch hổ đường thủ lĩnh tầng 1 đã xuất hiện.";
self.tbSysMsg[4] = "Bạch hổ đường thủ lĩnh tầng 2 đã xuất hiện.";
self.tbSysMsg[5] = "Bạch hổ đường thủ lĩnh tầng 3 đã xuất hiện.";
self.tbSysMsg[6] = "Chúc mừng bạn đã khiêu chiến thành công Bạch Hổ Đường";
self.tbSysMsg[7] = "Thời gian, bạn khiêu chiến Bạch Hổ Đường";
self.nActionState = self.RESTSTATE; --刚开始将活动设置为 维护状态
end

BaiHuTang:init();


Còn đây là file baihutang_gs

-------------------------------------------------------------------
--File : baihutang_gs.lua
--Author : ZouYing
--Date : 2008-1-8 14:16
--Describe : 白虎堂活动脚本
-------------------------------------------------------------------
if not MODULE_GAMESERVER then
return;
end


BaiHuTang.tbFactionChu = {};
BaiHuTang.tbFactionGao = {};
BaiHuTang.tbKillerChu = {};
BaiHuTang.tbDeathChu = {};
BaiHuTang.tbKillerGao = {};
BaiHuTang.tbDeathGao = {};


--PK活动开始
function BaiHuTang:PKStart_GS(nTaskId)
self.nTaskId = nTaskId;
self.nActionState = self.FIGHTSTATE;
self.nRegisterIdLeft = Timer:Register(self.TIMELEFT, self.OnTimerLeft, self);
KDialog.Msg2SubWorld(self.tbSysMsg[2]);
self:BroadcastMsg(1);
self:ProcessFightStart(self.ChuJi);
self:ProcessFightStart(self.GaoJi);
self:ProcessFightStart(self.Goldlen);
self:AddNpc();
end

--右上角显示剩余时间的回调函数
function BaiHuTang:OnTimerLeft()
return 0;
end


--开始报名
function BaiHuTang:ApplyStart_GS()
self.nActionState = self.APPLYSTATE;
KDialog.NewsMsg(0, Env.NEWSMSG_NORMAL, self.szApplyMsg);
BaiHuTang:MissionStop();
self:CreateMissions();
self:Open();

self:ClearAwardCount();

self.nRegisterIdLeft = Timer:Register(self.TIMELEFT, self.OnTimerLeft, self);
self.nStateJour = 0;
self:TimerStart();
self.tbNumber = {};
end

--PK活动结束
function BaiHuTang:PKStop_GS()
self:BroadcastMsg(7);
self:ProcessFightStop(self.GaoJi);
self:ProcessFightStop(self.ChuJi);
self:ProcessFightStop(self.Goldlen);
self:MissionStop();
self.nActionState = self.RESTSTATE;
self.nStateJour = 7;
self:TimerStart();
end

--白虎堂活动下一轮开始
function BaiHuTang:NextPvpStart_GS()
self:PKStop_GS();
self:ApplyStart_GS();
end

--对PK结束状态的修改
function BaiHuTang:ProcessFightStop(nLevel)
self.tbIsOpen = {};--将所有传送们关闭
for _, tbMapId in ipairs(self.tbBatte[nLevel].MapId) do
for _, nMapId in ipairs(tbMapId) do
ClearMapObj(nMapId);
ClearMapNpc(nMapId);
end
end
end

function BaiHuTang:AddNpc()
self.nBossNo = 1; --设置BOSS的出现
self:_AddNpc(1);
self:_AddNpc(2);
self:_AddNpc(3);

end

-- 师徒成就:白虎堂
function BaiHuTang:GetAchievement(pPlayer)
if (not pPlayer) then
return;
end

local nAchievementId = 0;
local nMapLevel = BaiHuTang:GetLevelByMapId(pPlayer.nMapId);
if (1 == nMapLevel) then
nAchievementId = Achievement.BAIHUTANG_CHUJI;
elseif (2 == nMapLevel) then
nAchievementId = Achievement.BAIHUTANG_GAOJI;
-- elseif (3 == nMapLevel) then
-- 如果需要再成就系统里面添加黄金白� �堂的话,可以在这里添加
end

Achievement:FinishAchievement(pPlayer.nId, nAchievementId);
end

--PK开始状态的修改
function BaiHuTang:ProcessFightStart(nLevel)
for _, nIndex in ipairs(self.tbBatte[nLevel].MapId[1]) do
local tbPlayList = KPlayer.GetMapPlayer(nIndex);

if (tbPlayList) then
for _, pPlayer in ipairs(tbPlayList) do

if pPlayer.dwUnionId ~= 0 and BaiHuTang:GetLevelByMapId(pPlayer.nMapId) > 1 then
pPlayer.nPkModel = Player.emKPK_STATE_UNION;
else
pPlayer.nPkModel = Player.emKPK_STATE_TONG;
end

self:AddFriendFavor(pPlayer, tbPlayList, 10); -- 添加亲密度
pPlayer.SetFightState(1); --设置战斗状态
Dialog:ShowBattleMsg(pPlayer, 0, 0);
self:ShowTimeInfo(pPlayer, 1);
self:_SetPKTimes(pPlayer);
self:AddRepute(pPlayer, 100); -- 添加声望
pPlayer.Msg("Bạn tham gia Bạc Hổ Đường và nhận được <color=gold>100 Điểm Phúc Duyên<color>.");
pPlayer.AddOfferEntry(20, WeeklyTask.GETOFFER_TYPE_BAIHUTANG); -- 增加贡献度
if (pPlayer.GetTrainingTeacher()) then -- 如果玩家现在的身份是徒弟,师徒任� �当中的白虎堂次数加1
-- local tbItem = Item:GetClass("teacher2student");
local nNeed_BaiHuTang = pPlayer.GetTask(Relation.TASK_GROUP, Relation.TASK_ID_SHITU_BAIHUTANG) + 1;
pPlayer.SetTask(Relation.TASK_GROUP, Relation.TASK_ID_SHITU_BAIHUTANG, nNeed_BaiHuTang);
end

-- 师徒成就:白虎堂
self:GetAchievement(pPlayer);

local nBaiHuLevel = BaiHuTang:GetLevelByMapId(pPlayer.nMapId);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTang", pPlayer, nBaiHuLevel, 0);
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);

-- 关闭popo
pPlayer.CallClientScript({"PopoTip:HidePopo", 18});
SpecialEvent.ActiveGift:AddCounts(pPlayer, 10);
end
end
end
end

--添加小怪
function BaiHuTang:_AddXiaoGuai(nLevel, nNumber)
local tbMapId = self.tbBatte[nLevel].MapId[nNumber];
local nTmpId = self.tbBatte[nLevel].tbNpcTemp[nNumber];
if(nLevel == self.GaoJi)then
nNumber = nNumber + 3;
end
if(nLevel == self.Goldlen)then
nNumber = nNumber + 6;
end
for _, nMapId in ipairs(tbMapId) do
local nWorldIdx = SubWorldID2Idx(nMapId);
if (nWorldIdx >= 0) then
for _, tbPos in ipairs(self.tbAnimalPos) do
KNpc.Add2(nTmpId, self.tbNpcLevel[nNumber], -1, nMapId, tbPos.nX / 32, tbPos.nY / 32, 1); --小怪重生
end
end
end
end

--添加BOSS
function BaiHuTang:_AddBoss(nLevel, nNumber)
local tbMapId = self.tbBatte[nLevel].MapId[nNumber];
local nTempId = self.tbBatte[nLevel].tbBossTemp[nNumber];

if(nLevel == self.GaoJi)then
nNumber = nNumber + 3;
end
if(nLevel == self.Goldlen)then
nNumber = nNumber + 6;
end

for _, nMapId in ipairs(tbMapId) do
local nWorldIdx = SubWorldID2Idx(nMapId);
if (nWorldIdx >= 0 ) then
local pNpc = KNpc.Add2(nTempId, self.tbNpcLevel[nNumber], -1, nMapId, 1578, 3146);
Npc:RegPNpcOnDeath(pNpc, self.OnDeath_Boss, self);
end
end
end


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

if self.nBossNo == 1 then
self:AddPItem(pKillerPlayer, 3);
self:AddPDK(pKillerPlayer, 30000);
elseif self.nBossNo == 2 then
self:AddPItem(pKillerPlayer, 5);
self:AddPDK(pKillerPlayer, 50000);
elseif self.nBossNo == 3 then
self:AddPItem(pKillerPlayer, 10);
self:AddPDK(pKillerPlayer, 100000);
self:AddPDT(pKillerPlayer, 30000);
end;

local nMapId = pKillerPlayer.nMapId
local nTang = BaiHuTang:GetFloor(nMapId);
local nPhucDuyen = nTang*100;
self:AddRepute(pKillerPlayer, nPhucDuyen);
local nBaiHuLevel = BaiHuTang:GetLevelByMapId(nMapId);
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pKillerPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
local szMsg = string.format("<color=green>Phó Bản Bạch Hổ Đường<color> %s bậc thầy của những anh hùng võ học 1 cước hạ gục thủ lĩnh tầng %s được thưởng <color=gold>%s Điểm Phúc Duyên<color>",pKillerPlayer.szName,nTang,nPhucDuyen);
KDialog.MsgToGlobal(szMsg);
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,nPhucDuyen);
pPlayer.Msg(string.format("Bạn Cùng Đồng Đội Chiến Thắng Boss <color=green>Bạch Hổ Đường Tầng %s<color> Nhận Được %s Điểm Phúc Duyên",nBaiHuLevel,nPhucDuyen));
local nFreeCount, tbFunExecute = SpecialEvent.ExtendAward:DoCheck("BaiHuTangBoss", pPlayer, nBaiHuLevel, BaiHuTang:GetFloor(nMapId));
SpecialEvent.ExtendAward:DoExecute(tbFunExecute);
end
end
end
end

function BaiHuTang:AwardWeiWang(pPlayer, nWeiWang)
pPlayer.AddKinReputeEntry(nWeiWang, "baihutang");
end

function BaiHuTang:AwardXinDe(pPlayer, nXinDe)
if (nXinDe > 0) then
Setting:SetGlobalObj(pPlayer);
Task:AddInsight(nXinDe);
Setting:RestoreGlobalObj();
end
end

--对不同级别添加NPC
function BaiHuTang:_AddNpc(nNumber, IsBoss)
if (IsBoss == nil) then
self:_AddXiaoGuai(self.GaoJi, nNumber);
self:_AddXiaoGuai(self.ChuJi, nNumber);
self:_AddXiaoGuai(self.Goldlen, nNumber);
else
self:_AddBoss(self.ChuJi, nNumber);
self:_AddBoss(self.GaoJi, nNumber);
self:_AddBoss(self.Goldlen, nNumber);
self:BroadcastMsg(self.tbBossShowMsg[nNumber]); --提示BOSS的出现
end

--额外事件,活动接口
local tbMapLevel = {
[1] = self.ChuJi,
[2] = self.GaoJi,
[3] = self.Goldlen,
}
for nLevel, nMapLevel in pairs(tbMapLevel) do
local tbMapId = self.tbBatte[nMapLevel].MapId[nNumber];
for _, nMapId in ipairs(tbMapId) do
local nWorldIdx = SubWorldID2Idx(nMapId);
if (nWorldIdx >= 0 ) then
SpecialEvent.ExtendEvent:DoExecute("CallNpc_BaiHuTang", nMapId, nLevel, nNumber, (IsBoss or 0));
end
end
end
end


--设置进入战斗状态
function BaiHuTang:_SetPKState(pPlayer)
pPlayer.DisabledStall(1); --摆摊
pPlayer.nForbidChangePK = 1;
end

--设置离开战斗状态
function BaiHuTang:_SetLeaveFightState(pPlayer)
Dialog:ShowBattleMsg(pPlayer, 0, 0); --取消时间显示
pPlayer.DisabledStall(0); --摆摊
pPlayer.nForbidChangePK = 0;
pPlayer.SetFightState(1);
end

--设置PK次数
function BaiHuTang:_SetPKTimes(pPlayer)
if (pPlayer) then
local nOldTimes = pPlayer.GetTask(self.TSKG_PVP_ACT, self.TSK_BaiHuTang_PKTIMES);
if (nOldTimes > 0) then
nOldTimes = nOldTimes + 1;
else
local szNowDate = GetLocalDate("%y%m%d");
local nNowDate = tonumber(szNowDate) * 10 + 1;
nOldTimes = nNowDate;
end
pPlayer.SetTask(self.TSKG_PVP_ACT, self.TSK_BaiHuTang_PKTIMES, nOldTimes);
Stats.Activity:AddCount(pPlayer, Stats.TASK_COUNT_BAIHUTANG, 1);
end
end

-- 分阶段定时开始
function BaiHuTang:TimerStart(szFunction)
local nRet;
if szFunction then
local fncExcute = self[szFunction];
if fncExcute then
nRet = fncExcute(self);
if nRet and nRet == 0 then
--self:ShutUp(); -- 关闭活动
return 0;
end
end
end
-- 状态转换
self.nStateJour = self.nStateJour + 1;
if (self.nStateJour >= self.END) then
return 0;
end
self.nState = self.STATE_TRANS[self.nStateJour][1];
if self.nState == nil or self.nState >= self.END then -- 未必开启或者已经结束
--self:ShutUp(); -- 关闭活动
return 0;
end
-- 下一阶段定时
local tbTimer = self.STATE_TRANS[self.nStateJour];
if not tbTimer then
print("[Error]")
return 0;
end
Dbg:WriteLogEx(2, "BaiHuTang", tbTimer[2], tbTimer[3], self.nStateJour, GetLocalDate("%H:%M-%S"));
Timer:Register(
tbTimer[2],
self.TimerStart,
self,
tbTimer[3]
); -- 开启新的定时
return 0
end



function BaiHuTang:ShowGongGao()
Dbg:Output("BaiHuTang", "ShowGongGao", GetLocalDate("%H:%M %S"));
KDialog.NewsMsg(0, Env.NEWSMSG_NORMAL, self.szApplyMsg);
end

function BaiHuTang:CallBoss()
local nLevel = 0;
if (self.nBossNo == 1)then
self.nBossNo = 2;
nLevel = 1;
elseif(self.nBossNo == 2) then
self.nBossNo = 3;
nLevel = 2;
elseif(self.nBossNo == 3)then
nLevel = 3;
end
Dbg:Output("BaiHuTang", "CallBoss", GetLocalDate("%H:%M %S"));
if (nLevel ~= 0) then
self:_AddNpc(nLevel, 1);
end
end
-- 显示即时信息:剩余时间
function BaiHuTang:ShowTimeInfo(pPlayer, IsPK)
Dialog:SendBattleMsg(pPlayer, "")
local nRemainFrame = Timer:GetRestTime(self.nRegisterIdLeft);
local szMsgFormat = "";
if (IsPK == 1) then
szMsgFormat = "<color=green>Thời gian còn lại: <color> <color=white>%s<color>";
else
szMsgFormat = "<color=green>Thời gian chuẩn bị còn: <color><color=white>%s<color>";
end
Dialog:SetBattleTimer(pPlayer, szMsgFormat, nRemainFrame);
Dialog:ShowBattleMsg(pPlayer, 1, 0);
end;
--对玩家的广播
function BaiHuTang:BroadcastMsg(nIndex)
if (nIndex <= 7 and nIndex >= 1) then
self:_SendSysMsg(nIndex, self.ChuJi);
self:_SendSysMsg(nIndex, self.GaoJi);
self:_SendSysMsg(nIndex, self.Goldlen);
end
end

--发送信息
function BaiHuTang:_SendSysMsg(nIndex, nLevel)
local szMsg = self.tbSysMsg[nIndex];
local tbMapList = self.tbBatte[nLevel].MapId;
for _, Map in ipairs(tbMapList) do
for _, nMapId in ipairs(Map) do
local tbPlayer, nCount = KPlayer.GetMapPlayer(nMapId);
if (nCount > 0 ) then
KDialog.Msg2PlayerList(tbPlayer, szMsg, "Hệ thống nhắc nhở ");
end
end
end
end

function BaiHuTang:AddRepute(pPlayer, nValue) -- function duoc diem BHD
-- pPlayer.AddRepute(self.BAIHUTANG_REPUTE_CAMP, self.BAIHUTANG_REPUTE_CALSS, nValue);

local nPhucDuyen = pPlayer.GetTask(4002, 1);
pPlayer.SetTask(4002, 1,nPhucDuyen + nValue);

end

function BaiHuTang:AddFriendFavor(pSelf, tbPlayerList, nFavor)
if (0 == pSelf.nTeamId) then
return;
end
for _, pPlayer in ipairs(tbPlayerList) do
if (pPlayer.nId ~= pSelf.nId and
pPlayer.nTeamId == pSelf.nTeamId and
pSelf.IsFriendRelation(pPlayer.szName) == 1) then
Relation:AddFriendFavor(pSelf.szName, pPlayer.szName, nFavor);
pSelf.Msg(string.format("Bạn và <color=yellow>%s<color> độ thân mật tăng thêm %d điểm.", pPlayer.szName, nFavor * 2));
end
end
end

function BaiHuTang:ClearAwardCount()
self.tbGetAwardCount = {};
end

function BaiHuTang:GetFloor(nMapId)
if (nMapId >= 226 and nMapId <= 229)
or (nMapId >= 275 and nMapId <= 278)
or (nMapId >= 334 and nMapId <= 337)
or (nMapId >= 234 and nMapId <= 237)
or (nMapId >= 822 and nMapId <= 825) then
return 1;
elseif (nMapId >= 230 and nMapId <= 231)
or (nMapId >= 279 and nMapId <= 280)
or (nMapId >= 338 and nMapId <= 339)
or (nMapId >= 238 and nMapId <= 239)
or (nMapId >= 826 and nMapId <= 827) then
return 2;
elseif (nMapId == 232 or nMapId == 281 or nMapId == 340 or nMapId == 240 or nMapId == 828) then
return 3;
end
return 0;
end

function BaiHuTang:GetLevelByMapId(nMapId)
if nMapId == self.GaoJi then
return 2;
end
if nMapId == self.Goldlen then
return 3;
end
for _, tb in pairs(self.tbBatte[self.GaoJi].MapId) do
for __, nTempMap in pairs(tb) do
if nTempMap == nMapId then
return 2;
end
end
end
for _, tb in pairs(self.tbBatte[self.Goldlen].MapId) do
for __, nTempMap in pairs(tb) do
if nTempMap == nMapId then
return 3;
end
end
end
return 1;
end

function BaiHuTang:IsOpenGolden()
if TimeFrame:GetState("OpenBaiHuTangGolden") == 1 then
return 1;
end
return 0;
end

Còn đây là file baihutang_logic

-------------------------------------------------------------------
--File : baihutang_logic.lua
--Author : ZouYing
--Date : 2008-8-22 9:14
--Describe : 白虎堂活动logic脚本
-------------------------------------------------------------------

-- BaiHuTang基础类,提供默认操作以及基� �处理函数
local tbBase = Mission:New();
BaiHuTang.tbMissionBase = tbBase;

function tbBase:SetCofig(nMapId)
local tbTemp = {};
for nIndex, tbPos in ipairs(BaiHuTang.tbDaDianPos) do
table.insert(tbTemp, {nMapId, tbPos.nX / 32, tbPos.nY / 32});
end
--设置Mission的tbMisCfg
self.tbMisCfg =
{
nOnDeath = 1;
nDeathPunish = 1;
nPkState = Player.emKPK_STATE_TONG;
tbLeavePos = {[0] = tbTemp };
tbDeathRevPos = {[0] = tbTemp };
nOnMovement = 1, -- 参加某项活动
nDisableFriendPlane = 1, -- 禁止好友界面
nDisableStallPlane = 1, -- 禁止交易界面
}
end

function tbBase:OnStartGame()
self.tbGroups = {};
self.tbPlayers = {};
self.tbTimers = {};
self.nStateJour = 0;
self.tbNowStateTimer = nil;
end

function tbBase:OnLeave()
BaiHuTang:_SetLeaveFightState(me);
Dialog:ShowBattleMsg(me, 0, 0);
end

function tbBase:OnDeath(pKillerNpc)

local pKillerPlayer = pKillerNpc.GetPlayer();
local nMapId = pKillerPlayer.nMapId;
local nTang = BaiHuTang:GetFloor(nMapId);
local nPhucDuyen = nTang*10;

if (pKillerPlayer) then
local szKillerRouter = Player:GetFactionRouteName(pKillerPlayer.nFaction, pKillerPlayer.nRouteId);
local szDeathRouter = Player:GetFactionRouteName(me.nFaction, me.nRouteId);

BaiHuTang.tbKillerChu[szKillerRouter] = (BaiHuTang.tbKillerChu[szKillerRouter] or 0) + 1;
BaiHuTang.tbDeathChu[szDeathRouter] = (BaiHuTang.tbDeathChu[szDeathRouter] or 0 ) + 1;
KDialog.MsgToGlobal(string.format("<color=green>Bạch Hổ Đường<color> nghìn cân treo sợi tóc %s đẩy lùi đối thủ <color=red>%s<color> cướp được <color=gold>%s Điểm Phúc Duyên<color>",pKillerPlayer.szName,me.szName,nPhucDuyen));
self:AddRepute(pKillerPlayer, nPhucDuyen); --diem phuc duyen
end

--[[if (pKillerPlayer) then
local szKillerRouter = Player:GetFactionRouteName(pKillerPlayer.nFaction, pKillerPlayer.nRouteId);
local szDeathRouter = Player:GetFactionRouteName(me.nFaction, me.nRouteId);

BaiHuTang.tbKillerChu[szKillerRouter] = (BaiHuTang.tbKillerChu[szKillerRouter] or 0) + 1;
BaiHuTang.tbDeathChu[szDeathRouter] = (BaiHuTang.tbDeathChu[szDeathRouter] or 0 ) + 1;
pKillerPlayer.Msg("<color=green>Bạn đã đánh bại "..me.szName..".<color>");
local tbPlayer, nCount = KPlayer.GetMapPlayer(me.nMapId);

if (nCount > 2 ) then
local szMsg = pKillerPlayer.szName.." đánh bại " .. me.szName .. ".";
for _, pPlayer in pairs(tbPlayer) do
if (pPlayer.szName ~= me.szName and pPlayer.szName ~= pKillerPlayer.szName) then
pPlayer.Msg(szMsg, "Hệ thống nhắc nhở");
end
end
end
end]]--
self:KickPlayer(me);
end

-------------------白虎堂独立逻辑---------------------------------------------------

BaiHuTang.tbMissionList = {};
function BaiHuTang:CreateMissions()
for i, nMapId in pairs(self.tbMapList) do
self.tbMissionList[nMapId] = self.tbMissionList[nMapId] or Lib:NewClass(tbBase);
self.tbMissionList[nMapId]:SetCofig(nMapId);
end
end

function BaiHuTang:Open()
for i, tbMission in pairs(self.tbMissionList) do
tbMission:OnStartGame();
end
end

function BaiHuTang:MissionStop()
for nMapId, tbMission in pairs(self.tbMissionList) do
if (tbMission:IsOpen() == 1) then
tbMission:Close();
end
end
end


--加入Mission
function BaiHuTang:JoinGame(nMapId, pPlayer)
self:_SetPKState(pPlayer); --进入战斗状态
local bEnter = 0;
for n, tbMission in pairs(self.tbMissionList) do
if (n == nMapId and tbMission:IsOpen() == 1) then
tbMission:JoinPlayer(pPlayer, 1);
bEnter = 1;
break;
end
end
if (bEnter == 0) then
return;
end
self:ShowTimeInfo(pPlayer);
--popo提示
pPlayer.CallClientScript({"PopoTip:ShowPopo", 18});
return 1;
end

function BaiHuTang:KickOutMission(pPlayer, nMapId)
for i, tbMission in pairs(self.tbMissionList) do

if (nMapId == i) then
tbMission:KickPlayer(pPlayer);
end
end
end

function BaiHuTang:OnKickPlayer(pPlayer, nMapId)
if self.tbMissionList and self.tbMissionList[nMapId] then
if self.tbMissionList[nMapId]:IsOpen() == 1 then
if self.tbMissionList[nMapId]:GetPlayerGroupId(pPlayer) >= 0 then
self.tbMissionList[nMapId]:KickPlayer(pPlayer);
end
end
end
end

Có sao em để nguyên vậy. Là bản Kiếm Thế Chí Tôn em chưa chình sữa cái gì ở đây cả.

Ai biết lỗi ở đâu giúp em với nhé.
thanks trước.

rinnegan
09-12-14, 03:42 PM
Có ai biết bị sao mà không qua ải được hok chỉ mình với. or ai có file bachhoduong ok rồi cho mình xin với.

__Jie__
09-12-14, 07:42 PM
trên đây nhiều bản ok lắm cứ tải về test sẽ được thôi.
Thánh hỏi là đây

rinnegan
09-12-14, 08:49 PM
trên đây nhiều bản ok lắm cứ tải về test sẽ được thôi.
Thánh hỏi là đây

Thánh hỏi là đây nghe hay ghê. Thì người việt nam có câu muốn giỏi phải học mà :D
Với lại mình thật là. Dùng có 1 nick thôi. Thấy nhiều người lập 2 3 nick thây nhau hỏi cho đỡ ngại. :D

rinnegan
26-03-16, 09:12 PM
UPPPPPPPPPPPP. fix 1 năm qua mà vẫn chưa fix được

copday
27-03-16, 08:36 PM
UPPPPPPPPPPPP. fix 1 năm qua mà vẫn chưa fix được

chưa khai báo tbItemInfo nhé bạn, tiện thể cho hỏi lỗi lúc qua ải lúc không chịu qua TDC

satthu1292
02-11-20, 02:31 AM
trên đây nhiều bản ok lắm cứ tải về test sẽ được thôi.
Thánh hỏi là đây




bác jie biết bản nào không lỗi bhd cho e xin link bài với ạ. tks bác

__Jie__
02-11-20, 10:51 PM
bác jie biết bản nào không lỗi bhd cho e xin link bài với ạ. tks bác
<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>

levelotc
25-01-22, 10:22 AM
... e cũng bị như vậy.mong mấy lão đại chỉ e khắc phục với ạ.....

tonyus
25-01-22, 03:30 PM
... e cũng bị như vậy.mong mấy lão đại chỉ e khắc phục với ạ.....

xem lại chỗ thưởng qua ải có lỗi không =)) =)) =)) =))

anubisng
04-03-22, 12:56 PM
xem lại chỗ thưởng qua ải có lỗi không =)) =)) =)) =))

Theo mình biết thì đây là lỗi do sai giờ của game và của máy chủ. Dẫn đến hiện tượng chạy đến của lên sẽ ko lên được tầng do tầng 2,3 đã đóng lại do hết giờ. Cách fix đơn giản hiêu quả nhất là ae để đến giờ boss tầng 1, 2, 3 ra là có thể lên tầng được. AE nào cân giúp đỡ thì pm fb mình <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> :D