[JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau) - Trang 9
Hello & Welcome to our community. Is this your first visit? Đăng Ký
Follow us on
Follow us on Facebook Follow us on Twitter Linked In Flickr Watch us on YouTube My Space Blogger
 
Trang 9 của 48 Đầu tiênĐầu tiên ... 7 8 9 10 11 19 ... CuốiCuối
Kết quả 81 đến 90 của 480
  1. #81
    Thành Viên ngocdpt's Avatar
    Ngày tham gia
    Apr 2011
    Bài viết
    103
    Thanks
    62
    Thanked 111 Times in 44 Posts

    Ðề: [JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau)

    Bác nào có cái GMpanel gốc chưa mã hóa share mình cái
    Định test 1 số chức năng mà GMpanel bị mã hóa rồi help!!
    Khách viếng thăm hãy cùng ngocdpt xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  2. #82
    Thành Viên N.T.S.1802's Avatar
    Ngày tham gia
    Nov 2015
    Bài viết
    251
    Thanks
    135
    Thanked 180 Times in 30 Posts

    Ðề: [JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau)

    Trích dẫn Gửi bởi ngocdpt [Only registered and activated users can see links. ]
    Bác nào có cái GMpanel gốc chưa mã hóa share mình cái
    Định test 1 số chức năng mà GMpanel bị mã hóa rồi help!!
    Code:
    local tbUi = Ui:CreateClass("GMListPanel");
    
    -- 我要各个AI的同伴 (同伴ID配置)
    local tbAllTestAIPartner = "{57, 23, 13, 20, 22, 29, 12, 52, 26, 41, 37, 11, 21, 66}"
    
    -- 决定显示顺序
    local tbDataIndex =
    {
    	OneKeyShow 				= 1, 					-- 一键演示
    	QuicklyEquipment 		= 2,					-- 一键N级
    	RefreshHp				= 3,					-- 回满血
    	ActivtyOpen 			= 4, 					-- 活动开启
    	AddPower 				= 5, 					-- 角色能力添加
    	Money 					= 6, 					-- 大量财富
    	GainItem 				= 7, 					-- 获取道具
    	Revive   				= 8, 					-- 满血复活
    	nPartnerDataIndex      	= 9, 					-- 同伴同伴
    	Role 					= 10, 					-- XX级角色
    	KinTool                 = 11, 					-- 家族工具
    	House 					= 12, 					-- 家园
    	nLevelUpDataIndex  		= 13, 					-- 升级
    	nHonorDataIndex         = 14, 					-- 头衔
    	BattleSignIn 			= 15, 					-- 战场报名
    	BaoZang 				= 16,					-- 宝藏
    	TeamFuben 				= 17, 					-- 组队副本
    	RandomFuben 			= 18,					-- 随机秘境
    	AddItem 				= 19,					-- 增加指定道具
    	TestClientPk 			= 20,					-- 客户端同屏PK测试
    	UnlockFuben 			= 21,					-- 开关卡
    	CleanBag 				= 22,					-- 清空背包
    	Refresh 				= 23,					-- 小功能
    	ChangeFaction           = 24,					-- 转门派
    }
    
    -- 动态初始化的索引
    local nAllPartnerIndex 				= 9
    local nSSPartnerSingleIndex 		= 2
    local nSPartnerSingleIndex 			= 4
    local nAPartnerSingleIndex 			= 6
    local nCodeGift 					= 11
    
    -- XX级角色 配置
    local tbRoleData =
    {
    	[1] =
    	{
    		nLevel = 20,
    		tbStrong = {5,10,20}, 					-- 强化
    		tbInsert = {5,10,20},  					-- 镶嵌(前提是表里有数据)
    	},
    	[2] =
    	{
    		nLevel = 30,
    		tbStrong = {10,20,30},
    		tbInsert = {10,20,30},
    	},
    	[3] =
    	{
    		nLevel = 40,
    		tbStrong = {20,30,40},
    		tbInsert = {20,30,40},
    	},
    	[4] =
    	{
    		nLevel = 50,
    		tbStrong = {30,40,50},
    		tbInsert = {30,40,50},
    	},
    	[5] =
    	{
    		nLevel = 60,
    		tbStrong = {40,50,60},
    		tbInsert = {40,50,60},
    	},
    	[6] =
    	{
    		nLevel = 70,
    		tbStrong = {50,60,70},
    		tbInsert = {50,60,70},
    	},
    	[7] =
    	{
    		nLevel = 80,
    		tbStrong = {60,70,80},
    		tbInsert = {60,70,80},
    	},
    	[8] =
    	{
    		nLevel = 90,
    		tbStrong = {70,80,90},
    		tbInsert = {70,80,90},
    	},
    	[9] =
    	{
    		nLevel = 100,
    		tbStrong = {80,90,100},
    		tbInsert = {80,90,100},
    	},
    	[10] =
    	{
    		nLevel = 110,
    		tbStrong = {90,100,110},
    		tbInsert = {90,100,110},
    	},
    	[11] =
    	{
    		nLevel = 120,
    		tbStrong = {90,100,110},
    		tbInsert = {100,110,120},
    	},
    }
    
    -- 等级提升等级段配置
    local nMaxLevelUp = 12
    
    tbUi.tbGMData = {
    	[tbDataIndex.OneKeyShow] = {
    		Text = "Hiện nhanh",
    		szCallback = "GM:OneKeyShow()",
    	},
    
    	[tbDataIndex.QuicklyEquipment] =
    	{
    		Text = "LvN",
    		tbChild = {
    			[1] = {
    				Text = "Lv40 nhanh",
    				szCallback = "GM:QuicklyEquipment()",
    			},
    			[2] = {
    				Text = "Lv80 nhanh",
    				szCallback = "GM:QuicklyEquipment2()",
    			},
    			[3] = {
    				Text = "Lv100",
    				szCallback = "GM:QuicklyEquipment3()",
    			},
    			[4] = {
    				Text = "Lv110",
    				szCallback = "GM:QuicklyEquipment4()",
    			},
    			[5] = {
    				Text = "Lv120",
    				szCallback = "GM:QuicklyEquipment5()",
    			},
    		}
    	},
    
    	[tbDataIndex.RefreshHp] = {
    		Text = "Hồi đầy sinh lực",
    		szCallback = "GM:RefreshHp()",
    	},
    
    	[tbDataIndex.ActivtyOpen] = {
    		Text = "Mở hoạt động",
    		tbChild = {
    			{
    				Text = "Minh Chủ Võ Lâm",
    				tbChild = {
    				{
    						Text = "Khiêu chiến Minh Chủ Võ Lâm",
    						szCallback = "GM:OpenBossActivity()",
    				},
    				{
    						Text = "Đóng Minh Chủ Võ Lâm",
    						szCallback = "GM:EndFinishBoss()",
    				},
    				{
    						Text = "Xóa chờ",
    						szCallback = "GM:BossFightCd()",
    				},
    				},
    			},
    			{
    				Text = "Đấu Giá",
    				tbChild = {
    					{
    						Text = "Mở Bang Hội",
    						szCallback = "GM:KinAuction()",
    					},
    					{
    						Text = "Mở Hành Cước Thương Nhân",
    						szCallback = "GM:StartAuctionDealer()",
    					},
    				},
    			},
    			{
    				Text = "Võ Thần Điện",
    				szCallback = "GM:OpenRankPanel()",
    			},
    			{
    				Text = "Quần Anh Hội",
    				tbChild = {
    					[1] = {
    						Text = "Mở Quần Anh Hội",
    						szCallback = "GM:QunYingHuiOpen()",
    					},
    					[2] = {
    						Text = "Vào Quần Anh Hội",
    						szCallback = "GM:QunYingHuiJoin()",
    					},
    				},
    			},
    			{
    				Text = "Chiến Trường",
    				tbChild = {
    					{
    						Text = "Mở Chiến Trường Tân Thủ",
    						szCallback = "GM:OpenAloneBattle()",
    					},
    					{
    						Text = "Mở Chiến Trường Nguyên Soái",
    						szCallback = "GM:OpenBattle()",
    					},
    					{
    						Text = "Mở Chiến Trường PK",
    						szCallback = "GM:OpenBatte1()",
    					},
    					{
    						Text = "Mở Tống Kim Chiến",
    						szCallback = "GM:OpenBatte8()",
    					},
    					{
    						Text = "Đóng báo danh chiến trường",
    						szCallback = "GM:StopBattleSignUp()",
    					},
    					{
    						Text = "Tăng số lần chiến trường",
    						szCallback = "GM:AddDegreeBattle()",
    					},
    				},
    			},
    			{
    				Text = "Thủ Lĩnh Dã Ngoại",
    				tbChild = {
    					[1] = {
    						Text = "Mở Thủ Lĩnh Dã Ngoại",
    						szCallback = "GM:OpenBoss()",
    					},
    					[2] = {
    						Text = "Đóng Thủ Lĩnh Dã Ngoại",
    						szCallback = "GM:CloseBoss()",
    					},
    				},
    			},
    			{
    				Text = "Danh Tướng",
    				tbChild = {
    					[1] = {
    						Text = "Mở bản đồ Danh Tướng",
    						szCallback = "GM:PreStartBossLeader()",
    					},
    					[2] = {
    						Text = "Mở Danh Tướng",
    						szCallback = "GM:StartBossLeader()",
    					},
    					[3] = {
    						Text = "Đóng Danh Tướng",
    						szCallback = "GM:CloseBossLeader()",
    					},
    				},
    			},
    			{
    				Text = "Bạch Hổ Đường",
    				tbChild = {
    					[1] = {
    						Text = "Mở Bạch Hổ Đường",
    						szCallback = "GM:OpenWhiteTigerFuben()",
    					},
    					[2] = {
    						Text = "Vào Sảnh Chờ",
    						szCallback = "GM:EnterWhiteTigerFuben()",
    					},
    					[3] = {
    						Text = "Đóng Bạch Hổ Đường",
    						szCallback = "GM:CloseWhiteTigerFuben()",
    					},
    					[4] = {
    						Text = "Số lần Bạch Hổ Đường +1",
    						szCallback = "GM:AddDegreeWhiteTigerFuben()",
    					},
    				},
    			},
    			{
    				Text = "Thi Đấu Môn Phái",
    				tbChild = {
    					[1] = {
    						Text = "Mở Thi Đấu Môn Phái",
    						szCallback = "GM:OpenFactionBattle()",
    					},
    					[2] = {
    						Text = "Tham gia Thi Đấu Môn Phái",
    						szCallback = "GM:JoinFactionBattle()",
    					},
    					[3] = {
    						Text = "Đóng Thi Đấu Môn Phái",
    						szCallback = "GM:CloseFactionBattle()",
    					},
    					[4] = {
    						Text = "Mở bình chọn",
    						szCallback = "GM:StartFactionMonkey()",
    					},
    					[5] = {
    						Text = "Đóng bình chọn",
    						szCallback = "GM:EndFactionMonkey()",
    					},
    				},
    			},
    			{
    				Text = "Thông Thiên Tháp",
    				tbChild = {
    					{
    						Text = "Mở Thông Thiên Tháp",
    						szCallback = "GM:OpenTeamBattle()",
    					},
    					{
    						Text = "Mở Thông Thiên Tháp Liên SV",
    						szCallback = "GM:OpenTeamBattle_Cross()",
    					},
    					{
    						Text = "Vào Thông Thiên Tháp",
    						szCallback = "GM:EnterTeamBattle()",
    					},
    					{
    						Text = "Tất cả người chơi online tham gia Thông Thiên Tháp\n(Ngoại trừ tổ đội)",
    						szCallback = "GM:TryJoinPreMapTeamBattle()",
    					},
    					{
    						Text = "Thiết lập lại số lần tiêu hao Thông Thiên Tháp",
    						szCallback = "GM:TeamBattleUserValue()",
    					},
    					{
    						Text = "Tất cả người chơi [B03060]online[-] tạo lại số lần tiêu hao",
    						szCallback = "GM:TeamBattlePlayerUserValue()",
    					},
    					{
    						Text = "Tất cả người chơi [B03060]online[-] xóa Vé Vào Cửa",
    						szCallback = "GM:TeamBatlePlayerSetUserValue()",
    					},
    					{
    						Text = "Xem Vinh Dự Thông Thiên Tháp còn lại",
    						szCallback = "GM:TeamBattleHONOR()",
    					},
    				},
    			},
    			{
    				Text = "Thí Luyện Bang Hội",
    				tbChild = {
    					[1] = {
    						Text = "Mở Thí Luyện Bang Hội",
    						szCallback = "GM:OpenKinTrain()",
    					},
    					[2] = {
    						Text = "Vào Thí Luyện Bang Hội",
    						szCallback = "GM:EnterKinTrain()",
    					},
    					[3] = {
    						Text = "Thí Luyện Bang Hội mở (Bản rút gọn - Một người là được)",
    						szCallback = "GM:KinTrainMgrStart()",
    					},
    				},
    			},
    			{
    				Text = "Công Thành Chiến",
    				tbChild = {
    					[1] = {
    						Text = "Mở Tuyên Chiến Công Thành Chiến",
    						szCallback = "GM:StartDomainBattleDeclareWar()",
    					},
    					[2] = {
    						Text = "Mở Chiến Trường Công Thành Chiến",
    						szCallback = "GM:StartDomainBattleActivity()",
    					},
    					[3] = {
    						Text = "Xem số lần Công Thành Chiến",
    						szCallback = "GM:GetValueDomainBattle()",
    					},
    					[4] = {
    						Text = "Thương Nhân Lãnh Địa (Cần chiếm lãnh địa)",
    						szCallback = "GM:AddOnwenrDomainBattle()",
    					},
    					[5] = {
    						Text = "Người online đều tham chiến\n(Cần tuyên chiến bang)",
    						szCallback = "GM:CometomeDomain()",
    					},
    				},
    			},
    			{
    				Text = "Tần Lăng",
    				tbChild = {
    					{
    						Text = "Vào Hoàng Lăng",
    						szCallback = "GM:EnterTombRequest()",
    					},
    					{
    						Text = "Vào tầng 2",
    						szCallback = "GM:EnterNormalFloor2()",
    					},
    					{
    						Text = "Vào tầng 3",
    						szCallback = "GM:EnterNormalFloor3()",
    					},
    					{
    						Text = "Tăng thời gian Tần Lăng",
    						szCallback = "GM:ImperialTombAddTime()",
    					},
    					{
    						Text = "Xóa thời gian Tần Lăng\n(Tiêu hao trước rồi mới thực hiện)",
    						szCallback = "GM:ImperialTombClearTime()",
    					},
    					{
    						Text = "Triệu hồi Bách Tướng",
    						szCallback = "GM:ImperialTombCallLeader()",
    					},
    					{
    						Text = "Mời Mật Thất",
    						szCallback = "GM:ImperialTombSecretRoom()",
    					},
    					{
    						Text = "Diệt quái Mật Thất",
    						szCallback = "GM:ImperialTombSpawnSecret()",
    					},
    					{
    						Text = "Mở Thủy Hoàng Giáng Thế",
    						szCallback = "GM:OpenEmperor()",
    					},
    					{
    						Text = "Mở Nữ Đế Nghi Chủng",
    						szCallback = "GM:OpenEmperor1()",
    					},
    					{
    						Text = "Vào Thủy Hoàng Giáng Thế",
    						szCallback = "GM:EnterEmperorRoom()",
    					},
    					{
    						Text = "Tạo mới Thủ Lĩnh Thủy Hoàng Giáng Thế",
    						szCallback = "GM:CallBoss()",
    					},
    					{
    						Text = "Tạo mới Tần Thủy Hoàng Thủy Hoàng Giáng Thế",
    						szCallback = "GM:CallEmperor()",
    					},
    					{
    						Text = "Đóng Thủy Hoàng Giáng Thế",
    						szCallback = "GM:CloseEmperor()",
    					},
    				},
    			},
    			{
    				Text = "Hoa Sơn Luận Kiếm",
    				tbChild = {
    					[1] = {
    						Text = "Mở Vòng Sơ Tuyển",
    						szCallback = "GM:StartEnterHuaShanLunJian()",
    					},
    					[2] = {
    						Text = "Vào Sảnh Chờ-Sơ Tuyển",
    						szCallback = "GM:EnterHuaShanLunJian()",
    					},
    					[3] = {
    						Text = "Kéo người vào Chiến Đội (Cần tổ đội)",
    						szCallback = "GM:JoinFightTeamHuaShanLunJian()",
    					},
    					[4] = {
    						Text = "Đóng Vòng Sơ Tuyển",
    						szCallback = "GM:CloseEnterHuaShanLunJian()",
    					},
    					[5] = {
    						Text = "Mở chung kết\n(Mở lại cần khởi động lại máy chủ)",
    						szCallback = "GM:StartFinalsHuaShanLunJian()",
    					},
    					[6] = {
    						Text = "Vào chung kết",
    						szCallback = "GM:PlayerEnterHuaShanLunJian()",
    					},
    					[7] = {
    						Text = "Nhận thông tin tứ kết (Tin mới)",
    						szCallback = "GM:InformFinalsFightTeamListHuaShanLunJian()",
    					},
    				},
    			},
    			{
    				Text = "Liên SV",
    				tbChild = {
    					{
    						Text = "Đến Liên SV",
    						szCallback = "GM:GoZoneserver()",
    					},
    					{
    						Text = "Thiết lập Liên SV 1",
    						szCallback = "GM:ChangeZoneConnect()",
    					},
    				},
    			},
    			{
    				Text = "Tâm Ma Ảo Cảnh (Liên SV)",
    				tbChild = {
    					{
    						Text = "Mở Tâm Ma Ảo Cảnh",
    						szCallback = "GM:InDifferBattleStart()",
    					},
    					{
    						Text = "Số lần Tăng Tâm Ma",
    						szCallback = "GM:InDifferBattleDegree()",
    					},
    					{
    						Text = "Thêm Tâm Ma Bảo Châu",
    						szCallback = "GM:AddInDifferBattleItem()",
    					},
    				},
    			},
    		},
    	},
    
    	[tbDataIndex.AddPower] = {
    		Text = "Thêm sức mạnh nhân vật\n[B0E2FF][-] ",
    		tbChild = {
    			[1] = {
    				Text = "Tiểu cường biến thân\n[FF1493][-]",
    				szCallback = "GM:SwitchSkillState()",
    			},
    			[2] = {
    				Text = "Đại cường biến thân\n[FF1493]╰(`□′)╯[-]",
    				szCallback = "GM:SwitchSkillState1()",
    			},
    			[3] = {
    				Text = "Giới Vương Quyền x10\n[FF1493][-]",
    				szCallback = "GM:SwitchSkillState2()",
    			},
    			[4] = {
    				Text = "Giới Vương Quyền x20\n[FF1493] [-]",
    				szCallback = "GM:SwitchSkillState3()",
    			},
    			[5] = {
    				Text = "Giới Vương Quyền x30\n[FF1493][-]",
    				szCallback = "GM:SwitchSkillState4()",
    			},
    		},
    	},
    
    	[tbDataIndex.Money] = {
    		Text = "Đại hiệp phát tài!\n[B03060][-]",
    		tbChild = {
    			[1] = {
    				Text = "Thêm 999999",
    				szCallback = "GM:GMAddMoney(999999)",
    			},
    			[2] = {
    				Text = "Mua Thẻ Tuần",
    				szCallback = "GM:BuyWeekCardCallBack()",
    			},
    			[3] = {
    				Text = "Mua Thẻ Tháng",
    				szCallback = "GM:BuyMonCardCallBack()",
    			},
    			[4] = {
    				Text = "Quà 20,000 VNĐ",
    				szCallback = "GM:OnBuyDayCardCallBack1()",
    			},
    			[5] = {
    				Text = "Quà 10,000 VNĐ",
    				szCallback = "GM:OnBuyDayCardCallBack3()",
    			},
    			[6] = {
    				Text = "Quà 20,000 VNĐ",
    				szCallback = "GM:OnBuyDayCardCallBack6()",
    			},
    			[7] = {
    				Text = "Đầu Tư Lv30",
    				szCallback = "GM:OnBuyInvestCallBack1()",
    			},
    			[8] = {
    				Text = "Đầu Tư Lv65\n[00FF00](Cần mua loại trước đó[-]",
    				szCallback = "GM:OnBuyInvestCallBack2()",
    			},
    			[9] = {
    				Text = "Mức nạp\n(Thực tế chỉ tăng Nguyên Bảo tặng)",
    				tbChild = {
    					[1] = {
    						Text = "6 RMB",
    						szCallback = "GM:OnTotalRechargeChange6RMB()",
    					},
    					[2] = {
    						Text = "30 RMB",
    						szCallback = "GM:OnTotalRechargeChange30RMB()",
    					},
    					[3] = {
    						Text = "98 RMB",
    						szCallback = "GM:OnTotalRechargeChange98RMB()",
    					},
    					[4] = {
    						Text = "198 RMB",
    						szCallback = "GM:OnTotalRechargeChange198RMB()",
    					},
    					[5] = {
    						Text = "328 RMB",
    						szCallback = "GM:OnTotalRechargeChange328RMB()",
    					},
    					[6] = {
    						Text = "648 RMB",
    						szCallback = "GM:OnTotalRechargeChange648RMB()",
    					},
    				}
    			},
    		},
    	},
    
    	[tbDataIndex.GainItem] = {
    		Text = "Nhận đạo cụ",
    		szCallback = "GM:GetItem()",
    	},
    
    	[tbDataIndex.Revive] = {
    		Text = "Tín Xuân ca, đầy sinh lực sẽ hồi sinh",
    		szCallback = "GM:Revive()",
    	},
    
    	[tbDataIndex.nPartnerDataIndex] = {
    		Text = "Xông pha giang hồ cần có đồng hành\n [8B864E][-]",
    		tbChild = {
    
    			[1] = {
    				Text = "Cần tất cả đồng hành cấp SS",
    				szCallback = string.format("GM:AddQualityPartner(2)"),
    			},
    			[nSSPartnerSingleIndex] = {
    				Text = "Cần 1 đồng hành cấp SS",
    				tbChild = {},
    			},
    			[3] = {
    				Text = "Cần tất cả đồng hành cấp S",
    				szCallback = string.format("GM:AddQualityPartner(3)"),
    			},
    			[nSPartnerSingleIndex] = {
    				Text = "Cần 1 đồng hành cấp S",
    				tbChild = {},
    			},
    			[5] = {
    				Text = "Cần tất cả đồng hành cấp A",
    				szCallback = string.format("GM:AddQualityPartner(4)"),
    			},
    			[nAPartnerSingleIndex] = {
    				Text = "Cần 1 đồng hành cấp A",
    				tbChild = {},
    			},
    			[7] = {
    				Text = "Ta muốn Đồng Hành AI",
    				szCallback = string.format("GM:AddAIPartner(%s)",tbAllTestAIPartner),
    			},
    			[8] = {
    				Text = "Tăng cấp Đồng Hành ra trận",
    				szCallback = string.format("GM:AddPartnerExp()"),
    			},
    			[nAllPartnerIndex] = {
    				Text = "Tất cả Đồng Hành",
    				tbChild = {},
    			},
    		}
    	},
    	[tbDataIndex.Role] = {
    		Text = "Nhân vật LvXX\n Các loại cường hóa khảm",
    		tbChild = {},
    	},
    	[tbDataIndex.nLevelUpDataIndex] = {
    		Text = "Tăng cấp",
    		tbChild = {},
    	},
    	[tbDataIndex.nHonorDataIndex] = {
    		Text = "Tăng cấp Quân Hàm",
    		tbChild = {},
    	},
    	[tbDataIndex.BattleSignIn] = {
    		Text = "Báo danh chiến trường",
    		szCallback = "GM:OpenBattleSignUp()",
    	},
    
    	[tbDataIndex.BaoZang] = {
    		Text = "Huynh đệ, tầm bảo không?\n[40E0D0][-] ",
    		tbChild = {
    			[1] = {
    				Text = "Cho ta Tàng Bảo Đồ",
    				szCallback = "GM:AddCangbaotu()",
    			},
    			[2] = {
    				Text = "Hãy chinh chiến Tàng Bảo Đồ-Cao",
    				szCallback = "GM:AddSeniorCangbaotu()",
    			},
    		}
    	},
    
    	[tbDataIndex.TeamFuben] = {
    		Text = "Phó bản tổ đội",
    		tbChild = {
    			[1] = {
    				Text ="Bí Cảnh Lv20",
    				szCallback = "GM:Go2TeamFuben(1,1)",
    			},
    			[2] = {
    				Text ="Bí Cảnh Lv40",
    				szCallback = "GM:Go2TeamFuben(1,2)",
    			},
    			[3] = {
    				Text ="Bí Cảnh Lv60",
    				szCallback = "GM:Go2TeamFuben(1,3)",
    			},
    		},
    	},
    
    	[tbDataIndex.RandomFuben] = {
    		Text = "Lăng Tuyệt Phong\n ########### \n Phó Bản Địa Cung",
    		tbChild = {},
    	},
    
    	[tbDataIndex.AddItem] = {
    		Text = "Tăng đạo cụ chỉ định",
    		szCallback = "GM:AddItemList()",
    	},
    
    	[tbDataIndex.TestClientPk] = {
    		Text = "Thử nghiệm PK Client cùng màn hình",
    		szCallback = "GM:TestClientPk()",
    	},
    
    	[tbDataIndex.UnlockFuben] = {
    		Text = "Mở ải",
    		szCallback = "GM:UnlockFuben()",
    	},
    
    	[tbDataIndex.CleanBag] = {
    		Text = "Xóa hành trang",
    		szCallback = "GM:CleanBag()",
    	},
    	[tbDataIndex.Refresh] = {
    		Text = "Test tính năng nhỏ\n [C1FFC1](*^灬^*) [-]",
    		tbChild = {
    			{
    				Text = "Tạo mới HotFix",
    				szCallback = "GM:CheckFixCmd()",
    			},
    			{
    				Text = "Tạo mới file thiết lập dẫn chương trình",
    				szCallback = "GM:ChatHostInfo()",
    			},
    			{
    				Text = "Sơ đồ thời gian liên quan",
    				tbChild = {
    					{
    						Text = "Xem số ngày mở máy chủ",
    						szCallback = "GM:GetServerOpenDay()",
    					},
    					{
    						Text = "Xem thời gian mở máy chủ",
    						szCallback = "GM:ServerCreateTime()",
    					},
    					{
    						Text = "Thời gian mở của tất cả sơ đồ thời gian",
    						szCallback = "GM:OutPutAllTimeFrameInfo()",
    					},
    					{
    						Text = "Xem sơ đồ thời gian có mở không",
    						szCallback = "GM:QueryTimeFrameIsOpen()",
    					},
    					{
    						Text = "Xem thời gian mở sơ đồ thời gian",
    						szCallback = "GM:QueryTimeFrameOpenTime()",
    					},
    				}
    			},
    			{
    				Text = "Xem số người online",
    				szCallback = "GM:OnlinePlayerCount()",
    			},
    			{
    				Text = "Xem số người bản đồ hiện tại",
    				szCallback = "GM:GetMapPlayer()",
    			},
    			{
    				Text = "Xem lực chiến tất cả người chơi trong bản đồ hiện tại",
    				szCallback = "GM:GetMapPlayerPower()",
    			},
    			{
    				Text = "Nhận năng động",
    				szCallback = "GM:EverydayTarget()",
    			},{
    				Text = "Xóa chờ chuyển phái",
    				szCallback = "GM:RemoveUesrValue()",
    			},
    			{
    				Text = "Hủy cấm chat",
    				szCallback = "GM:ChatMgrSetFilterText()",
    			},
    			{
    				Text = "Mọi người mai tập hợp!",
    				szCallback = "GM:Cometome()",
    			},
    			{
    				Text = "Triệu hồi đồng hành 1",
    				szCallback = "GM:CreatePartnerByPos()",
    			},
    			{
    				Text = "Code Quà",
    				szCallback = "GM:ShowCodeGift()",
    			},
    			{
    				Text = "Lệnh Bài cần cho Quân Hàm",
    				tbChild = {
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Lăng Vân[-]",
    						szCallback = "GM:HonorLingYun()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Ngự Không[-]",
    						szCallback = "GM:HonorYuKong()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Tiềm Long[-]",
    						szCallback = "GM:HonorQianLong()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Ngạo Thế[-]",
    						szCallback = "GM:HonorAoShi()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Ỷ Thiên[-]",
    						szCallback = "GM:HonorYiTian()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Chí Tôn[-]",
    						szCallback = "GM:HonorZhiZun()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Võ Thánh[-]",
    						szCallback = "GM:HonorWuShen()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Vô Song[-]",
    						szCallback = "GM:HonorWuShuang()",
    					},
    				},
    			},
    			{
    				Text = "Người chơi online tạo Bang Hội\n(Thực hiện 2 lần)",
    				szCallback = "GM:KinIsNameValid()",
    			},
    			{
    				Text = "Bang Hội online vào nhóm\n(Lập đội trước)",
    				szCallback = "GM:Kinteam()",
    			},
    			{
    				Text = "Test treo máy/EXP",
    				tbChild = {
    					{
    							Text = "Mở tính quái",
    							szCallback = "GM:StartMonsterCount()",
    					},
    					{
    							Text = "Hiện tính quái",
    							szCallback = "GM:ShowMonsterCount()",
    					},
    					{
    							Text = "Xóa EXP",
    							szCallback = "GM:ClearExp()",
    					},
    					{
    						Text = "Tự động đấu theo giờ",
    						szCallback = "GM:TryAutoFight()",
    					},
    				},
    			},
    			{
    				Text = "Đóng thông tin Debug",
    				szCmd = "Ui:ShowDebugInfo(not Ui.FTDebug.bShowDebugInfo); me.CenterMsg((Ui.FTDebug.bShowDebugInfo and 'Mở' or 'Đóng') .. '');";
    			},
    			{
    				Text = "Dẫn chương trình",
    				tbChild = {
    					{
    						Text = "Nhận được quyền dẫn chương trình",
    						szCallback = "GM:GetHostAuth()";
    					},
    					{
    						Text = "Hủy quyền dẫn chương trình",
    						szCallback = "GM:CancelHostAuth()";
    					},
    				},
    			},
    			{
    				Text = "Báo dữ liệu\n(Cần dùng SDK đăng nhập)",
    				szCallback = "GM:ReportQQData()";
    			},
    		}
    	},
    
    	[tbDataIndex.House] = {
    		Text = "Gia Viên",
    		tbChild = {
    			{
    				Text = "Nhận được Gia Viên",
    				szCallback = "GM:GetHouse()",
    			},
    			{
    				Text = "Tăng cấp Gia Viên",
    				szCallback = "GM:LevelupHouse()",
    			},
    			{
    				Text = "Nhận tất cả Nguyên Liệu Gia Cụ",
    				szCallback = "GM:GetAllHouseMaterial()",
    			},
    			{
    				Text = "Nhận tất cả gia cụ",
    				szCallback = "GM:GetAllHouseFurniture()",
    			},
    		},
    	},
    	[tbDataIndex.KinTool] = 
    	{
    		Text = "Công cụ & hoạt động Bang Hội\nNhiều bất ngờ, còn không mau đến",
    		tbChild = {
    			{
    				Text = "Mở Vận Tiêu Bang Hội",
    				szCallback = "GM:StartKinEscort()",
    			},
    			{
    				Text = "Mở Lửa Trại Bang Hội",
    				szCallback = "GM:StartKinGatherActivity()",
    			},
    			{
    				Text = "Tăng quỹ xây dựng bang",
    				szCallback = "GM:AddKinFound()",
    			},
    			{
    				Text = "Mở Bảo Bối",
    				szCallback = "GM:OpenMascot()",
    			},
    			{
    				Text = "Đóng Bảo Bối",
    				szCallback = "GM:CloseMascot()",
    			},
    			{
    				Text = "Xóa chờ truyền công",
    				szCallback = "GM:ChuangGongUserValue()",
    			},
    			{
    				Text = "Tăng lần nhận truyền công",
    				szCallback = "GM:AddDegreeChuangGong()",
    			},
    			{
    				Text = "Tăng lần truyền công",
    				szCallback = "GM:AddDegreeChuangGongSend()",
    			},
    			{
    				Text = "Hoàn thành mục tiêu sư đồ",
    				szCallback = "GM:TargetAddCount()",
    			},
    			{
    				Text = "Nhận ID bang",
    				szCallback = "GM:KinId()",
    			},
    			{
    				Text = "Xem Năng động Bang Hội",
    				szCallback = "GM:KinLastJudge()",
    			},
    			{
    				Text = "Người online xin vào\n(Cần bang chủ và bản thân đồng ý)",
    				szCallback = "GM:KinGetAllPlayer()",
    			},
    			{
    				Text = "Giải tán bang\n[FF0000]Nhấp {{{(>_<)}}}[-]",
    				szCallback = "GM:DismissMyKin()",
    			},
    			
    		},
    	},
    
    	[tbDataIndex.ChangeFaction] =
    	{
    		Text = "Đến Đấu Trường hoặc chuyển phái",
    		tbChild = {
    			[1] = {
    				Text = "Đến Đấu Trường",
    				szCallback = "me.SwitchMap(1006, 0, 0)",
    			},
    			[2] = {
    				Text = "Thiên Vương",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 1)",
    			},
    			[3] = {
    				Text = "Nga Mi",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 2)",
    			},
    			[4] = {
    				Text = "Đào Hoa",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 3)",
    			},
    			[5] = {
    				Text = "Tiêu Dao",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 4)",
    			},
    			[6] = {
    				Text = "Võ Đang",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 5)",
    			},
    			[7] = {
    				Text = "Thiên Nhẫn",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 6)",
    			},
    			[8] = {
    				Text = "Thiếu Lâm",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 7)",
    			},
    			[9] = {
    				Text = "Thúy Yên",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 8)",
    			},
    			[10] = {
    				Text = "Đường Môn",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 9)",
    			},
    			[11] = {
    				Text = "Côn Lôn",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 10)",
    			},
    			[12] = {
    				Text = "Cái Bang",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 11)",
    			},
    			[13] = {
    				Text = "Ngũ Độc",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 12)",
    			},
    			[14] = {
    				Text = "Tàng Kiếm",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 13)",
    			},
    			[15] = {
    				Text = "Trường Ca",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 14)",
    			},
    		}
    	},
    }
    
    function tbUi:OnOpen()
    	self:UpdateData()
    	self:ResetUi()
    	self:UpdateMainUi()
    	self:ClearObj(1,2,3)
    end
    
    function tbUi:UpdateData()
    	self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild = self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild or {}
    
    	local tbAllPartner = self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild[nAllPartnerIndex]
    	if tbAllPartner then
    		tbAllPartner.tbChild = {}
    	end
    
    	local tbAllSSPartner = self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild[nSSPartnerSingleIndex]
    	if tbAllSSPartner then
    		tbAllSSPartner.tbChild = {}
    	end
    
    	local tbAllSPartner = self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild[nSPartnerSingleIndex]
    	if tbAllSPartner then
    		tbAllSPartner.tbChild = {}
    	end
    
    	local tbAllAPartner = self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild[nAPartnerSingleIndex]
    	if tbAllAPartner then
    		tbAllAPartner.tbChild = {}
    	end
    
    	local tbAllPartnerBaseInfo = Partner:GetAllPartnerBaseInfo();
    	for nId, tbInfo in pairs(tbAllPartnerBaseInfo or {}) do
    
    		if tbAllSSPartner.tbChild then
    			if tbInfo.nQualityLevel == 2 then
    				table.insert(tbAllSSPartner.tbChild, { Text = string.format("Ta muốn %s ", tbInfo.szName), szCallback = string.format("GM:AddOnePartner(%d,true)",nId) })
    			end
    		end
    
    		if tbAllSPartner.tbChild then
    			if tbInfo.nQualityLevel == 3 then
    				table.insert(tbAllSPartner.tbChild, { Text = string.format("Ta muốn %s ", tbInfo.szName), szCallback = string.format("GM:AddOnePartner(%d,true)",nId) })
    			end
    		end
    
    		if tbAllAPartner.tbChild then
    			if tbInfo.nQualityLevel == 4 then
    				table.insert(tbAllAPartner.tbChild, { Text = string.format("Ta muốn %s ", tbInfo.szName), szCallback = string.format("GM:AddOnePartner(%d,true)",nId) })
    			end
    		end
    
    		if tbAllPartner.tbChild then
    			table.insert(tbAllPartner.tbChild, { Text = string.format("Ta muốn %s ", tbInfo.szName), szCallback = string.format("GM:AddOnePartner(%d,true)",nId) })
    		end
    	end
    
    	self.tbGMData[tbDataIndex.nLevelUpDataIndex].tbChild = {}
    	for i = 0,nMaxLevelUp do
    		table.insert(self.tbGMData[tbDataIndex.nLevelUpDataIndex].tbChild,{Text = string.format("%s0 +Cấp", i),tbChild = {}})
    		for j = 0, 9 do
    			local nLevel = i * 10 + j;
    			if nLevel > 0 then
    				table.insert(self.tbGMData[tbDataIndex.nLevelUpDataIndex].tbChild[i + 1].tbChild,{Text = string.format("Tăng đến Lv%s ", i * 10 + j),szCallback = string.format("GM:AddPlayerLevel(math.max(%d * 10 + %d, 1))",i,j)})
    			end
    		end
    	end
    
    	self.tbGMData[tbDataIndex.nHonorDataIndex].tbChild = {}
    	for nHonorLevel=1,#Player.tbHonorLevelSetting do
    		local szHonorName = Player.tbHonorLevel:GetHonorName(nHonorLevel)
    		table.insert(self.tbGMData[tbDataIndex.nHonorDataIndex].tbChild,{ Text = "Tăng cấp" ..szHonorName, szCallback = string.format("GM:SetHonorLevel(%d)",nHonorLevel)})
    	end
    
    	local tbEquipDesc =
    	{
    		[1] = "Nhận trang bị Lv%d (Thấp)",
    		[2] = "Nhận trang bị Lv%d (Trung)",
    		[3] = "Nhận trang bị Lv%d (Cao)",
    	}
    
    	local tbInsertDesc =
    	{
    		[1] = "Khảm Lv%d (Thấp)",
    		[2] = "Khảm Lv%d (Trung)",
    		[3] = "Khảm Lv%d (Cao)",
    	}
    
    	self.tbGMData[tbDataIndex.Role].tbChild = {}
    	local tbAllRole = self.tbGMData[tbDataIndex.Role].tbChild
    	for nIndex,tbData in ipairs(tbRoleData) do
    		local nLevel = tbData.nLevel or 0
    		local tbStrong = tbData.tbStrong or {}
    		local tbInsert = tbData.tbInsert or {}
    		if nLevel ~= 0 then
    			tbAllRole[nIndex] = {Text = string.format("Nhân vật Lv%d",nLevel),tbChild = {}}
    			local tbRole = tbAllRole[nIndex].tbChild
    			local nBaseIndex = #tbStrong+1
    			tbRole[1] = {Text = string.format("Tăng đến Lv%d",nLevel),szCallback = string.format("GM:AddPlayerLevel(%d)",nLevel)}
    			tbRole[nBaseIndex+1] = {Text = "Học hết kỹ năng",szCallback = "GM:SkillUpFull()"}
    			for i=1,#tbStrong do
    				local nStrong = tbStrong[i]
    				tbRole[#tbRole + 1] = {Text = string.format("Cường hóa +%d",nStrong),szCallback = string.format("GM:EnhanceEquip(%d)",nStrong)}
    			end
    			for nType=1,#tbEquipDesc do
    				tbRole[#tbRole + 1] = {Text = string.format(tbEquipDesc[nType],nLevel),szCallback = string.format("GM:AddEquips(%d,%d)",nLevel,nType)}
    			end
    			for nType=1,#tbInsert do
    				local nInsert = tbInsert[nType]
    				tbRole[#tbRole + 1] = {Text = string.format(tbInsertDesc[nType],nInsert),szCallback = string.format("GM:InsetEquip(%d,%d)",nInsert,nType)}
    			end
    		end
    	end
    
    	local tbRandomDesc =
    	{
    		[1] = "Bí Cảnh 1",
    		[2] = "Bí Cảnh 2",
    		[3] = "Bí Cảnh 3",
    		[4] = "Bí Cảnh 4",
    		[5] = "Bí Cảnh 5",
    		[6] = "Bí Cảnh 6",
    	}
    
    	-- 非秘境前面扩充
    	local tbRandomBefore =
    	{
    		[1] = {Text = "Bí cảnh ngẫu nhiên (Cần đội 2 người)",szCallback = "GM:Go2RandomFuben()"},
    		[2] = {Text = "Mở thu thập Lăng Tuyệt Phong",szCallback = "GM:BeginNewSession()"},
    		[3] = {Text = "Toàn bộ thẻ",szCallback = "GM:BeginNewSessionItem()"},
    	}
    
    	-- 非秘境后面扩充
    	local tbRandomAfter =
    	{
    		[1] = {Text = "Thắng trực tiếp",szCallback = "GM:GameWinFubenInstance()"},
    		[2] = {Text = "Thoát Lăng Tuyệt Phong",szCallback = "GM:GotoEntryPoint()"},
    		[3] = {Text = "Tạo lại số lần Lăng Tuyệt Phong",szCallback = "GM:RemoveUesrValueRandomFuben()"},
    		[4] = {
    					Text = "Phó bản nhỏ Địa Cung",
    					tbChild = {
    						[1] = {
    							Text = "Đến Địa Cung",
    							szCallback = "GM:DirectGotoDungeon()",
    						},
    						[2] = {
    							Text = "Địa Cung 2 (Thủy Tinh)\nDùng tại Địa Cung 1",
    							szCallback = "GM:DirectGotoDungeonCrystal()",
    						},
    						[3] = {
    							Text = "Địa Cung 2 (BOSS)\nDùng tại Địa Cung 1",
    							szCallback = "GM:DirectGotoDungeonBoss()",
    						},
    					},
    				},
    	}
    
    	if not self.tbRandomSetting then
    		local tbFile = LoadTabFile("Setting/Fuben/RandomFuben/RoomSetting.tab", "sd", nil, {"Info","MapId"});
    		for _,tbRow in pairs(tbFile) do
    			local tbRoom = Lib:SplitStr(tbRow.Info, "_")
    			local nLayer = tonumber(tbRoom[1]) or 0
    			local nRoom = tonumber(tbRoom[2]) or 0
    			self.tbRandomSetting = self.tbRandomSetting or {}
    			self.tbRandomSetting[nLayer] = self.tbRandomSetting[nLayer] or {}
    			self.tbRandomSetting[nLayer][nRoom] = tbRow.MapId
    		end
    	end
    
    	self.tbGMData[tbDataIndex.RandomFuben].tbChild = {}
    	local tbRandomFuben = self.tbGMData[tbDataIndex.RandomFuben].tbChild
    
    	local nBeforeLen = #tbRandomFuben
    	for i,tbChild in ipairs(tbRandomBefore) do
    		tbRandomFuben[nBeforeLen + i] = tbChild
    	end
    
    	local nMiddleLen = #tbRandomFuben
    	for nLayer = 1,#tbRandomDesc do
    		local szLayerDesc = tbRandomDesc[nLayer]
    		if not szLayerDesc then
    			break
    		end
    		if self.tbRandomSetting[nLayer] then
    			for nRoom=1,#self.tbRandomSetting[nLayer] do
    				local nMapId = self.tbRandomSetting[nLayer][nRoom]
    				if nMapId then
    					tbRandomFuben[nLayer + nMiddleLen] = tbRandomFuben[nLayer + nMiddleLen] or {Text = szLayerDesc,tbChild={}}
    					tbRandomFuben[nLayer + nMiddleLen].tbChild[nRoom] =
    					{
    						Text = string.format("Phòng %d",nRoom),
    						szCallback = string.format("GM:Go2RandomFuben(%d)",nMapId),
    					}
    				end
    			end
    		end
    	end
    
    	local nAfterLen = #tbRandomFuben
    	for i,tbChild in ipairs(tbRandomAfter) do
    		tbRandomFuben[nAfterLen + i] = tbChild
    	end
    
    end
    
    tbUi.tbHideUI =
    {
    	ScrollView1 = true,
    	ScrollView2 = true,
    	ScrollView3 = true,
    	Title1 = true,
    	Title2 = true,
    	Title3 = true,
    }
    
    function tbUi:ResetUi()
    	for szUiName,_ in pairs(self.tbHideUI) do
    		self.pPanel:SetActive(szUiName,false)
    	end
    end
    
    function tbUi:ShowUi(...)
    	self:ResetUi()
    	local tbIdx = {...}
    	for _,nIdx in pairs(tbIdx) do
    		self.pPanel:SetActive("ScrollView" ..nIdx,true)
    		self.pPanel:SetActive("Title" ..nIdx,true)
    	end
    end
    
    function tbUi:UpdateMainUi()
    	self:ShowUi(1)
    
    	local fnOnClick = function(itemObj)
    		if self.tbGMData[itemObj.nId].tbChild then
    			self:UpdateChildUi(itemObj.nId)
    		else
    			local szCallBack = self.tbGMData[itemObj.nId].szCallback
    			if self.tbGMData[itemObj.nId].szCmd then
    				local fn = loadstring(self.tbGMData[itemObj.nId].szCmd);
    				Lib:CallBack({fn});
    			else
    				GMCommand(szCallBack);
    			end
    			 me.CenterMsg(string.format("【%s】 đã lên xe",self.tbGMData[itemObj.nId].Text))
    		end
    		self:ClearObj(1,2,3)
    		itemObj.pPanel:SetActive("Choose",true)
    	end
    
    	local fnSetItem = function(itemObj,nIdx)
    		self.tbGMData[nIdx].nId = nIdx  		-- 搜索用到对应的ID
    		itemObj.pPanel:Label_SetText("Name",  self.tbGMData[nIdx].Text or "");
    		itemObj.nId = nIdx
    		itemObj.pPanel.OnTouchEvent = fnOnClick;
    		itemObj.pPanel:SetActive("Mark",self.tbGMData[nIdx].tbChild)
    	end
    
    	self.ScrollView1:Update(#self.tbGMData,fnSetItem);
    end
    
    function tbUi:UpdateChildUi(nPartnerId)
    	self:ShowUi(1,2)
    	local tbChildData =  self.tbGMData[nPartnerId].tbChild
    	local fnOnClick = function(itemObj)
    		local nId = itemObj.nId
    		if tbChildData[nId].tbChild then
    			self:UpdateChild2Ui(nPartnerId,nId)
    		else
    			local szCallBack = tbChildData[nId].szCallback
    			if tbChildData[itemObj.nId].szCmd then
    				local fn = loadstring(tbChildData[itemObj.nId].szCmd);
    				Lib:CallBack({fn});
    			else
    				GMCommand(szCallBack);
    			end
    			me.CenterMsg(string.format("【%s】 đã lên xe",tbChildData[nId].Text))
    		end
    		self:ClearObj(2,3)
    		itemObj.pPanel:SetActive("Choose",true)
    	end
    
    	local fnSetItem = function(itemObj,nIdx)
    		itemObj.pPanel:Label_SetText("Name",  tbChildData[nIdx].Text or "");
    		itemObj.nId = nIdx
    		itemObj.pPanel.OnTouchEvent = fnOnClick;
    		itemObj.pPanel:SetActive("Mark",tbChildData[nIdx].tbChild)
    	end
    
    	self.ScrollView2:Update(#tbChildData,fnSetItem);
    end
    
    function tbUi:UpdateChild2Ui(nGrandParentId,nPartnerId)
    	self:ShowUi(1,2,3)
    
    	local tbChildData =  self.tbGMData[nGrandParentId].tbChild[nPartnerId].tbChild
    
    	local fnOnClick = function(itemObj)
    		local nId = itemObj.nId
    		if tbChildData[nId].tbChild then
    			self:UpdateChild3Ui()
    		else
    			local szCallBack = tbChildData[nId].szCallback
    			if tbChildData[itemObj.nId].szCmd then
    				local fn = loadstring(tbChildData[itemObj.nId].szCmd);
    				Lib:CallBack({fn});
    			else
    				GMCommand(szCallBack);
    			end
    			me.CenterMsg(string.format("【%s】 đã lên xe",tbChildData[nId].Text))
    		end
    		self:ClearObj(3)
    		itemObj.pPanel:SetActive("Choose",true)
    	end
    
    	local fnSetItem = function(itemObj,nIdx)
    		itemObj.pPanel:Label_SetText("Name",  tbChildData[nIdx].Text or "");
    		itemObj.nId = nIdx
    		itemObj.pPanel.OnTouchEvent = fnOnClick;
    		itemObj.pPanel:SetActive("Mark",tbChildData[nIdx].tbChild)
    	end
    
    	self.ScrollView3:Update(#tbChildData,fnSetItem);
    end
    
    function tbUi:UpdateChild3Ui()
    	-- 暂时没需求
    end
    
    function tbUi:ClearObj(...)
    	local tbIdx = {...}
    	for _,nIdx in pairs(tbIdx) do
    		for i=0,300 do
    			local itemObj = self["ScrollView" ..nIdx].Grid["Item" ..i]
    			if not itemObj then
    				break
    			end
    			itemObj.pPanel:SetActive("Choose",false)
    		end
    	end
    end
    
    function tbUi:SearchSaveList(szSearch)
    	local tbSaveCommond
    	if szSearch == "" then
    		tbSaveCommond = self.tbGMData
    	else
    		tbSaveCommond = self:GetSaveCommondByStr(szSearch)
    	end
    	if not tbSaveCommond then
    		return
    	end
    	local fnOnClick = function(itemObj)
    		local nId = tbSaveCommond[itemObj.nId].nId 				-- 原数据的ID索引
    		if tbSaveCommond[itemObj.nId].tbChild then
    			self:UpdateChildUi(nId)
    		else
    			local szCallBack = tbSaveCommond[itemObj.nId].szCallback
    			if tbSaveCommond[itemObj.nId].szCmd then
    				local fn = loadstring(tbSaveCommond[itemObj.nId].szCmd);
    				Lib:CallBack({fn});
    			else
    				GMCommand(szCallBack);
    			end
    			me.CenterMsg(string.format("【%s】 đã lên xe",tbSaveCommond[itemObj.nId].Text))
    		end
    		self:ClearObj(1,2,3)
    		itemObj.pPanel:SetActive("Choose",true)
    	end
    
    	local fnSetItem = function(itemObj,nIdx)
    		itemObj.pPanel:Label_SetText("Name",  tbSaveCommond[nIdx].Text or "");
    		itemObj.nId = nIdx
    		itemObj.pPanel.OnTouchEvent = fnOnClick;
    		itemObj.pPanel:SetActive("Mark",tbSaveCommond[nIdx].tbChild)
    	end
    
    	self.ScrollView1:Update(#tbSaveCommond,fnSetItem);
    end
    
    function tbUi:GetSaveCommondByStr(szSearch)
    	local tbCommond = {}
    	for index,info in ipairs(self.tbGMData) do
    		info.nId = nil
    		local szCommond = info.Text
    		local isShow = string.find(szCommond, szSearch)
    		if isShow then
    			info.nId = index 				-- 原数据的ID索引
    			table.insert(tbCommond,info)
    		end
    	end
    	return tbCommond
    end
    
    tbUi.tbUiInputOnChange = {};
    tbUi.tbUiInputOnChange.Input = function (self)
    		local szSearch = self.Input:GetText()
    		self:SearchSaveList(szSearch)
    	end
    
    tbUi.tbOnClick = {
    	BtnClose = function (self)
    		Ui:CloseWindow(self.UI_NAME)
    	 end,
    }
    Khách viếng thăm hãy cùng N.T.S.1802 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 N.T.S.1802 vì bài viết này !

    ngocdpt (24-08-18)

  4. #83
    Thành Viên
    Ngày tham gia
    Apr 2010
    Bài viết
    119
    Thanks
    9
    Thanked 118 Times in 26 Posts

    Ðề: [JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau)

    Trích dẫn Gửi bởi na.ilusm89 [Only registered and activated users can see links. ]
    \Setting\Partner\

    Tìm trong này xem Gái
    Có 1 số đồng hành không mở được. SSS trương phong,...

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

    Trích dẫn Gửi bởi N.T.S.1802 [Only registered and activated users can see links. ]
    Code:
    local tbUi = Ui:CreateClass("GMListPanel");
    
    -- 我要各个AI的同伴 (同伴ID配置)
    local tbAllTestAIPartner = "{57, 23, 13, 20, 22, 29, 12, 52, 26, 41, 37, 11, 21, 66}"
    
    -- 决定显示顺序
    local tbDataIndex =
    {
    	OneKeyShow 				= 1, 					-- 一键演示
    	QuicklyEquipment 		= 2,					-- 一键N级
    	RefreshHp				= 3,					-- 回满血
    	ActivtyOpen 			= 4, 					-- 活动开启
    	AddPower 				= 5, 					-- 角色能力添加
    	Money 					= 6, 					-- 大量财富
    	GainItem 				= 7, 					-- 获取道具
    	Revive   				= 8, 					-- 满血复活
    	nPartnerDataIndex      	= 9, 					-- 同伴同伴
    	Role 					= 10, 					-- XX级角色
    	KinTool                 = 11, 					-- 家族工具
    	House 					= 12, 					-- 家园
    	nLevelUpDataIndex  		= 13, 					-- 升级
    	nHonorDataIndex         = 14, 					-- 头衔
    	BattleSignIn 			= 15, 					-- 战场报名
    	BaoZang 				= 16,					-- 宝藏
    	TeamFuben 				= 17, 					-- 组队副本
    	RandomFuben 			= 18,					-- 随机秘境
    	AddItem 				= 19,					-- 增加指定道具
    	TestClientPk 			= 20,					-- 客户端同屏PK测试
    	UnlockFuben 			= 21,					-- 开关卡
    	CleanBag 				= 22,					-- 清空背包
    	Refresh 				= 23,					-- 小功能
    	ChangeFaction           = 24,					-- 转门派
    }
    
    -- 动态初始化的索引
    local nAllPartnerIndex 				= 9
    local nSSPartnerSingleIndex 		= 2
    local nSPartnerSingleIndex 			= 4
    local nAPartnerSingleIndex 			= 6
    local nCodeGift 					= 11
    
    -- XX级角色 配置
    local tbRoleData =
    {
    	[1] =
    	{
    		nLevel = 20,
    		tbStrong = {5,10,20}, 					-- 强化
    		tbInsert = {5,10,20},  					-- 镶嵌(前提是表里有数据)
    	},
    	[2] =
    	{
    		nLevel = 30,
    		tbStrong = {10,20,30},
    		tbInsert = {10,20,30},
    	},
    	[3] =
    	{
    		nLevel = 40,
    		tbStrong = {20,30,40},
    		tbInsert = {20,30,40},
    	},
    	[4] =
    	{
    		nLevel = 50,
    		tbStrong = {30,40,50},
    		tbInsert = {30,40,50},
    	},
    	[5] =
    	{
    		nLevel = 60,
    		tbStrong = {40,50,60},
    		tbInsert = {40,50,60},
    	},
    	[6] =
    	{
    		nLevel = 70,
    		tbStrong = {50,60,70},
    		tbInsert = {50,60,70},
    	},
    	[7] =
    	{
    		nLevel = 80,
    		tbStrong = {60,70,80},
    		tbInsert = {60,70,80},
    	},
    	[8] =
    	{
    		nLevel = 90,
    		tbStrong = {70,80,90},
    		tbInsert = {70,80,90},
    	},
    	[9] =
    	{
    		nLevel = 100,
    		tbStrong = {80,90,100},
    		tbInsert = {80,90,100},
    	},
    	[10] =
    	{
    		nLevel = 110,
    		tbStrong = {90,100,110},
    		tbInsert = {90,100,110},
    	},
    	[11] =
    	{
    		nLevel = 120,
    		tbStrong = {90,100,110},
    		tbInsert = {100,110,120},
    	},
    }
    
    -- 等级提升等级段配置
    local nMaxLevelUp = 12
    
    tbUi.tbGMData = {
    	[tbDataIndex.OneKeyShow] = {
    		Text = "Hiện nhanh",
    		szCallback = "GM:OneKeyShow()",
    	},
    
    	[tbDataIndex.QuicklyEquipment] =
    	{
    		Text = "LvN",
    		tbChild = {
    			[1] = {
    				Text = "Lv40 nhanh",
    				szCallback = "GM:QuicklyEquipment()",
    			},
    			[2] = {
    				Text = "Lv80 nhanh",
    				szCallback = "GM:QuicklyEquipment2()",
    			},
    			[3] = {
    				Text = "Lv100",
    				szCallback = "GM:QuicklyEquipment3()",
    			},
    			[4] = {
    				Text = "Lv110",
    				szCallback = "GM:QuicklyEquipment4()",
    			},
    			[5] = {
    				Text = "Lv120",
    				szCallback = "GM:QuicklyEquipment5()",
    			},
    		}
    	},
    
    	[tbDataIndex.RefreshHp] = {
    		Text = "Hồi đầy sinh lực",
    		szCallback = "GM:RefreshHp()",
    	},
    
    	[tbDataIndex.ActivtyOpen] = {
    		Text = "Mở hoạt động",
    		tbChild = {
    			{
    				Text = "Minh Chủ Võ Lâm",
    				tbChild = {
    				{
    						Text = "Khiêu chiến Minh Chủ Võ Lâm",
    						szCallback = "GM:OpenBossActivity()",
    				},
    				{
    						Text = "Đóng Minh Chủ Võ Lâm",
    						szCallback = "GM:EndFinishBoss()",
    				},
    				{
    						Text = "Xóa chờ",
    						szCallback = "GM:BossFightCd()",
    				},
    				},
    			},
    			{
    				Text = "Đấu Giá",
    				tbChild = {
    					{
    						Text = "Mở Bang Hội",
    						szCallback = "GM:KinAuction()",
    					},
    					{
    						Text = "Mở Hành Cước Thương Nhân",
    						szCallback = "GM:StartAuctionDealer()",
    					},
    				},
    			},
    			{
    				Text = "Võ Thần Điện",
    				szCallback = "GM:OpenRankPanel()",
    			},
    			{
    				Text = "Quần Anh Hội",
    				tbChild = {
    					[1] = {
    						Text = "Mở Quần Anh Hội",
    						szCallback = "GM:QunYingHuiOpen()",
    					},
    					[2] = {
    						Text = "Vào Quần Anh Hội",
    						szCallback = "GM:QunYingHuiJoin()",
    					},
    				},
    			},
    			{
    				Text = "Chiến Trường",
    				tbChild = {
    					{
    						Text = "Mở Chiến Trường Tân Thủ",
    						szCallback = "GM:OpenAloneBattle()",
    					},
    					{
    						Text = "Mở Chiến Trường Nguyên Soái",
    						szCallback = "GM:OpenBattle()",
    					},
    					{
    						Text = "Mở Chiến Trường PK",
    						szCallback = "GM:OpenBatte1()",
    					},
    					{
    						Text = "Mở Tống Kim Chiến",
    						szCallback = "GM:OpenBatte8()",
    					},
    					{
    						Text = "Đóng báo danh chiến trường",
    						szCallback = "GM:StopBattleSignUp()",
    					},
    					{
    						Text = "Tăng số lần chiến trường",
    						szCallback = "GM:AddDegreeBattle()",
    					},
    				},
    			},
    			{
    				Text = "Thủ Lĩnh Dã Ngoại",
    				tbChild = {
    					[1] = {
    						Text = "Mở Thủ Lĩnh Dã Ngoại",
    						szCallback = "GM:OpenBoss()",
    					},
    					[2] = {
    						Text = "Đóng Thủ Lĩnh Dã Ngoại",
    						szCallback = "GM:CloseBoss()",
    					},
    				},
    			},
    			{
    				Text = "Danh Tướng",
    				tbChild = {
    					[1] = {
    						Text = "Mở bản đồ Danh Tướng",
    						szCallback = "GM:PreStartBossLeader()",
    					},
    					[2] = {
    						Text = "Mở Danh Tướng",
    						szCallback = "GM:StartBossLeader()",
    					},
    					[3] = {
    						Text = "Đóng Danh Tướng",
    						szCallback = "GM:CloseBossLeader()",
    					},
    				},
    			},
    			{
    				Text = "Bạch Hổ Đường",
    				tbChild = {
    					[1] = {
    						Text = "Mở Bạch Hổ Đường",
    						szCallback = "GM:OpenWhiteTigerFuben()",
    					},
    					[2] = {
    						Text = "Vào Sảnh Chờ",
    						szCallback = "GM:EnterWhiteTigerFuben()",
    					},
    					[3] = {
    						Text = "Đóng Bạch Hổ Đường",
    						szCallback = "GM:CloseWhiteTigerFuben()",
    					},
    					[4] = {
    						Text = "Số lần Bạch Hổ Đường +1",
    						szCallback = "GM:AddDegreeWhiteTigerFuben()",
    					},
    				},
    			},
    			{
    				Text = "Thi Đấu Môn Phái",
    				tbChild = {
    					[1] = {
    						Text = "Mở Thi Đấu Môn Phái",
    						szCallback = "GM:OpenFactionBattle()",
    					},
    					[2] = {
    						Text = "Tham gia Thi Đấu Môn Phái",
    						szCallback = "GM:JoinFactionBattle()",
    					},
    					[3] = {
    						Text = "Đóng Thi Đấu Môn Phái",
    						szCallback = "GM:CloseFactionBattle()",
    					},
    					[4] = {
    						Text = "Mở bình chọn",
    						szCallback = "GM:StartFactionMonkey()",
    					},
    					[5] = {
    						Text = "Đóng bình chọn",
    						szCallback = "GM:EndFactionMonkey()",
    					},
    				},
    			},
    			{
    				Text = "Thông Thiên Tháp",
    				tbChild = {
    					{
    						Text = "Mở Thông Thiên Tháp",
    						szCallback = "GM:OpenTeamBattle()",
    					},
    					{
    						Text = "Mở Thông Thiên Tháp Liên SV",
    						szCallback = "GM:OpenTeamBattle_Cross()",
    					},
    					{
    						Text = "Vào Thông Thiên Tháp",
    						szCallback = "GM:EnterTeamBattle()",
    					},
    					{
    						Text = "Tất cả người chơi online tham gia Thông Thiên Tháp\n(Ngoại trừ tổ đội)",
    						szCallback = "GM:TryJoinPreMapTeamBattle()",
    					},
    					{
    						Text = "Thiết lập lại số lần tiêu hao Thông Thiên Tháp",
    						szCallback = "GM:TeamBattleUserValue()",
    					},
    					{
    						Text = "Tất cả người chơi [B03060]online[-] tạo lại số lần tiêu hao",
    						szCallback = "GM:TeamBattlePlayerUserValue()",
    					},
    					{
    						Text = "Tất cả người chơi [B03060]online[-] xóa Vé Vào Cửa",
    						szCallback = "GM:TeamBatlePlayerSetUserValue()",
    					},
    					{
    						Text = "Xem Vinh Dự Thông Thiên Tháp còn lại",
    						szCallback = "GM:TeamBattleHONOR()",
    					},
    				},
    			},
    			{
    				Text = "Thí Luyện Bang Hội",
    				tbChild = {
    					[1] = {
    						Text = "Mở Thí Luyện Bang Hội",
    						szCallback = "GM:OpenKinTrain()",
    					},
    					[2] = {
    						Text = "Vào Thí Luyện Bang Hội",
    						szCallback = "GM:EnterKinTrain()",
    					},
    					[3] = {
    						Text = "Thí Luyện Bang Hội mở (Bản rút gọn - Một người là được)",
    						szCallback = "GM:KinTrainMgrStart()",
    					},
    				},
    			},
    			{
    				Text = "Công Thành Chiến",
    				tbChild = {
    					[1] = {
    						Text = "Mở Tuyên Chiến Công Thành Chiến",
    						szCallback = "GM:StartDomainBattleDeclareWar()",
    					},
    					[2] = {
    						Text = "Mở Chiến Trường Công Thành Chiến",
    						szCallback = "GM:StartDomainBattleActivity()",
    					},
    					[3] = {
    						Text = "Xem số lần Công Thành Chiến",
    						szCallback = "GM:GetValueDomainBattle()",
    					},
    					[4] = {
    						Text = "Thương Nhân Lãnh Địa (Cần chiếm lãnh địa)",
    						szCallback = "GM:AddOnwenrDomainBattle()",
    					},
    					[5] = {
    						Text = "Người online đều tham chiến\n(Cần tuyên chiến bang)",
    						szCallback = "GM:CometomeDomain()",
    					},
    				},
    			},
    			{
    				Text = "Tần Lăng",
    				tbChild = {
    					{
    						Text = "Vào Hoàng Lăng",
    						szCallback = "GM:EnterTombRequest()",
    					},
    					{
    						Text = "Vào tầng 2",
    						szCallback = "GM:EnterNormalFloor2()",
    					},
    					{
    						Text = "Vào tầng 3",
    						szCallback = "GM:EnterNormalFloor3()",
    					},
    					{
    						Text = "Tăng thời gian Tần Lăng",
    						szCallback = "GM:ImperialTombAddTime()",
    					},
    					{
    						Text = "Xóa thời gian Tần Lăng\n(Tiêu hao trước rồi mới thực hiện)",
    						szCallback = "GM:ImperialTombClearTime()",
    					},
    					{
    						Text = "Triệu hồi Bách Tướng",
    						szCallback = "GM:ImperialTombCallLeader()",
    					},
    					{
    						Text = "Mời Mật Thất",
    						szCallback = "GM:ImperialTombSecretRoom()",
    					},
    					{
    						Text = "Diệt quái Mật Thất",
    						szCallback = "GM:ImperialTombSpawnSecret()",
    					},
    					{
    						Text = "Mở Thủy Hoàng Giáng Thế",
    						szCallback = "GM:OpenEmperor()",
    					},
    					{
    						Text = "Mở Nữ Đế Nghi Chủng",
    						szCallback = "GM:OpenEmperor1()",
    					},
    					{
    						Text = "Vào Thủy Hoàng Giáng Thế",
    						szCallback = "GM:EnterEmperorRoom()",
    					},
    					{
    						Text = "Tạo mới Thủ Lĩnh Thủy Hoàng Giáng Thế",
    						szCallback = "GM:CallBoss()",
    					},
    					{
    						Text = "Tạo mới Tần Thủy Hoàng Thủy Hoàng Giáng Thế",
    						szCallback = "GM:CallEmperor()",
    					},
    					{
    						Text = "Đóng Thủy Hoàng Giáng Thế",
    						szCallback = "GM:CloseEmperor()",
    					},
    				},
    			},
    			{
    				Text = "Hoa Sơn Luận Kiếm",
    				tbChild = {
    					[1] = {
    						Text = "Mở Vòng Sơ Tuyển",
    						szCallback = "GM:StartEnterHuaShanLunJian()",
    					},
    					[2] = {
    						Text = "Vào Sảnh Chờ-Sơ Tuyển",
    						szCallback = "GM:EnterHuaShanLunJian()",
    					},
    					[3] = {
    						Text = "Kéo người vào Chiến Đội (Cần tổ đội)",
    						szCallback = "GM:JoinFightTeamHuaShanLunJian()",
    					},
    					[4] = {
    						Text = "Đóng Vòng Sơ Tuyển",
    						szCallback = "GM:CloseEnterHuaShanLunJian()",
    					},
    					[5] = {
    						Text = "Mở chung kết\n(Mở lại cần khởi động lại máy chủ)",
    						szCallback = "GM:StartFinalsHuaShanLunJian()",
    					},
    					[6] = {
    						Text = "Vào chung kết",
    						szCallback = "GM:PlayerEnterHuaShanLunJian()",
    					},
    					[7] = {
    						Text = "Nhận thông tin tứ kết (Tin mới)",
    						szCallback = "GM:InformFinalsFightTeamListHuaShanLunJian()",
    					},
    				},
    			},
    			{
    				Text = "Liên SV",
    				tbChild = {
    					{
    						Text = "Đến Liên SV",
    						szCallback = "GM:GoZoneserver()",
    					},
    					{
    						Text = "Thiết lập Liên SV 1",
    						szCallback = "GM:ChangeZoneConnect()",
    					},
    				},
    			},
    			{
    				Text = "Tâm Ma Ảo Cảnh (Liên SV)",
    				tbChild = {
    					{
    						Text = "Mở Tâm Ma Ảo Cảnh",
    						szCallback = "GM:InDifferBattleStart()",
    					},
    					{
    						Text = "Số lần Tăng Tâm Ma",
    						szCallback = "GM:InDifferBattleDegree()",
    					},
    					{
    						Text = "Thêm Tâm Ma Bảo Châu",
    						szCallback = "GM:AddInDifferBattleItem()",
    					},
    				},
    			},
    		},
    	},
    
    	[tbDataIndex.AddPower] = {
    		Text = "Thêm sức mạnh nhân vật\n[B0E2FF][-] ",
    		tbChild = {
    			[1] = {
    				Text = "Tiểu cường biến thân\n[FF1493][-]",
    				szCallback = "GM:SwitchSkillState()",
    			},
    			[2] = {
    				Text = "Đại cường biến thân\n[FF1493]╰(`□′)╯[-]",
    				szCallback = "GM:SwitchSkillState1()",
    			},
    			[3] = {
    				Text = "Giới Vương Quyền x10\n[FF1493][-]",
    				szCallback = "GM:SwitchSkillState2()",
    			},
    			[4] = {
    				Text = "Giới Vương Quyền x20\n[FF1493] [-]",
    				szCallback = "GM:SwitchSkillState3()",
    			},
    			[5] = {
    				Text = "Giới Vương Quyền x30\n[FF1493][-]",
    				szCallback = "GM:SwitchSkillState4()",
    			},
    		},
    	},
    
    	[tbDataIndex.Money] = {
    		Text = "Đại hiệp phát tài!\n[B03060][-]",
    		tbChild = {
    			[1] = {
    				Text = "Thêm 999999",
    				szCallback = "GM:GMAddMoney(999999)",
    			},
    			[2] = {
    				Text = "Mua Thẻ Tuần",
    				szCallback = "GM:BuyWeekCardCallBack()",
    			},
    			[3] = {
    				Text = "Mua Thẻ Tháng",
    				szCallback = "GM:BuyMonCardCallBack()",
    			},
    			[4] = {
    				Text = "Quà 20,000 VNĐ",
    				szCallback = "GM:OnBuyDayCardCallBack1()",
    			},
    			[5] = {
    				Text = "Quà 10,000 VNĐ",
    				szCallback = "GM:OnBuyDayCardCallBack3()",
    			},
    			[6] = {
    				Text = "Quà 20,000 VNĐ",
    				szCallback = "GM:OnBuyDayCardCallBack6()",
    			},
    			[7] = {
    				Text = "Đầu Tư Lv30",
    				szCallback = "GM:OnBuyInvestCallBack1()",
    			},
    			[8] = {
    				Text = "Đầu Tư Lv65\n[00FF00](Cần mua loại trước đó[-]",
    				szCallback = "GM:OnBuyInvestCallBack2()",
    			},
    			[9] = {
    				Text = "Mức nạp\n(Thực tế chỉ tăng Nguyên Bảo tặng)",
    				tbChild = {
    					[1] = {
    						Text = "6 RMB",
    						szCallback = "GM:OnTotalRechargeChange6RMB()",
    					},
    					[2] = {
    						Text = "30 RMB",
    						szCallback = "GM:OnTotalRechargeChange30RMB()",
    					},
    					[3] = {
    						Text = "98 RMB",
    						szCallback = "GM:OnTotalRechargeChange98RMB()",
    					},
    					[4] = {
    						Text = "198 RMB",
    						szCallback = "GM:OnTotalRechargeChange198RMB()",
    					},
    					[5] = {
    						Text = "328 RMB",
    						szCallback = "GM:OnTotalRechargeChange328RMB()",
    					},
    					[6] = {
    						Text = "648 RMB",
    						szCallback = "GM:OnTotalRechargeChange648RMB()",
    					},
    				}
    			},
    		},
    	},
    
    	[tbDataIndex.GainItem] = {
    		Text = "Nhận đạo cụ",
    		szCallback = "GM:GetItem()",
    	},
    
    	[tbDataIndex.Revive] = {
    		Text = "Tín Xuân ca, đầy sinh lực sẽ hồi sinh",
    		szCallback = "GM:Revive()",
    	},
    
    	[tbDataIndex.nPartnerDataIndex] = {
    		Text = "Xông pha giang hồ cần có đồng hành\n [8B864E][-]",
    		tbChild = {
    
    			[1] = {
    				Text = "Cần tất cả đồng hành cấp SS",
    				szCallback = string.format("GM:AddQualityPartner(2)"),
    			},
    			[nSSPartnerSingleIndex] = {
    				Text = "Cần 1 đồng hành cấp SS",
    				tbChild = {},
    			},
    			[3] = {
    				Text = "Cần tất cả đồng hành cấp S",
    				szCallback = string.format("GM:AddQualityPartner(3)"),
    			},
    			[nSPartnerSingleIndex] = {
    				Text = "Cần 1 đồng hành cấp S",
    				tbChild = {},
    			},
    			[5] = {
    				Text = "Cần tất cả đồng hành cấp A",
    				szCallback = string.format("GM:AddQualityPartner(4)"),
    			},
    			[nAPartnerSingleIndex] = {
    				Text = "Cần 1 đồng hành cấp A",
    				tbChild = {},
    			},
    			[7] = {
    				Text = "Ta muốn Đồng Hành AI",
    				szCallback = string.format("GM:AddAIPartner(%s)",tbAllTestAIPartner),
    			},
    			[8] = {
    				Text = "Tăng cấp Đồng Hành ra trận",
    				szCallback = string.format("GM:AddPartnerExp()"),
    			},
    			[nAllPartnerIndex] = {
    				Text = "Tất cả Đồng Hành",
    				tbChild = {},
    			},
    		}
    	},
    	[tbDataIndex.Role] = {
    		Text = "Nhân vật LvXX\n Các loại cường hóa khảm",
    		tbChild = {},
    	},
    	[tbDataIndex.nLevelUpDataIndex] = {
    		Text = "Tăng cấp",
    		tbChild = {},
    	},
    	[tbDataIndex.nHonorDataIndex] = {
    		Text = "Tăng cấp Quân Hàm",
    		tbChild = {},
    	},
    	[tbDataIndex.BattleSignIn] = {
    		Text = "Báo danh chiến trường",
    		szCallback = "GM:OpenBattleSignUp()",
    	},
    
    	[tbDataIndex.BaoZang] = {
    		Text = "Huynh đệ, tầm bảo không?\n[40E0D0][-] ",
    		tbChild = {
    			[1] = {
    				Text = "Cho ta Tàng Bảo Đồ",
    				szCallback = "GM:AddCangbaotu()",
    			},
    			[2] = {
    				Text = "Hãy chinh chiến Tàng Bảo Đồ-Cao",
    				szCallback = "GM:AddSeniorCangbaotu()",
    			},
    		}
    	},
    
    	[tbDataIndex.TeamFuben] = {
    		Text = "Phó bản tổ đội",
    		tbChild = {
    			[1] = {
    				Text ="Bí Cảnh Lv20",
    				szCallback = "GM:Go2TeamFuben(1,1)",
    			},
    			[2] = {
    				Text ="Bí Cảnh Lv40",
    				szCallback = "GM:Go2TeamFuben(1,2)",
    			},
    			[3] = {
    				Text ="Bí Cảnh Lv60",
    				szCallback = "GM:Go2TeamFuben(1,3)",
    			},
    		},
    	},
    
    	[tbDataIndex.RandomFuben] = {
    		Text = "Lăng Tuyệt Phong\n ########### \n Phó Bản Địa Cung",
    		tbChild = {},
    	},
    
    	[tbDataIndex.AddItem] = {
    		Text = "Tăng đạo cụ chỉ định",
    		szCallback = "GM:AddItemList()",
    	},
    
    	[tbDataIndex.TestClientPk] = {
    		Text = "Thử nghiệm PK Client cùng màn hình",
    		szCallback = "GM:TestClientPk()",
    	},
    
    	[tbDataIndex.UnlockFuben] = {
    		Text = "Mở ải",
    		szCallback = "GM:UnlockFuben()",
    	},
    
    	[tbDataIndex.CleanBag] = {
    		Text = "Xóa hành trang",
    		szCallback = "GM:CleanBag()",
    	},
    	[tbDataIndex.Refresh] = {
    		Text = "Test tính năng nhỏ\n [C1FFC1](*^灬^*) [-]",
    		tbChild = {
    			{
    				Text = "Tạo mới HotFix",
    				szCallback = "GM:CheckFixCmd()",
    			},
    			{
    				Text = "Tạo mới file thiết lập dẫn chương trình",
    				szCallback = "GM:ChatHostInfo()",
    			},
    			{
    				Text = "Sơ đồ thời gian liên quan",
    				tbChild = {
    					{
    						Text = "Xem số ngày mở máy chủ",
    						szCallback = "GM:GetServerOpenDay()",
    					},
    					{
    						Text = "Xem thời gian mở máy chủ",
    						szCallback = "GM:ServerCreateTime()",
    					},
    					{
    						Text = "Thời gian mở của tất cả sơ đồ thời gian",
    						szCallback = "GM:OutPutAllTimeFrameInfo()",
    					},
    					{
    						Text = "Xem sơ đồ thời gian có mở không",
    						szCallback = "GM:QueryTimeFrameIsOpen()",
    					},
    					{
    						Text = "Xem thời gian mở sơ đồ thời gian",
    						szCallback = "GM:QueryTimeFrameOpenTime()",
    					},
    				}
    			},
    			{
    				Text = "Xem số người online",
    				szCallback = "GM:OnlinePlayerCount()",
    			},
    			{
    				Text = "Xem số người bản đồ hiện tại",
    				szCallback = "GM:GetMapPlayer()",
    			},
    			{
    				Text = "Xem lực chiến tất cả người chơi trong bản đồ hiện tại",
    				szCallback = "GM:GetMapPlayerPower()",
    			},
    			{
    				Text = "Nhận năng động",
    				szCallback = "GM:EverydayTarget()",
    			},{
    				Text = "Xóa chờ chuyển phái",
    				szCallback = "GM:RemoveUesrValue()",
    			},
    			{
    				Text = "Hủy cấm chat",
    				szCallback = "GM:ChatMgrSetFilterText()",
    			},
    			{
    				Text = "Mọi người mai tập hợp!",
    				szCallback = "GM:Cometome()",
    			},
    			{
    				Text = "Triệu hồi đồng hành 1",
    				szCallback = "GM:CreatePartnerByPos()",
    			},
    			{
    				Text = "Code Quà",
    				szCallback = "GM:ShowCodeGift()",
    			},
    			{
    				Text = "Lệnh Bài cần cho Quân Hàm",
    				tbChild = {
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Lăng Vân[-]",
    						szCallback = "GM:HonorLingYun()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Ngự Không[-]",
    						szCallback = "GM:HonorYuKong()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Tiềm Long[-]",
    						szCallback = "GM:HonorQianLong()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Ngạo Thế[-]",
    						szCallback = "GM:HonorAoShi()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Ỷ Thiên[-]",
    						szCallback = "GM:HonorYiTian()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Chí Tôn[-]",
    						szCallback = "GM:HonorZhiZun()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Võ Thánh[-]",
    						szCallback = "GM:HonorWuShen()",
    					},
    					{
    						Text = "Lệnh bài cần để tăng cấp [ADFF2F]Vô Song[-]",
    						szCallback = "GM:HonorWuShuang()",
    					},
    				},
    			},
    			{
    				Text = "Người chơi online tạo Bang Hội\n(Thực hiện 2 lần)",
    				szCallback = "GM:KinIsNameValid()",
    			},
    			{
    				Text = "Bang Hội online vào nhóm\n(Lập đội trước)",
    				szCallback = "GM:Kinteam()",
    			},
    			{
    				Text = "Test treo máy/EXP",
    				tbChild = {
    					{
    							Text = "Mở tính quái",
    							szCallback = "GM:StartMonsterCount()",
    					},
    					{
    							Text = "Hiện tính quái",
    							szCallback = "GM:ShowMonsterCount()",
    					},
    					{
    							Text = "Xóa EXP",
    							szCallback = "GM:ClearExp()",
    					},
    					{
    						Text = "Tự động đấu theo giờ",
    						szCallback = "GM:TryAutoFight()",
    					},
    				},
    			},
    			{
    				Text = "Đóng thông tin Debug",
    				szCmd = "Ui:ShowDebugInfo(not Ui.FTDebug.bShowDebugInfo); me.CenterMsg((Ui.FTDebug.bShowDebugInfo and 'Mở' or 'Đóng') .. '');";
    			},
    			{
    				Text = "Dẫn chương trình",
    				tbChild = {
    					{
    						Text = "Nhận được quyền dẫn chương trình",
    						szCallback = "GM:GetHostAuth()";
    					},
    					{
    						Text = "Hủy quyền dẫn chương trình",
    						szCallback = "GM:CancelHostAuth()";
    					},
    				},
    			},
    			{
    				Text = "Báo dữ liệu\n(Cần dùng SDK đăng nhập)",
    				szCallback = "GM:ReportQQData()";
    			},
    		}
    	},
    
    	[tbDataIndex.House] = {
    		Text = "Gia Viên",
    		tbChild = {
    			{
    				Text = "Nhận được Gia Viên",
    				szCallback = "GM:GetHouse()",
    			},
    			{
    				Text = "Tăng cấp Gia Viên",
    				szCallback = "GM:LevelupHouse()",
    			},
    			{
    				Text = "Nhận tất cả Nguyên Liệu Gia Cụ",
    				szCallback = "GM:GetAllHouseMaterial()",
    			},
    			{
    				Text = "Nhận tất cả gia cụ",
    				szCallback = "GM:GetAllHouseFurniture()",
    			},
    		},
    	},
    	[tbDataIndex.KinTool] = 
    	{
    		Text = "Công cụ & hoạt động Bang Hội\nNhiều bất ngờ, còn không mau đến",
    		tbChild = {
    			{
    				Text = "Mở Vận Tiêu Bang Hội",
    				szCallback = "GM:StartKinEscort()",
    			},
    			{
    				Text = "Mở Lửa Trại Bang Hội",
    				szCallback = "GM:StartKinGatherActivity()",
    			},
    			{
    				Text = "Tăng quỹ xây dựng bang",
    				szCallback = "GM:AddKinFound()",
    			},
    			{
    				Text = "Mở Bảo Bối",
    				szCallback = "GM:OpenMascot()",
    			},
    			{
    				Text = "Đóng Bảo Bối",
    				szCallback = "GM:CloseMascot()",
    			},
    			{
    				Text = "Xóa chờ truyền công",
    				szCallback = "GM:ChuangGongUserValue()",
    			},
    			{
    				Text = "Tăng lần nhận truyền công",
    				szCallback = "GM:AddDegreeChuangGong()",
    			},
    			{
    				Text = "Tăng lần truyền công",
    				szCallback = "GM:AddDegreeChuangGongSend()",
    			},
    			{
    				Text = "Hoàn thành mục tiêu sư đồ",
    				szCallback = "GM:TargetAddCount()",
    			},
    			{
    				Text = "Nhận ID bang",
    				szCallback = "GM:KinId()",
    			},
    			{
    				Text = "Xem Năng động Bang Hội",
    				szCallback = "GM:KinLastJudge()",
    			},
    			{
    				Text = "Người online xin vào\n(Cần bang chủ và bản thân đồng ý)",
    				szCallback = "GM:KinGetAllPlayer()",
    			},
    			{
    				Text = "Giải tán bang\n[FF0000]Nhấp {{{(>_<)}}}[-]",
    				szCallback = "GM:DismissMyKin()",
    			},
    			
    		},
    	},
    
    	[tbDataIndex.ChangeFaction] =
    	{
    		Text = "Đến Đấu Trường hoặc chuyển phái",
    		tbChild = {
    			[1] = {
    				Text = "Đến Đấu Trường",
    				szCallback = "me.SwitchMap(1006, 0, 0)",
    			},
    			[2] = {
    				Text = "Thiên Vương",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 1)",
    			},
    			[3] = {
    				Text = "Nga Mi",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 2)",
    			},
    			[4] = {
    				Text = "Đào Hoa",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 3)",
    			},
    			[5] = {
    				Text = "Tiêu Dao",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 4)",
    			},
    			[6] = {
    				Text = "Võ Đang",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 5)",
    			},
    			[7] = {
    				Text = "Thiên Nhẫn",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 6)",
    			},
    			[8] = {
    				Text = "Thiếu Lâm",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 7)",
    			},
    			[9] = {
    				Text = "Thúy Yên",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 8)",
    			},
    			[10] = {
    				Text = "Đường Môn",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 9)",
    			},
    			[11] = {
    				Text = "Côn Lôn",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 10)",
    			},
    			[12] = {
    				Text = "Cái Bang",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 11)",
    			},
    			[13] = {
    				Text = "Ngũ Độc",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 12)",
    			},
    			[14] = {
    				Text = "Tàng Kiếm",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 13)",
    			},
    			[15] = {
    				Text = "Trường Ca",
    				szCallback = "ChangeFaction.tbDef.nMapTID = me.nMapTemplateId; ChangeFaction:PlayerChangeFaction(me, 14)",
    			},
    		}
    	},
    }
    
    function tbUi:OnOpen()
    	self:UpdateData()
    	self:ResetUi()
    	self:UpdateMainUi()
    	self:ClearObj(1,2,3)
    end
    
    function tbUi:UpdateData()
    	self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild = self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild or {}
    
    	local tbAllPartner = self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild[nAllPartnerIndex]
    	if tbAllPartner then
    		tbAllPartner.tbChild = {}
    	end
    
    	local tbAllSSPartner = self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild[nSSPartnerSingleIndex]
    	if tbAllSSPartner then
    		tbAllSSPartner.tbChild = {}
    	end
    
    	local tbAllSPartner = self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild[nSPartnerSingleIndex]
    	if tbAllSPartner then
    		tbAllSPartner.tbChild = {}
    	end
    
    	local tbAllAPartner = self.tbGMData[tbDataIndex.nPartnerDataIndex].tbChild[nAPartnerSingleIndex]
    	if tbAllAPartner then
    		tbAllAPartner.tbChild = {}
    	end
    
    	local tbAllPartnerBaseInfo = Partner:GetAllPartnerBaseInfo();
    	for nId, tbInfo in pairs(tbAllPartnerBaseInfo or {}) do
    
    		if tbAllSSPartner.tbChild then
    			if tbInfo.nQualityLevel == 2 then
    				table.insert(tbAllSSPartner.tbChild, { Text = string.format("Ta muốn %s ", tbInfo.szName), szCallback = string.format("GM:AddOnePartner(%d,true)",nId) })
    			end
    		end
    
    		if tbAllSPartner.tbChild then
    			if tbInfo.nQualityLevel == 3 then
    				table.insert(tbAllSPartner.tbChild, { Text = string.format("Ta muốn %s ", tbInfo.szName), szCallback = string.format("GM:AddOnePartner(%d,true)",nId) })
    			end
    		end
    
    		if tbAllAPartner.tbChild then
    			if tbInfo.nQualityLevel == 4 then
    				table.insert(tbAllAPartner.tbChild, { Text = string.format("Ta muốn %s ", tbInfo.szName), szCallback = string.format("GM:AddOnePartner(%d,true)",nId) })
    			end
    		end
    
    		if tbAllPartner.tbChild then
    			table.insert(tbAllPartner.tbChild, { Text = string.format("Ta muốn %s ", tbInfo.szName), szCallback = string.format("GM:AddOnePartner(%d,true)",nId) })
    		end
    	end
    
    	self.tbGMData[tbDataIndex.nLevelUpDataIndex].tbChild = {}
    	for i = 0,nMaxLevelUp do
    		table.insert(self.tbGMData[tbDataIndex.nLevelUpDataIndex].tbChild,{Text = string.format("%s0 +Cấp", i),tbChild = {}})
    		for j = 0, 9 do
    			local nLevel = i * 10 + j;
    			if nLevel > 0 then
    				table.insert(self.tbGMData[tbDataIndex.nLevelUpDataIndex].tbChild[i + 1].tbChild,{Text = string.format("Tăng đến Lv%s ", i * 10 + j),szCallback = string.format("GM:AddPlayerLevel(math.max(%d * 10 + %d, 1))",i,j)})
    			end
    		end
    	end
    
    	self.tbGMData[tbDataIndex.nHonorDataIndex].tbChild = {}
    	for nHonorLevel=1,#Player.tbHonorLevelSetting do
    		local szHonorName = Player.tbHonorLevel:GetHonorName(nHonorLevel)
    		table.insert(self.tbGMData[tbDataIndex.nHonorDataIndex].tbChild,{ Text = "Tăng cấp" ..szHonorName, szCallback = string.format("GM:SetHonorLevel(%d)",nHonorLevel)})
    	end
    
    	local tbEquipDesc =
    	{
    		[1] = "Nhận trang bị Lv%d (Thấp)",
    		[2] = "Nhận trang bị Lv%d (Trung)",
    		[3] = "Nhận trang bị Lv%d (Cao)",
    	}
    
    	local tbInsertDesc =
    	{
    		[1] = "Khảm Lv%d (Thấp)",
    		[2] = "Khảm Lv%d (Trung)",
    		[3] = "Khảm Lv%d (Cao)",
    	}
    
    	self.tbGMData[tbDataIndex.Role].tbChild = {}
    	local tbAllRole = self.tbGMData[tbDataIndex.Role].tbChild
    	for nIndex,tbData in ipairs(tbRoleData) do
    		local nLevel = tbData.nLevel or 0
    		local tbStrong = tbData.tbStrong or {}
    		local tbInsert = tbData.tbInsert or {}
    		if nLevel ~= 0 then
    			tbAllRole[nIndex] = {Text = string.format("Nhân vật Lv%d",nLevel),tbChild = {}}
    			local tbRole = tbAllRole[nIndex].tbChild
    			local nBaseIndex = #tbStrong+1
    			tbRole[1] = {Text = string.format("Tăng đến Lv%d",nLevel),szCallback = string.format("GM:AddPlayerLevel(%d)",nLevel)}
    			tbRole[nBaseIndex+1] = {Text = "Học hết kỹ năng",szCallback = "GM:SkillUpFull()"}
    			for i=1,#tbStrong do
    				local nStrong = tbStrong[i]
    				tbRole[#tbRole + 1] = {Text = string.format("Cường hóa +%d",nStrong),szCallback = string.format("GM:EnhanceEquip(%d)",nStrong)}
    			end
    			for nType=1,#tbEquipDesc do
    				tbRole[#tbRole + 1] = {Text = string.format(tbEquipDesc[nType],nLevel),szCallback = string.format("GM:AddEquips(%d,%d)",nLevel,nType)}
    			end
    			for nType=1,#tbInsert do
    				local nInsert = tbInsert[nType]
    				tbRole[#tbRole + 1] = {Text = string.format(tbInsertDesc[nType],nInsert),szCallback = string.format("GM:InsetEquip(%d,%d)",nInsert,nType)}
    			end
    		end
    	end
    
    	local tbRandomDesc =
    	{
    		[1] = "Bí Cảnh 1",
    		[2] = "Bí Cảnh 2",
    		[3] = "Bí Cảnh 3",
    		[4] = "Bí Cảnh 4",
    		[5] = "Bí Cảnh 5",
    		[6] = "Bí Cảnh 6",
    	}
    
    	-- 非秘境前面扩充
    	local tbRandomBefore =
    	{
    		[1] = {Text = "Bí cảnh ngẫu nhiên (Cần đội 2 người)",szCallback = "GM:Go2RandomFuben()"},
    		[2] = {Text = "Mở thu thập Lăng Tuyệt Phong",szCallback = "GM:BeginNewSession()"},
    		[3] = {Text = "Toàn bộ thẻ",szCallback = "GM:BeginNewSessionItem()"},
    	}
    
    	-- 非秘境后面扩充
    	local tbRandomAfter =
    	{
    		[1] = {Text = "Thắng trực tiếp",szCallback = "GM:GameWinFubenInstance()"},
    		[2] = {Text = "Thoát Lăng Tuyệt Phong",szCallback = "GM:GotoEntryPoint()"},
    		[3] = {Text = "Tạo lại số lần Lăng Tuyệt Phong",szCallback = "GM:RemoveUesrValueRandomFuben()"},
    		[4] = {
    					Text = "Phó bản nhỏ Địa Cung",
    					tbChild = {
    						[1] = {
    							Text = "Đến Địa Cung",
    							szCallback = "GM:DirectGotoDungeon()",
    						},
    						[2] = {
    							Text = "Địa Cung 2 (Thủy Tinh)\nDùng tại Địa Cung 1",
    							szCallback = "GM:DirectGotoDungeonCrystal()",
    						},
    						[3] = {
    							Text = "Địa Cung 2 (BOSS)\nDùng tại Địa Cung 1",
    							szCallback = "GM:DirectGotoDungeonBoss()",
    						},
    					},
    				},
    	}
    
    	if not self.tbRandomSetting then
    		local tbFile = LoadTabFile("Setting/Fuben/RandomFuben/RoomSetting.tab", "sd", nil, {"Info","MapId"});
    		for _,tbRow in pairs(tbFile) do
    			local tbRoom = Lib:SplitStr(tbRow.Info, "_")
    			local nLayer = tonumber(tbRoom[1]) or 0
    			local nRoom = tonumber(tbRoom[2]) or 0
    			self.tbRandomSetting = self.tbRandomSetting or {}
    			self.tbRandomSetting[nLayer] = self.tbRandomSetting[nLayer] or {}
    			self.tbRandomSetting[nLayer][nRoom] = tbRow.MapId
    		end
    	end
    
    	self.tbGMData[tbDataIndex.RandomFuben].tbChild = {}
    	local tbRandomFuben = self.tbGMData[tbDataIndex.RandomFuben].tbChild
    
    	local nBeforeLen = #tbRandomFuben
    	for i,tbChild in ipairs(tbRandomBefore) do
    		tbRandomFuben[nBeforeLen + i] = tbChild
    	end
    
    	local nMiddleLen = #tbRandomFuben
    	for nLayer = 1,#tbRandomDesc do
    		local szLayerDesc = tbRandomDesc[nLayer]
    		if not szLayerDesc then
    			break
    		end
    		if self.tbRandomSetting[nLayer] then
    			for nRoom=1,#self.tbRandomSetting[nLayer] do
    				local nMapId = self.tbRandomSetting[nLayer][nRoom]
    				if nMapId then
    					tbRandomFuben[nLayer + nMiddleLen] = tbRandomFuben[nLayer + nMiddleLen] or {Text = szLayerDesc,tbChild={}}
    					tbRandomFuben[nLayer + nMiddleLen].tbChild[nRoom] =
    					{
    						Text = string.format("Phòng %d",nRoom),
    						szCallback = string.format("GM:Go2RandomFuben(%d)",nMapId),
    					}
    				end
    			end
    		end
    	end
    
    	local nAfterLen = #tbRandomFuben
    	for i,tbChild in ipairs(tbRandomAfter) do
    		tbRandomFuben[nAfterLen + i] = tbChild
    	end
    
    end
    
    tbUi.tbHideUI =
    {
    	ScrollView1 = true,
    	ScrollView2 = true,
    	ScrollView3 = true,
    	Title1 = true,
    	Title2 = true,
    	Title3 = true,
    }
    
    function tbUi:ResetUi()
    	for szUiName,_ in pairs(self.tbHideUI) do
    		self.pPanel:SetActive(szUiName,false)
    	end
    end
    
    function tbUi:ShowUi(...)
    	self:ResetUi()
    	local tbIdx = {...}
    	for _,nIdx in pairs(tbIdx) do
    		self.pPanel:SetActive("ScrollView" ..nIdx,true)
    		self.pPanel:SetActive("Title" ..nIdx,true)
    	end
    end
    
    function tbUi:UpdateMainUi()
    	self:ShowUi(1)
    
    	local fnOnClick = function(itemObj)
    		if self.tbGMData[itemObj.nId].tbChild then
    			self:UpdateChildUi(itemObj.nId)
    		else
    			local szCallBack = self.tbGMData[itemObj.nId].szCallback
    			if self.tbGMData[itemObj.nId].szCmd then
    				local fn = loadstring(self.tbGMData[itemObj.nId].szCmd);
    				Lib:CallBack({fn});
    			else
    				GMCommand(szCallBack);
    			end
    			 me.CenterMsg(string.format("【%s】 đã lên xe",self.tbGMData[itemObj.nId].Text))
    		end
    		self:ClearObj(1,2,3)
    		itemObj.pPanel:SetActive("Choose",true)
    	end
    
    	local fnSetItem = function(itemObj,nIdx)
    		self.tbGMData[nIdx].nId = nIdx  		-- 搜索用到对应的ID
    		itemObj.pPanel:Label_SetText("Name",  self.tbGMData[nIdx].Text or "");
    		itemObj.nId = nIdx
    		itemObj.pPanel.OnTouchEvent = fnOnClick;
    		itemObj.pPanel:SetActive("Mark",self.tbGMData[nIdx].tbChild)
    	end
    
    	self.ScrollView1:Update(#self.tbGMData,fnSetItem);
    end
    
    function tbUi:UpdateChildUi(nPartnerId)
    	self:ShowUi(1,2)
    	local tbChildData =  self.tbGMData[nPartnerId].tbChild
    	local fnOnClick = function(itemObj)
    		local nId = itemObj.nId
    		if tbChildData[nId].tbChild then
    			self:UpdateChild2Ui(nPartnerId,nId)
    		else
    			local szCallBack = tbChildData[nId].szCallback
    			if tbChildData[itemObj.nId].szCmd then
    				local fn = loadstring(tbChildData[itemObj.nId].szCmd);
    				Lib:CallBack({fn});
    			else
    				GMCommand(szCallBack);
    			end
    			me.CenterMsg(string.format("【%s】 đã lên xe",tbChildData[nId].Text))
    		end
    		self:ClearObj(2,3)
    		itemObj.pPanel:SetActive("Choose",true)
    	end
    
    	local fnSetItem = function(itemObj,nIdx)
    		itemObj.pPanel:Label_SetText("Name",  tbChildData[nIdx].Text or "");
    		itemObj.nId = nIdx
    		itemObj.pPanel.OnTouchEvent = fnOnClick;
    		itemObj.pPanel:SetActive("Mark",tbChildData[nIdx].tbChild)
    	end
    
    	self.ScrollView2:Update(#tbChildData,fnSetItem);
    end
    
    function tbUi:UpdateChild2Ui(nGrandParentId,nPartnerId)
    	self:ShowUi(1,2,3)
    
    	local tbChildData =  self.tbGMData[nGrandParentId].tbChild[nPartnerId].tbChild
    
    	local fnOnClick = function(itemObj)
    		local nId = itemObj.nId
    		if tbChildData[nId].tbChild then
    			self:UpdateChild3Ui()
    		else
    			local szCallBack = tbChildData[nId].szCallback
    			if tbChildData[itemObj.nId].szCmd then
    				local fn = loadstring(tbChildData[itemObj.nId].szCmd);
    				Lib:CallBack({fn});
    			else
    				GMCommand(szCallBack);
    			end
    			me.CenterMsg(string.format("【%s】 đã lên xe",tbChildData[nId].Text))
    		end
    		self:ClearObj(3)
    		itemObj.pPanel:SetActive("Choose",true)
    	end
    
    	local fnSetItem = function(itemObj,nIdx)
    		itemObj.pPanel:Label_SetText("Name",  tbChildData[nIdx].Text or "");
    		itemObj.nId = nIdx
    		itemObj.pPanel.OnTouchEvent = fnOnClick;
    		itemObj.pPanel:SetActive("Mark",tbChildData[nIdx].tbChild)
    	end
    
    	self.ScrollView3:Update(#tbChildData,fnSetItem);
    end
    
    function tbUi:UpdateChild3Ui()
    	-- 暂时没需求
    end
    
    function tbUi:ClearObj(...)
    	local tbIdx = {...}
    	for _,nIdx in pairs(tbIdx) do
    		for i=0,300 do
    			local itemObj = self["ScrollView" ..nIdx].Grid["Item" ..i]
    			if not itemObj then
    				break
    			end
    			itemObj.pPanel:SetActive("Choose",false)
    		end
    	end
    end
    
    function tbUi:SearchSaveList(szSearch)
    	local tbSaveCommond
    	if szSearch == "" then
    		tbSaveCommond = self.tbGMData
    	else
    		tbSaveCommond = self:GetSaveCommondByStr(szSearch)
    	end
    	if not tbSaveCommond then
    		return
    	end
    	local fnOnClick = function(itemObj)
    		local nId = tbSaveCommond[itemObj.nId].nId 				-- 原数据的ID索引
    		if tbSaveCommond[itemObj.nId].tbChild then
    			self:UpdateChildUi(nId)
    		else
    			local szCallBack = tbSaveCommond[itemObj.nId].szCallback
    			if tbSaveCommond[itemObj.nId].szCmd then
    				local fn = loadstring(tbSaveCommond[itemObj.nId].szCmd);
    				Lib:CallBack({fn});
    			else
    				GMCommand(szCallBack);
    			end
    			me.CenterMsg(string.format("【%s】 đã lên xe",tbSaveCommond[itemObj.nId].Text))
    		end
    		self:ClearObj(1,2,3)
    		itemObj.pPanel:SetActive("Choose",true)
    	end
    
    	local fnSetItem = function(itemObj,nIdx)
    		itemObj.pPanel:Label_SetText("Name",  tbSaveCommond[nIdx].Text or "");
    		itemObj.nId = nIdx
    		itemObj.pPanel.OnTouchEvent = fnOnClick;
    		itemObj.pPanel:SetActive("Mark",tbSaveCommond[nIdx].tbChild)
    	end
    
    	self.ScrollView1:Update(#tbSaveCommond,fnSetItem);
    end
    
    function tbUi:GetSaveCommondByStr(szSearch)
    	local tbCommond = {}
    	for index,info in ipairs(self.tbGMData) do
    		info.nId = nil
    		local szCommond = info.Text
    		local isShow = string.find(szCommond, szSearch)
    		if isShow then
    			info.nId = index 				-- 原数据的ID索引
    			table.insert(tbCommond,info)
    		end
    	end
    	return tbCommond
    end
    
    tbUi.tbUiInputOnChange = {};
    tbUi.tbUiInputOnChange.Input = function (self)
    		local szSearch = self.Input:GetText()
    		self:SearchSaveList(szSearch)
    	end
    
    tbUi.tbOnClick = {
    	BtnClose = function (self)
    		Ui:CloseWindow(self.UI_NAME)
    	 end,
    }
    Vi phạm bản quyền nhe bác ...
    Khách viếng thăm hãy cùng bddl30589 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

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

    N.T.S.1802 (24-08-18)

  6. #84
    Thành Viên Tâm Huyết nobitajx2's Avatar
    Ngày tham gia
    Jul 2012
    Bài viết
    1,274
    Thanks
    670
    Thanked 361 Times in 106 Posts

    Ðề: [JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau)

    Trích dẫn Gửi bởi bddl30589 [Only registered and activated users can see links. ]
    Có 1 số đồng hành không mở được. SSS trương phong,...

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



    Vi phạm bản quyền nhe bác ...
    bác cho xin cái file pack SV và Client không lỗi Gia Viên với
    Khách viếng thăm hãy cùng nobitajx2 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  7. #85
    Thành Viên ngocdpt's Avatar
    Ngày tham gia
    Apr 2011
    Bài viết
    103
    Thanks
    62
    Thanked 111 Times in 44 Posts

    Ðề: [JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau)

    Nghịch 1 chút mở dc thêm lv.
    Biết thế viết thêm cấp nhỉ
    Giới hạn lv là bao nhiu?
    [Only registered and activated users can see links. ]
    Khách viếng thăm hãy cùng ngocdpt xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

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

    N.T.S.1802 (24-08-18)

  9. #86
    Thành Viên ngocdpt's Avatar
    Ngày tham gia
    Apr 2011
    Bài viết
    103
    Thanks
    62
    Thanked 111 Times in 44 Posts

    Ðề: [JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau)

    Trích dẫn Gửi bởi nobitajx2 [Only registered and activated users can see links. ]
    bác cho xin cái file pack SV và Client không lỗi Gia Viên với
    Bác lấy ở đây nhe, mình đang dùng không lỗi
    [Only registered and activated users can see links. ]
    Khách viếng thăm hãy cùng ngocdpt xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

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

    nobitajx2 (25-08-18)

  11. #87
    Thành Viên Tâm Huyết nobitajx2's Avatar
    Ngày tham gia
    Jul 2012
    Bài viết
    1,274
    Thanks
    670
    Thanked 361 Times in 106 Posts

    Ðề: [JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau)

    Trích dẫn Gửi bởi ngocdpt [Only registered and activated users can see links. ]
    Nghịch 1 chút mở dc thêm lv.
    Biết thế viết thêm cấp nhỉ
    Giới hạn lv là bao nhiu?
    [Only registered and activated users can see links. ]
    Mở đc cấp 139 mình có thêm đến 199 mà vẫn bị giới hạn 139 không lên đc
    Khách viếng thăm hãy cùng nobitajx2 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  12. #88
    Thành Viên N.T.S.1802's Avatar
    Ngày tham gia
    Nov 2015
    Bài viết
    251
    Thanks
    135
    Thanked 180 Times in 30 Posts

    Ðề: [JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau)

    Trích dẫn Gửi bởi ngocdpt [Only registered and activated users can see links. ]
    Nghịch 1 chút mở dc thêm lv.
    Biết thế viết thêm cấp nhỉ
    Giới hạn lv là bao nhiu?
    [Only registered and activated users can see links. ]
    check inbox bác ơi chỉ mình vài chiêu đi

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

    Trích dẫn Gửi bởi nobitajx2 [Only registered and activated users can see links. ]
    bác cho xin cái file pack SV và Client không lỗi Gia Viên với
    lấy ở mấy cái server one click ấy ông ơi. mà bị lỗi sao?
    Khách viếng thăm hãy cùng N.T.S.1802 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  13. #89
    Thành Viên ngocdpt's Avatar
    Ngày tham gia
    Apr 2011
    Bài viết
    103
    Thanks
    62
    Thanked 111 Times in 44 Posts

    Ðề: [JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau)

    Trích dẫn Gửi bởi nobitajx2 [Only registered and activated users can see links. ]
    Mở đc cấp 139 mình có thêm đến 199 mà vẫn bị giới hạn 139 không lên đc
    mình dang add thêm cấp 200 thử, haha
    Set time máy ảo về năm 2016 giới hạn cấp 59 (ngày và giờ hiện tại)
    sau đó rétar lại máy ảo, lại set lên năm 2018, bị lỗi mở hoạt động, set tiếp lên 2019 -> lên duoc 149 và đang viết thêm ...
    Khách viếng thăm hãy cùng ngocdpt xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

  14. #90
    Thành Viên Tâm Huyết nobitajx2's Avatar
    Ngày tham gia
    Jul 2012
    Bài viết
    1,274
    Thanks
    670
    Thanked 361 Times in 106 Posts

    Ðề: [JXM]- Hướng dẫn mọi thứ về VLTKM (update thêm sau)

    Trích dẫn Gửi bởi ngocdpt [Only registered and activated users can see links. ]
    mình dang add thêm cấp 200 thử, haha
    Set time máy ảo về năm 2016 giới hạn cấp 59 (ngày và giờ hiện tại)
    sau đó rétar lại máy ảo, lại set lên năm 2018, bị lỗi mở hoạt động, set tiếp lên 2019 -> lên duoc 149 và đang viết thêm ...
    Trong setting ngoài 2 file PlayerLevel.tab và PlayerLevelAddExpP.tab còn sửa chỗ nào không bạn ???
    Khách viếng thăm hãy cùng nobitajx2 xây dựng diễn đàn CLBGAMESVN vững mạnh nhé!

 

 
Trang 9 của 48 Đầu tiênĐầu tiên ... 7 8 9 10 11 19 ... CuốiCuối

Các Chủ đề tương tự

  1. [Share] File việt hóa Server VLTKM (2 file idx+dat)
    Bởi bddl30589 trong diễn đàn Các Server Không Nằm Trong Box
    Trả lời: 66
    Bài viết cuối: 15-03-19, 10:15 AM
  2. VLTKM hướng dẫn chạy sever và vào game cho newbie
    Bởi cwalker trong diễn đàn Các Server Không Nằm Trong Box
    Trả lời: 90
    Bài viết cuối: 30-01-19, 12:35 AM
  3. [Xin Giúp Đỡ] Lữa trại khị đánh quái không lên EXP của VLTKM
    Bởi ndduonghtvn trong diễn đàn Yêu Cầu - Hỏi Đáp
    Trả lời: 12
    Bài viết cuối: 03-09-18, 09:41 AM

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à 09:13 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ệ.