| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169 |
- local utils = {}
- local ProxyTable = global.ProxyTable
- local Facade = global.Facade
- local MMO = global.MMO
- -- GAME_DATA
- local MonsterPaperback = global.ConstantConfig.MonsterPaperback
- -- 称号
- local hudTitleSpriteID = {
- [0] = MMO.HUD_SPRITE_TITLE_1,
- [1] = MMO.HUD_SPRITE_TITLE_2,
- [2] = MMO.HUD_SPRITE_TITLE_3
- }
- local hudTitleLableID = {
- [0] = MMO.HUD_LABEL_TITLE_1,
- [1] = MMO.HUD_LABEL_TITLE_2,
- [2] = MMO.HUD_LABEL_TITLE_3
- }
- -- 顶戴
- local hudTipsID = {
- [0] = MMO.HUD_SPRITE_ICON_1,
- [1] = MMO.HUD_SPRITE_ICON_2,
- [2] = MMO.HUD_SPRITE_ICON_3,
- [3] = MMO.HUD_SPRITE_ICON_4,
- [4] = MMO.HUD_SPRITE_ICON_5,
- [5] = MMO.HUD_SPRITE_ICON_6,
- [6] = MMO.HUD_SPRITE_ICON_7,
- [7] = MMO.HUD_SPRITE_ICON_8,
- [8] = MMO.HUD_SPRITE_ICON_9,
- [9] = MMO.HUD_SPRITE_ICON_10,
- [10] = MMO.HUD_SPRITE_ICON_11
- }
- local animHudID = {
- [0] = MMO.HUD_NODE_TITLE_1,
- [1] = MMO.HUD_NODE_TITLE_2,
- [2] = MMO.HUD_NODE_TITLE_3,
- [3] = MMO.HUD_NODE_TITLE_4,
- [4] = MMO.HUD_NODE_TITLE_5,
- [5] = MMO.HUD_NODE_TITLE_6,
- [6] = MMO.HUD_NODE_TITLE_7,
- [7] = MMO.HUD_NODE_TITLE_8,
- [8] = MMO.HUD_NODE_TITLE_9,
- [9] = MMO.HUD_NODE_TITLE_10,
- [10] = MMO.HUD_NODE_TITLE_11
- }
- -- 不显示的类型
- local NoShowHpType = {
- [MMO.ACTOR_NPC] = 1,
- [MMO.ACTOR_SEFFECT] = 1,
- [MMO.ACTOR_DROPITEM] = 1,
- [MMO.ACTOR_COLLECTION] = 1
- }
- ------------------------------------------------------------------------------------------
- function utils:CheckSet_Npc_name()
- return CHECK_SERVER_OPTION(MMO.SERVER_OPTION_NPC_NAME) ~= 1
- end
- -- 人名显示
- function utils:CheckSet_Show_name()
- return CHECK_SETTING(MMO.SETTING_IDX_PLAYER_NAME) == 1
- end
- -- 只显人名
- function utils:CheckSet_OnlyShow_name()
- return CHECK_SETTING(MMO.SETTING_IDX_ONLY_NAME) == 1
- end
- ------------------------------------------------------------------------------------------
- -- 是否副驾
- function utils:IsHoreseCopilot(actor)
- return actor:IsPlayer() and actor:IsHoreseCopilot()
- end
- -- 屏蔽小怪
- function utils:IsHideMonster(actor)
- return actor:GetValueByKey(MMO.MONSTER_NORMAL) and CHECK_SETTING(MMO.SETTING_IDX_MONSTER_VISIBLE) == 1
- end
- -- 正常怪
- function utils:IsNormalMonster(actor)
- -- 检测是否普通怪 控制普通怪的怪物显名/屏蔽小怪判断
- if GUIFunction.CheckIsNormalMonster then
- local value = GUIFunction:CheckIsNormalMonster(actor:GetID())
- if type(value) == "boolean" then
- return value
- end
- end
- if actor:IsHaveMaster() then
- return true
- end
- if actor:IsDefender() then
- return false
- end
- if actor:IsEscort() then
- return false
- end
- if actor:IsCollection() then
- return false
- end
- return true
- end
- -- 只清理怪物和人形怪
- function utils:IsClearMonster(actor)
- if actor:IsMonster() or (actor:IsPlayer() and actor:IsHumanoid()) then
- return true
- end
- return false
- end
- -- 可清理
- function utils:IsCanClearMonster(actor)
- local IsCan = self:IsClearMonster(actor) and CHECK_SETTING(MMO.SETTING_IDX_HIDE_MONSTER_BODY) == 1 and self:ActorIsDie(actor)
- return IsCan
- end
- -- 是否视野内
- function utils:ActorInView(actor)
- return actor:GetValueByKey("InView")
- end
- -- 是否死亡
- function utils:ActorIsDie(actor)
- return actor:IsDie() or actor:IsDeath()
- end
- -- 是否是自己的英雄
- function utils:IsMyHero(actor)
- local HeroPropertyProxy = Facade:retrieveProxy(ProxyTable.HeroPropertyProxy)
- return actor:GetID() == HeroPropertyProxy:GetRoleUID()
- end
- -- 是否是城门怪
- function utils:IsGate(actor)
- return actor:GetValueByKey(MMO.Is_Gate)
- end
- -- 是否是城墙怪
- function utils:IsWall(actor)
- return actor:GetValueByKey(MMO.Is_Wall)
- end
- -- 是否钻地怪状态
- function utils:IsSleepInCave(actor)
- return actor:GetValueByKey(MMO.Is_Cave)
- end
- -- 拾取小精灵隐藏显血
- function utils:IsHideHpSprite(actor)
- if actor:IsPickUpSprite() and global.ConstantConfig.hideSpriteHp == 1 then
- return true
- end
- return false
- end
- ------------------------------------------------------------------------------------------
- -- 获得怪物简装形象
- function utils:get_MonsterSimpleDress(monster)
- if not self:checkMonsterFeatureEnable(monster:GetAnimationID(), monster) then
- return MonsterPaperback
- end
- -- Boss 不简装
- if monster:IsBoss() and CHECK_SETTING(MMO.SETTING_IDX_BOSS_NO_SIMPLE_DRESS) == 1 then
- return false
- end
- if CHECK_SETTING(MMO.SETTING_IDX_MONSTER_SIMPLE_DRESS) == 1 and (not monster:IsHaveMaster()) and monster:GetValueByKey(MMO.MONSTER_NORMAL) then
- return MonsterPaperback
- end
- return false
- end
- -- 判断玩家简装形象
- function utils:check_PlayerSimpleDress()
- if CHECK_SETTING(MMO.SETTING_IDX_PLAYER_SIMPLE_DRESS) == 1 then
- return true
- end
- return false
- end
- function utils:checkFeatureEnable(SFANIM_TYPE, ID, sex, actor)
- -- no thing
- if 0 == ID then
- return true
- end
- if 9999 == ID then
- return true
- end
- -- check param
- if not SFANIM_TYPE or not ID or not sex or SFANIM_TYPE < MMO.SFANIM_TYPE_PLAYER or SFANIM_TYPE > MMO.SFANIM_TYPE_NUM then
- return false
- end
- local mainPlayer = global.gamePlayerController:GetMainPlayer()
- if not mainPlayer then
- return true
- end
- if actor:IsMainPlayer() then
- return true
- end
- -- 屏蔽所有玩家
- if CHECK_SETTING(MMO.SETTING_IDX_PLAYER_SHOW) == 1 and self:CheckPlayer(actor) then
- return false
- end
-
- -- 屏蔽己方玩家
- if CHECK_SETTING(MMO.SETTING_IDX_PLAYER_SHOW_FRIEND) == 1 and self:CheckPlayerB(actor) then
- return false
- end
- return true
- end
- function utils:checkMonsterFeatureEnable(ID, actor)
- -- no thing
- if 0 == ID then
- return true
- end
- if 9999 == ID then
- return true
- end
- local mainPlayerID = global.gamePlayerController:GetMainPlayerID()
- if not mainPlayerID then
- return true
- end
- -- ignore main player pet
- if actor:GetMasterID() == mainPlayerID then
- return true
- end
- return true
- end
- ------------------------------------------------------------------------------------------
- -- 骑马状态的labelName更新
- function utils:refreshLabelName(actor)
- if not actor then
- return false
- end
- if not actor:IsPlayer() then
- return false
- end
- local nameHUD = global.HUDManager:GetHUD(actor:GetID(), MMO.HUD_TYPE_BATCH_LABEL, MMO.HUD_LABEL_NAME)
- if not nameHUD then
- return false
- end
-
- -- 有副驾
- local copilotid = actor:GetHorseCopilotID()
- local masterid = actor:GetHorseMasterID()
- if copilotid and masterid then
- local playerManager = global.playerManager
- local masterActor = playerManager:FindOnePlayerInCurrViewFieldById(masterid)
- local copilotActor = playerManager:FindOnePlayerInCurrViewFieldById(copilotid)
- if masterActor and copilotActor then
- local name = string.format("%s %s", masterActor:GetName(), copilotActor:GetName())
- if GUIFunction.OnRefreshActorHudName then
- name = GUIFunction:OnRefreshActorHudName(actor:GetID(), name)
- end
- nameHUD:setString(name)
- return false
- end
- end
- local name = actor:GetName()
- if GUIFunction.OnRefreshActorHudName then
- name = GUIFunction:OnRefreshActorHudName(actor:GetID(), name)
- end
- nameHUD:setString(name or "")
- end
- ------------------------------------------------------------------------------------------
- -- 检测血条
- function utils:CheckHUDHp(actor)
- if self:ActorIsDie(actor) then
- return false
- end
-
- -- 小精灵不显示血条
- if self:IsHideHpSprite(actor) then
- return false
- end
- if actor:IsMonster() and actor:IsNoShowHPBar() then
- return false
- end
- -- 空血不显示
- if actor:GetValueByKey(MMO.HUD_Hp_Null) then
- return false
- end
-
- if self:IsHoreseCopilot(actor) then
- return false
- end
- return true
- end
- -- 检测蓝条
- function utils:CheckHUDMp(actor)
- if self:ActorIsDie(actor) then
- return false
- end
- if actor:IsMonster() then
- return false
- end
- if actor:IsNPC() then
- return false
- end
- -- 服务器开关
- if CHECK_SERVER_OPTION(MMO.PLAYER_BLUE_BLOOD) ~= 0 then
- return false
- end
- -- 没有护身
- if actor.IsHuShen and not actor:IsHuShen() then
- return false
- end
- -- 没有受到伤害
- if actor.IsDamage and not actor:IsDamage() then
- return false
- end
- if actor:GetValueByKey(MMO.HUD_Hp_Null) then
- return false
- end
- -- 是否是副驾位
- if self:IsHoreseCopilot(actor) then
- return false
- end
- return true
- end
- -- 检测内功条
- function utils:CheckHUDNG(actor)
- if not actor then
- return false
- end
- if actor:IsMonster() then
- return false
- end
- if actor:IsNPC() then
- return false
- end
- -- 本地开关
- if tonumber(SL:GetMetaValue("GAME_DATA", "OpenNGUI")) ~= 1 then
- return false
- end
- -- 单控开关
- if tonumber(SL:GetMetaValue("GAME_DATA", "HideNGHUD")) == 1 then
- return false
- end
- -- 代码开关
- local MeridianProxy = global.Facade:retrieveProxy(global.ProxyTable.MeridianProxy)
- if not MeridianProxy:GetNGHudShow() then
- return false
- end
- -- 服务端开关
- local mainPlayerID = global.gamePlayerController:GetMainPlayerID()
- local HeroPropertyProxy = global.Facade:retrieveProxy( global.ProxyTable.HeroPropertyProxy )
- local HeroID = HeroPropertyProxy:GetRoleUID()
- if actor:IsHero() then
- if HeroID == actor:GetID() and not SL:GetMetaValue("H.IS_LEARNED_INTERNAL") then
- return false
- end
- elseif actor:IsPlayer() then
- if mainPlayerID == actor:GetID() and not SL:GetMetaValue("IS_LEARNED_INTERNAL") then
- return false
- end
- end
- if actor:GetMaxForce() == 0 then
- return false
- end
- return true
- end
- -- 检测血量文本
- function utils:CheckHUDHMPLabel(actor)
- if self:ActorIsDie(actor) then
- return false
- end
- if CHECK_SETTING(MMO.SETTING_IDX_HP_NUM) ~= 1 then
- return false
- end
-
- if actor:IsMonster() and actor:IsNoShowHPBar() then
- return false
- end
- -- 小精灵不显示血条
- if self:IsHideHpSprite(actor) then
- return false
- end
-
- if NoShowHpType[actor:GetType()] then
- return false
- end
- local actorID = actor:GetID()
- -- 自己的英雄空血 不显示 血量文本
- local HeroPropertyProxy = Facade:retrieveProxy(ProxyTable.HeroPropertyProxy)
- local isMyHero = HeroPropertyProxy:GetRoleUID() == actorID
- if isMyHero then
- if actor:GetValueByKey(MMO.HUD_Hp_Null) then
- return false
- end
- end
- -- 空血/满血 排除主玩家 和自己的英雄
- local mainPlayerID = global.gamePlayerController:GetMainPlayerID()
- if actorID ~= mainPlayerID and (not isMyHero) then
- if actor:GetValueByKey(MMO.HUD_Hp_Null) or actor:GetValueByKey(MMO.HUD_Hp_Full) then
- return false
- end
- if not actor:GetValueByKey(MMO.HUD_BAR_SHOW_FULL_HP) then
- return false
- end
- end
- if self:IsHoreseCopilot(actor) then
- return false
- end
- return true
- end
- function utils:checkPlayerName(actor)
- if not actor:IsPlayer() then
- return true
- end
- -- 活动统一名字
- local mapProxy = Facade:retrieveProxy(ProxyTable.Map)
- if mapProxy:IsUnitiveName() then
- return false
- end
- -- 神秘人
- if actor:IsShenMiRen() then
- return false
- end
- -- 人名显示
- if not self:CheckSet_Show_name() then
- return false
- end
- -- 只显人名
- if self:CheckSet_OnlyShow_name() then
- return false
- end
- if self:IsHoreseCopilot(actor) then
- return false
- end
- -- 潜行
- if actor:GetValueByKey(MMO.HUD_SNEAK) then
- return false
- end
-
- return true
- end
- -- 人名
- function utils:CheckHUDLabelName(actor)
- local funcName = {
- [MMO.ACTOR_PLAYER] = function (actor)
- if actor:IsHumanoid() then
- -- 死亡不显示
- if self:ActorIsDie(actor) then
- return false
- end
- -- 隐藏小怪
- if self:IsHideMonster(actor) then
- return false
- end
- -- 怪物显名
- if actor:GetValueByKey(MMO.MONSTER_NORMAL) and CHECK_SETTING(MMO.SETTING_IDX_MONSTER_NAME) ~= 1 then
- return false
- end
- return true
- end
- if CHECK_SETTING(MMO.SETTING_IDX_LEVEL_SHOW_NAME_HUD) == 1 then
- local mainPlayerID = global.gamePlayerController:GetMainPlayerID()
- local actorID = actor:GetID()
- local isMain = mainPlayerID and actorID == mainPlayerID
- local inputProxy = Facade:retrieveProxy(ProxyTable.PlayerInputProxy)
- if not isMain and inputProxy:GetTargetID() ~= actorID then
- local defaultValues = GET_SETTING(MMO.SETTING_IDX_LEVEL_SHOW_NAME_HUD,true)
- local needLevel = defaultValues and tonumber(defaultValues[2])
- local roleLevel = actor:GetLevel() or 0
- if needLevel and roleLevel < needLevel then
- return false
- end
- end
- end
- if self:IsHoreseCopilot(actor) then
- return false
- end
- -- 潜行
- if actor:GetValueByKey(MMO.HUD_SNEAK) then
- return false
- end
- return utils:CheckSet_Show_name()
- end,
- [MMO.ACTOR_MONSTER] = function (actor)
- if self:IsSleepInCave(actor) then
- return false
- end
-
- -- 死亡不显示
- if self:ActorIsDie(actor) then
- return false
- end
- if actor:IsNoShowName() then
- return false
- end
-
- -- 隐藏小怪
- if self:IsHideMonster(actor) and SL:GetMetaValue("GAME_DATA", "mon_hide_visible_name") ~= 1 then
- return false
- end
- -- 怪物显名
- if actor:GetValueByKey(MMO.MONSTER_NORMAL) and CHECK_SETTING(MMO.SETTING_IDX_MONSTER_NAME) ~= 1 then
- return false
- end
- return true
- end,
- [MMO.ACTOR_DROPITEM] = function (actor)
- local typeIndex = actor:GetTypeIndex()
- if typeIndex == 0 then
- typeIndex = 1
- end
- return CHECK_ITEM_DROP_SHOW(typeIndex)
- end,
- [MMO.ACTOR_NPC] = function ()
- return utils:CheckSet_Npc_name()
- end
- }
- if funcName[actor:GetType()] then
- return funcName[actor:GetType()] (actor)
- end
- return true
- end
- -- 行会名
- function utils:CheckHUDLabelGuild(actor)
- return self:checkPlayerName(actor)
- end
- -- 封号名
- function utils:CheckHUDLabelTitle(actor)
- local funcTitle = {
- [MMO.ACTOR_PLAYER] = function (actor)
- return utils:checkPlayerName(actor)
- end,
- [MMO.ACTOR_MONSTER] = function (actor)
- if actor:IsEscort() then
- return false
- end
- local curHP = actor:GetHP() or 0
- if curHP < 1 then
- return false
- end
- return true
- end,
- [MMO.ACTOR_DROPITEM] = function ()
- return false
- end,
- [MMO.ACTOR_NPC] = function ()
- return true
- end
- }
- if funcTitle[actor:GetType()] then
- return funcTitle[actor:GetType()] (actor)
- end
- return true
- end
- -- 检测 称号/顶戴
- function utils:CheckHUDTitle(actor)
- if not actor then
- return false
- end
- -- 镖车
- if actor:IsEscort() then
- return true
- end
- -- npc
- if actor:IsNPC() then
- return true
- end
- -- 掉落物
- if actor:IsDropItem() then
- local TypeIndex = actor:GetTypeIndex()
- if TypeIndex == 0 then
- TypeIndex = 1
- end
- return CHECK_ITEM_DROP_SHOW(TypeIndex)
- end
- -- 怪物
- if actor:IsMonster() or actor:IsHumanoid() then
- -- 死亡不显示
- if self:ActorIsDie(actor) then
- return false
- end
-
- -- 隐藏小怪
- if self:IsHideMonster(actor) then
- return false
- end
- if actor:IsElite() and CHECK_SETTING(MMO.SETTING_IDX_MONSTER_VISIBLE) == 1 then
- return false
- end
-
- -- 血量显示死亡不显示
- if actor:GetHP() < 1 then
- return false
- end
-
- return true
- end
- if not actor:IsPlayer() then
- return true
- end
- -- 摆摊
- if actor:IsStallStatus() then
- return false
- end
- -- -- 神秘人
- -- if actor:IsShenMiRen() then
- -- return false
- -- end
- -- 隐藏称号
- if CHECK_SETTING(MMO.SETTING_IDX_TITLE_VISIBLE) == 1 then
- return false
- end
-
- if self:IsHoreseCopilot(actor) then
- return false
- end
- -- 潜行
- if actor:GetValueByKey(MMO.HUD_SNEAK) then
- return false
- end
- return true
- end
- ------------------------------------------------------------------------------------------
- function utils:SetHUDHpBarVisible(actor, visible)
- local hpBar = actor.mHUDUI[MMO.HUDHPUI_BAR]
- if hpBar then
- hpBar:setVisible(visible)
- end
- local hpBorder = actor.mHUDUI[MMO.HUDHPUI_BORDER]
- if hpBorder then
- hpBorder:setVisible(visible)
- end
- end
- -- 血条
- function utils:CheckHUDHpBarVisible(actor)
- local visible = false
- if not self:IsSleepInCave(actor) then
- visible = self:ActorInView(actor) and CHECK_SETTING(MMO.SETTING_IDX_HP_HUD) == 1 and actor:GetValueByKey(MMO.HUD_HPBAR_VISIBLE)
- end
- -- 潜行
- if visible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- visible = false
- end
- -- 副驾
- if visible and self:IsHoreseCopilot(actor) then
- visible = false
- end
-
- self:SetHUDHpBarVisible(actor, visible)
- end
- function utils:SetHUDMpBarVisible(actor, visible)
- local mpBar = actor.mHUDUI[MMO.HUDMPUI_BAR]
- if mpBar then
- mpBar:setVisible(visible)
- end
- local mpBorder = actor.mHUDUI[MMO.HUDMPUI_BORDER]
- if mpBorder then
- mpBorder:setVisible(visible)
- end
- end
- -- 蓝条
- function utils:CheckHUDMpBarVisible(actor)
- local visible = self:ActorInView(actor) and actor:GetValueByKey(MMO.HUD_MPBAR_VISIBLE)
- -- 潜行
- if visible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- visible = false
- end
- -- 副驾
- if visible and self:IsHoreseCopilot(actor) then
- visible = false
- end
- self:SetHUDMpBarVisible(actor, visible)
- end
- function utils:refreshHUDHMpLabelVisible(actor)
- local visible = false
- if not self:IsSleepInCave(actor) then
- visible = actor:IsVisibleServerHpLabel() or (actor:GetValueByKey(MMO.HUD_PC_MOUSE_SHOW) and (not self:ActorIsDie(actor))) or (self:ActorInView(actor) and actor:GetValueByKey(MMO.HUD_HMPLabel_VISIBLE))
- end
- -- 潜行
- if visible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- visible = false
- end
- -- 副驾
- if visible and self:IsHoreseCopilot(actor) then
- visible = false
- end
- self:SetHMPLabelVisible(actor, visible)
- end
- function utils:SetHUDNGBarVisible(actor, visible)
- local ngBar = actor.mHUDUI[MMO.HUDNGUI_BAR]
- if ngBar then
- ngBar:setVisible(visible)
- end
- local ngBorder = actor.mHUDUI[MMO.HUDNGUI_BORDER]
- if ngBorder then
- ngBorder:setVisible(visible)
- end
- end
- -- 内功条显示
- function utils:CheckHUDNGBarVisible(actor)
- local visible = self:ActorInView(actor) and actor:GetValueByKey(MMO.HUD_NGBAR_VISIBLE)
- -- 潜行
- if visible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- visible = false
- end
- -- 副驾
- if visible and self:IsHoreseCopilot(actor) then
- visible = false
- end
- self:SetHUDNGBarVisible(actor, visible)
- end
- -- 血量文本
- function utils:SetHMPLabelVisible(actor, visible)
- local sprite = global.HUDManager:GetHUD(actor:GetID(), global.MMO.HUD_TYPE_BATCH_LABEL, global.MMO.HUD_LABEL_HP)
- if not sprite then
- return false
- end
- sprite:setVisible(visible)
- end
- -- HUD Name -------------------------------------------------------------------------------------------------
- function utils:SetHUDLabelNameVisible(actor, visible)
- global.HUDManager:setVisible(actor:GetID(), MMO.HUD_TYPE_BATCH_LABEL, MMO.HUD_LABEL_NAME, visible)
- end
- -- 检测名字
- function utils:refreshHUDLabelNameVisible(actor)
- local gmVisible = actor:GetValueByKey(MMO.HUD_GM_SHOW)
- local visible = gmVisible or actor:GetValueByKey(MMO.HUD_PC_MOUSE_SHOW) or (self:ActorInView(actor) and actor:GetValueByKey(MMO.HUD_NAMELabel_VISIBLE))
- -- 潜行
- if visible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- visible = false
- end
- -- 副驾
- if self:IsHoreseCopilot(actor) then
- visible = false
- end
- self:SetHUDLabelNameVisible(actor, visible)
- end
- -- HUD Guild -------------------------------------------------------------------------------------------------
- function utils:SetHUDLabelGuildVisible(actor, visible)
- global.HUDManager:setVisible(actor:GetID(), MMO.HUD_TYPE_BATCH_LABEL, MMO.HUD_LABEL_GUILD, visible)
- end
- -- 检测行会
- function utils:refreshHUDLabelGuildVisible(actor)
- local visible = actor:GetValueByKey(MMO.HUD_PC_MOUSE_SHOW) or (self:ActorInView(actor) and actor:GetValueByKey(MMO.HUD_GUILDLabel_VISIBLE))
-
- -- 潜行
- if visible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- visible = false
- end
- -- 副驾
- if visible and self:IsHoreseCopilot(actor) then
- visible = false
- end
- self:SetHUDLabelGuildVisible(actor, visible)
- end
- -- HUD Title -------------------------------------------------------------------------------------------------
- function utils:SetHUDTitleLabelVisible(actor, visible)
- local actorID = actor:GetID()
- local hudType = MMO.HUD_TYPE_BATCH_LABEL
- local hudMin = MMO.HUD_LABEL_PRE_NAME1
- for i = 0, 11 do
- global.HUDManager:setVisible(actorID, hudType, hudMin + i, visible)
- end
- end
- -- 检测Title
- function utils:refreshHUDLabelTitleVisible(actor)
- local visible = actor:GetValueByKey(MMO.HUD_PC_MOUSE_SHOW) or (self:ActorInView(actor) and actor:GetValueByKey(MMO.HUD_TITLELabel_VISIBLE))
-
- -- 潜行
- if visible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- visible = false
- end
- -- 副驾
- if visible and self:IsHoreseCopilot(actor) then
- visible = false
- end
- self:SetHUDTitleLabelVisible(actor, visible)
- end
- -- 刷新 名字、行会名、顶戴
- function utils:refreshLabelVisible(actor)
- self:InitHUDVisibleValue(actor, global.MMO.HUD_NAMELabel_VISIBLE)
- self:InitHUDVisibleValue(actor, global.MMO.HUD_GUILDLabel_VISIBLE)
- self:InitHUDVisibleValue(actor, global.MMO.HUD_TITLELabel_VISIBLE)
- self:InitHUDVisibleValue(actor, global.MMO.HUD_TITLE_VISIBLE)
- self:refreshHUDLabelNameVisible(actor)
- self:refreshHUDLabelGuildVisible(actor)
- self:refreshHUDLabelTitleVisible(actor)
- self:refreshHUDTitleVisible(actor)
- end
- -- 顶戴、称号
- function utils:SetHUDTitleVisible(actor, visible, isHorseUpdate)
- local HUDManager = global.HUDManager
- local actorID = actor:GetID()
- if isHorseUpdate then
- local actorID = actor:GetID()
- for i = 0, 2 do
- if hudTitleSpriteID[i] then
- HUDManager:setVisible(actorID, MMO.HUD_TYPE_SPRITE, hudTitleSpriteID[i], visible)
- end
- if hudTitleLableID[i] then
- HUDManager:setVisible(actorID, MMO.HUD_TYPE_BATCH_LABEL, hudTitleLableID[i], visible)
- end
- end
- else
- local Box996Proxy = Facade:retrieveProxy(ProxyTable.Box996Proxy)
-
- for i = 0, 10 do
- local hudSprite = HUDManager:GetHUD(actorID, MMO.HUD_TYPE_SPRITE, hudTipsID[i])
- local hudAnim = HUDManager:GetHUD(actorID, MMO.HUD_TYPE_ANIM, animHudID[i])
- if hudSprite and hudSprite.isBox996 then --盒子称号 有自己的开关
- local hzVisible = Box996Proxy:isShowTitleByActor(actor)
- -- 潜行
- if hzVisible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- hzVisible = false
- end
- HUDManager:setVisible(actorID, MMO.HUD_TYPE_SPRITE, hudTipsID[i], hzVisible)
- elseif hudAnim and hudAnim.isBox996 then --盒子称号 有自己的开关
- local hzVisible = Box996Proxy:isShowTitleByActor(actor)
- -- 潜行
- if hzVisible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- hzVisible = false
- end
- HUDManager:setVisible(actorID, MMO.HUD_TYPE_ANIM, animHudID[i], hzVisible)
- else
- HUDManager:setVisible(actorID, MMO.HUD_TYPE_SPRITE, hudTipsID[i], visible)
- HUDManager:setVisible(actorID, MMO.HUD_TYPE_ANIM, animHudID[i], visible)
- end
- if hudTitleSpriteID[i] then
- HUDManager:setVisible(actorID, MMO.HUD_TYPE_SPRITE, hudTitleSpriteID[i], visible)
- end
- if hudTitleLableID[i] then
- HUDManager:setVisible(actorID, MMO.HUD_TYPE_BATCH_LABEL, hudTitleLableID[i], visible)
- end
- end
- end
- end
- -- 刷新 称号、顶戴
- function utils:refreshHUDTitleVisible(actor, isHorseUpdate)
- local visible = self:ActorInView(actor) and actor:GetValueByKey(MMO.HUD_TITLE_VISIBLE)
- -- 潜行
- if visible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- visible = false
- end
- -- 副驾
- if visible and self:IsHoreseCopilot(actor) then
- visible = false
- end
- self:SetHUDTitleVisible(actor, visible, isHorseUpdate)
- end
- ---------------------------------------------------------------------------------------------------------------------
- -- 英雄(非主玩家)
- -- 检测英雄显示状态
- function utils:CheckHero(actor)
- return not self:IsMyHero(actor)
- end
- -- 设置状态
- function utils:SetHeroVisible(actor, visible)
- local node = actor:GetNode()--GetAvatarNode()
- if node then
- node:setVisible(visible)
- end
- end
- -- 刷新
- function utils:refreshHeroVisible(actor)
- local visible = self:IsMyHero(actor) or (self:ActorInView(actor) and CHECK_SETTING(MMO.SETTING_IDX_HERO_HIDE) ~= 1 and actor:GetValueByKey(MMO.HERO_VISIBLE))
- self:SetHeroVisible(actor, visible)
- end
- ------------------
- -- 玩家
- function utils:CheckPlayer(actor)
- local mainPlayerID = global.gamePlayerController:GetMainPlayerID()
- if not mainPlayerID then
- return false
- end
- if actor:IsMainPlayer() then
- return true
- end
- if self:IsHoreseCopilot(actor) then
- return false
- end
- -- 清理怪
- if self:IsCanClearMonster(actor) then
- return false
- end
- return true
- end
- function utils:SetPlayerVisible(actor, visible)
- local node = actor:GetNode()--GetAvatarNode()
- if node then
- node:setVisible(visible)
- end
- end
- -- 刷新
- function utils:refreshPlayerVisible(actor)
- local visible = actor:IsMainPlayer() or (self:ActorInView(actor) and CHECK_SETTING(MMO.SETTING_IDX_PLAYER_SHOW) ~= 1 and actor:GetValueByKey(MMO.PLAYER_VISIBLE))
-
- -- 潜行
- if visible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- visible = false
- end
-
- -- 副驾
- if visible and self:IsHoreseCopilot(actor) then
- visible = false
- end
- self:SetPlayerVisible(actor, visible)
- end
- -- 检测乙方阵营
- function utils:CheckPlayerB(actor)
- return actor:IsSameCamp()
- end
- function utils:CheckSamePlayer(actor)
- if (not actor:IsMainPlayer()) and actor:GetValueByKey(MMO.PLAYER_B_VISIBLE) and CHECK_SETTING(MMO.SETTING_IDX_PLAYER_SHOW_FRIEND) == 1 then
- return false
- end
- return true
- end
- function utils:refreshPlayerBVisible(actor)
- local visible = actor:IsMainPlayer() or (self:ActorInView(actor) and self:CheckSamePlayer(actor) and CHECK_SETTING(MMO.SETTING_IDX_PLAYER_SHOW) ~= 1)
-
- -- 潜行
- if visible and actor:GetValueByKey(MMO.HUD_SNEAK) then
- visible = false
- end
- -- 副驾
- if visible and self:IsHoreseCopilot(actor) then
- visible = false
- end
- self:SetPlayerVisible(actor, visible)
- end
- function utils:CheckOwnSidePlayerVisible(actor)
- if not actor:IsPlayer() then
- return
- end
- if actor:IsMainPlayer() then
- return
- end
- self:InitHUDVisibleValue(actor, global.MMO.PLAYER_B_VISIBLE)
- if CHECK_SETTING(MMO.SETTING_IDX_PLAYER_SHOW_FRIEND) == 1 then
- self:refreshPlayerBVisible(actor)
- global.Facade:sendNotification(global.NoticeTable.UpdatePlayerFeatureVisible, actor)
- end
- end
- ---------------------------------------------------------------------------------------------------------------------
- function utils:CheckMonster(actor)
- if not actor then
- return false
- end
- -- 清理尸体
- if self:IsCanClearMonster(actor) then
- return false
- end
- -- 隐藏怪
- if not actor:IsHaveMaster() and self:IsHideMonster(actor) then
- return false
- end
- -- 召唤物
- local mainPlayerID = global.gamePlayerController:GetMainPlayerID()
- if CHECK_SETTING(MMO.SETTING_IDX_MONSTER_PET_VISIBLE) == 1 and actor:IsHaveMaster() and actor:GetMasterID() ~= mainPlayerID then
- return false
- end
- return true
- end
- function utils:SetMonsterVisible(actor, visible)
- local node = actor:GetNode()--GetAvatarNode()
- if node then
- node:setVisible(visible==true)
- end
- end
- function utils:refreshMonsterVisible(actor)
- local visible = false
- if not self:IsSleepInCave(actor) then
- visible = self:IsGate(actor) or self:IsWall(actor) or (self:ActorInView(actor) and actor:GetValueByKey(MMO.MONSTER_VISIBLE))
- end
- self:SetMonsterVisible(actor, visible)
- end
- -- Init HUD visible -------------------------------------------------------------------------------------------------
- local KeyFunc = {
- [MMO.HUD_HPBAR_VISIBLE] = function (actor) return utils:CheckHUDHp(actor) end,
- [MMO.HUD_MPBAR_VISIBLE] = function (actor) return utils:CheckHUDMp(actor) end,
- [MMO.HUD_NGBAR_VISIBLE] = function (actor) return utils:CheckHUDNG(actor) end,
- [MMO.HUD_HMPLabel_VISIBLE] = function (actor) return utils:CheckHUDHMPLabel(actor) end,
- [MMO.HUD_TITLE_VISIBLE] = function (actor) return utils:CheckHUDTitle(actor) end,
- [MMO.HUD_NAMELabel_VISIBLE] = function (actor) return utils:CheckHUDLabelName(actor) end,
- [MMO.HUD_GUILDLabel_VISIBLE] = function (actor) return utils:CheckHUDLabelGuild(actor) end,
- [MMO.HUD_TITLELabel_VISIBLE] = function (actor) return utils:CheckHUDLabelTitle(actor) end,
- [MMO.HERO_VISIBLE] = function (actor) return utils:CheckHero(actor) end,
- [MMO.MONSTER_VISIBLE] = function (actor) return utils:CheckMonster(actor) end,
- [MMO.PLAYER_VISIBLE] = function (actor) return utils:CheckPlayer(actor) end,
- [MMO.PLAYER_B_VISIBLE] = function (actor) return utils:CheckPlayerB(actor) end,
- [MMO.MONSTER_NORMAL] = function (actor) return utils:IsNormalMonster(actor) end,
- [MMO.MONSTER_CLEAR] = function (actor) return utils:IsClearMonster(actor) end,
- }
- -- 初始化 actor 显示数据
- function utils:InitHUDVisibleValue(actor, key)
- if KeyFunc[key] then
- actor:SetKeyValue(key, KeyFunc[key](actor))
- end
- end
- -----------------------------------------------------------------------------------------------------------------------
- return utils
|