From 88f8c49ffe58953eac0922fb6abbb25476ddc643 Mon Sep 17 00:00:00 2001 From: admin Date: Wed, 24 Jun 2026 02:59:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BB=9D=E5=AD=A6=E7=BB=91?= =?UTF-8?q?=E5=AE=9A=E6=AD=A6=E6=9E=97=E7=A7=98=E7=B1=8D=E8=A3=85=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Mir200/Envir/QuestDiary/config/VarCfg.lua | 5 +- .../游戏功能/A1_一大陆/绝学修炼.lua | 167 ++++++++++++------ .../游戏功能/A1_一大陆/装备炼化.lua | 4 +- .../Envir/QuestDiary/系统类/技能触发.lua | 17 +- .../dev/GUILayout/game/A/JueXueXiuLianOBJ.lua | 79 +++++++-- client/dev/GUILayout/item/ItemTips.lua | 43 ++++- client/env.json | 2 +- 7 files changed, 232 insertions(+), 85 deletions(-) diff --git a/Mirserver/Mir200/Envir/QuestDiary/config/VarCfg.lua b/Mirserver/Mir200/Envir/QuestDiary/config/VarCfg.lua index 35f1b713..d33c0066 100644 --- a/Mirserver/Mir200/Envir/QuestDiary/config/VarCfg.lua +++ b/Mirserver/Mir200/Envir/QuestDiary/config/VarCfg.lua @@ -63,7 +63,6 @@ VarCfg.Player.int.cd[" VarCfg.Player.str = {} ---* str VarCfg.Player.str["޴"] = "STR_޴" VarCfg.Player.str[""] = "STR_" -VarCfg.Player.str["ѧ"] = "STR_ѧ" VarCfg.Player.str["ɳ"] = "STR_ɳ" VarCfg.Player.str["۳佱"] = "STR_۳佱" VarCfg.Player.str[""] = "STR_" ---* λý¼ @@ -116,6 +115,10 @@ VarCfg.item.int = {} ---* VarCfg.item.int["ʰȡ"] = "INT_ʰȡ" VarCfg.item.int[""] = "INT_" VarCfg.item.int["ױʶ"] = "INT_ױʶ" +VarCfg.item.int["ѧ_1"] = "INT_ѧ_1" +VarCfg.item.int["ѧ_2"] = "INT_ѧ_2" +VarCfg.item.int["ѧ_3"] = "INT_ѧ_3" +VarCfg.item.int["ѧ_4"] = "INT_ѧ_4" ---* « VarCfg.item.int["«_"] = "INT_«꿪" diff --git a/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A1_一大陆/绝学修炼.lua b/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A1_一大陆/绝学修炼.lua index b01d9db1..bbb9b56c 100644 --- a/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A1_一大陆/绝学修炼.lua +++ b/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A1_一大陆/绝学修炼.lua @@ -32,10 +32,17 @@ end JueXueXiuLianOBJ.qz = JueXueXiuLianOBJ_for() ---* ͬ --- Player.sycCfg[JueXueXiuLianOBJ._name] = JueXueXiuLianOBJ.cfg +Player.sycCfg[JueXueXiuLianOBJ._name] = JueXueXiuLianOBJ.cfg -JueXueXiuLianOBJ.CaChe = {} +JueXueXiuLianOBJ.bookPos = 9 +JueXueXiuLianOBJ.bookName = "ؼ" +JueXueXiuLianOBJ.bookVarKeys = { + VarCfg.item.int["ѧ_1"], + VarCfg.item.int["ѧ_2"], + VarCfg.item.int["ѧ_3"], + VarCfg.item.int["ѧ_4"], +} function JueXueXiuLianOBJ:up(actor, p1, p2, p3, data) @@ -43,13 +50,21 @@ function JueXueXiuLianOBJ:up(actor, p1, p2, p3, data) return end - local id = data[1].id - if not data or not id then + if not data or not data[1] then + return + end + local id = data[1].id + if not id then return end - local open = Player.getkeycount(actor, VarCfg.Player.str["ѧ"], id) or nil - if not open then + local bookItem = self:getBookItem(actor) + if not bookItem then + return + end + local open = self:getBookJueXue(bookItem, id) + + if open <= 0 then Func.sendmsg9(actor, "λδûн!") return end @@ -58,7 +73,7 @@ function JueXueXiuLianOBJ:up(actor, p1, p2, p3, data) setflagstatus(actor, VarCfg.Falg_fangshua, 1) local xilian_id = self:xilian(actor, id) - local _oldid = Player.getkeycount(actor, VarCfg.Player.str["ѧ"], id) + local _oldid = self:getBookJueXue(bookItem, id) if self.cfg.juexue[_oldid] and self.cfg.juexue[_oldid].buff then if hasbuff(actor, self.cfg.juexue[_oldid].buff) then delbuff(actor, self.cfg.juexue[_oldid].buff) @@ -66,7 +81,7 @@ function JueXueXiuLianOBJ:up(actor, p1, p2, p3, data) end - Player.setkeycount(actor, VarCfg.Player.str["ѧ"], id, xilian_id) + self:setBookJueXue(actor, bookItem, id, xilian_id) if self.cfg.juexue[xilian_id].buff then if not hasbuff(actor, self.cfg.juexue[xilian_id].buff) then @@ -74,9 +89,6 @@ function JueXueXiuLianOBJ:up(actor, p1, p2, p3, data) end end Func.sendmsg9(actor, string.format("[ѧ]:#70|ϲϴɹ,:#255|%s#215|!", self.cfg.juexue[xilian_id].name)) - - ---* ˢ» - self:get_CaChe(actor) end end @@ -85,14 +97,21 @@ function JueXueXiuLianOBJ:jiesuo(actor, p1, p2, p3, data) return end + if not data or not data[1] then + return + end local id = data[1].id - if not data or not id then + if not id then return end - local open = Player.getkeycount(actor, VarCfg.Player.str["ѧ"], id) or nil + local bookItem = self:getBookItem(actor) + if not bookItem then + return + end + local open = self:getBookJueXue(bookItem, id) - if open then + if open > 0 then Func.sendmsg9(actor, "Ѿ˸þѧλ!") return end @@ -107,15 +126,12 @@ function JueXueXiuLianOBJ:jiesuo(actor, p1, p2, p3, data) setflagstatus(actor, VarCfg.Falg_fangshua, 1) local xilian_id = self:xilian(actor, id) - Player.setkeycount(actor, VarCfg.Player.str["ѧ"], id, xilian_id) + self:setBookJueXue(actor, bookItem, id, xilian_id) if self.cfg.juexue[xilian_id].buff then if not hasbuff(actor, self.cfg.juexue[xilian_id].buff) then addbuff(actor, self.cfg.juexue[xilian_id].buff) end end - - ---* ˢ» - self:get_CaChe(actor) end end @@ -146,41 +162,83 @@ function JueXueXiuLianOBJ:xilian(actor, id) return tonumber(result1) end +function JueXueXiuLianOBJ:getBookItem(actor, tips) + local bookItem = GetItemByPos(actor, self.bookPos) + if not bookItem or bookItem == "0" then + if tips ~= false then + Func.sendmsg9(actor, "ؼ!") + end + return nil + end + + local itemName = getiteminfo(actor, bookItem, ConstCfg.iteminfo.name) + if itemName ~= self.bookName then + if tips ~= false then + Func.sendmsg9(actor, "ؼ!") + end + return nil + end + return bookItem +end + +function JueXueXiuLianOBJ:getBookJueXue(bookItem, id) + local key = self.bookVarKeys[id] + if not key then + return 0 + end + return Item.getint(bookItem, key) or 0 +end + +function JueXueXiuLianOBJ:getBookJueXueTbl(actor) + local bookItem = self:getBookItem(actor, false) + local tbl = {} + if not bookItem then + return tbl + end + + for i, key in ipairs(self.bookVarKeys or {}) do + tbl[i] = Item.getint(bookItem, key) or 0 + end + return tbl +end + +function JueXueXiuLianOBJ:setBookJueXue(actor, bookItem, id, juexueId) + local key = self.bookVarKeys[id] + if not key then + return + end + Item.setint(actor, bookItem, key, juexueId or 0) +end + function JueXueXiuLianOBJ:get_juexue(actor, id) if not id then return end - local juexueCfg = Player.getkeytbl(actor, VarCfg.Player.str["ѧ"]) or {} + local juexueCfg = self:getBookJueXueTbl(actor) local tbl = {} for i, v in pairs(juexueCfg or {}) do - if id and id ~= i then + if id ~= i and v > 0 and self.cfg.juexue[v] then tbl[self.cfg.juexue[v].calss] = true end end return tbl end -function JueXueXiuLianOBJ:get_CaChe(actor) - local juexueCfg = Player.getkeytbl(actor, VarCfg.Player.str["ѧ"]) or {} - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - self.CaChe[self_id] = {} - - for i, v in pairs(juexueCfg or {}) do - self.CaChe[self_id][v] = true +function JueXueXiuLianOBJ:hasJueXue(actor, juexueId) + if not juexueId then + return false end + + local juexueCfg = self:getBookJueXueTbl(actor) + for i, v in pairs(juexueCfg or {}) do + if v == juexueId then + return true + end + end + return false end -GameEvent.add(EventCfg.onLoginEnd, function(actor) - JueXueXiuLianOBJ:get_CaChe(actor) -end, JueXueXiuLianOBJ) - -GameEvent.add(EventCfg.onqfloadend, function(actor) - JueXueXiuLianOBJ:get_CaChe(actor) -end, JueXueXiuLianOBJ) - - - JueXueXiuLianOBJ.AttackdamageCfg = { --* ˺5% @@ -345,10 +403,9 @@ JueXueXiuLianOBJ.onAttackPlayCfg = { --------------* עṥ¼ ---* ǰ ˶Թ local function _onAttackdamage(actor, target, hitter, magicId, damage, model, Info) - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - for i, v in pairs(JueXueXiuLianOBJ.CaChe[self_id]) do - if JueXueXiuLianOBJ.AttackdamageCfg[i] then - local func = JueXueXiuLianOBJ.AttackdamageCfg[i] + for i, v in pairs(JueXueXiuLianOBJ:getBookJueXueTbl(actor)) do + if v > 0 and JueXueXiuLianOBJ.AttackdamageCfg[v] then + local func = JueXueXiuLianOBJ.AttackdamageCfg[v] func(actor, target, hitter, magicId, damage, model, Info) end end @@ -357,10 +414,9 @@ GameEvent.add(EventCfg.onAttackdamage, _onAttackdamage, JueXueXiuLianOBJ) ---* ǰ local function _onAttackHumandamage(actor, target, hitter, magicId, damage, model, Info) - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - for i, v in pairs(JueXueXiuLianOBJ.CaChe[self_id]) do - if JueXueXiuLianOBJ.AttackHumandamageCfg[i] then - local func = JueXueXiuLianOBJ.AttackHumandamageCfg[i] + for i, v in pairs(JueXueXiuLianOBJ:getBookJueXueTbl(actor)) do + if v > 0 and JueXueXiuLianOBJ.AttackHumandamageCfg[v] then + local func = JueXueXiuLianOBJ.AttackHumandamageCfg[v] func(actor, target, hitter, magicId, damage, model, Info) end end @@ -370,10 +426,9 @@ GameEvent.add(EventCfg.onAttackHumandamage, _onAttackHumandamage, JueXueXiuLianO ---* 󴥷 ˶Թ local function _onAttack(actor, target, hitter, magicId, Info) - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - for i, v in pairs(JueXueXiuLianOBJ.CaChe[self_id]) do - if JueXueXiuLianOBJ.onAttackCfg[i] then - local func = JueXueXiuLianOBJ.onAttackCfg[i] + for i, v in pairs(JueXueXiuLianOBJ:getBookJueXueTbl(actor)) do + if v > 0 and JueXueXiuLianOBJ.onAttackCfg[v] then + local func = JueXueXiuLianOBJ.onAttackCfg[v] func(actor, target, hitter, magicId, Info) end end @@ -382,10 +437,9 @@ GameEvent.add(EventCfg.onAttack, _onAttack, JueXueXiuLianOBJ) ---* 󴥷 Թ local function _onAttackMon(actor, target, hitter, magicId, Info) - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - for i, v in pairs(JueXueXiuLianOBJ.CaChe[self_id]) do - if JueXueXiuLianOBJ.onAttackMonCfg[i] then - local func = JueXueXiuLianOBJ.onAttackMonCfg[i] + for i, v in pairs(JueXueXiuLianOBJ:getBookJueXueTbl(actor)) do + if v > 0 and JueXueXiuLianOBJ.onAttackMonCfg[v] then + local func = JueXueXiuLianOBJ.onAttackMonCfg[v] func(actor, target, hitter, magicId, Info) end end @@ -395,10 +449,9 @@ GameEvent.add(EventCfg.onAttackMon, _onAttackMon, JueXueXiuLianOBJ) ---* 󴥷 local function _onAttackPlay(actor, target, hitter, magicId, Info) - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - for i, v in pairs(JueXueXiuLianOBJ.CaChe[self_id]) do - if JueXueXiuLianOBJ.onAttackPlayCfg[i] then - local func = JueXueXiuLianOBJ.onAttackPlayCfg[i] + for i, v in pairs(JueXueXiuLianOBJ:getBookJueXueTbl(actor)) do + if v > 0 and JueXueXiuLianOBJ.onAttackPlayCfg[v] then + local func = JueXueXiuLianOBJ.onAttackPlayCfg[v] func(actor, target, hitter, magicId, Info) end end diff --git a/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A1_一大陆/装备炼化.lua b/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A1_一大陆/装备炼化.lua index a0eac2c8..2ac87f36 100644 --- a/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A1_一大陆/装备炼化.lua +++ b/Mirserver/Mir200/Envir/QuestDiary/游戏功能/A1_一大陆/装备炼化.lua @@ -59,8 +59,8 @@ ZhuangBeiLianHuaOBJ.onwhere = { -- _ function ZhuangBeiLianHuaOBJ:main(actor, ...) - if getbaseinfo(actor, ConstCfg.gbase.renew_level) < 4 then - Func.sendmsg9(actor, "[װ]:#70|4ת󿪷!") + if getbaseinfo(actor, ConstCfg.gbase.renew_level) < 6 then + Func.sendmsg9(actor, "[װ]:#70|6ת󿪷!") return end diff --git a/Mirserver/Mir200/Envir/QuestDiary/系统类/技能触发.lua b/Mirserver/Mir200/Envir/QuestDiary/系统类/技能触发.lua index b3857f46..f2c76dbe 100644 --- a/Mirserver/Mir200/Envir/QuestDiary/系统类/技能触发.lua +++ b/Mirserver/Mir200/Envir/QuestDiary/系统类/技能触发.lua @@ -2,8 +2,7 @@ MagicOBJ = {} function beginmagic(actor, magicId, magicName, target, x, y) if magicId == 25 and isplayer(actor) then - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - if JueXueXiuLianOBJ.CaChe[self_id][7] then + if JueXueXiuLianOBJ:hasJueXue(actor, 7) then ---* Բµ releasemagic(actor, 2012, 1, 3, target, 1) return false @@ -11,8 +10,7 @@ function beginmagic(actor, magicId, magicName, target, x, y) end if magicId == 56 and isplayer(actor) then - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - if JueXueXiuLianOBJ.CaChe[self_id][20] then + if JueXueXiuLianOBJ:hasJueXue(actor, 20) then if Func.random(20) then makeposion(target, 12, 2, 1) Func.sendmsg(actor, string.format("[ܾѧ]:#70|%s#215|,Ŀ2s.#7", "׷")) @@ -47,8 +45,7 @@ end -- ĿʹҰײʱ function magtagfunc27(actor, roleObject) if isplayer(actor) then - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - if JueXueXiuLianOBJ.CaChe[self_id][10] then + if JueXueXiuLianOBJ:hasJueXue(actor, 10) then if not hasbuff(roleObject, 10002) then addbuff(roleObject, 10002, 1) playeffect(roleObject, 33, 0, 0, 1, 0, 0) @@ -56,7 +53,7 @@ function magtagfunc27(actor, roleObject) end end - if JueXueXiuLianOBJ.CaChe[self_id][11] then + if JueXueXiuLianOBJ:hasJueXue(actor, 11) then if not hasbuff(roleObject, 10003) then addbuff(roleObject, 10003, 3) Func.sendmsg(actor, string.format("[ܾѧ]:#70|%s#215|,ʹĿֹʹûسǡ.#7", "ħ")) @@ -67,8 +64,7 @@ end function magselffunc27(actor) if isplayer(actor) then - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - if JueXueXiuLianOBJ.CaChe[self_id][12] then + if JueXueXiuLianOBJ:hasJueXue(actor, 12) then if Player.gettempint(actor, VarCfg.Player.temp.int["Ѹ"]) == 0 then if Func.random(20) then SetSkillCD(actor, 27, 0) @@ -86,8 +82,7 @@ end function magselffunc26(actor) if isplayer(actor) then - local self_id = getbaseinfo(actor, ConstCfg.gbase.id) - if JueXueXiuLianOBJ.CaChe[self_id][15] then + if JueXueXiuLianOBJ:hasJueXue(actor, 15) then if Player.gettempint(actor, VarCfg.Player.temp.int[""]) == 0 then if Func.random(30) then releasemagic(actor, 26, 1, 3, 1, 1) diff --git a/client/dev/GUILayout/game/A/JueXueXiuLianOBJ.lua b/client/dev/GUILayout/game/A/JueXueXiuLianOBJ.lua index 84c6f992..cb57b6e9 100644 --- a/client/dev/GUILayout/game/A/JueXueXiuLianOBJ.lua +++ b/client/dev/GUILayout/game/A/JueXueXiuLianOBJ.lua @@ -10,6 +10,14 @@ JueXueXiuLianOBJ.UIfile = "game/A/JueXueXiuLianUI" -- 配置文件 JueXueXiuLianOBJ.cfg = {} +JueXueXiuLianOBJ.bookPos = 9 +JueXueXiuLianOBJ.bookName = "武林秘籍" +JueXueXiuLianOBJ.bookVarKeys = { + "INT_绝学修炼_1", + "INT_绝学修炼_2", + "INT_绝学修炼_3", + "INT_绝学修炼_4", +} --* 初始化绝学界面 @@ -66,7 +74,7 @@ end function JueXueXiuLianOBJ:get(id) - local jiesuoCfg = hk.getkeytbl("HUMAN(STR_绝学修炼)") + local jiesuoCfg = self:getBookJueXueTbl() for i, v in pairs(jiesuoCfg or {}) do if v == id then return false @@ -78,16 +86,18 @@ end ----* 人物解锁格子初始化 function JueXueXiuLianOBJ:jiesuo() self.id = self.id or 1 - local jiesuoCfg = hk.getkeytbl("HUMAN(STR_绝学修炼)") + GUI:setVisible(self.ui.up_btn, false) + local hasBook = self:getBookItem() and true or false + local jiesuoCfg = self:getBookJueXueTbl() GUI:ListView_removeAllItems(self.ui.xl_ListView) for i = 1, 4, 1 do - local open = jiesuoCfg[i] and true or false + local open = jiesuoCfg[i] and jiesuoCfg[i] > 0 local jiesuolist = string.format("jiesuolist_%d", i) self.ui[jiesuolist] = GUI:Image_Create(self.ui.xl_ListView, jiesuolist, 0, 0, string.format("res/custom/11/box/%d.png", not open and i or 6)) GUI:setTouchEnabled(self.ui[jiesuolist], true) - if open and jiesuoCfg[i] > 0 then + if open then local jiesuo_icon = string.format("jiesuo_icon_%d", i) self.ui[jiesuo_icon] = GUI:Image_Create(self.ui[jiesuolist], jiesuo_icon, 34, 54, string.format("res/custom/11/magicIcon/%d.png", self.cfg.juexue[jiesuoCfg[i]].icon)) GUI:setContentSize(self.ui[jiesuo_icon], 60, 60) @@ -97,7 +107,7 @@ function JueXueXiuLianOBJ:jiesuo() self.ui[juexue_name] = GUI:Text_Create(self.ui[jiesuolist], juexue_name, 34, 12, 13, "#ffffff", self.cfg.juexue[jiesuoCfg[i]].name) - if self.id == i then + if hasBook and self.id == i then if GUI:Win_IsNotNull(self.ui.select_bg) then GUI:removeFromParent(self.ui.select_bg) end @@ -130,11 +140,24 @@ function JueXueXiuLianOBJ:jiesuo() end) end) else - GUI:addOnClickEvent(self.ui[jiesuolist], function() + if hasBook and self.id == i then GUI:Button_loadTextureNormal(self.ui.up_btn, "res/custom/11/10.png") GUI:Button_loadTexturePressed(self.ui.up_btn, "res/custom/11/11.png") self.xh = self.cfg.jiesuo[i].xh self:setxh() + GUI:setVisible(self.ui.up_btn, true) + GUI:addOnClickEvent(self.ui.up_btn, function() + ssrMessage:SubLink(self.__cname .. "_jiesuo", { id = i }) + end) + end + + GUI:addOnClickEvent(self.ui[jiesuolist], function() + self.id = i + GUI:Button_loadTextureNormal(self.ui.up_btn, "res/custom/11/10.png") + GUI:Button_loadTexturePressed(self.ui.up_btn, "res/custom/11/11.png") + self.xh = self.cfg.jiesuo[i].xh + self:setxh() + GUI:setVisible(self.ui.up_btn, hasBook) GUI:addOnClickEvent(self.ui.up_btn, function() ssrMessage:SubLink(self.__cname .. "_jiesuo", { id = i }) @@ -144,6 +167,25 @@ function JueXueXiuLianOBJ:jiesuo() end end +function JueXueXiuLianOBJ:getBookItem() + local equipData = GUIFunction:GetEquipDataByPos(self.bookPos) + if equipData and equipData.Name == self.bookName and equipData.MakeIndex then + return equipData + end +end + +function JueXueXiuLianOBJ:getBookJueXueTbl() + local equipData = self:getBookItem() + local tbl = {} + if not equipData then + return tbl + end + + for i, key in ipairs(self.bookVarKeys or {}) do + tbl[i] = tonumber(SL:GetValue("ITEM_CUSTOM_VAR_BY_VNAME", equipData.MakeIndex, key)) or 0 + end + return tbl +end function JueXueXiuLianOBJ:setxh() GUI:removeAllChildren(self.ui.xh_Layout) local index = 1 @@ -170,14 +212,25 @@ end ---* 注册事件 function JueXueXiuLianOBJ:EventBind() - local function JueXueXiuLianOBJ_Var_Change(data) + local function reloadBook() if GUI:Win_IsNotNull(self._parent) then - if data.key == "HUMAN(STR_绝学修炼)" then - self:updata() - end + self:updata() end end - SL:RegisterLUAEvent(LUA_EVENT_SERVER_VALUE_CHANGE, self.__cname, JueXueXiuLianOBJ_Var_Change, self._parent) + + local function JueXueXiuLianOBJ_Item_Var_Change(data) + if not GUI:Win_IsNotNull(self._parent) then + return + end + + local equipData = self:getBookItem() + if equipData and data and tostring(data.MakeIndex) == tostring(equipData.MakeIndex) then + self:updata() + end + end + SL:RegisterLUAEvent(LUA_EVENT_ITEM_CUSTOM_ATTR, self.__cname, JueXueXiuLianOBJ_Item_Var_Change, self._parent) + SL:RegisterLUAEvent(LUA_EVENT_TAKE_ON_EQUIP, self.__cname, reloadBook, self._parent) + SL:RegisterLUAEvent(LUA_EVENT_TAKE_OFF_EQUIP, self.__cname, reloadBook, self._parent) --关闭窗口 SL:RegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname, function(widgetName) @@ -193,7 +246,9 @@ function JueXueXiuLianOBJ:OnClose(widgetName) end function JueXueXiuLianOBJ:UnRegisterEvent() - SL:UnRegisterLUAEvent(LUA_EVENT_SERVER_VALUE_CHANGE, self.__cname) + SL:UnRegisterLUAEvent(LUA_EVENT_ITEM_CUSTOM_ATTR, self.__cname) + SL:UnRegisterLUAEvent(LUA_EVENT_TAKE_ON_EQUIP, self.__cname) + SL:UnRegisterLUAEvent(LUA_EVENT_TAKE_OFF_EQUIP, self.__cname) SL:UnRegisterLUAEvent(LUA_EVENT_CLOSEWIN, self.__cname) end diff --git a/client/dev/GUILayout/item/ItemTips.lua b/client/dev/GUILayout/item/ItemTips.lua index f02c1894..f703fd7d 100644 --- a/client/dev/GUILayout/item/ItemTips.lua +++ b/client/dev/GUILayout/item/ItemTips.lua @@ -2463,6 +2463,42 @@ function ItemTips.PushItemList(cellView, widgetList) end end +function ItemTips.GetJueXueBookStr(itemData) + if not itemData or itemData.Name ~= "武林秘籍" or not itemData.MakeIndex then + return nil + end + + local keys = { + "INT_绝学修炼_1", + "INT_绝学修炼_2", + "INT_绝学修炼_3", + "INT_绝学修炼_4", + } + local lines = {"<[武林绝学]/FCOLOR=70>"} + for i, key in ipairs(keys) do + local juexueId = tonumber(SL:GetValue("ITEM_CUSTOM_VAR_BY_VNAME", itemData.MakeIndex, key)) or 0 + local line = string.format("%d.未解锁", i) + local color = 249 + if juexueId > 0 then + color = 250 + local cfg = JueXueXiuLianOBJ and JueXueXiuLianOBJ.cfg and JueXueXiuLianOBJ.cfg.juexue and JueXueXiuLianOBJ.cfg.juexue[juexueId] + if cfg then + line = string.format("%d.%s:%s", i, cfg.name or ("绝学ID:" .. juexueId), cfg.effec or "") + else + line = string.format("%d.绝学ID:%d", i, juexueId) + end + end + table.insert(lines, string.format("<%s/FCOLOR=%s>", line, color)) + end + return table.concat(lines, "\\") +end +function ItemTips.CreateJueXueBookWidget(param) + local itemData = param and param.tip_itemData + local richStr = ItemTips.GetJueXueBookStr(itemData) + if richStr and string.len(richStr) > 0 then + return GUI:RichTextFCOLOR_Create(-1, "rich_juexue_book", 0, 0, richStr, ItemTips._richWid, fontSize, "#FFFFFF", vspace, nil, fontPath) + end +end function ItemTips.FillTipsContent(tipsLayout, cellView, tipsParam) local groupList = ItemTips._config.group local maxWidth = ItemTips._maxWidth @@ -2588,7 +2624,12 @@ function ItemTips.FillTipsContent(tipsLayout, cellView, tipsParam) -- else end - + -- 武林秘籍绝学 + local juexueBookWidget = ItemTips.CreateJueXueBookWidget(tipsParam) + ItemTips.PushItem(cellView, juexueBookWidget) + if juexueBookWidget then + ItemTips.PushItem(cellView, ItemTips.CreateSplitLine()) + end -- 自定义属性 local diyAttWidget = ItemTips.CreateDiyAttrWidget(tipsParam) ItemTips.PushItem(cellView, diyAttWidget) diff --git a/client/env.json b/client/env.json index fed46f6b..5b4e125f 100644 --- a/client/env.json +++ b/client/env.json @@ -1 +1 @@ -{"gm":0,"signkey":"634eff98723b31da43ed35f0dd4edf36","oper_mode":1,"modlist":"http://list.dhsf.xqhuyu.com/testmodlist/modlist_tool_11557.txt","resolution":"1024x768","channel":1} +{"oper_mode":2,"modlist":"http:\/\/list.dhsf.xqhuyu.com\/testmodlist\/modlist_tool_11557.txt","channel":1,"gm":0,"signkey":"634eff98723b31da43ed35f0dd4edf36","resolution":"1136x640"} \ No newline at end of file