[KT] Cho hỏi có ai sửa được lỗi tài phú không lên được cấp siêu thần chưa - Trang 2
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Trang 2 của 2 Đầu tiênĐầu tiên 1 2
Kết quả 11 đến 17 của 17
  1. #11
    Thành Viên zgiavuong's Avatar
    Ngày tham gia
    Feb 2013
    Bài viết
    101
    Thanks
    41
    Thanked 8 Times in 6 Posts

    Ðề: Cho hỏi có ai sửa được lỗi tài phú không lên được cấp siêu thần chưa

    đã chỉnh như bác và kết quẩ là mất luôn danh hiệu phi phong éo hiểu dc luôn
    Khách viếng thăm hãy cùng zgiavuong xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. #12
    Thành Viên
    Ngày tham gia
    Apr 2013
    Bài viết
    111
    Thanks
    31
    Thanked 22 Times in 17 Posts

    Ðề: Cho hỏi có ai sửa được lỗi tài phú không lên được cấp siêu thần chưa

    copy cái này vào playerhonor.lua

    Code:
    -- 文件名 :playerhonor.lua
    -- 创建者 :zhouchenfei
    -- 创建时间:2008-10-07 17:44:24
    
    
    PlayerHonor.HONOR_CLASS_WULIN		= 1;	-- 荣誉大类,武林荣誉
    PlayerHonor.HONOR_CLASS_FACTION		= 2;	-- 荣誉大类,门派荣誉
    PlayerHonor.HONOR_CLASS_WLLS		= 3;	-- 荣誉大类,联赛荣誉
    PlayerHonor.HONOR_CLASS_BATTLE		= 4;	-- 荣誉大类,战场荣誉
    PlayerHonor.HONOR_CLASS_LINGXIU		= 5;	-- 荣誉大类,领袖荣誉
    PlayerHonor.HONOR_CLASS_AREARBATTLE	= 6;	-- 荣誉大类,领土争夺战荣誉
    PlayerHonor.HONOR_CLASS_BAIHUTANG	= 7;	-- 荣誉大类,白虎堂荣誉
    PlayerHonor.HONOR_CLASS_MONEY		= 8;	-- 荣誉大类,财富荣誉
    PlayerHonor.HONOR_CLASS_SPRING		= 9;	-- 荣誉大类,飞絮崖荣誉
    PlayerHonor.HONOR_CLASS_DRAGONBOAT	= 10;	-- 荣誉大类,禅境花园荣誉(清明节活动)
    PlayerHonor.HONOR_CLASS_WEIWANG		= 11;	-- 荣誉大类,江湖威望荣誉
    PlayerHonor.HONOR_CLASS_PRETTYGIRL	= 12;	-- 荣誉大类,美女大选荣誉
    PlayerHonor.HONOR_CLASS_XOYOGAME	= 13;	-- 荣誉大类,逍遥荣誉
    PlayerHonor.HONOR_CLASS_KAIMENTASK	= 14;	-- 荣誉大类,开门任务
    PlayerHonor.HONOR_CLASS_EVENTPLANT_PLAYER	= 15;	-- 荣誉大类,活动平台个人积分
    PlayerHonor.HONOR_CLASS_FIGHTPOWER_TOTAL	= 17;	-- 总战斗力
    PlayerHonor.HONOR_CLASS_FIGHTPOWER_ACHIEVEMENT = 18;-- 成就
    PlayerHonor.HONOR_CLASS_LEVEL		= 19;-- 等级
    PlayerHonor.HONOR_CLASS_BEAUTYHERO	= 20;	-- 荣誉大类,巾帼英雄赛荣誉
    PlayerHonor.HONOR_CLASS_LADDER1		= 21;	-- 荣誉大类
    PlayerHonor.HONOR_CLASS_LADDER2		= 22;	-- 夜岚关
    PlayerHonor.HONOR_CLASS_LADDER3		= 23;	-- 新坐骑碎片上交榜
    
    PlayerHonor.WEALTH_TASK_GROUP		= 2053;	-- 玩家装备排行任务变量
    
    PlayerHonor.TSK_ID_ORGEQUIPHONOR = 100;
    PlayerHonor.TSK_ID_ORGEQUIPHONOR_Double = 101;
    
    PlayerHonor.OPENSHOWLEVELTIME		= 1228072200; -- 12/01/08 03:10:00 开放等级显示
    
    PlayerHonor.TSK_GROUP				= 2054;	-- 其他任务变量
    PlayerHonor.TSK_ID_REFRESH_TIME		= 1;	-- 上次刷新荣誉值时间GetTime()+1,没刷新过的是0
    PlayerHonor.TSK_ID_HONORLEVEL_WULIN	= 2;	-- 荣誉等级(存盘用)
    PlayerHonor.TSK_ID_HONORLEVEL_LINGXIU = 3;	-- 领袖等级
    PlayerHonor.TSK_ID_HONORLEVEL_MONEY	= 4;	-- 财富等级
    PlayerHonor.TSK_ID_COSUME_VALUE	= 5;		-- 消耗计价值量
    PlayerHonor.TSK_ID_PARTNER_VALUE = 6;		-- 同伴价值量
    PlayerHonor.TSK_ID_COSUME_VALUE_HIGH = 7	-- 消耗计价值量高位
    PlayerHonor.TSK_ID_HONORLEVEL_TYPE = 8; --财富类型
    PlayerHonor.TSK_ID_DEVHORSE_VALUE = 9;	-- 坐骑价值量
    
    PlayerHonor.TSK_GIFT_GROUP			= 2186;	-- 	免费披风道具
    PlayerHonor.TSK_ID_GIFT_GETAWARD	= 1;	-- 是否领取过道具
    PlayerHonor.TSK_ID_GIFT_USEAWARD	= 2;	-- 是否使用过道具
    PlayerHonor.ITEM_FREEPIFENG_GIFT	= {18, 1, 1550, 1, -1};
    
    PlayerHonor.NEW_HORSE_GET_LIMIT		= 300;	-- 赤夜天翔排行榜获得限制
    
    PlayerHonor.nFightPowerMaxHonorLevel = 85000;
    PlayerHonor.nMaxHonorLevel = 11;
    PlayerHonor.nSupperHonorLevel = 11;
    
    
    PlayerHonor.tbHonorName	= {
    		[PlayerHonor.HONOR_CLASS_WULIN] 		= "Võ Lâm";
    		[PlayerHonor.HONOR_CLASS_FACTION]		= "Môn Phái";
    		[PlayerHonor.HONOR_CLASS_WLLS]			= "Liên Đấu";
    		[PlayerHonor.HONOR_CLASS_BATTLE]		= "Mông Cổ Tây Hạ";
    		[PlayerHonor.HONOR_CLASS_LINGXIU] 		= "Thủ Lĩnh";
    		[PlayerHonor.HONOR_CLASS_AREARBATTLE]	= "Tranh Đoạt";
    		[PlayerHonor.HONOR_CLASS_BAIHUTANG]		= "Bạch Hổ";
    		[PlayerHonor.HONOR_CLASS_MONEY]			= "Tài Phú";
    		[PlayerHonor.HONOR_CLASS_SPRING]		= "Gia tộc đoàn viên";
    		[PlayerHonor.HONOR_CLASS_DRAGONBOAT]	= "Vinh dự Thiền Cảnh Hoa Viên";
    		[PlayerHonor.HONOR_CLASS_WEIWANG]		= "Vinh dự Uy danh giang hồ";
    		[PlayerHonor.HONOR_CLASS_PRETTYGIRL]	= "Vinh dự mỹ nữ";
    		[PlayerHonor.HONOR_CLASS_KAIMENTASK]	= "Nhiệm vụ Khai Môn";
    		[PlayerHonor.HONOR_CLASS_FIGHTPOWER_TOTAL]	= "Tổng sức chiến đấu";
    		[PlayerHonor.HONOR_CLASS_FIGHTPOWER_ACHIEVEMENT]	= "Thành tựu";
    		[PlayerHonor.HONOR_CLASS_BEAUTYHERO]	= "Nữ anh hùng";
    		[PlayerHonor.HONOR_CLASS_LADDER1] = "Di tích Hàn Vũ";
    		[PlayerHonor.HONOR_CLASS_LADDER2] = "Vinh dự Dạ Lam Quan";
    	};
    
    PlayerHonor.tbFacContext = {
    		[0] = "Võ Lâm";
    		[Env.FACTION_ID_SHAOLIN] 	= "Thiếu Lâm";
    		[Env.FACTION_ID_TIANWANG]	= "Thiên Vương";
    		[Env.FACTION_ID_TANGMEN]	= "Đường Môn";
    		[Env.FACTION_ID_WUDU]		= "Ngũ Độc";
    		[Env.FACTION_ID_EMEI]		= "Nga My";
    		[Env.FACTION_ID_CUIYAN]		= "Thúy Yên";
    		[Env.FACTION_ID_GAIBANG]	= "Cái Bang";
    		[Env.FACTION_ID_TIANREN]	= "Thiên Nhẫn";
    		[Env.FACTION_ID_WUDANG]		= "Võ Đang";
    		[Env.FACTION_ID_KUNLUN]		= "Côn Lôn";
    		[Env.FACTION_ID_MINGJIAO]	= "Minh Giáo";
    		[Env.FACTION_ID_DALIDUANSHI] = "Đoàn Thị ";
    		[Env.FACTION_ID_GUMU]		= "Bảng vinh dự Cổ Mộ";
    		[Env.FACTION_ID_XOYO]		= "Xếp hạng vinh dự Tiêu Dao";
    	};
    	
    PlayerHonor.tbFacName = {
    		[0] = "Võ Lâm";
    		[Env.FACTION_ID_SHAOLIN]		= "Thiếu Lâm";
    		[Env.FACTION_ID_TIANWANG]		= "Thiên Vương";
    		[Env.FACTION_ID_TANGMEN]		= "Đường Môn";
    		[Env.FACTION_ID_WUDU]			= "Ngũ Độc";
    		[Env.FACTION_ID_EMEI]			= "Nga My";
    		[Env.FACTION_ID_CUIYAN]			= "Thúy Yên";
    		[Env.FACTION_ID_GAIBANG]		= "Cái Bang";
    		[Env.FACTION_ID_TIANREN]		= "Thiên Nhẫn";
    		[Env.FACTION_ID_WUDANG]			= "Võ Đang";
    		[Env.FACTION_ID_KUNLUN]			= "Côn Lôn";
    		[Env.FACTION_ID_MINGJIAO]		= "Minh Giáo";
    		[Env.FACTION_ID_DALIDUANSHI]	= "Đoàn Thị";
    		[Env.FACTION_ID_GUMU]			= "Cổ Mộ";
    		[Env.FACTION_ID_XOYO]			= "Tiêu Dao";
    	};  
    
    PlayerHonor.tbBookToValue = 
    {
    	[1] = 150000,
    	[2] = 450000,
    	[3] = 1000000, --粽子
    }
    
    PlayerHonor.tbDevelopLadderAwardTitle = 
    {
    	[8]  = {17,1,1, "Thiên Hạ Đệ Nhất Chưởng", "Thiên Tuyệt Triền"},
    	[9]  = {17,2,1, "Thiên Hạ Đệ Nhất Kiếm", "Khuynh Phong Đoạn Ảnh"},
    	[10] = {17,3,1, "Thiên Hạ Đệ Nhất Đao", "Yếm Tuyết Đao"},
    	[11] = {17,4,1, "Thiên Hạ Đệ Nhất Côn", "Vô Nhẫn Trảm Nghiệp"},
    	[12] = {17,5,1, "Thiên Hạ Đệ Nhất Thương", "Ngự Phượng Thương"},
    	[13] = {17,6,1, "Thiên Hạ Đệ Nhất Chùy", "Quyện Long Chùy"},
    	[14] = {17,7,1, "Thiên Hạ Nhất Phi Đao", "Thanh Tôn Đao"},
    	[15] = {17,8,1, "Thiên Hạ Nhất Tụ Tiễn", "Ẩn Hồn Tiễn"},
    }
    
    local HONOR_KEY_WULIN	= "wulin";
    local HONOR_KEY_MONEY	= "money";
    local HONOR_KEY_LINGXIU	= "lingxiu";
    
    PlayerHonor.tbHonorLevelInfo	= {
    	[HONOR_KEY_WULIN]	= {
    		nHonorId	= PlayerHonor.HONOR_CLASS_WULIN,
    		nLevelTaskId= PlayerHonor.TSK_ID_HONORLEVEL_WULIN;
    		szName		= "Võ Lâm",
    		tbLevel		= {};
    	},
    	[HONOR_KEY_MONEY]	= {
    		nHonorId	= PlayerHonor.HONOR_CLASS_MONEY,
    		nLevelTaskId= PlayerHonor.TSK_ID_HONORLEVEL_MONEY;
    		szName		= "Tài Phú",
    		tbLevel		= {};
    	},
    	[HONOR_KEY_LINGXIU]	= {
    		nHonorId	= PlayerHonor.HONOR_CLASS_LINGXIU,
    		nLevelTaskId= PlayerHonor.TSK_ID_HONORLEVEL_LINGXIU;
    		szName		= "Thủ Lĩnh",
    		tbLevel		= {};
    	},
    };
    
    function PlayerHonor:GetHonorName(nClass, nType)
    	return self.tbHonorName[nClass];
    end
    
    function PlayerHonor:Init()
    	self.tbHonorSettings = {};
    	
    	local tbData	= Lib:LoadTabFile("\\setting\\player\\honor_level.txt", {LEVEL=1,MAXRANK=1,MINVALUE=1});
    	local tbHonorLevelInfo	= self.tbHonorLevelInfo;
    	for _, tbRow in ipairs(tbData) do
    		tbHonorLevelInfo[tbRow.TYPE].tbLevel[tbRow.LEVEL]	= {
    			nLevel		= tbRow.LEVEL,
    			nMaxRank	= tbRow.MAXRANK,
    			nMinValue	= tbRow.MINVALUE,
    			szName		= tbRow.NAME,
    		};
    		if (tbRow.TYPE == "money") then
    			tbHonorLevelInfo[tbRow.TYPE].tbLevel[tbRow.LEVEL].nMaxValue = math.floor(tbRow.MINVALUE * 1.5);
    		else
    			tbHonorLevelInfo[tbRow.TYPE].tbLevel[tbRow.LEVEL].nMaxValue = 0;
    		end
    	end
    
    	self:_InitWuLinHonorSetting();
    	self:_InitLingXiuHonorSetting();
    	self:_InitMoneyHonorSetting();
    	self:_InitFactionHonorSetting();
    	self:_InitWllsHonorSetting();
    	self:_InitSongJinBattleHonorSetting();
    	self:_InitAreaBattleHonorSetting();
    	self:_InitBaiHuTangHonorSetting();
    	self:_InitEventHonorSetting();
    	self:_InitFightPowerSetting();
    	
    	if not MODULE_GC_SERVER then
    		self:_InitGaojiMijiValue();
    	end
    
    
    	if (MODULE_GAMECLIENT) then
    		self.tbPlayerHonorData.tbHonorData = self.tbHonorSettings
    	end
    	
    end
    
    function PlayerHonor:_InitGaojiMijiValue()
    	self.tbGaojiMijiValue = {};
    
    	local tbData	= Lib:LoadTabFile("\\setting\\item\\001\\extern\\value\\gaojimijivalue.txt");
    	for _, tbRow in ipairs(tbData) do
    		local nSkillId = tonumber(tbRow["SkillId"]);
    		local nSkillLevel = tonumber(tbRow["SkillLevel"]);
    		local nSkillValue = tonumber(tbRow["SkillValue"]);
    		if (nSkillId > 0 and nSkillLevel > 0 and nSkillValue > 0) then
    			if (not self.tbGaojiMijiValue[nSkillId]) then
    				self.tbGaojiMijiValue[nSkillId] = {};
    			end
    			self.tbGaojiMijiValue[nSkillId][nSkillLevel] = nSkillValue;
    		end
    	end
    end
    
    function PlayerHonor:TryGetGlobalDataBuffer()
    	local tbBuffer = GetGblIntBuf(GBLINTBUF_LADDER_BATCH, 0); 
    	if type(tbBuffer) == "table" then
    		self.tbInvalidTimeData = self.tbInvalidTimeData or tbBuffer;
    	else
    		self.tbInvalidTimeData = self.tbInvalidTimeData or {};
    	end
    end
    
    -- 武林荣誉
    function PlayerHonor:_InitWuLinHonorSetting()
    	local nClass = self.HONOR_CLASS_WULIN;
    	local tbHonorSubList		= {};
    	tbHonorSubList[1]			= {};
    	tbHonorSubList[1].szName	= "Võ Lâm"
    	tbHonorSubList[1].nValue	= 0;
    	tbHonorSubList[1].nRank		= 0;	
    	tbHonorSubList[1].nClass	= nClass;
    	tbHonorSubList[1].nLevel	= 0;
    
    	self.tbHonorSettings[1] = {};
    	self.tbHonorSettings[1].tbHonorSubList	= tbHonorSubList
    	self.tbHonorSettings[1].szName			= "<color=yellow>Vinh dự võ lâm<color>";
    end
    
    -- 领袖荣誉
    function PlayerHonor:_InitLingXiuHonorSetting()
    	local nClass = self.HONOR_CLASS_LINGXIU;
    
    	local tbHonorSubList		= {};
    	tbHonorSubList[1]			= {};
    	tbHonorSubList[1].szName	= "Tài Phú"
    	tbHonorSubList[1].nValue	= 0;
    	tbHonorSubList[1].nRank		= 0;	
    	tbHonorSubList[1].nClass	= nClass;
    	tbHonorSubList[1].nLevel	= 0;
    	
    	self.tbHonorSettings[2] = {};
    	self.tbHonorSettings[2].tbHonorSubList	= tbHonorSubList
    	self.tbHonorSettings[2].szName			= "<color=red>Vinh dự tài phú<color>";	
    end
    
    -- 财富荣誉
    function PlayerHonor:_InitMoneyHonorSetting()
    	local nClass = self.HONOR_CLASS_MONEY;
    	local tbHonorSubList		= {};
    	tbHonorSubList[1]			= {};
    	tbHonorSubList[1].szName	= "Thủ lĩnh"
    	tbHonorSubList[1].nValue	= 0;
    	tbHonorSubList[1].nRank		= 0;
    	tbHonorSubList[1].nClass	= nClass;
    	tbHonorSubList[1].nLevel	= 0;
    	
    	self.tbHonorSettings[3] = {};
    	self.tbHonorSettings[3].tbHonorSubList	= tbHonorSubList
    	self.tbHonorSettings[3].szName			= "<color=green>Vinh dự thủ lĩnh<color>";	
    end
    
    -- 门派荣誉
    function PlayerHonor:_InitFactionHonorSetting()
    	local nClass = self.HONOR_CLASS_FACTION;
    	local tbHonorSubList = {};
    	tbHonorSubList[1]			= {};
    	tbHonorSubList[1].szName	= "Môn Phái"
    	tbHonorSubList[1].nValue	= 0;
    	tbHonorSubList[1].nRank		= 0;
    	tbHonorSubList[1].nClass	= nClass;
    	tbHonorSubList[1].nLevel	= 0;
    	tbHonorSubList[2]			= {};
    	tbHonorSubList[2].szName	= "Bổn Môn"
    	tbHonorSubList[2].nValue	= 0;
    	tbHonorSubList[2].nRank		= 0;
    	tbHonorSubList[2].nClass	= nClass;
    	tbHonorSubList[2].nLevel	= 0;
    
    	self.tbHonorSettings[4] = {};
    	self.tbHonorSettings[4].tbHonorSubList	= tbHonorSubList
    	self.tbHonorSettings[4].szName			= "Môn Phái";
    end
    
    -- 联赛荣誉
    function PlayerHonor:_InitWllsHonorSetting()
    	local nClass = self.HONOR_CLASS_WLLS;
    	local tbHonorSubList		= {};
    	tbHonorSubList[1]			= {};
    	tbHonorSubList[1].szName	= "Liên Đấu"
    	tbHonorSubList[1].nValue	= 0;
    	tbHonorSubList[1].nRank		= 0;
    	tbHonorSubList[1].nClass	= nClass;
    	tbHonorSubList[1].nLevel	= 0;
    
    	self.tbHonorSettings[5] = {};
    	self.tbHonorSettings[5].tbHonorSubList	= tbHonorSubList
    	self.tbHonorSettings[5].szName			= "Liên Đấu";	
    end
    
    -- 宋金战场荣誉
    function PlayerHonor:_InitSongJinBattleHonorSetting()
    	local nClass = self.HONOR_CLASS_BATTLE;
    	local tbHonorSubList		= {};
    	tbHonorSubList[1]			= {};
    	tbHonorSubList[1].szName	= "Mông Cổ Tây Hạ"
    	tbHonorSubList[1].nValue	= 0;
    	tbHonorSubList[1].nRank		= 0;
    	tbHonorSubList[1].nClass	= nClass;
    	tbHonorSubList[1].nLevel	= 0;	
    	
    	self.tbHonorSettings[6] = {};
    	self.tbHonorSettings[6].tbHonorSubList	= tbHonorSubList
    	self.tbHonorSettings[6].szName			= "Mông Cổ Tây Hạ";	
    end
    
    -- 区域争夺战
    function PlayerHonor:_InitAreaBattleHonorSetting()
    	local nClass = self.HONOR_CLASS_AREARBATTLE;
    	local tbHonorSubList		= {};
    	tbHonorSubList[1]			= {};
    	tbHonorSubList[1].szName	= "Tranh Đoạt"
    	tbHonorSubList[1].nValue	= 0;
    	tbHonorSubList[1].nRank		= 0;
    	tbHonorSubList[1].nClass	= nClass;
    	tbHonorSubList[1].nLevel	= 0;	
    	
    	self.tbHonorSettings[7] = {};
    	self.tbHonorSettings[7].tbHonorSubList	= tbHonorSubList
    	self.tbHonorSettings[7].szName			= "Tranh Đoạt";	
    end
    
    -- 白虎堂
    function PlayerHonor:_InitBaiHuTangHonorSetting()
    	local nClass = self.HONOR_CLASS_BAIHUTANG;
    	local tbHonorSubList		= {};
    	tbHonorSubList[1]			= {};
    	tbHonorSubList[1].szName	= "Bạch Hổ"
    	tbHonorSubList[1].nValue	= 0;
    	tbHonorSubList[1].nRank		= 0;
    	tbHonorSubList[1].nClass	= nClass;
    	tbHonorSubList[1].nLevel	= 0;	
    	
    	self.tbHonorSettings[8] = {};
    	self.tbHonorSettings[8].tbHonorSubList	= tbHonorSubList
    	self.tbHonorSettings[8].szName			= "Bạch Hổ";	
    end
    
    -- 新年活动
    function PlayerHonor:_InitEventHonorSetting()
    	local tbHonorSubList		= {};
    --	tbHonorSubList[1]			= {};
    --	tbHonorSubList[1].szName	= "民族大团圆"
    --	tbHonorSubList[1].nValue	= 0;
    --	tbHonorSubList[1].nRank		= 0;
    --	tbHonorSubList[1].nClass	= self.HONOR_CLASS_SPRING;
    --	tbHonorSubList[1].nLevel	= 0;	
    	
    	tbHonorSubList[1]			= {};
    	tbHonorSubList[1].szName	= "Vinh dự Thiền Cảnh Hoa Viên"
    	tbHonorSubList[1].nValue	= 0;
    	tbHonorSubList[1].nRank		= 0;
    	tbHonorSubList[1].nClass	= self.HONOR_CLASS_DRAGONBOAT;
    	tbHonorSubList[1].nLevel	= 0;	
    	
    	tbHonorSubList[2]			= {};
    	tbHonorSubList[2].szName	= "Uy danh giang hồ"
    	tbHonorSubList[2].nValue	= 0;
    	tbHonorSubList[2].nRank		= 0;
    	tbHonorSubList[2].nClass	= self.HONOR_CLASS_WEIWANG;
    	tbHonorSubList[2].nLevel	= 0;
    	
    --	tbHonorSubList[3]			= {};
    --	tbHonorSubList[3].szName	= "武林大会英雄贴"	--"美女荣誉"
    --	tbHonorSubList[3].nValue	= 0;
    --	tbHonorSubList[3].nRank		= 0;
    --	tbHonorSubList[3].nClass	= self.HONOR_CLASS_PRETTYGIRL;
    --	tbHonorSubList[3].nLevel	= 0;	
    
    	tbHonorSubList[3]			= {};
    	tbHonorSubList[3].szName	= "Bá Chủ Ấn"
    	tbHonorSubList[3].nValue	= 0;
    	tbHonorSubList[3].nRank		= 0;
    	tbHonorSubList[3].nClass	= self.HONOR_CLASS_KAIMENTASK;
    	tbHonorSubList[3].nLevel	= 0;
    	
    	tbHonorSubList[4]			= {};
    	tbHonorSubList[4].szName	= "Vinh dự mỹ nữ"
    	tbHonorSubList[4].nValue	= 0;
    	tbHonorSubList[4].nRank		= 0;
    	tbHonorSubList[4].nClass	= self.HONOR_CLASS_PRETTYGIRL;
    	tbHonorSubList[4].nLevel	= 0;
    	
    	tbHonorSubList[5]			= {};
    	tbHonorSubList[5].szName	= "Di tích Hàn Vũ"
    	tbHonorSubList[5].nValue	= 0;
    	tbHonorSubList[5].nRank	= 0;
    	tbHonorSubList[5].nClass	= self.HONOR_CLASS_LADDER1;
    	tbHonorSubList[5].nLevel	= 0;	
    	
    	tbHonorSubList[6]			= {};
    	tbHonorSubList[6].szName	= "Vinh dự Dạ Lam Quan"
    	tbHonorSubList[6].nValue	= 0;
    	tbHonorSubList[6].nRank	= 0;
    	tbHonorSubList[6].nClass	= self.HONOR_CLASS_LADDER2;
    	tbHonorSubList[6].nLevel	= 0;			
    		
    	
    	self.tbHonorSettings[9] = {};
    	self.tbHonorSettings[9].tbHonorSubList	= tbHonorSubList
    	self.tbHonorSettings[9].szName			= "Vinh Dự Hoạt Động";
    end
    
    -- 战斗力
    function PlayerHonor:_InitFightPowerSetting()
    	local tbHonorSubList		= {};
    	
    	tbHonorSubList[1]			= {};
    	tbHonorSubList[1].szName	= "Tổng sức chiến đấu"
    	tbHonorSubList[1].nValue	= 0;
    	tbHonorSubList[1].nRank		= 0;
    	tbHonorSubList[1].nClass	= self.HONOR_CLASS_FIGHTPOWER_TOTAL;
    	tbHonorSubList[1].nLevel	= 0;
    	
    	tbHonorSubList[2]			= {};
    	tbHonorSubList[2].szName	= "Thành tựu"
    	tbHonorSubList[2].nValue	= 0;
    	tbHonorSubList[2].nRank		= 0;
    	tbHonorSubList[2].nClass	= self.HONOR_CLASS_FIGHTPOWER_ACHIEVEMENT;
    	tbHonorSubList[2].nLevel	= 0;
    	
    	self.tbHonorSettings[10] = {};
    	self.tbHonorSettings[10].tbHonorSubList	= tbHonorSubList
    	self.tbHonorSettings[10].szName			= "<color=green>Sức chiến đấu<color>";	
    end
    
    function PlayerHonor:GetHonorLevel(pPlayer, nClass)
    	local nLevel = 0;
    	
    	if (self.HONOR_CLASS_WULIN == nClass) then -- 武林荣誉等级
    		nLevel = pPlayer.GetTask(self.TSK_GROUP, self.TSK_ID_HONORLEVEL_WULIN);
    	elseif (self.HONOR_CLASS_LINGXIU == nClass) then	-- 领袖荣誉等级
    		nLevel = pPlayer.GetTask(self.TSK_GROUP, self.TSK_ID_HONORLEVEL_LINGXIU);
    	elseif (self.HONOR_CLASS_MONEY == nClass) then	-- 财富荣誉等级
    		nLevel = pPlayer.GetTask(self.TSK_GROUP, self.TSK_ID_HONORLEVEL_MONEY);	
    	end
    	return nLevel;
    end
    
    -- 角色上线时调用
    function PlayerHonor:ApplyUploadDevWeaponInfo()
    	local tbBuff = GetGblIntBuf(GBLINTBUF_DEVWEAPON_LIST, 0);
    	if not tbBuff or not tbBuff.tbLadderList then
    		return;
    	end
    	
    	local tbLadderList = tbBuff.tbLadderList;
    	local tbWeaponList = tbBuff.tbWeaponList or {};
    	
    	for nLadderId, tbList in pairs(tbLadderList) do
    		for nRank, tbInfo in pairs(tbList) do
    			if (not tbWeaponList[nLadderId] or not tbWeaponList[nLadderId][nRank]) and
    				tbInfo[1] == me.szName then
    				self:UploadDevWeaponInfo_GS(nLadderId, tbInfo[1], tbInfo[3]);
    			end
    		end
    	end
    end
    
    function PlayerHonor:UploadDevWeaponInfoInBuff_GS()
    	local tbBuff = GetGblIntBuf(GBLINTBUF_DEVWEAPON_LIST, 0);
    	if not tbBuff or not tbBuff.tbLadderList then
    		return;
    	end
    	
    	for nLadderId, tbList in pairs(tbBuff.tbLadderList or {}) do
    		for nRank, tbInfo in pairs(tbList) do
    			self:UploadDevWeaponInfo_GS(nLadderId, tbInfo[1], tbInfo[3]);
    		end
    	end
    end
    
    function PlayerHonor:UploadDevWeaponInfo_GS(nLadderId, szPlayerName, szKeyId)	
    	local pPlayer = KPlayer.GetPlayerByName(szPlayerName);
    	if not pPlayer then
    		return 0;
    	end
    	
    	-- 通过guid去查找道具对象。。。
    	-- 查找空间:背包、仓库、装备栏、备用装备栏、战魂装备栏
    	local tbResult = {};
    	local tbFindRoom = {Item.ROOM_EQUIP, Item.ROOM_EQUIPEX, Item.ROOM_EQUIPEX2, Item.ROOM_REPOSITORY_EXT};
    	Lib:MergeTable(tbFindRoom, Item.BAG_ROOM);
    	Lib:MergeTable(tbFindRoom, Item.REPOSITORY_ROOM);
    	for _, nRoom in pairs(tbFindRoom) do
    		local tbFind = pPlayer.FindItem(nRoom, Item.EQUIP_DEVELOP, 0,0,0);	 --参数0表示模糊查找
    		if (tbFind) then
    			for _, tbItem in ipairs(tbFind) do
    				tbItem.nRoom = nRoom;
    			end
    			Lib:MergeTable(tbResult, tbFind);
    		end
    	end
    	if not tbResult or Lib:CountTB(tbResult) == 0 then
    		return 0;
    	end
    	
    	local pItem = nil;
    	for _, tbItem in pairs(tbResult) do
    		local _pItem = tbItem.pItem;
    		if Item:GetDevelopLadderId(_pItem) == nLadderId and
    			_pItem.szGUID == szKeyId then
    			pItem = _pItem;
    			break;
    		end
    	end
    	
    	if not pItem then
    		return 0;
    	end	
    	
    	-- 需要记录哪些数据
    	local tbWeaponInfo = {};
    	-- tbTaskTable	
    	local tbTaskData = Item:GetItemTaskData(pItem) or {};
    	tbTaskData = Item:FullFilTable(tbTaskData);
    	-- createtempitem参数:g,d,p,l,nSeries,nEnhTimes,nLucky,tbGenInfo,nVersion,dwRandSeed,nCopyEquipIdx,
    	-- nStrengthen,nCount,nCurDur,nMaxDur,tbRandInfo,tbTaskData
    	tbWeaponInfo =
    	{
    		pItem.nGenre, 
    		pItem.nDetail,
    		pItem.nParticular, 
    		pItem.nLevel,
    		pItem.nSeries,
    		pItem.nEnhTimes,
    		pItem.nLucky,
    		pItem.GetGenInfo(),
    		pItem.nVersion,
    		pItem.dwRandSeed,
    		0,
    		pItem.nStrengthen,
    		pItem.nCount,
    		pItem.nCurDur,
    		pItem.nMaxDur,
    		pItem.GetRandomInfo(),
    		tbTaskData,
    		pItem.IsBind()
    	};
    	
    	GCExecute({"PlayerHonor:UploadDevWeaponInfo_GC", nLadderId, szPlayerName, szKeyId, tbWeaponInfo});
    end
    
    function PlayerHonor:UpdateDevWeaponWeeklyLeaderList_GS()
    	local tbBuff = GetGblIntBuf(GBLINTBUF_DEV_LADDER_WEEK_LEADER, 0);
    	if not tbBuff or Lib:CountTB(tbBuff) == 0 then
    		return;
    	end
    	
    	for i = Ladder.tbGuidLadder.nDevWeaponLadderId_Beg, Ladder.tbGuidLadder.nDevWeaponLadderId_End do
    		-- 公告、设置称号
    		local szPlayerName = tbBuff[i];
    		if szPlayerName then
    			self:UpdateDevWeaponWeeklyLeaderPlayer_GS(szPlayerName, i);	
    		end
    	end
    end
    
    function PlayerHonor:UpdateDevWeaponWeeklyLeaderPlayer_GS(szPlayerName, nLadderId, nIsSubPlayer)
    	local pPlayer = KPlayer.GetPlayerByName(szPlayerName);
    	if not pPlayer then
    		return 0;
    	end
    	
    	local tbAwardTitle = self.tbDevelopLadderAwardTitle[nLadderId];
    	-- 获取奖励称号
    	
    	if not tbAwardTitle or #tbAwardTitle == 0 then
    		return 0;
    	end
    	
    	-- 持续时间到下周一00:00
    	local nWeek = Lib:GetLocalWeek(GetTime());
    	local nEndTime = (nWeek + 1) * 7 * 24 * 3600;	-- 这个时间不一定是周一
    	local nWeekDay = tonumber(os.date("%w", nEndTime));
    	if nWeekDay == 0 then
    		nWeekDay = 7;
    	end
    	-- 还要减去时差
    	nEndTime = nEndTime - (nWeekDay - 1) * 24 * 3600 - Lib:GetGMTSec();
    	local nRet = pPlayer.AddTitleByTime(tbAwardTitle[1], tbAwardTitle[2], tbAwardTitle[3], 0, nEndTime);
    	if nRet ~= 1 then
    		return 0;
    	end
    	
    	pPlayer.SetCurTitle(tbAwardTitle[1], tbAwardTitle[2], tbAwardTitle[3], 0);
    	
    	GCExcute({"Dialog:GlobalNewsMsg_GC", string.format("Công bố binh khí Thần Sa mới nhất, <color=gold>%s<color>-<color=gold>%s<color> đứng đầu bảng, trở thành <color=gold>%s<color>", 
    		szPlayerName, tbAwardTitle[5], tbAwardTitle[4])});
    		
    	if (nIsSubPlayer and nIsSubPlayer == 1) then
    		GCExecute({"PlayerHonor:UpdateSubDevWeaponWeeklyLeaderPlayer_GC", nLadderId});
    	else
    		GCExecute({"PlayerHonor:UpdateDevWeaponWeeklyLeaderPlayer_GC", nLadderId});
    	end
    	
    	return 1;
    end
    
    function PlayerHonor:CheckDevWeaponWeeklyLeader()
    	local tbBuff = GetGblIntBuf(GBLINTBUF_DEV_LADDER_WEEK_LEADER, 0);
    	if not tbBuff or Lib:CountTB(tbBuff) == 0 then
    		return;
    	end
    	
    	local nCurTime = GetTime();
    	local nWeek = Lib:GetLocalWeek(nCurTime);
    	if nWeek ~= tbBuff.nWeek then
    		return;
    	end	
    	
    	for i = Ladder.tbGuidLadder.nDevWeaponLadderId_Beg, Ladder.tbGuidLadder.nDevWeaponLadderId_End do
    		-- 公告、设置称号
    		local szPlayerName = tbBuff[i];
    		if szPlayerName and szPlayerName == me.szName then
    			self:UpdateDevWeaponWeeklyLeaderPlayer_GS(szPlayerName, i);
    			--break;	-- 一个人可能有多个第一
    		end
    	end
    end
    
    function PlayerHonor:CheckSubDevWeaponWeeklyLeader()
    	-- 查找从服的第一称号
    	local tbBuff = GetGblIntBuf(GBLINTBUF_DEV_LADDER_WEEK_LEADER_SUB, 0);
    	if not tbBuff or Lib:CountTB(tbBuff) <= 0 then
    		return;
    	end
    
    	local nCurTime = GetTime();
    	local nWeek = Lib:GetLocalWeek(nCurTime);
    	if nWeek ~= tbBuff.nWeek then
    		return;
    	end	
    
    	for i = Ladder.tbGuidLadder.nDevWeaponLadderId_Beg, Ladder.tbGuidLadder.nDevWeaponLadderId_End do
    		-- 公告、设置称号
    		local szPlayerName = tbBuff[i];
    		if szPlayerName and szPlayerName == me.szName then
    			self:UpdateDevWeaponWeeklyLeaderPlayer_GS(szPlayerName, i, 1);
    			--break;	-- 一个人可能有多个第一
    		end
    	end
    end
    
    function PlayerHonor:UpdateDevHorseLadderLeader_GS()
    	local tbBuff = GetGblIntBuf(GBLINTBUF_DEV_HORSE_LADDER_LEADER, 0);
    	if not tbBuff or not tbBuff.tbLeaderList then
    		return;
    	end
    	
    	for nRank, tbInfo in pairs(tbBuff.tbLeaderList or {}) do
    		self:UploadDevHorseDetail_GS(tbInfo[1], tbInfo[3]);
    	end
    end
    
    function PlayerHonor:UploadDevHorseDetail_GS(szPlayerName, szKeyId)
    	local pPlayer = KPlayer.GetPlayerByName(szPlayerName);
    	if not pPlayer then
    		return 0;
    	end
    	
    	local pFindHorse = nil;
    	for i = 1, Horse.PLAYER_HORSE_MAX_COUNT do
    		local pHorse = pPlayer.GetDevHorse(i - 1);
    		if pHorse and pHorse.GetGuid() == szKeyId then
    			pFindHorse = pHorse;
    			break;
    		end
    	end
    	
    	if not pFindHorse then
    		return;
    	end
    	
    	local tbGenerator = Horse:GetGenerator(pFindHorse.GetGeneration());
    	if not tbGenerator then
    		return;
    	end
    	local tbInfo = tbGenerator:SerializeHorseInfo(pFindHorse);
    	Horse:SimplifyHorseInfo(tbInfo);
    	
    	GCExecute({"PlayerHonor:UploadDevHorseLadderLeaderDetail_GC", szPlayerName, szKeyId, tbInfo});
    end
    
    -- 角色上线时调用
    function PlayerHonor:ApplyUploadDevHorseDetail_GS()
    	local tbBuff = GetGblIntBuf(GBLINTBUF_DEV_HORSE_LADDER_LEADER, 0);
    	if not tbBuff or not tbBuff.tbLeaderList then
    		return;
    	end
    		
    	local tbLeaderList = tbBuff.tbLeaderList;
    	local tbHorseList = tbBuff.tbHorseList or {};	
    	
    	for nRank, tbInfo in pairs(tbLeaderList or {}) do
    		if (not tbHorseList or not tbHorseList[nRank]) and
    			tbInfo[1] == me.szName then
    			self:UploadDevHorseDetail_GS(tbInfo[1], tbInfo[3]);
    		end
    	end
    end
    
    function PlayerHonor:UpdateDevHorseLadderLeaderWeekly_GS()
    	-- 如果不需要在线给玩家奖励,这个回调是不需要的!!!
    end
    
    function PlayerHonor:GetDevHorseWeeklyLeaderAward()
    	local szMsg = "Không có phần thưởng có thể nhận<pic=87>\n\n"
    		.. "Mở máy chủ 103 ngày, hiệp sĩ thuộc <color=green>top 20<color> BXH Thú Cưỡi hằng tuần, vào <color=orange>03:00 thứ 2<color> sau khi cập nhật bảng xếp hạng, "
    		.. "đến Tân Thủ Thôn-Mã Bá Lạc nhận 1 <color=pink>Tìm Ngựa-Mảnh<color> (Yêu cầu nhận trước 24:00 chủ nhật tuần đó, mỗi tuần chỉ <color=blue>nhận tối đa 1 quyển<color>."
    	local tbBuff = GetGblIntBuf(GBLINTBUF_DEV_HORSE_LADDER_AWARD, 0);
    	if not tbBuff or not tbBuff.tbPlayerList then
    		Dialog:Say(szMsg);
    		return;
    	end
    	
    	local nCurTime = GetTime();
    	local nWeek = Lib:GetLocalWeek(nCurTime);
    	if nWeek ~= tbBuff.nWeek then
    		return;
    	end	
    	
    	if tbBuff.tbPlayerList[me.szName] then
    		if me.CountFreeBagCell() < 1 then
    			Dialog:Say("Túi đã đầy, hãy chừa ít nhất 1 ô trống!<pic=86>");
    			return;
    		end
    		
    		local pItem = me.AddItem(18,1,3024, 1);		-- 《马说·残篇》
    		if not pItem then
    			return;
    		end
    		
    		tbBuff.tbPlayerList[me.szName] = nil;
    		SetGblIntBuf(GBLINTBUF_DEV_HORSE_LADDER_AWARD, 0, 1, tbBuff);
    	else
    		Dialog:Say(szMsg);
    	end
    end
    
    -- gamecenter脚本---------------------------------------------------------------------------
    
    if (MODULE_GC_SERVER) then
    	function PlayerHonor:ResetPlayerHonorByGS(szName, tbItems)
    		for _, v in ipairs(tbItems) do
    			local _, _, nDataClass, nDataType = string.find(v, "(%d+) (%d+)");
    			nDataClass = tonumber(nDataClass);
    			nDataType = tonumber(nDataType);
    			SetPlayerHonorByName(szName, nDataClass, nDataType, 0);
    		end
    	end
    	
    	-- 每天刷榜之后,记录白金武器榜排名靠前者(1-10名)
    	function PlayerHonor:RecordDevelopLadderLeader()
    		-- 数据变动性大,不能相信之前的数据,总是要重新获取		
    		-- 先对每个子榜,取出前10名的数据
    		local tbBuff = {}
    		tbBuff.tbLadderList = {};
    		for i = Ladder.tbGuidLadder.nDevWeaponLadderId_Beg, Ladder.tbGuidLadder.nDevWeaponLadderId_End do 
    			tbBuff.tbLadderList[i] = GuidLadder_ApplyData(i, 0, 10);	-- 只获取前10名
    		end
    		SetGblIntBuf(GBLINTBUF_DEVWEAPON_LIST, 0, 1, tbBuff);
    		
    		-- 再尝试先各个GS获取对应武器道具的数据
    		-- 通知各个GS上传对应道具的具体信息
    --		for nLadderId, tbList in pairs(tbBuff.tbLadderList) do
    --			for nRank, tbInfo in pairs(tbList) do
    --				GSExecute(-1, {"PlayerHonor:UploadDevWeaponInfo_GS", nLadderId, tbInfo[1], tbInfo[3]});
    --			end
    --		end
    		GSExecute(-1, {"PlayerHonor:UploadDevWeaponInfoInBuff_GS"});
    		
    		-- 如果获取失败,在玩家上线的时候去检查自己的道具是否要主动上传自己武器的信息
    		
    		-- 对每周的和榜第一名,记录获取称号
    		local nCurTime = GetTime();
    		local nWeekDay	= tonumber(os.date("%w", nCurTime));
    		if (1 == nWeekDay) then
    			local tbChampions = {};
    			for i = Ladder.tbGuidLadder.nDevWeaponLadderId_Beg, Ladder.tbGuidLadder.nDevWeaponLadderId_End do
    				if tbBuff.tbLadderList[i] and tbBuff.tbLadderList[i][0] then
    					local tbFirst = tbBuff.tbLadderList[i][0];
    					tbChampions[i] = tbFirst[1];		-- 保存角色名字,因为底层数据其实是角色guid,所以通过名字获取玩家对象不会有问题
    				end
    			end
    			tbChampions.nWeek = Lib:GetLocalWeek(nCurTime);
    			SetGblIntBuf(GBLINTBUF_DEV_LADDER_WEEK_LEADER, 0, 1, tbChampions);
    			SetGblIntBuf(GBLINTBUF_DEV_LADDER_WEEK_LEADER_SUB, 0, 1, {}); -- 清除掉合服时从服的
    			GSExecute(-1, {"PlayerHonor:UpdateDevWeaponWeeklyLeaderList_GS"});
    		end
    	end
    	
    	function PlayerHonor:UpdateDevWeaponWeeklyLeaderPlayer_GC(nLadderId)
    		local tbBuff = GetGblIntBuf(GBLINTBUF_DEV_LADDER_WEEK_LEADER, 0);
    		if not tbBuff or Lib:CountTB(tbBuff) == 0 then
    			return 0;
    		end
    		
    		local nTime = GetTime();
    		local nWeek = Lib:GetLocalWeek(nTime);
    		if nWeek ~= tbBuff.nWeek then
    			return 0;
    		end
    		
    		tbBuff[nLadderId] = nil;
    		SetGblIntBuf(GBLINTBUF_DEV_LADDER_WEEK_LEADER, 0, 1, tbBuff);
    	end
    	
    	function PlayerHonor:UpdateSubDevWeaponWeeklyLeaderPlayer_GC(nLadderId)
    		local tbBuff = GetGblIntBuf(GBLINTBUF_DEV_LADDER_WEEK_LEADER_SUB, 0);
    		if not tbBuff or Lib:CountTB(tbBuff) == 0 then
    			return 0;
    		end
    		
    		local nTime = GetTime();
    		local nWeek = Lib:GetLocalWeek(nTime);
    		if nWeek ~= tbBuff.nWeek then
    			return 0;
    		end
    		
    		tbBuff[nLadderId] = nil;
    		SetGblIntBuf(GBLINTBUF_DEV_LADDER_WEEK_LEADER_SUB, 0, 1, tbBuff);
    	end	
    	
    	function PlayerHonor:UploadDevWeaponInfo_GC(nLadderId, szPlayerName, szKeyId, var)
    		local tbBuff = GetGblIntBuf(GBLINTBUF_DEVWEAPON_LIST, 0);
    		if not tbBuff or not tbBuff.tbLadderList or 
    			not tbBuff.tbLadderList[nLadderId] then
    			return;
    		end
    		
    --		local nRank = GuidLadder_FindByGuid(szKeyId);
    --		if not nRank or nRank > 9 then	-- 前10
    --			return;
    --		end
    		
    		local nRank = 10000;	-- 一个大值
    		for i = 0, 9 do 
    			local tb = tbBuff.tbLadderList[nLadderId][i];
    			if tb and tb[3] == szKeyId then
    				nRank = i;
    				break;
    			end
    		end
    		if not nRank or nRank > 9 then	-- 前10
    			return;
    		end
    		
    		local tbWeaponList = tbBuff.tbWeaponList or {};
    		tbWeaponList[nLadderId] = tbWeaponList[nLadderId] or {};
    		tbWeaponList[nLadderId][nRank] = var;
    		tbBuff.tbWeaponList = tbWeaponList;
    		
    		SetGblIntBuf(GBLINTBUF_DEVWEAPON_LIST, 0, 1, tbBuff);		
    	end
    	
    	function PlayerHonor:UpdateDevHorseLadderLeader()
    		local tbBuff = {};
    		tbBuff.tbLeaderList = GuidLadder_ApplyData(Ladder.tbGuidLadder.nHorseLadderId, 0, 10);	-- 只获取前10名
    		SetGblIntBuf(GBLINTBUF_DEV_HORSE_LADDER_LEADER, 0, 1, tbBuff);
    		GSExecute(-1, {"PlayerHonor:UpdateDevHorseLadderLeader_GS"});
    		
    		if TimeFrame:GetServerOpenDay() < 103 then	-- 坐骑排行榜奖励技能书的时间轴要在103天之后
    			return;
    		end
    		
    		-- 每周对榜的前10名做一次记录
    		local nCurTime = GetTime();
    		local nWeekDay	= tonumber(os.date("%w", nCurTime));
    		if (1 == nWeekDay) then
    			local tbAwardBuff = {};
    			tbAwardBuff.nWeek = Lib:GetLocalWeek(nCurTime);
    			tbAwardBuff.tbPlayerList = {};
    			local tbData = GuidLadder_ApplyData(Ladder.tbGuidLadder.nHorseLadderId, 0, 20);
    			for _, tb in pairs(tbData or {}) do
    				tbAwardBuff.tbPlayerList[tb[1]] = 1;
    			end
    			for szPlayer, _ in pairs(tbAwardBuff.tbPlayerList) do
    				SendMailGC(szPlayer, "Sách Kỹ Năng Thú Cưỡi", "Chúc mừng! Ngựa của hiệp sĩ rất khỏe, nằm trong <color=pink>Top 20 \"BXH Thú Cưỡi Mông Cổ\"<color> của server trong tuần! Thánh thượng rất hài lòng, ban tặng Tìm Ngựa-Mảnh, hãy nhận trong tuần!");
    			end
    			SetGblIntBuf(GBLINTBUF_DEV_HORSE_LADDER_AWARD, 0, 1, tbAwardBuff);
    			SetGblIntBuf(GBLINTBUF_DEV_HORSE_LADDER_AWARD_SUB, 0, 1, {}); -- 清除掉合服时从服的
    			GSExecute(-1, {"PlayerHonor:UpdateDevHorseLadderLeaderWeekly_GS"});
    		end
    	end
    	
    	function PlayerHonor:UploadDevHorseLadderLeaderDetail_GC(szPlayerName, szKeyId, var)
    		local tbBuff = GetGblIntBuf(GBLINTBUF_DEV_HORSE_LADDER_LEADER, 0);
    		if not tbBuff then
    			return;
    		end
    		
    		local nRank = 10000;	-- 一个大值
    		for i = 0, 9 do 
    			local tb = tbBuff.tbLeaderList[i];
    			if tb and tb[3] == szKeyId then
    				nRank = i;
    				break;
    			end
    		end
    		if not nRank or nRank > 9 then	-- 前10
    			return;
    		end
    		
    		local tbHorseList = tbBuff.tbHorseList or {};
    		tbHorseList[nRank] = var;
    		tbBuff.tbHorseList = tbHorseList;
    		
    		SetGblIntBuf(GBLINTBUF_DEV_HORSE_LADDER_LEADER, 0, 1, tbBuff);	
    	end
    	
    	function PlayerHonor:LadderDeletedCallBack(nDataClass, nDataType)
    		if not nDataClass or not  nDataType then
    			print("Khi dùng LadderSortedCallBack chỉ định tham số vô hiệu, nDataClass, nDataType", nDataClass, nDataType);
    			return;
    		end
    		
    		if not self.nServerStartTime then
    			self.nServerStartTime = GetServerStartTime();
    		end
    		if not self.nLeastValidLogoutTime then
    			self.szNormalValueFile = self.szNormalValueFile or "\\setting\\gc_normalvalue.ini";
    			local tbData = Lib:LoadIniFile(self.szNormalValueFile);
    			if not tbData then
    				return;
    			end
    			self.nLogoutTime = self.nLogoutTime or tbData.PlayerDBLoad.LogoutTime; -- 上次登出距离现在这么多天,则其数据为精简加载的
    			self.nLeastValidLogoutTime = self.nServerStartTime - self.nLogoutTime * 86400;
    		end
    		
    		if not self.tbInvalidTimeData then
    			self:TryGetGlobalDataBuffer();
    		end
    		
    		local szKey = string.format("%s %s", nDataClass, nDataType);
    		self.tbInvalidTimeData[szKey]  = self.nLeastValidLogoutTime;
    		SetGblIntBuf(GBLINTBUF_LADDER_BATCH, 0, 1, self.tbInvalidTimeData); 
    		GlobalExcute{"PlayerHonor:SynDataItem", szKey, self.nLeastValidLogoutTime};
    	end
    
    	function PlayerHonor:OnSchemeUpdateHonorLadder()
    		local nCurTime = GetTime();
    		local nWeekDay	= tonumber(os.date("%w", nCurTime));
    		self:DbgOut_GC("OnSchemeUpdateHonorLadder", "Open Honor", nWeekDay);
    		
    		local nDay	= tonumber(GetLocalDate("%d"));
    		self:DbgOut_GC("OnSchemeUpdateSongJinBattleHonorLadder", "Open Honor", nDay);
    		-- 先衰减
    		if (28 == nDay) then
    			print(string.format("OnSchemeLoadFactionHonorLadder Decrease Honor  nDay = %d", nDay));
    			DecreaseFactionHonor();		
    			print(string.format("OnSchemeUpdateSongJinBattleHonorLadder Decrease Honor  nDay = %d", nDay));
    			DecreaseSongJinHonor();	
    			DecreaseLeaderHonor();	-- 领袖荣誉衰减		
    		end
    		
    		self:OnSchemeLoadFactionHonorLadder();
    		self:OnSchemeUpdateSongJinBattleHonorLadder();		
    		
    		self:UpdateFightPowerHonorLadder();
    		self:UpdateAchievementHonorLadder();
    		self:UpdateLevelHonorLadder();
    		Ladder.tbGuidLadder:UpdateRank();
    		Ladder:DailySchedule();
    
    		if (1 == nWeekDay or EventManager.IVER_bOpenTiFu == 1) then
    			self:UpdateWuLinHonorLadder();
    			self:UpdateMoneyHonorLadder();
    			self:UpdateLeaderHonorLadder();
    			
    			self:UpdateChaoShenPiFeng();
    			
    			KGblTask.SCSetDbTaskInt(DBTASD_HONOR_LADDER_TIME, GetTime());
    			GlobalExcute({"PlayerHonor:OnLadderSorted"});	
    			
    			print(string.format("OnSchemeUpdateHonorLadder Update Honor  nDay = %d", nWeekDay));
    		end
    		
    		-- 通知所有GS刷新玩家战斗力
    		GSExecute(-1, {"Player.tbFightPower:RefreshAllPlayer"});
    		
    		--飞絮崖荣誉点
    		local nCurDate = tonumber(os.date("%Y%m%d", nCurTime));
    		--if nCurDate >= Esport.SNOWFIGHT_STATE[1] and nCurDate <= Esport.SNOWFIGHT_STATE[2] then
    		--self:UpdateSpringHonorLadder();
    		--end
    		
    		--龙舟荣誉榜(考虑到合服,领奖期间不进行排行)(合服后,排名一样的名次会自动清0)
    		if (nCurDate <= TowerDefence.SNOWFIGHT_STATE[2] + 1 or nCurDate > TowerDefence.SNOWFIGHT_STATE[1]) then
    		self:OnSchemeUpdateDragonBoatHonorLadder();
    		end
    		
    		-- 龙影珠状态重置
    		Player:ResetAllPlayerDragonBallState_GC();
    		
    		-- 新坐骑排行榜
    		--self:OnSchemeUpdateHorseFragHonorLadder();
    
    		GlobalExcute{"Ladder:RefreshLadderName"};
    	end
    	
    	-- 武林荣誉
    	function PlayerHonor:UpdateWuLinHonorLadder()
    		print("Xếp hạng Võ Lâm bắt đầu");
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_WULIN];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);	
    
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Võ Lâm";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    	
    		UpdateLadderDataForFaction(nType, 0);
    		-- 分榜
    		for i=1, Env.FACTION_NUM do
    			local tbSubShow = GetTotalLadderPart(nType + i, 1, 10);
    			local szSubContext	= szDate .. self.tbFacContext[i];
    			local szLadderName	= self.tbFacContext[i];
    			self:SetShowLadder(tbSubShow, nType + i, szLadderName, szSubContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		end
    		print("Xếp hạng Võ Lâm kết thúc");
    	end
    	
    	-- 财富荣誉
    	function PlayerHonor:UpdateMoneyHonorLadder()
    		print("Xếp hạng Tài Phú bắt đầu");
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_MONEY];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);
    		-- 这里执行价值量变化函数
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Tài Phú";	
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		self:GetHonorStatInfo(self.HONOR_CLASS_MONEY, 500, "moneyhonor", "Money");
    		print("Xếp hạng Tài Phú kết thúc");
    	end
    	
    	-- 领袖荣誉
    	function PlayerHonor:UpdateLeaderHonorLadder()
    		print("Xếp hạng Thủ Lĩnh bắt đầu");
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_LINGXIU];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);
    		-- 这里执行价值量变化函数
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Thủ Lĩnh";	
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		print("Xếp hạng Thủ Lĩnh kết thúc");
    	end
    	
    	-- 战斗力——总
    	function PlayerHonor:UpdateFightPowerHonorLadder()
    		print("Bắt đầu xếp hạng tổng sức chiến đấu");
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_FIGHTPOWER_TOTAL];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);
    		-- 这里执行价值量变化函数
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Bảng xếp hạng sức chiến đấu";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		print("Kết thúc xếp hạng tổng sức chiến đấu");
    	end
    	
    	-- 战斗力——成就
    	function PlayerHonor:UpdateAchievementHonorLadder()
    		print("Bắt đầu xếp hạng thành tựu");
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_FIGHTPOWER_ACHIEVEMENT];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);
    		-- 这里执行价值量变化函数
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Bảng vinh dự thành tựu";	
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		print("Kết thúc xếp hạng thành tựu");
    	end
    	
    	-- 等级
    	function PlayerHonor:UpdateLevelHonorLadder()
    		print("Bắt đầu xếp hạng đẳng cấp");
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_LEVEL];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);
    		-- 这里执行价值量变化函数
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Bảng vinh dự đẳng cấp";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		print("Kết thúc xếp hạng đẳng cấp");
    	end
    	
    	-- 飞絮崖荣誉榜
    	function PlayerHonor:UpdateSpringHonorLadder()
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_SPRING];
    
    		if (not tbLadderCfg) then
    			return 0;
    		end		
    		
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);
    		-- 这里执行价值量变化函数
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. tbLadderCfg.szLadderName;	
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		GlobalExcute{"Ladder:RefreshLadderName"};
    	end
    	
    		-- 逍遥荣誉榜
    	function PlayerHonor:UpdateXoyoLadder(nFlag)
    		print("Xếp hạng Tiêu Dao Cốc bắt đầu");
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_XOYOGAME];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);
    		-- 这里执行价值量变化函数
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Tiêu Dao";	
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		GlobalExcute{"Ladder:RefreshLadderName"};
    		
    		print("Xếp hạng Tiêu Dao Cốc kết thúc");
    		
    		if (0 == nFlag) then
    			return;
    		end
    		SetXoyoAwardResult();
    	end
    	
    	-- 门派荣誉
    	function PlayerHonor:OnSchemeLoadFactionHonorLadder()
    		self:DbgOut_GC("OnSchemeLoadFactionHonorLadder", "Update faction honor");
    
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_FACTION];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);	
    
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Môn Phái";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    	
    		UpdateLadderDataForFaction(nType, 1);
    		-- 分榜
    		for i=1, Env.FACTION_NUM do
    			local tbSubShow = GetTotalLadderPart(nType + i, 1, 10);
    			local szSubContext	= szDate .. self.tbFacContext[i];
    			local szLadderName	= self.tbFacContext[i];
    			self:SetShowLadder(tbSubShow, nType + i, szLadderName, szSubContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		end
    	end
    	
    		-- 宋金荣誉
    	function PlayerHonor:OnSchemeUpdateSongJinBattleHonorLadder()
    		self:DbgOut_GC("OnSchemeUpdateSongJinBattleHonorLadder", "Update songjin battle honor");
    
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_BATTLE];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);	
    
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Mông Cổ Tây Hạ";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    	end
    	
    		-- 禅境花园荣誉(清明节活动)
    	function PlayerHonor:OnSchemeUpdateDragonBoatHonorLadder()
    		self:DbgOut_GC("OnSchemeUpdateDragonBoatHonorLadder", "Update DragonBoat honor");
    
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_DRAGONBOAT];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);
    
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Bảng vinh dự Thiền Cảnh Hoa Viên";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    	end
    	
    	function PlayerHonor:OnSchemeUpdateWeiwangHonorLadder()
    		self:DbgOut_GC("OnSchemeUpdateWeiwangHonorLadder", "Update DragonBoat honor");
    
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_WEIWANG];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);	
    
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Uy danh";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    	end	
    
    	function PlayerHonor:OnSchemeUpdatePrettygirlHonorLadder()
    		self:DbgOut_GC("OnSchemeUpdatePrettygirlHonorLadder", "Update DragonBoat honor");
    
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_PRETTYGIRL];
    		
    		if (not tbLadderCfg) then
    			return 0;
    		end
    		
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);	
    
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Bảng chọn Thời Khắc Hấp Dẫn";		--"美女大选榜";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		GlobalExcute{"Ladder:RefreshLadderName"};
    	end		
    	
    	
    	function PlayerHonor:OnSchemeUpdateBeautyHeroHonorLadder()
    		self:DbgOut_GC("OnSchemeUpdateBeautyHeroHonorLadder", "Update BeautyHero honor");
    
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_BEAUTYHERO];
    		
    		if (not tbLadderCfg) then
    			return 0;
    		end
    		
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);	
    
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local szContext = "Quần Phương Phổ";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		GlobalExcute{"Ladder:RefreshLadderName"};
    	end			
    
    	function PlayerHonor:OnSchemeUpdateHanWuHonorLadder()
    		self:DbgOut_GC("OnSchemeUpdateHanWuHonorLadder", "Update HanWuYiJi");
    
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_LADDER1];
    		
    		if (not tbLadderCfg) then
    			return 0;
    		end
    		
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);	
    
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local szContext = "Hàn Vũ";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		GlobalExcute{"Ladder:RefreshLadderName"};
    	end		
    	
    	
    	function PlayerHonor:OnSchemeUpdateCastleFightHonorLadder()
    		self:DbgOut_GC("OnSchemeUpdateCastleFightHonorLadder", "Update YELANGUAN");
    
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_LADDER2];
    		
    		if (not tbLadderCfg) then
    			return 0;
    		end
    		
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);	
    
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local szContext = "Dạ Lam Quan";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		GlobalExcute{"Ladder:RefreshLadderName"};
    	end			
    	
    	function PlayerHonor:OnSchemeUpdateKaimenTaskHonorLadder()
    		self:DbgOut_GC("OnSchemeUpdateKaimenTaskHonorLadder", "Update DragonBoat honor");
    
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_KAIMENTASK];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);	
    
    		local tbShowLadder	= GetTotalLadderPart(nType, 1, 10);
    		local nNowTime	= GetTime();
    		local tbToday	= os.date("*t", nNowTime - 3600*24);
    		local szDate	= string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate .. "Bá Chủ Ấn";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    	end	
    	
    	--新坐骑碎片交纳榜,刷榜之后需要把第一名的数量清0
    	function PlayerHonor:OnSchemeUpdateHorseFragHonorLadder(nSeqNum, bForce)
    		local nCurTime = GetTime();
    		local nWeekDay	= tonumber(os.date("%w", nCurTime));
    		bForce = bForce or 0;
    		
    		self:DbgOut_GC("OnSchemeUpdateHorseFragHonorLadder", "Update HorseFrag honor");
    		
    		local nType = 0;
    		local tbLadderCfg = Ladder.tbLadderConfig[self.HONOR_CLASS_LADDER3];
    		nType = Ladder:GetType(0, tbLadderCfg.nLadderClass, tbLadderCfg.nLadderType, tbLadderCfg.nLadderSmall);
    		UpdateTotalLadder(nType, tbLadderCfg.nDataClass, 0);
    		
    		local tbShowLadder = GetTotalLadderPart(nType, 1, 10);
    		local nNowTime = GetTime();
    		local tbToday = os.date("*t", nNowTime - 3600 * 24);
    		local szDate = string.format("%d - %d", tbToday.month, tbToday.day);
    		local szContext = szDate.."Bảng Xích Dạ Phi Linh";
    		self:SetShowLadder(tbShowLadder, nType, tbLadderCfg.szLadderName, szContext, tbLadderCfg.szPlayerContext, tbLadderCfg.szPlayerSimpleInfo);
    		
    		-- 每周3清除新坐骑购买者
    		if nWeekDay == 3 or bForce == 1 then
    			KGblTask.SCSetDbTaskInt(DBTASK_NEW_HORSE_OWNER, 0);
    			KGblTask.SCSetDbTaskStr(DBTASK_NEW_HORSE_OWNER, "");
    		end		
    		
    		-- 周日设置坐骑购买者
    		if nWeekDay == 0 or bForce == 1 then
    			-- 取出前20名的数据
    			for i = 1, 20 do
    				local tbRankInfo = GetHonorLadderInfoByRank(nType, i);
    				if not tbRankInfo then
    					break;
    				end
    				
    				-- 数据埋点
    				local cKin = KKin.GetKin(KGCPlayer.GetKinId(tbRankInfo.nPlayerId));
    				local szKinName = "Không gia tộc";
    				local szTongName = "Không bang hội";
    				if cKin then
    					szKinName = cKin.GetName();
    					local nTongId = cKin.GetBelongTong();
    					local pTong = KTong.GetTong(nTongId);
    					if pTong then
    						szTongName = pTong.GetName();
    					end
    				end			
    				local szLog = string.format("%d,%d,%s,%s,%s", i, tbRankInfo.nHonor, 
    					tbRankInfo.szPlayerName, szKinName, szTongName);
    				StatLog:WriteStatLog("stat_info", "keyimen_battle", "chip_collect_rank", 0, szLog);
    				
    				-- 第一名要设置坐骑状态信息,要不小于300个才能获得坐骑
    				if i == 1 and tbRankInfo.nHonor >= self.NEW_HORSE_GET_LIMIT then
    					--KGblTask.SCSetDbTaskInt(DBTASK_NEW_HORSE_OWNER, tbRankInfo.nPlayerId);   不再存ID了,存角色名
    					KGblTask.SCSetDbTaskStr(DBTASK_NEW_HORSE_OWNER, tbRankInfo.szPlayerName);
    					local szMsg = string.format("Chúc mừng %s nhận được 1 thần câu [Xích Dạ Thiên Tường] do Thương Nhân Khắc Di Môn tặng!!", tbRankInfo.szPlayerName);
    					Dialog:GlobalNewsMsg_GC(szMsg);
    					Dialog:GlobalMsg2SubWorld_GC(szMsg);				
    					
    					local szMailMsg =  [[Vị hiệp sĩ: 
        Để tuyên dương những biểu hiện xuất sắc của ngươi gần đây, ta ban tặng cho ngươi 1 thần câu, để tỏ lòng cảm kích. Hy vọng ngươi tiếp tục phát huy.
            Thương Nhân Khắc Di Môn
    
    Chú ý: Khi nhận được thư hãy đến chỗ của Thương nhân trang bị chiến trường Khắc Di Môn để nhận, tư cách nhận được bảo lưu đến 21:30 thứ tư tuần sau.
    ]]
    					SendMailGC(tbRankInfo.nPlayerId, "Thương Nhân Chiến Trường gửi", szMailMsg);
    
    					self:SetPlayerHonor(tbRankInfo.nPlayerId, PlayerHonor.HONOR_CLASS_LADDER3 , 0, 0);	-- 清零
    				end
    			end
    		end
    		-- TODO:合服怎么办???
    	end
    
    	function PlayerHonor:SetShowLadder(tbLadderResult, nType, szLadderName, szContext, szPlayerContext, szSimpleInfo)
    		if (not tbLadderResult) then
    			print("Tại đây không có số liệu xếp hạng....");
    			return;
    		end
    		
    		if (not szLadderName) then
    			return;
    		end
    		
    		DelShowLadder(nType);
    		AddNewShowLadder(nType);
    		SetShowLadderName(nType, szLadderName, string.len(szLadderName) + 1);
    		self:ProcessShowLadderDetail(tbLadderResult, nType, szContext, szLadderName, szPlayerContext, szSimpleInfo);
    	end
    	
    	function PlayerHonor:ProcessShowLadderDetail(tbLadderResult, nType, szContext, szLadderName, szPlayerContext, szSimpleInfo)
    		local tbShowWorldLadder = {};
    		for i, tbInfo in ipairs(tbLadderResult) do
    			local tbPlayerInfo = GetPlayerInfoForLadderGC(tbInfo.szPlayerName);
    			if (tbPlayerInfo) then
    				local tbShowInfo = {};
    				tbShowInfo.szName		= tbInfo.szPlayerName;
    				tbShowInfo.szTxt1		= string.format(szSimpleInfo, tbInfo.dwValue);
    				tbShowInfo.szContext	= string.format(szPlayerContext, tbInfo.dwValue);
    				tbShowInfo.dwImgType	= tbPlayerInfo.nSex;
    				tbShowInfo.szTxt2		= Player:GetFactionRouteName(tbPlayerInfo.nFaction, tbPlayerInfo.nRoute);
    				tbShowInfo.szTxt3		= string.format("Cấp %d", tbPlayerInfo.nLevel);
    				local szKinName			= tbPlayerInfo.szKinName
    				if (not szKinName or string.len(szKinName) <= 0) then
    					szKinName	= "Không phải thành viên gia tộc";
    				end
    				tbShowInfo.szTxt4 = "Gia tộc: " .. szKinName;
    				
    				local szTongName			= tbPlayerInfo.szTongName
    				if (not szTongName or string.len(szTongName) <= 0) then
    					szTongName	= "Không phải thành viên bang hội";
    				end
    				tbShowInfo.szTxt5 = "Bang hội: " .. szTongName;
    				tbShowInfo.szTxt6	= "0";
    				tbShowWorldLadder[#tbShowWorldLadder + 1] = tbShowInfo;
    			end
    		end
    		SetShowLadder(nType, szContext, string.len(szContext) + 1, tbShowWorldLadder);
    		SetShowLadderName(nType, szLadderName, string.len(szLadderName) + 1);
    	end
    	
    	function PlayerHonor:DbgOut_GC(szMode, ...)
    		Dbg:Output("PlayerHonor", szMode, unpack(arg));
    	end
    	
    	function PlayerHonor:AddPlayerHonor(nPlayerId, nClass, nType, nAddHonor)
    		local nHonor = GetPlayerHonor(nPlayerId, nClass, nType);
    		SetPlayerHonor(nPlayerId, nClass, nType, nAddHonor + nHonor);
    	end
    	
    	function PlayerHonor:SetPlayerHonor(nPlayerId, nClass, nType, nAddHonor)
    		SetPlayerHonor(nPlayerId, nClass, nType, nAddHonor);
    	end
    	
    	function PlayerHonor:SetPlayerHonorByName(szName, nClass, nType, nHonor)
    		SetPlayerHonorByName(szName, nClass, nType, nHonor);
    	end
    	
    	function PlayerHonor:SetPlayerXoyoPointsByName(szName, nHonor)
    		SetXoyoPointsByName(szName, nHonor);
    	end
    	
    	function PlayerHonor:GetPlayerHonorByName(szName, nClass, nType)
    		return GetPlayerHonorByName(szName, nClass, nType);
    	end
    	
    	function PlayerHonor:GetPlayerHonor(nPlayerId, nClass, nType)
    		return GetPlayerHonor(nPlayerId, nClass, nType);
    	end
    
    	function PlayerHonor:GetPlayerHonorRank(nPlayerId, nClass, nType)
    		return GetPlayerHonorRank(nPlayerId, nClass, nType);
    	end
    
    	function PlayerHonor:GetPlayerHonorRankByName(szName, nClass, nType)
    		return GetPlayerHonorRankByName(szName, nClass, nType);
    	end
    end
    
    
    
    -- gameserver脚本---------------------------------------------------------------------------
    if (MODULE_GAMESERVER) then
    	
    function PlayerHonor:SynDataItem(szKey, nValue)
    	if not self.tbInvalidTimeData then
    		self:TryGetGlobalDataBuffer();
    	end
    	self.tbInvalidTimeData[szKey]  = nValue;	
    end
    
    function PlayerHonor:SendHonorData()
    	local nPlayerId	= me.nId;
    	local nFaction	= me.nFaction;
    	local nTime		= GetTime();
    	
    	local tbHonorData = {};
    	for nRow, tbSetting in ipairs(self.tbHonorSettings) do
    		local tbHonorSubList = {};
    		
    		for nType, tbData in ipairs(tbSetting.tbHonorSubList) do
    			local nClass	= tbData.nClass;
    			local tbHonorDataDetail		= {};
    			tbHonorDataDetail.szName	= tbData.szName;
    			local nValue	= 0;
    			local nRank		= 0;
    
    			local nSmallType = 0;
    			if (self.HONOR_CLASS_FACTION == nClass) then
    				nSmallType = nType - 1;
    			end
    
    			nValue	= GetPlayerHonor(nPlayerId, nClass, nSmallType);
    			nRank	= GetPlayerHonorRank(nPlayerId, nClass, nSmallType);
    
    			tbHonorDataDetail.nValue	= nValue;
    			tbHonorDataDetail.nRank		= nRank;
    			tbHonorDataDetail.nLevel	= 0;
    			tbHonorDataDetail.nClass	= nClass;
    			tbHonorSubList[nType] 		= tbHonorDataDetail;
    		end
    		
    		tbHonorData[nRow]	= {};
    		tbHonorData[nRow].tbHonorSubList	= tbHonorSubList;
    		tbHonorData[nRow].szName			= tbSetting.szName;
    	end
    	me.CallClientScript({"PlayerHonor:OnSyncHonorData", tbHonorData});
    end
    
    function PlayerHonor:AddPlayerHonor(pPlayer, nClass, nType, nAddHonor)
    	local szHonorName = self:GetHonorName(nClass, nType);
    	if (not szHonorName) then
    		return;
    	end
    	local nHonor = GetPlayerHonor(pPlayer.nId, nClass, nType);
    	GCExcute({"PlayerHonor:AddPlayerHonor", pPlayer.nId, nClass, nType, nAddHonor});
    	pPlayer.Msg("Điểm " .. szHonorName .. " của bạn tăng " .. string.format("%d", nAddHonor));
    end
    
    function PlayerHonor:AddPlayerHonorById_GS(nPlayerId, nClass, nType, nAddHonor)
    	local pPlayer = KPlayer.GetPlayerObjById(nPlayerId);
    	if pPlayer then
    		PlayerHonor:AddPlayerHonor(pPlayer, nClass, nType, nAddHonor);
    	else
    		GCExcute({"PlayerHonor:AddPlayerHonor", nPlayerId, nClass, nType, nAddHonor});
    	end
    end
    
    function PlayerHonor:SetPlayerHonor(nPlayerId, nClass, nType, nAddHonor)
    	GCExcute({"PlayerHonor:SetPlayerHonor", nPlayerId, nClass, nType, nAddHonor});
    end
    
    function PlayerHonor:SetPlayerHonorByName(szName, nClass, nType, nHonor)
    	GCExcute({"PlayerHonor:SetPlayerHonorByName", szName, nClass, nType, nHonor});
    end
    
    function PlayerHonor:SetPlayerXoyoPointsByName(szName, nHonor)
    	GCExcute({"PlayerHonor:SetPlayerXoyoPointsByName", szName, nHonor});
    end
    
    function PlayerHonor:GetPlayerHonorByName(szName, nClass, nType)
    	return GetPlayerHonorByName(szName, nClass, nType);
    end
    
    function PlayerHonor:GetPlayerHonor(nPlayerId, nClass, nType)
    	return GetPlayerHonor(nPlayerId, nClass, nType);
    end
    
    function PlayerHonor:GetPlayerHonorRank(nPlayerId, nClass, nType)
    	return GetPlayerHonorRank(nPlayerId, nClass, nType);
    end
    
    function PlayerHonor:GetPlayerHonorRankByName(szName, nClass, nType)
    	return GetPlayerHonorRankByName(szName, nClass, nType);
    end
    
    function PlayerHonor:AddConsumeValue(pPlayer, nValue, szWay)
    	
    	if not pPlayer or nValue < 0 then
    		return 0;
    	end
    	local nLowValue = KLib.Number2UInt(pPlayer.GetTask(self.TSK_GROUP, self.TSK_ID_COSUME_VALUE));
    	local nHighValue = KLib.Number2UInt(pPlayer.GetTask(self.TSK_GROUP, self.TSK_ID_COSUME_VALUE_HIGH)) * 10^9;
    	local nConsumeValue = nLowValue + nHighValue + nValue;
    	local nSaveLowValue = math.mod(nConsumeValue, 10^9);
    	local nSaveHighValue = math.floor(nConsumeValue / 10^9);
    	pPlayer.SetTask(self.TSK_GROUP, self.TSK_ID_COSUME_VALUE, nSaveLowValue);
    	pPlayer.SetTask(self.TSK_GROUP, self.TSK_ID_COSUME_VALUE_HIGH, nSaveHighValue);
    	Dbg:WriteLog("AddConsumeValue", nValue, pPlayer.szAccount, pPlayer.szName, (szWay or "Không rõ đường dẫn"))
    	self:UpdataMaxWealth(pPlayer);
    end
    
    
    end
    
    
    -- 客户端脚本 ------------------------------------------------------------------------------
    if (MODULE_GAMECLIENT) then
    
    if (not PlayerHonor.tbPlayerHonorData) then
    	PlayerHonor.tbPlayerHonorData = {};
    	PlayerHonor.tbPlayerHonorData.tbHonorData	= {};
    	PlayerHonor.tbPlayerHonorData.nSaveTime		= 0;
    end
    
    function PlayerHonor:ApplyHonorData()
    	local nNowTime	= GetTime();
    	local tbPlayerHonorData	= self.tbPlayerHonorData;
    	if (tbPlayerHonorData and tbPlayerHonorData.nSaveTime > 0 and nNowTime - tbPlayerHonorData.nSaveTime <= 10) then
    		return;
    	end
    	me.CallServerScript{"HonorDataApplyCmd"};
    end
    
    function PlayerHonor:OnSyncHonorData(tbHonorData)
    	if (not tbHonorData) then
    		return;
    	end
    	local nNowTime			= GetTime();
    	
    	for _, tbDate in ipairs(tbHonorData) do
    		local tbSubDate = tbDate.tbHonorSubList;
    		for nType, tbInfo in ipairs(tbSubDate) do
    			local nClass = tbInfo.nClass;
    			tbInfo.nLevel = self:GetHonorLevel(me, nClass);
    		end
    	end
    	
    	PlayerHonor.tbPlayerHonorData.tbHonorData	= tbHonorData;
    	PlayerHonor.tbPlayerHonorData.nSaveTime		= nNowTime;
    	CoreEventNotify(UiNotify.emCOREEVENT_HONORDATAREFRESH);
    end
    
    end
    
    function PlayerHonor:CalcHonorLevel(nHonorValue, nHonorRank, szTypeName)
    	local nRetLevel	= 0;
    	local nType = 0;
    	for nLevel, tb in ipairs(self.tbHonorLevelInfo[szTypeName].tbLevel) do
    		if (nHonorRank > 0) then
    			if ((nHonorRank > tb.nMaxRank or nHonorValue < tb.nMinValue) and (tb.nMaxValue <= 0 or nHonorValue < tb.nMaxValue)) then
    				break;
    			end
    		else
    			if (tb.nMaxValue <= 0 or nHonorValue < tb.nMaxValue) then
    				break;
    			end
    		end
    		if nHonorValue >= tb.nMaxValue and tb.nMaxValue > 0 then
    			nType = 1;
    		elseif nHonorValue < tb.nMaxValue and tb.nMaxValue > 0 then
    			nType = 0;
    		end
    		nRetLevel	= nLevel;
    	end
    	return nRetLevel, nType;
    end
    
    function PlayerHonor:CalcMoneyHonorLevelWithoutRank(nHonorValue)
    	local nRetLevel	= 0;
    	for nLevel, tb in ipairs(self.tbHonorLevelInfo[HONOR_KEY_MONEY].tbLevel) do
    		if nHonorValue <= tb.nMaxValue then
    			break;
    		end
    		nRetLevel	= nLevel;
    	end
    	return nRetLevel;
    end
    
    --获取玩家的财富荣誉等级
    function PlayerHonor:GetPlayerMoneyHonorLevel(nPlayerId)
    	local nHonorValue = self:GetPlayerHonor(nPlayerId, self.HONOR_CLASS_MONEY, 0);
    	local nRank = self:GetPlayerHonorRank(nPlayerId, self.HONOR_CLASS_MONEY, 0);
    	return self:CalcHonorLevel(nHonorValue, nRank, HONOR_KEY_MONEY);
    end
    
    function PlayerHonor:RefreshHonorLevel(pPlayer)
    	local nLadderTime	= KGblTask.SCGetDbTaskInt(DBTASD_HONOR_LADDER_TIME) + 1;	-- 按照+1计算,保证不会有0
    	local nRefreshTime	= pPlayer.GetTask(self.TSK_GROUP, self.TSK_ID_REFRESH_TIME);
    	
    	if (nRefreshTime == nLadderTime) then	-- 排行后此玩家没有刷新过
    		local nHonorLevel = self:GetPlayerMaxHonorLevel(pPlayer);
    		pPlayer.SetHonorLevel(nHonorLevel);	-- 设定当前荣誉等级
    		return;
    	end
    	
    	-- 处于跨服OR 登出,不予刷新荣誉等级
    	if pPlayer.nIsExchangingOrLogout == 1 then
    		return;
    	end
    
    	local nHonorLevel	= 0;
    	local szLevelName	= "";
    	local tbMyLevel		= {};
    	local nHonorTypeId = 0;
    	local tbLevelDate	= {};	-- 三种荣誉等级存储位置
    	local nHonorIndex = 0;
    	for szType, tbTypeInfo in pairs(self.tbHonorLevelInfo) do
    		local nHonorId		= tbTypeInfo.nHonorId;
    		local nHonorRank	= self:GetPlayerHonorRank(pPlayer.nId, nHonorId, 0);
    		local nHonorValue	= self:GetPlayerHonor(pPlayer.nId, nHonorId, 0);
    		local nThisLevel, nType	= self:CalcHonorLevel(nHonorValue, nHonorRank, szType);
    		if (nThisLevel > 0) then
    			if nThisLevel ~= self.nMaxHonorLevel or self:CheckIsChaoshen(pPlayer) == 1 then
    				tbMyLevel[#tbMyLevel+1]	= string.format("%s đứng hạnh thứ %d", tbTypeInfo.szName, nThisLevel);
    				if (nThisLevel > nHonorLevel) then
    					nHonorLevel	= nThisLevel;
    					szLevelName	= tbTypeInfo.tbLevel[nThisLevel].szName;
    					nHonorTypeId = nHonorId * 10 + nType;
    				end
    			elseif nThisLevel == self.nMaxHonorLevel then
    				nThisLevel = self.nSupperHonorLevel;
    				tbMyLevel[#tbMyLevel+1]	= string.format("%s đứng hàng thứ %d", tbTypeInfo.szName, nThisLevel);
    				if (nThisLevel > nHonorLevel) then
    					nHonorLevel	= nThisLevel;
    					szLevelName	= tbTypeInfo.tbLevel[nThisLevel].szName;
    					nHonorTypeId = nHonorId * 10 + nType;
    				end
    			end
    			if szType == "money" then
    				nHonorIndex = #tbMyLevel;
    			end
    		end
    		tbLevelDate[szType] = nThisLevel;
    	end
    	
    	if nHonorIndex <= 0 then
    		nHonorIndex = #tbMyLevel;
    	end
    	
    	local nOldHonorLevel = pPlayer.GetHonorLevel();
    	local nTypeHonor = pPlayer.GetTask(self.TSK_GROUP, self.TSK_ID_HONORLEVEL_TYPE);
    	local nTypeHonorEx = math.floor(nTypeHonor/10);
    	local nTypeCale = math.fmod(nTypeHonor, 10);
    	--用财富荣誉升级到至尊以上的不降级
    	if nTypeHonorEx == PlayerHonor.HONOR_CLASS_MONEY  then
    		if nTypeCale == 1 then
    			if nOldHonorLevel <= 10 and nOldHonorLevel >= 9 and nOldHonorLevel > nHonorLevel then
    				nHonorLevel = nOldHonorLevel;
    				nHonorTypeId = PlayerHonor.HONOR_CLASS_MONEY * 10 + 1;
    				tbMyLevel[nHonorIndex]	= string.format("tài phú vinh dự đứng hàng thứ %d", nHonorLevel);
    				szLevelName	= self.tbHonorLevelInfo["money"].tbLevel[nHonorLevel].szName;
    				tbLevelDate["money"] = nHonorLevel;
    			end
    		else
    			if nOldHonorLevel <= 10 and nOldHonorLevel >= 9 and nOldHonorLevel > nHonorLevel then
    				nHonorLevel = math.max(nOldHonorLevel - 1, nHonorLevel);
    				nHonorTypeId = PlayerHonor.HONOR_CLASS_MONEY * 10 + 1;
    				tbMyLevel[nHonorIndex]	= string.format("tài phú vinh dự đứng hàng thứ %d", nHonorLevel);
    				szLevelName	= self.tbHonorLevelInfo["money"].tbLevel[nHonorLevel].szName;
    				tbLevelDate["money"] = nHonorLevel;
    			end
    		end
    		if nOldHonorLevel == 11 and nHonorLevel <= 9 then
    			nHonorLevel = 10;
    			nHonorTypeId = PlayerHonor.HONOR_CLASS_MONEY * 10 + 1;
    			tbMyLevel[nHonorIndex]	= string.format("tài phú vinh dự đứng hàng thứ %d", nHonorLevel);
    			szLevelName	= self.tbHonorLevelInfo["money"].tbLevel[nHonorLevel].szName;
    			tbLevelDate["money"] = nHonorLevel;
    		end
    	end
    	
    	--超神荣誉需要验证数据是否满足
    	
    	
    	local szMyLevel	= table.concat(tbMyLevel, ",");
    	if (nHonorLevel > 0) then	-- 有排名时要发一封通知邮件
    		local szMailMsg		= string.format([[
      Xếp hạng vinh dự của bạn vào 3 giờ sáng hôm nay là: %s, nội dung chi tiết vào xem ở <link=openwnd:Bảng xếp hạng,UI_LADDER>.
      Đồng thời, bạn nhận được chức %s, có thể đến chỗ <color=yellow>Chủ Tiền Trang mua trang bị quan trọng nhất trong Kiếm Thế - Phi Phong<color>, bạn có thể xem nội dung cụ thể vào xem ở <link=openwnd:Cẩm nang trợ giúp,UI_HELPSPRITE>.
    ]],
    			szMyLevel, szLevelName);
    		KPlayer.SendMail(pPlayer.szName, "Đổi mới Xếp hạng vinh dự", szMailMsg);
    		-- 第一次获得头衔赠送道具,可以返还魂石
    		if pPlayer.GetTask(self.TSK_GIFT_GROUP, self.TSK_ID_GIFT_GETAWARD) == 0 then
    			local szMailMsg2 = string.format([[
        3:00 giờ sáng thứ hai trên Bảng xếp hạng vinh dự, %s, Thu Lâm chúc mừng bạn.
        Bạn có thể đến <color=yellow>Chủ Tiền Trang để mua trang bị quan trọng nhất trong Kiếm Thế - Long Thần Kiếm<color>, nội dung cụ thể có thể vào <link=openwnd: Cẩm nang, UI_HELPSPRITE> để xem thông tin liên quan.
        <color=red>Quà tặng của Thu Lâm<color> là tặng Hồn Thạch hỗ trợ, sau khi trang bị phi phong có thể sử dụng.
    ]],
    	szMyLevel);
    			local nRet = KPlayer.SendMail(pPlayer.szName, "Quà tặng của Thu Lâm", szMailMsg2, 
    					0, 0, 1, unpack(self.ITEM_FREEPIFENG_GIFT));
    			if nRet == 1 then
    				pPlayer.SetTask(self.TSK_GIFT_GROUP, self.TSK_ID_GIFT_GETAWARD, 1);
    			end
    		end
    	end
    	
    	self:WriteLog(Dbg.LOG_INFO, "RefreshHonorLevel", pPlayer.szName, nHonorLevel, szMyLevel, nRefreshTime, nLadderTime);
    	
    	
    	
    	pPlayer.SetHonorLevel(nHonorLevel);	-- 设定当前荣誉等级
    	for szType, nLevel in pairs(tbLevelDate) do
    		self:SavePlayerHonorLevel(pPlayer, szType, nLevel);
    	end
    	pPlayer.SetTask(self.TSK_GROUP, self.TSK_ID_REFRESH_TIME, nLadderTime);	-- 记录刷新时间
    	pPlayer.SetTask(self.TSK_GROUP, self.TSK_ID_HONORLEVEL_TYPE, nHonorTypeId);
    	self:ClearMaxWealth(pPlayer);
    end
    
    --检查是不是满足超神条件
    function PlayerHonor:CheckIsChaoshen(pPlayer)
    	if (IVER_g_nMyVersion == 1) then
    		self.tbChaoshenFightPower = self.tbChaoshenFightPower  or {};
    		self.tbChaoshenFightPower.nWeekDay = self.tbChaoshenFightPower.nWeekDay or 0;
    		self.tbChaoshenFightPower.tbPlayerList = self.tbChaoshenFightPower.tbPlayerList or {};
    		return  self.tbChaoshenFightPower.tbPlayerList[pPlayer.szName] or 0;
    	end
    	
    	self.tbChaoshenFightPower = self.tbChaoshenFightPower  or {};
    	self.tbChaoshenFightPower.nWeekDay = self.tbChaoshenFightPower.nWeekDay or 0;
    	self.tbChaoshenFightPower.tbPlayerList = self.tbChaoshenFightPower.tbPlayerList or {};
    	
    	local nUpdateWeek = KGblTask.SCGetDbTaskInt(DBTASD_HONOR_LADDER_TIME) + 1;
    	local nWeek = Lib:GetLocalWeek(nUpdateWeek);
    	--周一的三点前都不能刷新的
    	if nWeek == self.tbChaoshenFightPower.nWeekDay then
    		return  self.tbChaoshenFightPower.tbPlayerList[pPlayer.szName] or 0;
    	end
    	
    	local tbPlayerList = {};
    	local tbPlayerListEx = {};
    	local nCount = 0;
    	local tbBuffer = GetGblIntBuf(GBLINTBUF_HONOR_PLAYERLIST, 0);
    	if type(tbBuffer) == "table" and tbBuffer["tbFightPower"] and tbBuffer["tbFightPower"].nWeek == nWeek then
    		for i, tbInfo in ipairs(tbBuffer["tbFightPower"].tbPowerInfo ) do
    			nCount = nCount + 1;
    			table.insert(tbPlayerListEx, {tbInfo[1], tbInfo[2]});
    			tbPlayerList[tbInfo[1]] = 1;
    		end
    	else
    		local nType = Ladder:GetType(0, 7,1,0);
    	    local tbChaoshenFightPower= GetTotalLadderPart(nType, 1, 10);
    		for i, tbInfo in ipairs(tbChaoshenFightPower or {}) do
    			if tbInfo.dwValue>= self.nFightPowerMaxHonorLevel then
    				nCount = nCount + 1;
    				table.insert(tbPlayerListEx, {tbInfo.szPlayerName, tbInfo.dwValue});
    				tbPlayerList[tbInfo.szPlayerName] = 1;
    			end
    		end
    	end
    	if nCount >= 10 then
    		self.tbChaoshenFightPower.nWeekDay = nWeek;
    		self.tbChaoshenFightPower.tbPlayerList = tbPlayerList;
    		return  self.tbChaoshenFightPower.tbPlayerList[pPlayer.szName] or 0;
    	end
    	
    	local tbPlayerBuff = {
    		["tbNewlandBuff"] = 1,
    		["tbSupperBattle"] = 2,
    		}
    	if type(tbBuffer) == "table" then
    		for szTB, tbInfo in pairs(tbBuffer) do
    			if tbPlayerBuff[szTB] then
    				--跨服城战:前五的帮会名字
    				if tbPlayerBuff[szTB] == 1 then
    					for _, szTongName in ipairs(tbInfo) do
    						local nTongId = KTong.GetTongNameId(szTongName);
    						local szPlayerName =Tong:GetPresidentMemberName(nTongId);
    						if szPlayerName ~= "Chưa biết" and not tbPlayerList[szPlayerName] then
    							local nHonor =PlayerHonor:GetPlayerHonorByName(szPlayerName, PlayerHonor.HONOR_CLASS_FIGHTPOWER_TOTAL,0)
    							table.insert(tbPlayerListEx, {szPlayerName,nHonor});
    							tbPlayerList[szPlayerName] = 1;
    						end
    					end
    				--跨服宋金
    				elseif tbPlayerBuff[szTB] ==2 then
    					for _, szPlayerName in ipairs(tbInfo) do
    						local nPlayerId = KGCPlayer.GetPlayerIdByName(szPlayerName);
    						if nPlayerId and nPlayerId > 0 and not tbPlayerList[szPlayerName] then
    							local nHonor =PlayerHonor:GetPlayerHonorByName(szPlayerName, PlayerHonor.HONOR_CLASS_FIGHTPOWER_TOTAL,0)
    							table.insert(tbPlayerListEx, {szPlayerName,nHonor});
    							tbPlayerList[szPlayerName] = 1;
    						end
    					end
    				end
    			end
    		end
    	end
    	
    	--辰砂之主
    	local tbMinewar = GetGblIntBuf(GBLINTBUF_MINE_WAR_LASTRESULT, 0);
    	if tbMinewar and tbMinewar.tb****TongInfo and tbMinewar.tb****TongInfo.szCaptainName then
    		local nPlayerId = KGCPlayer.GetPlayerIdByName(tbMinewar.tb****TongInfo.szCaptainName);
    		if nPlayerId and nPlayerId > 0 then
    			local nHonor =PlayerHonor:GetPlayerHonorByName(tbMinewar.tb****TongInfo.szCaptainName, PlayerHonor.HONOR_CLASS_FIGHTPOWER_TOTAL,0)
    			table.insert(tbPlayerListEx, {tbMinewar.tb****TongInfo.szCaptainName,nHonor});
    			tbPlayerList[tbMinewar.tb****TongInfo.szCaptainName] = 1;
    		end
    	end
    	
    	table.sort(tbPlayerListEx,  function(a, b) return a[2] > b[2] end);
    	tbPlayerList = {};
    	for i = 1, 10 do
    		if tbPlayerListEx[i] then
    			tbPlayerList[tbPlayerListEx[i][1]] = 1;
    		end
    	end
    	
    	self.tbChaoshenFightPower.nWeekDay = nWeek;
    	self.tbChaoshenFightPower.tbPlayerList = tbPlayerList;
    	return  self.tbChaoshenFightPower.tbPlayerList[pPlayer.szName] or 0;
    end
    
    function PlayerHonor:GetPlayerMaxHonorLevel(pPlayer)
    	local nHonorLevel = 0;
    	for szType, tbTypeInfo in pairs(self.tbHonorLevelInfo) do
    		local nLevelTaskId	= tbTypeInfo.nLevelTaskId;
    		local nThisLevel	= pPlayer.GetTask(self.TSK_GROUP, nLevelTaskId);
    		if (nThisLevel > 0) then
    			if (nThisLevel > nHonorLevel) then
    				nHonorLevel	= nThisLevel;
    			end
    		end
    	end
    	return nHonorLevel;	
    end
    
    function PlayerHonor:SavePlayerHonorLevel(pPlayer, szType, nLevel)
    	local tbInfo = self.tbHonorLevelInfo[szType];
    	if (tbInfo and tbInfo.nLevelTaskId > 0) then
    		pPlayer.SetTask(self.TSK_GROUP, tbInfo.nLevelTaskId, nLevel);
    	end
    end
    
    function PlayerHonor:OnLadderSorted()
    	for _, pPlayer in ipairs(KPlayer.GetAllPlayer()) do
    		self:RefreshHonorLevel(pPlayer);
    	end
    end
    
    function PlayerHonor:OnLogin(bExchangeServerComing)--modified by zhangzhixiong in 2011.4.15
    	if GLOBAL_AGENT then
    		local nHonorLevel = self:GetPlayerMaxHonorLevel(me);
    		me.SetHonorLevel(nHonorLevel);	-- 设定当前荣誉等级
    	else 
    		if bExchangeServerComing ~= 1 then
    			self:UpdataEquipWealth(me, Item.EQUIPPOS_MANTLE)
    			self:UpdataEquipWealth(me, Item.EQUIPPOS_ZHENYUAN_MAIN)
    			self:UpdataEquipWealth(me, Item.EQUIPPOS_ZHENYUAN_SUB1)
    			self:UpdatePartnerValue(me, 0);
    			self:UpdateDevHorseValue(me, 0);
    		end
    		self:RefreshHonorLevel(me);
    	end
    	if bExchangeServerComing ~= 1 then
    		self:SendHonorData();
    	end
    	
    	if not self.tbInvalidTimeData then
    		self:TryGetGlobalDataBuffer();
    	end
    	
    	local nLastLogoutTime = me.GetLastLogoutTime();
    	if nLastLogoutTime > 0 then
    		local tbItems = {};
    		for k, v in pairs(self.tbInvalidTimeData) do
    			if v > nLastLogoutTime then
    				table.insert(tbItems, k); -- me的k需要重置
    			end
    		end
    		if #tbItems ~= 0 then
    			GCExcute{"PlayerHonor:ResetPlayerHonorByGS", me.szName, tbItems};
    		end
    	end
    	
        --Add by zhangzhixiong in 2011.4.14
        if (bExchangeServerComing ~= 1) then
    	    local szCurIp = "无";
    	    local nIp = me.dwIp;
    	    if (nIp and nIp ~= 0) then
    	        szCurIp = Lib:IntIpToStrIp(me.dwIp);
    	    end
    	    local bMiniClient, nRepresentMode, szProductId, szUUID, szUiMode,
    	    	nScreenWidth, nScreenHeight = me.GetLoginCollectInfo();
    	    local szComputerId = me.GetMacAddr();
    	    local szLogMsg = string.format("%s,%s,%s,%s,%s,%s,%s,%s,%s,%dx%d", szCurIp,
    	    	me.nLevel, me.GetHonorLevel(), szComputerId, bMiniClient, nRepresentMode,
    	    	szProductId, szUUID, szUiMode, nScreenWidth, nScreenHeight);
    	    StatLog:WriteStatLog("stat_info", "login", "login", me.nId, szLogMsg);
    	 end
    	--zhangzhangxiong add end
    end
    
    function PlayerHonor:UpdataEquipWealth(pPlayer, nEquipPos, bClear)
    	if (nEquipPos == Item.EQUIPPOS_WEAPON) then
    		Task:ProcessSpeActToFinishTask(pPlayer, "EQUIP", "WEAPON");
    	end
    	
    	local nTaskId = nEquipPos + 1;		-- nEquipPos是从0开始算的,nTaskId是从1开始算的
    	if not pPlayer then
    		return 0;
    	end
    	
    	-- 加上同伴装备的
    	if (nEquipPos >= Item.EQUIPPOS_NUM + Item.PARTNEREQUIP_NUM) then
    		return 0;
    	end
    	
    	local nTotleValue = 0;
    	
    	if (nEquipPos >= Item.EQUIPPOS_NUM) then		-- 同伴装备
    		local pItem = pPlayer.GetItem(Item.ROOM_PARTNEREQUIP, nEquipPos - Item.EQUIPPOS_NUM, 0);
    		if (pItem) then
    			nTotleValue = pItem.nValue;		-- 现在只加上同伴装备的基本财富,将来可能会有养成财富
    		end
    	elseif nEquipPos >= Item.EQUIPPOS_ZHENYUAN_MAIN and nEquipPos <= Item.EQUIPPOS_ZHENYUAN_SUB1 then
    		local pItem = pPlayer.GetItem(Item.ROOM_EQUIP, nEquipPos, 0);
    		if (pItem) then
    			nTotleValue = Item.tbZhenYuan:GetZhenYuanValue(pItem);
    		end
    	elseif nEquipPos <= Item.EQUIPPOS_PENDANT then
    		nTotleValue = self:CaculateTotalEquipValueEx(pPlayer);
    	else					-- 是玩家装备
    		local nValue1	= self:CaculateTotalEquipValue(pPlayer, Item.ROOM_EQUIPEX, Item.ROOM_EQUIP, nEquipPos);
    		local nValue2	= self:CaculateTotalEquipValue(pPlayer, Item.ROOM_EQUIP, Item.ROOM_EQUIPEX, nEquipPos);
    
    		nTotleValue = math.max(nValue1, nValue2);		
    	end
    
    	if nEquipPos >= Item.EQUIPPOS_ZHENYUAN_MAIN and nEquipPos <= Item.EQUIPPOS_ZHENYUAN_SUB1 then
    		local nCurMax =  pPlayer.GetTask(self.WEALTH_TASK_GROUP, nTaskId);
    		if (nTotleValue > nCurMax) or (bClear and bClear == 1) then
    			pPlayer.SetTask(self.WEALTH_TASK_GROUP, nTaskId, nTotleValue);
    		end
    		if (nTotleValue > nCurMax) and (not bClear or bClear ~= 1) then		-- 清数据的时候不在这里更新
    			self:UpdataMaxWealth(pPlayer);
    		end
    	elseif nEquipPos <= Item.EQUIPPOS_PENDANT then
    		local nCurMax = self:GetOrgEquipValue(pPlayer);
    		if (nTotleValue > nCurMax) or (bClear and bClear == 1) then
    			self:SetOrgEquipValue(pPlayer, nTotleValue);
    		end
    		if (nTotleValue > nCurMax) and (not bClear or bClear ~= 1) then		-- 清数据的时候不在这里更新
    			self:UpdataMaxWealth(pPlayer);
    		end
    	else
    		local nCurMax = pPlayer.GetTask(self.WEALTH_TASK_GROUP, nTaskId);
    		if (nTotleValue > nCurMax) or (bClear and bClear == 1) then
    			pPlayer.SetTask(self.WEALTH_TASK_GROUP, nTaskId, nTotleValue);
    		end
    		if (nTotleValue > nCurMax) and (not bClear or bClear ~= 1) then		-- 清数据的时候不在这里更新
    			self:UpdataMaxWealth(pPlayer);
    		end
    	end
    end
    
    function PlayerHonor:GetOrgEquipValue(pPlayer)
    	local nValue1 = pPlayer.GetTask(self.WEALTH_TASK_GROUP, self.TSK_ID_ORGEQUIPHONOR);
    	local nValue2 = pPlayer.GetTask(self.WEALTH_TASK_GROUP, self.TSK_ID_ORGEQUIPHONOR_Double);
    	return nValue1 * 100000000 + nValue2;
    end
    
    function PlayerHonor:SetOrgEquipValue(pPlayer, nValue)
    	local nValue1 = math.floor(nValue / 100000000);
    	local nValue2 = math.fmod(nValue, 100000000);
    	pPlayer.SetTask(self.WEALTH_TASK_GROUP, self.TSK_ID_ORGEQUIPHONOR, nValue1);
    	pPlayer.SetTask(self.WEALTH_TASK_GROUP, self.TSK_ID_ORGEQUIPHONOR_Double, nValue2);
    end
    
    function PlayerHonor:UpdateFightPower(pPlayer, pItem)
    	--local nCurMax =	pPlayer.GetTask(Player.tbFightPower.TASK_GROUP, Player.tbFightPower.TASK_FIGHTPOWER);
    	local nPower = Player.tbFightPower:GetFightPower(pPlayer);
    	--print("New:", Player.tbFightPower:GetFightPower(pPlayer), "Old:", pPlayer.GetFightPower(), "Cur:", nCurMax);
    	if nPower ~= math.floor(pPlayer.GetFightPower() * 100) then
    		-- 刷新战斗力
    		local nSync = (pPlayer.nMapId == Atlantis.MAP_ID and 1) or nil;
    		Player.tbFightPower:RefreshFightPower(pPlayer, nSync);
    	end
    	
    	-- 白金武器装备后绑定
    	if pItem and pItem.IsDevelopEquip() == 1 and pItem.IsBind() == 0 then
    		pItem.Bind(1);
    	end
    end
    
    --刷新记录的同伴价值量
    function PlayerHonor:UpdatePartnerValue(pPlayer, bClear)
    	local tbPartnerValue = {};
    	for i = 0, pPlayer.nPartnerCount - 1 do
    		local nValue = Partner:GetPartnerValue(pPlayer.GetPartner(i));
    		table.insert(tbPartnerValue, i + 1, {nValue, i});
    	end
    	
    	table.sort(tbPartnerValue, function(a, b) return a[1] > b[1] end);
    
    	local nPartnerValue = 0;
    	for i = 1, Partner.VALUE_CALC_MAX_NUM do
    		if (tbPartnerValue[i]) then
    			nPartnerValue = nPartnerValue + tbPartnerValue[i][1];
    		end		
    	end
    
    	local nTaskPartnerValue = pPlayer.GetTask(self.TSK_GROUP, self.TSK_ID_PARTNER_VALUE);
    	if nPartnerValue > nTaskPartnerValue or bClear == 1 then
    		pPlayer.SetTask(self.TSK_GROUP, self.TSK_ID_PARTNER_VALUE, nPartnerValue);
    		if bClear ~= 1 then
    			self:UpdataMaxWealth(pPlayer);
    		end
    	end
    end
    
    function PlayerHonor:UpdateDevHorseValue(pPlayer, bClear)
    	local nValue = Horse:GetAllHorseValue(pPlayer);
    	
    	local nTaskHorseValue = pPlayer.GetTask(self.TSK_GROUP, self.TSK_ID_DEVHORSE_VALUE);
    	if nValue > nTaskHorseValue or bClear == 1 then
    		pPlayer.SetTask(self.TSK_GROUP, self.TSK_ID_DEVHORSE_VALUE, nValue);
    		if bClear ~= 1 then
    			self:UpdataMaxWealth(pPlayer)
    		end
    	end
    end
    
    function PlayerHonor:CaculateTotalEquipValueEx(pPlayer)
    	local nTotalValue = 0;
    	for nEquipPos = 0, Item.EQUIPPOS_PENDANT do
    		local nValue1	= self:CaculateTotalEquipValue(pPlayer, Item.ROOM_EQUIPEX, Item.ROOM_EQUIP, nEquipPos);
    		local nValue2	= self:CaculateTotalEquipValue(pPlayer, Item.ROOM_EQUIP, Item.ROOM_EQUIPEX, nEquipPos);
    		nTotalValue = nTotalValue + math.max(nValue1, nValue2);
    	end
    	return nTotalValue;
    end
    
    function PlayerHonor:CaculateTotalEquipValue(pPlayer, nRoomType1, nRoomType2, nEquipPos)
    	local nTotleValue = 0;
    	-- 先计算后备装备栏的强化价值量
    	local pEquip = pPlayer.GetItem(nRoomType1, nEquipPos, 0);
    	if pEquip and pEquip.nOrgValue > 0 then
    		local tbSetting = Item:GetExternSetting("value", pEquip.nVersion);
    		if (tbSetting) then
    			local nTypeRate = ((tbSetting.m_tbEquipTypeRate[pEquip.nDetail] or 100) / 100) or 1;
    			local nEnhTimes = pEquip.nEnhTimes;
    			repeat
    				local nEnhValue = tbSetting.m_tbEnhanceValue[nEnhTimes] or 0;
    				nTotleValue = nTotleValue + nEnhValue * nTypeRate;
    				nEnhTimes = nEnhTimes - 1;
    			until (nEnhTimes <= 0);
    				
    			--需要算上改造价值量  added by dengyong 2009-11-12
    			if pEquip.nStrengthen == 1 then
    				local nStrengthenValue = tbSetting.m_tbStrengthenValue[pEquip.nEnhTimes] or 0;
    				nTotleValue = nTotleValue + nStrengthenValue * nTypeRate;
    			end	
    			-- zjq 计算打孔的价值量/2
    			local nHoleValue = Item:GetClass("equip"):CalcHoleValue(pEquip) / 2;
    			nTotleValue = nTotleValue + nHoleValue;
    		end
    	end
    	-- 再取装备价值量
    	pEquip = pPlayer.GetItem(nRoomType2, nEquipPos, 0);
    	if pEquip and pEquip.nOrgValue > 0 then
    		nTotleValue = nTotleValue + pEquip.nValue;
    	end
    
    	return nTotleValue;
    end
    
    function PlayerHonor:UpdataMaxWealth(pPlayer)
    end
    
    function PlayerHonor:WealthPush(pPlayer)
    	if SpecialEvent.tbWealth and SpecialEvent.tbWealth.CallClientPush then
    		SpecialEvent.tbWealth:CallClientPush(pPlayer, 1);
    	end
    end
    
    function PlayerHonor:CheckMaxMoneyValue(pPlayer)
    	local bNeedReCal = 0;
    	local nCalcValue = self:UpdataMaxWealth(pPlayer, 0);
    	local nOldValue = nCalcValue;
    	
    	-- 就真元总是出问题,这里只检查了真元
    	local pZhenYuanValue = 0;
    	for i = Item.EQUIPPOS_ZHENYUAN_MAIN, Item.EQUIPPOS_ZHENYUAN_SUB1 do
    		local pZhenYuan = pPlayer.GetItem(Item.ROOM_EQUIP, i, 0);
    		if pZhenYuan then
    			local pCurValue = Item.tbZhenYuan:GetZhenYuanValue(pZhenYuan);
    			pZhenYuanValue = pZhenYuanValue + pCurValue;
    			if pCurValue ~= pPlayer.GetTask(self.WEALTH_TASK_GROUP, i + 1) then
    				Dbg:WriteLog("PlayerHonor", "CheckMaxMoneyValue", pPlayer.szName.."chân nguyên"..(i-Item.EQfUIPPOS_ZHENYUAN_MAIN+1).."tài phú ghi chép sai lầm , ghi chép trị giá là :"..
    					pPlayer.GetTask(self.WEALTH_TASK_GROUP, i + 1)..",Thực tế sẽ là:"..pCurValue);
    				pPlayer.SetTask(self.WEALTH_TASK_GROUP, i, pCurValue);
    				bNeedReCal = 1;
    			end
    			-- 因为要重新计算真元的财富,所以把总财富中减去任务变量中的真元财富
    			nCalcValue = nCalcValue - pPlayer.GetTask(self.WEALTH_TASK_GROUP, i);
    		end
    	end
    	
    	-- 反正只要是出了问题,就认为是真元。。。
    	if (nCalcValue + pZhenYuanValue ~= GetPlayerHonor(pPlayer.nId, PlayerHonor.HONOR_CLASS_MONEY, 0)) then
    		bNeedReCal = 1;
    	end
    	
    	-- TODO:最坏情况下,这里可能会导致逻辑上死循环,考虑限制一下
    	if bNeedReCal == 1 then
    		local nNewValue = self:UpdataMaxWealth(pPlayer);
    		Dbg:WriteLog("PlayerHonor", "CheckMaxMoneyValue", pPlayer.szName.."chân nguyên tài phú bị lỗi, lần nữa đổi mới tổng tài phú!OldValue: "..nOldValue..", NewValue: "..nNewValue);
    	end
    end
    
    function PlayerHonor:ClearMaxWealth(pPlayer)
    	for i = 0, Item.EQUIPPOS_NUM + Item.PARTNEREQUIP_NUM- 1 do		-- 加上同伴装备的
    		self:UpdataEquipWealth(pPlayer, i, 1);
    	end
    	self:UpdatePartnerValue(pPlayer, 1)
    	self:UpdateDevHorseValue(pPlayer, 1);
    	self:UpdataMaxWealth(pPlayer);
    end
    
    function PlayerHonor:GetHonorStatInfo(nHonorClass, nMaxSize, szFileName, szHonorName)
    	nMaxSize = nMaxSize or 100;
    	local szGateway		= GetGatewayName();
    	local nLadderType	= GetLadderTypeByDataType(nHonorClass, 0);
    	if (not szFileName or string.len(szFileName) <= 0) then
    		print("PlayerHonor:GetHonorStatInfo there is no szFileName!!!");
    		return;
    	end
    	
    	if (not szHonorName or string.len(szHonorName) <= 0) then
    		print("PlayerHonor:GetHonorStatInfo there is no szHonorName!!!");
    		return;
    	end
    	
    	if (nHonorClass <= 0) then
    		print("PlayerHonor:GetHonorStatInfo there is no nHonorClass!!!");
    		return;
    	end
    
    	print("PlayerHonor:GetHonorStatInfo() start ", szFileName);
    	
    	local szOutFile = "\\playerladder\\" .. szFileName .. "_" .. szGateway .. ".txt";
    	
    	local szTime	= os.date("%Y-%m-%d %H:%M:%S", GetTime());
    	
    	local szContext = "Rank\tGateWay\tAccount\tPlayerName\tFaction\tRoute\tLevel\tSex\tKinName\tTongName\t" .. szHonorName .. "Honor\t" .. szTime .. "\n";
    	
    	--"排名\t所在区服\t账号\t角色名\t门派\t路线\t玩家等级\t性别\t家族\t帮会\t" .. szHonorName .. "荣誉值\n";
    	KFile.WriteFile(szOutFile, szContext);
    	for i=1, nMaxSize do
    		local tbLadderInfo = GetPlayerLadderInfoByRank(nLadderType, i);
    		if (tbLadderInfo) then
    			local tbInfo = GetPlayerInfoForLadderGC(tbLadderInfo.szPlayerName);
    			if (tbInfo) then
    				local szOut = i .. "\t" .. szGateway .. "\t" .. tbInfo.szAccount .. "\t" .. tbLadderInfo.szPlayerName .. "\t" .. Player:GetFactionRouteName(tbInfo.nFaction) .. "\t" .. Player:GetFactionRouteName(tbInfo.nFaction, tbInfo.nRoute) .. "\t" .. tbInfo.nLevel .. "\t" .. Player.SEX[tbInfo.nSex] .. "\t";
    
    				if (string.len(tbInfo.szKinName) > 0) then
    					szOut = szOut .. tbInfo.szKinName .. "\t";
    				else
    					szOut = szOut .. "Không gia tộc\t";
    				end 
    
    				if (string.len(tbInfo.szTongName) > 0) then
    					szOut = szOut .. tbInfo.szTongName .. "\t";
    				else
    					szOut = szOut .. "Không bang hội\t";
    				end
    				szOut = szOut .. tbLadderInfo.dwValue .. "\n";
    				--szContext = szContext .. szOut;
    				KFile.AppendFile(szOutFile, szOut);	
    			end
    		end
    	end
    	--KFile.WriteFile(szOutFile, szContext);
    
    	for i=1, GbWlls.DEF_ADV_MAXGBWLLS_MONEY_RANK do
    		local tbLadderInfo = GetPlayerLadderInfoByRank(nLadderType, i);
    		if (tbLadderInfo) then
    			Dbg:WriteLogEx(Dbg.LOG_INFO, "GbWlls_Join_" .. szHonorName, i, tbLadderInfo.szPlayerName, tbLadderInfo.dwValue);
    		end
    	end
    
    
    	print("PlayerHonor:GetHonorStatInfo() end\n");
    end
    
    
    ---------------------------------------------------------------------------------
    -- sutingwei 增加的计算各种财富的函数
    ---------------------------------------------------------------------------------
    --	2012/7/31 12:00:55  集合HonorCalculator文件中的函数进来
    --保存装备栏装备的强化价值量的table
    --local tbEquipFwdEnh = {};
    --保存后备装备栏装备的强化价值量的table
    --local tbEquipBakEnh = {};
    
    --计算该装备的原始价值量	
    function PlayerHonor:CaculateEquipOrgValue(nRoomType,nEquipPos)
    	local nOrgValue = 0;
    	local nEnhValue = 0;
    	local nTotleValue = 0;
    	local pEquip = me.GetItem(nRoomType, nEquipPos, 0);
    	if pEquip then
    		local tbSetting = Item:GetExternSetting("value", pEquip.nVersion);
    		if (tbSetting) then
    			local nTypeRate = ((tbSetting.m_tbEquipTypeRate[pEquip.nDetail] or 100) / 100) or 1;
    			local nEnhTimes = pEquip.nEnhTimes;
    			repeat
    				local nEnhValue = tbSetting.m_tbEnhanceValue[nEnhTimes] or 0;
    				nTotleValue = nTotleValue + nEnhValue * nTypeRate;
    				nEnhTimes = nEnhTimes - 1;
    			until (nEnhTimes <= 0);
    			
    			--需要算上改造价值量  added by dengyong 2009-11-12
    			if pEquip.nStrengthen == 1 then
    				local nStrengthenValue = tbSetting.m_tbStrengthenValue[pEquip.nEnhTimes] or 0;
    				nTotleValue = nTotleValue + nStrengthenValue * nTypeRate;
    			end			
    			nEnhValue = nTotleValue;
    		end
    	 	nTotleValue = pEquip.nValue;
        end
        nOrgValue = nTotleValue - nEnhValue; 
        return nOrgValue;
    end
    
    -- 计算装备的强化价值量 如果不给定nEnhTimes 则默认为装备本身的强化度 否则按给定的nEnhTimes计算
    function PlayerHonor:CaculateEquipEnhValue(nRoomType,nEquipPos,nEnhTimes)
    	local nEnhValue = 0;
    	local nTotleValue = 0;
    	local nStrengthen = 0;
    	
    	local pEquip = me.GetItem(nRoomType, nEquipPos, 0);
    	if pEquip then
    		local tbSetting = Item:GetExternSetting("value", pEquip.nVersion);
    		if (not nEnhTimes) then
    			nEnhTimes = pEquip.nEnhTimes;
    			if pEquip.nStrengthen == 1 then
    				nStrengthen = 1;
    			end
     		end
    		if nEnhTimes == 15.5 then
    			nStrengthen = 1;
    			nEnhTimes = 15;
    		end
    		
    		if (tbSetting) then
    			local nTypeRate = ((tbSetting.m_tbEquipTypeRate[pEquip.nDetail] or 100) / 100) or 1;
    			repeat
    				local nEnhValue = tbSetting.m_tbEnhanceValue[nEnhTimes] or 0;
    				nTotleValue = nTotleValue + nEnhValue * nTypeRate;
    				nEnhTimes = nEnhTimes - 1;
    			until (nEnhTimes <= 0);
    				
    			if nStrengthen == 1 then
    				local nStrengthenValue = tbSetting.m_tbStrengthenValue[pEquip.nEnhTimes] or 0;
    				nTotleValue = nTotleValue + nStrengthenValue * nTypeRate;
    			end			
    				
    			nEnhValue = nTotleValue;
    		end
    	end
    	-- 客户端对强化价值量进行缓存
    	if MODULE_GAMECLIENT then
    		local tbTemp = me.GetPlayerTempTable() or {}
    		if nRoomType == Item.ROOM_EQUIP then
    			tbTemp.tbEquipFwdEnh = tbTemp.tbEquipFwdEnh or {}
    			tbTemp.tbEquipFwdEnh[nEquipPos] = nEnhValue;
    		elseif nRoomType == Item.ROOM_EQUIPEX then
    			tbTemp.tbEquipBakEnh = tbTemp.tbEquipBakEnh or {}
    			tbTemp.tbEquipBakEnh[nEquipPos] = nEnhValue;
    		end
    	end
    	return nEnhValue; 
    end
    
    --计算该装备的价值量
    function PlayerHonor:CaculateEquipTotalValue(nRoomType,nEquipPos)
    	local nValue = 0;
    	local pEquip = me.GetItem(nRoomType, nEquipPos, 0);
       	if pEquip then
    		nValue = pEquip.nValue;
        end
    	return nValue;
    end
    
    --计算该装备的已经强化的次数
    function PlayerHonor:GetEquipEnhTimes(nRoomType,nEquipPos)
    	local nEnhTimes = 0;
        local pEquip = me.GetItem(nRoomType, nEquipPos, 0);
        if pEquip then 
     	   nEnhTimes = pEquip.nEnhTimes;
        end
        return nEnhTimes;
    end
    
    --计算该装备位的价值量	
    function PlayerHonor:CaculateEquipPosValue(nEquipPos)
    	local nTotleValue = 0;
    	if nEquipPos < 0 then 
    		return 0;
    	end
    	if nEquipPos < Item.EQUIPEXPOS_NUM then 
    		local nEnhValue = 0
    		if MODULE_GAMECLIENT then
    		-- 客户端有缓存
    			local tbTemp = me.GetPlayerTempTable() or {}
    			tbTemp.tbEquipFwdEnh = tbTemp.tbEquipFwdEnh or {}
    			tbTemp.tbEquipBakEnh = tbTemp.tbEquipBakEnh or {}
    			nEnhValue = (tbTemp.tbEquipFwdEnh[nEquipPos] or self:CaculateEquipEnhValue(Item.ROOM_EQUIP, nEquipPos))
    		              + (tbTemp.tbEquipBakEnh[nEquipPos] or self:CaculateEquipEnhValue(Item.ROOM_EQUIPEX, nEquipPos))
    		elseif MODULE_GAMESERVER then
    		-- 服务端没有
    			nEnhValue = self:CaculateEquipEnhValue(Item.ROOM_EQUIP, nEquipPos)
    		              + self:CaculateEquipEnhValue(Item.ROOM_EQUIPEX, nEquipPos)
    		end
    		local nValue1 = self:CaculateEquipOrgValue(Item.ROOM_EQUIP, nEquipPos);
    		local nValue2 = self:CaculateEquipOrgValue(Item.ROOM_EQUIPEX, nEquipPos);
    		nTotleValue = math.max(nValue1,nValue2);
    		nTotleValue = nTotleValue + nEnhValue;
    	elseif nEquipPos < Item.EQUIPPOS_NUM then
    		nTotleValue = self:CaculateEquipTotalValue(Item.ROOM_EQUIP, nEquipPos);
    	else
    		return 0;
    	end
    	return nTotleValue;
    end
    
    function PlayerHonor:GetMenPaimijiValue()
    	local nTotleValue = 0;
    	-- 当拥有高级秘籍技能时,加秘籍财富
    	for nSkillId, tbSkill in pairs(self.tbGaojiMijiValue) do		
    		local nLevel = me.GetSkillBaseLevel(nSkillId);
    		if (nLevel > 0 and tbSkill[nLevel] and tbSkill[nLevel] > 0) then
    			nTotleValue = nTotleValue + tbSkill[nLevel];
    		end
    	end
    	return nTotleValue;
    end
    
    function PlayerHonor:GetWulinmijiValue()
    	local nTotleValue = 0;
    	local tbWuLin = Item:GetClass("wulinmiji");
    	for i, tbParam in ipairs(tbWuLin.tbBook) do
    		if self.tbBookToValue[i] then
    			nTotleValue = nTotleValue + self.tbBookToValue[i] * me.GetTask(tbParam[2], tbParam[3]);
    		end
    	end
    	return nTotleValue;
    end
    
    function PlayerHonor:GetXisuijingValue()
    	local tbXiShui = Item:GetClass("xisuijing");
    	local nTotleValue = 0;
    	for i, tbParam in ipairs(tbXiShui.tbBook) do
    		if self.tbBookToValue[i] then
    			nTotleValue = nTotleValue + self.tbBookToValue[i] * me.GetTask(tbParam[2], tbParam[3]);
    		end
    	end
    	return nTotleValue;
    end
    
    function PlayerHonor:GetXiaohaoValue()
    	local nLowValue = KLib.Number2UInt(me.GetTask(self.TSK_GROUP, self.TSK_ID_COSUME_VALUE));
    	local nHighValue = KLib.Number2UInt(me.GetTask(self.TSK_GROUP, self.TSK_ID_COSUME_VALUE_HIGH)) * 10^9;
    	local nTotleValue = nHighValue + nLowValue;
    	return nTotleValue;
    end
    
    function PlayerHonor:GetYuebingValue()
    	local nTotleValue = 0;
    	nTotleValue = nTotleValue + 1000000 * me.GetTask(2040, 20);	--加技能月饼(彩云追月)
    	nTotleValue = nTotleValue + 1000000 * me.GetTask(2040, 21);	--加潜能月饼(沧海月明)
    	return nTotleValue;	
    end
    
    function PlayerHonor:GetPartnerValue()
    	local nTotleValue = 0;
    	nTotleValue = me.GetTask(self.TSK_GROUP, self.TSK_ID_PARTNER_VALUE);
    	return nTotleValue;	
    end
    
    function PlayerHonor:GetPartnerEquipValue()
    	local nValue = 0;
    	for i = 1,Item.PARTNEREQUIP_NUM do
    		local pEquip = me.GetItem(Item.ROOM_PARTNEREQUIP,i-1,0)
    		if pEquip then
    			nValue = nValue + pEquip.nOrgValue;
    		end
    	end
    	return nValue;
    end
    
    function PlayerHonor:GetDevHorseValue()
    	return Horse:GetAllHorseValue(me);
    end
    
    --计算当前财富荣誉	
    function PlayerHonor:CaculateTotalWealthValue()
    	local nTotalValue = 0;
      	for i = 0 , Item.EQUIPPOS_NUM-1  do
    			nTotalValue = nTotalValue + 
    			 	KLib.Number2UInt(self:CaculateEquipPosValue(i));
    	end
    	nTotalValue = nTotalValue + self:GetMenPaimijiValue();
     	nTotalValue = nTotalValue + self:GetWulinmijiValue();
    	nTotalValue = nTotalValue + self:GetXisuijingValue();
    	nTotalValue = nTotalValue + self:GetXiaohaoValue();
    	nTotalValue = nTotalValue + self:GetYuebingValue();
    	nTotalValue = nTotalValue + self:GetPartnerValue();
    	nTotalValue = nTotalValue + self:GetPartnerEquipValue();
    	nTotalValue = nTotalValue + self:GetDevHorseValue();
       	nTotalValue = math.floor(nTotalValue / 10000);
       	return nTotalValue;
    end
    
    
    PlayerHonor:Init();
    
    
    function PlayerHonor:SysChaoShenPlayerList(nType, tbDate)
    	if not MODULE_GC_SERVER then
    		return;
    	end
    	local tbPlayerBuff = {
    		"tbNewlandBuff",
    		"tbSupperBattle",
    		"tbFightPower",
    		}
    	if nType <= 0 or nType > #tbPlayerBuff then
    		return;
    	end
    	local tbBuffer = GetGblIntBuf(GBLINTBUF_HONOR_PLAYERLIST, 0) or {};
    	if type(tbBuffer) ~= "table" then
    		tbBuffer = {};
    	end
    	tbBuffer[tbPlayerBuff[nType]] = tbDate;
    	SetGblIntBuf(GBLINTBUF_HONOR_PLAYERLIST, 0, 1, tbBuffer);
    end
    
    function PlayerHonor:SaveFightPowerInfo()
    	local tbPlayerList = {};
    	local nWeek = Lib:GetLocalWeek(GetTime());
    	tbPlayerList.nWeek = nWeek;
    	tbPlayerList.tbPowerInfo = {}
    	local nType = Ladder:GetType(0, 7,1,0);
        local tbChaoshenFightPower= GetTotalLadderPart(nType, 1, 10);
    	for i, tbInfo in ipairs(tbChaoshenFightPower or {}) do
    		if tbInfo.dwValue>= self.nFightPowerMaxHonorLevel then
    			table.insert(tbPlayerList.tbPowerInfo, {tbInfo.szPlayerName, tbInfo.dwValue});
    		end
    	end
    	self:SysChaoShenPlayerList(3, tbPlayerList)
    end
    
    function PlayerHonor:UpdateChaoShenPiFeng()
    	self.tbChaoshenFightPower = self.tbChaoshenFightPower  or {};
    	self.tbChaoshenFightPower.nWeekDay = self.tbChaoshenFightPower.nWeekDay or 0;
    	self.tbChaoshenFightPower.tbPlayerList = self.tbChaoshenFightPower.tbPlayerList or {};
    	
    	local nUpdateWeek = KGblTask.SCGetDbTaskInt(DBTASD_HONOR_LADDER_TIME) + 1;
    	local nWeek = Lib:GetLocalWeek(nUpdateWeek);
    
    	local tbPlayerList = {};
    	local tbPlayerListEx = {};
    	local  nType = Ladder:GetType(0, 7,1,0);
        	local tbChaoshenFightPower= GetTotalLadderPart(nType, 1, 10);
    	local nCount = 0;
    	for i, tbInfo in ipairs(tbChaoshenFightPower or {}) do
    		if tbInfo.dwValue>= self.nFightPowerMaxHonorLevel then
    			nCount = nCount + 1;
    			table.insert(tbPlayerListEx, {tbInfo.szPlayerName, tbInfo.dwValue});
    			tbPlayerList[tbInfo.szPlayerName] = 1;
    		end
    	end
    	if nCount >= 10 then
    		self.tbChaoshenFightPower.nWeekDay = nWeek;
    		self.tbChaoshenFightPower.tbPlayerList = tbPlayerList;
    		SetGblIntBuf(GBLINTBUF_MALAI_CHAOSHEN, 0, 1, self.tbChaoshenFightPower);
    		GlobalExcute{"PlayerHonor:LoadeChaoShenBuffer_GS"};
    		return 1;
    	end
    	local tbBuffer = GetGblIntBuf(GBLINTBUF_HONOR_PLAYERLIST, 0);
    	local tbPlayerBuff = {
    		["tbNewlandBuff"] = 1,
    		["tbSupperBattle"] = 2,
    		}
    	if type(tbBuffer) == "table" then
    		for szTB, tbInfo in pairs(tbBuffer) do
    			if tbPlayerBuff[szTB] then
    				if tbPlayerBuff[szTB] == 1 then
    					for _, szTongName in ipairs(tbInfo) do
    						local nTongId = KTong.GetTongNameId(szTongName);
    						local szPlayerName =Tong:GetPresidentMemberName(nTongId);
    						if szPlayerName ~= "Chưa biết" and not tbPlayerList[szPlayerName] then
    							local nHonor =PlayerHonor:GetPlayerHonorByName(szPlayerName, 7,1)
    							table.insert(tbPlayerListEx, {szPlayerName,nHonor});
    							tbPlayerList[szPlayerName] = 1;
    						end
    					end
    				elseif tbPlayerBuff[szTB] ==2 then
    					for _, szPlayerName in ipairs(tbInfo) do
    						local nPlayerId = KGCPlayer.GetPlayerIdByName(szPlayerName);
    						if nPlayerId and nPlayerId > 0 and not tbPlayerList[szPlayerName] then
    							local nHonor =PlayerHonor:GetPlayerHonorByName(szPlayerName, 7,1)
    							table.insert(tbPlayerListEx, {szPlayerName,nHonor});
    							tbPlayerList[szPlayerName] = 1;
    						end
    					end
    				end
    			end
    		end
    	end
    
    	local tbMinewar = GetGblIntBuf(GBLINTBUF_MINE_WAR_LASTRESULT, 0);
    	if tbMinewar and tbMinewar.tb****TongInfo and tbMinewar.tb****TongInfo.szCaptainName then
    		local nPlayerId = KGCPlayer.GetPlayerIdByName(tbMinewar.tb****TongInfo.szCaptainName);
    		if nPlayerId and nPlayerId > 0 then
    			local nHonor =PlayerHonor:GetPlayerHonorByName(tbMinewar.tb****TongInfo.szCaptainName, 7,1)
    			table.insert(tbPlayerListEx, {tbMinewar.tb****TongInfo.szCaptainName,nHonor});
    			tbPlayerList[tbMinewar.tb****TongInfo.szCaptainName] = 1;
    		end
    	end
    	
    	table.sort(tbPlayerListEx,  function(a, b) return a[2] < b[2] end);
    	tbPlayerList = {};
    	for i = 1, 10 do
    		if tbPlayerListEx[i] then
    			tbPlayerList[tbPlayerListEx[i][1]] = 1;
    		end
    	end
    	
    	self.tbChaoshenFightPower.nWeekDay = nWeek;
    	self.tbChaoshenFightPower.tbPlayerList = tbPlayerList;
    	SetGblIntBuf(GBLINTBUF_MALAI_CHAOSHEN, 0, 1, self.tbChaoshenFightPower);
    	GlobalExcute{"PlayerHonor:LoadeChaoShenBuffer_GS"};
    	return 1;
    end
    
    function PlayerHonor:LoadeChaoShenBuffer_GC()
    	local tbChaoShen = GetGblIntBuf(GBLINTBUF_MALAI_CHAOSHEN, 0) or {};
    	self.tbChaoshenFightPower = tbChaoShen;
    end
    
    function PlayerHonor:LoadeChaoShenBuffer_GS()
    	local tbChaoShen = GetGblIntBuf(GBLINTBUF_MALAI_CHAOSHEN, 0) or {};
    	self.tbChaoshenFightPower = tbChaoShen;
    end
    
    if (MODULE_GC_SERVER) then
    function PlayerHonor:GCStartEvent()
    	PlayerHonor:LoadeChaoShenBuffer_GC()
    end
    
    GCEvent:RegisterGCServerStartFunc(PlayerHonor.GCStartEvent, PlayerHonor);
    end
    
    if (MODULE_GAMESERVER) then
    
    function PlayerHonor:GSStartEvent()
    	PlayerHonor:LoadeChaoShenBuffer_GS();	
    end
    	
    
    	ServerEvent:RegisterServerStartFunc(PlayerHonor.GSStartEvent, PlayerHonor);
    	PlayerEvent:RegisterGlobal("OnLogin", PlayerHonor.OnLogin, PlayerHonor);
    --	PlayerSchemeEvent:RegisterGlobalWeekEvent({PlayerHonor.OnWeekEvent_DecreaseFactionHonor, PlayerHonor});
    end
    đồng bộ các kiểu con đà điểu xem có được không
    Khách viếng thăm hãy cùng Lilies xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  3. Các thành viên gởi lời cảm ơn đến Lilies vì bài viết này !

    zgiavuong (06-09-15)

  4. #13
    Thành Viên zgiavuong's Avatar
    Ngày tham gia
    Feb 2013
    Bài viết
    101
    Thanks
    41
    Thanked 8 Times in 6 Posts

    Ðề: Cho hỏi có ai sửa được lỗi tài phú không lên được cấp siêu thần chưa

    ko biết là do sever hay do hàm update tài phú nữa update xong mất hẳn danh hiệu tài phú luôn mặc dù có tài phú nhưng nó ko có phi phong với lại chỉnh thơi gian update tải phú hoặc lệnh như thế nào mới phù hợp thế bác giúp mình với
    Lần sửa cuối bởi zgiavuong, ngày 06-09-15 lúc 07:17 AM.
    Khách viếng thăm hãy cùng zgiavuong xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  5. #14
    Thành Viên
    Ngày tham gia
    Apr 2013
    Bài viết
    111
    Thanks
    31
    Thanked 22 Times in 17 Posts

    Ðề: Cho hỏi có ai sửa được lỗi tài phú không lên được cấp siêu thần chưa

    có chỉnh sửa gì không, nếu để nguyên sever gốc thì nó sẽ tự lên khi đủ điều kiện, ko thì dùng cái này cho vao túi tân thủ hoặc thẻ GM

    Code:
    function tbGift:XepHangDanhVong()  
        GCExcute({"PlayerHonor:UpdateWuLinHonorLadder"}); --võ lâm 
        GCExcute({"PlayerHonor:UpdateMoneyHonorLadder"}); --tài phú 
        GCExcute({"PlayerHonor:UpdateLeaderHonorLadder"});  --thủ lĩnh 
        GCExcute({"PlayerHonor:UpdateSpringHonorLadder"});  
        GCExcute({"PlayerHonor:UpdateXoyoLadder"});  --tiêu dao 
        GCExcute({"PlayerHonor:OnSchemeLoadFactionHonorLadder"});  --môn phái 
        GCExcute({"PlayerHonor:OnSchemeUpdateSongJinBattleHonorLadder"});  -- 
        GCExcute({"PlayerHonor:OnSchemeUpdateDragonBoatHonorLadder"});  
        GCExcute({"PlayerHonor:OnSchemeUpdateWeiwangHonorLadder"});  
        GCExcute({"PlayerHonor:OnSchemeUpdatePrettygirlHonorLadder"});  
        GCExcute({"PlayerHonor:OnSchemeUpdateKaimenTaskHonorLadder"});  
        KGblTask.SCSetDbTaskInt(86, GetTime());  
        GlobalExcute({"PlayerHonor:OnLadderSorted"});  
        -- GlobalExcute({"PlayerHonor:OnLadderSorted"}); 
        GlobalExcute({"Dialog:GlobalNewsMsg_GS", "Thứ hạng danh vọng Tài Phú, Võ Lâm, Thủ Lĩnh, Môn Phái, TDLT...đã được cập nhật, có thể xem chi tiết bằng phím Ctrl + C. Các hão hán đã có thể mua Phi phong nếu đủ điều kiện danh vọng <pic=104><pic=104><pic=104><pic=104><pic=104>"}); 
         
        print("Xếp hạng danh vọng.");  
    end
    Khách viếng thăm hãy cùng Lilies xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  6. Các thành viên gởi lời cảm ơn đến Lilies vì bài viết này !

    zgiavuong (06-09-15)

  7. #15
    Thành Viên zgiavuong's Avatar
    Ngày tham gia
    Feb 2013
    Bài viết
    101
    Thanks
    41
    Thanked 8 Times in 6 Posts

    Ðề: Cho hỏi có ai sửa được lỗi tài phú không lên được cấp siêu thần chưa

    Trích dẫn Gửi bởi Lilies [Only registered and activated users can see links. ]
    có chỉnh sửa gì không, nếu để nguyên sever gốc thì nó sẽ tự lên khi đủ điều kiện, ko thì dùng cái này cho vao túi tân thủ hoặc thẻ GM

    Code:
    function tbGift:XepHangDanhVong()  
        GCExcute({"PlayerHonor:UpdateWuLinHonorLadder"}); --võ lâm 
        GCExcute({"PlayerHonor:UpdateMoneyHonorLadder"}); --tài phú 
        GCExcute({"PlayerHonor:UpdateLeaderHonorLadder"});  --thủ lĩnh 
        GCExcute({"PlayerHonor:UpdateSpringHonorLadder"});  
        GCExcute({"PlayerHonor:UpdateXoyoLadder"});  --tiêu dao 
        GCExcute({"PlayerHonor:OnSchemeLoadFactionHonorLadder"});  --môn phái 
        GCExcute({"PlayerHonor:OnSchemeUpdateSongJinBattleHonorLadder"});  -- 
        GCExcute({"PlayerHonor:OnSchemeUpdateDragonBoatHonorLadder"});  
        GCExcute({"PlayerHonor:OnSchemeUpdateWeiwangHonorLadder"});  
        GCExcute({"PlayerHonor:OnSchemeUpdatePrettygirlHonorLadder"});  
        GCExcute({"PlayerHonor:OnSchemeUpdateKaimenTaskHonorLadder"});  
        KGblTask.SCSetDbTaskInt(86, GetTime());  
        GlobalExcute({"PlayerHonor:OnLadderSorted"});  
        -- GlobalExcute({"PlayerHonor:OnLadderSorted"}); 
        GlobalExcute({"Dialog:GlobalNewsMsg_GS", "Thứ hạng danh vọng Tài Phú, Võ Lâm, Thủ Lĩnh, Môn Phái, TDLT...đã được cập nhật, có thể xem chi tiết bằng phím Ctrl + C. Các hão hán đã có thể mua Phi phong nếu đủ điều kiện danh vọng <pic=104><pic=104><pic=104><pic=104><pic=104>"}); 
         
        print("Xếp hạng danh vọng.");  
    end
    đúng r bác em dùng hàm này để update tp này + sửa maxhonor 11 xong out ra vào lại mất luôn danh hiệu phi phong[COLOR="Silver"]

    --- Chế độ gộp bài viết ---



    [Only registered and activated users can see links. ] thanks bác em đã thành công
    Lần sửa cuối bởi zgiavuong, ngày 06-09-15 lúc 07:55 AM.
    Khách viếng thăm hãy cùng zgiavuong xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  8. #16
    Thành Viên zgiavuong's Avatar
    Ngày tham gia
    Feb 2013
    Bài viết
    101
    Thanks
    41
    Thanked 8 Times in 6 Posts

    Ðề: Cho hỏi có ai sửa được lỗi tài phú không lên được cấp siêu thần chưa

    à bác tiện thể cho em hỏi muốn mở tính năng chuyển đổi vũ khí thần sa thì config ntn
    Khách viếng thăm hãy cùng zgiavuong xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  9. #17
    Thành Viên
    Ngày tham gia
    Apr 2013
    Bài viết
    111
    Thanks
    31
    Thanked 22 Times in 17 Posts

    Ðề: Cho hỏi có ai sửa được lỗi tài phú không lên được cấp siêu thần chưa

    Chuyển đổi từ vô hạ lên phồn hoa...... ,hay chuyển đổi như thế nào
    Khách viếng thăm hãy cùng Lilies xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 
Trang 2 của 2 Đầu tiênĐầu tiên 1 2

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •  
Múi giờ GMT +7. Bây giờ là 12:47 PM.
vBulletin®, Copyright ©2000-2011, Jelsoft Enterprises Ltd.
CLBGamesVN không chịu trách nhiệm về Luật Bản Quyền của các tài liệu, bài viết v.v...được đăng tải trên diễn đàn này.
Diễn đàn phát triển dưới sự đóng góp của tất cả thành viên. BQT chỉ là những người thành lập ra sân chơi, quản lý và duy trì về mặt kỹ thuật, nội dung khi hợp lệ.