local CONFIG = {} CONFIG.Active = true CONFIG.Debug = false CONFIG.Packet = 106 CONFIG.PacketReq = "REQ" CONFIG.PacketOpen = "OPN" CONFIG.PacketResult = "RES" CONFIG.PacketKill = "KIL" CONFIG.PacketLive = "LIV" CONFIG.PacketCount = "CNT" CONFIG.PacketConfigReset = "EPR" CONFIG.PacketConfigEntry = "EPE" CONFIG.PacketConfigEnd = "EPD" CONFIG.PacketConfigRequest = "EPQ" CONFIG.PacketRuntime = "RUN" CONFIG.PacketImageRecovery = "IMG" CONFIG.PacketZone = "ZON" CONFIG.ConfigProtocolVersion = 2 CONFIG.WindowID = 82606 CONFIG.Title = "EVENT PANEL" CONFIG.ShowCharacterNameInTitle = true CONFIG.TitleFormat = "EVENT PANEL - %s" CONFIG.SubTitle = "EVENTOS / INVASIONES / ZONA EVENTOS" CONFIG.FooterText = "Drops, mapas, coordenadas y WC editables" CONFIG.ShowMiniButton = true CONFIG.MiniButton = { X = 6, Y = 50, W = 86, H = 18, Text = "EVENTOS [H]" } CONFIG.MiniButtonImage = { Enabled = true, ImageID = 40163, Path = "Custom\\ScriptImages\\EventPanel_H_Premium.tga", X = 4, Y = 142, W = 42, H = 42, Alpha = 1.0, TextureCrop = { X = 0.00, Y = 0.00, W = 1.00, H = 1.00 }, AllowUncroppedFallback = false, ClickArea = { FollowImage = true, OffsetX = 0, OffsetY = 0, W = 42, H = 42 }, ClickFollowsImage = true, GuideArea = { FollowClick = true, OffsetX = 0, OffsetY = 0, W = 42, H = 42 }, ShowGuide = false, ShowCenterGuide = false, ShowGuideText = false, GuideTextX = 0, GuideTextY = 8, GuideTextW = 260, ShowText = false, TextOffsetX = 0, TextOffsetY = -14, BackgroundArea = { FollowImage = true, OffsetX = 0, OffsetY = 0, W = 0, H = 0 }, DrawBackground = false, BackgroundAlpha = 0.72, } -- Las tres texturas premium se dibujan dentro de los rectangulos originales. -- No modifican Window, Layout, MonsterVisual ni las posiciones de los items. local PREMIUM_BOX_TEXTURE = { Enabled = true, ImageID = 40162, Path = "Custom\\ScriptImages\\EventPanelPremium_Box.tga", SourceW = 512, SourceH = 512, OffsetX = 0, OffsetY = 0, W = 0, H = 0, WAdjust = 0, HAdjust = 0, Alpha = 0.98, CornerUV = 0.15, CornerScreen = 7, } CONFIG.PanelBackground = PREMIUM_BOX_TEXTURE CONFIG.PremiumBox = PREMIUM_BOX_TEXTURE CONFIG.RowBackground = { Enabled = true, ImageID = 40160, Path = "Custom\\ScriptImages\\EventPanelPremium_Row.tga", SourceW = 512, SourceH = 64, Alpha = 0.96, CornerUVX = 0.10, CornerUVY = 0.25, CornerScreenX = 8, CornerScreenY = 4, } CONFIG.RowHoverSweep = { Enabled = true, Color = { 0.12, 0.68, 1.00 }, Width = 88, Height = 1, Speed = 1.10, Segments = 8, BaseAlpha = 0.10, GlowAlpha = 0.20, CoreAlpha = 0.70, Top = true, Bottom = true, RestartOnHover = true, } -- Bloquea la seleccion y el render de nombres del mundo solamente mientras -- el cursor esta dentro de la ventana del EventPanel. CONFIG.LockWorldHoverOnPanel = true CONFIG.HideWorldNamesOnPanel = true CONFIG.PremiumFrame = { Enabled = true, ImageID = 40161, Path = "Custom\\ScriptImages\\EventPanelPremium_Frame.tga", SourceW = 512, SourceH = 512, Alpha = 0.92, } CONFIG.TexturePolicy = { MaxWidth = 512, MaxHeight = 512, ReloadDelayFrames = 30, ReloadSecondPassFrames = 90, } -- Atlans (104) reutiliza exactamente la escala final de Tarkan 2 (103). -- No altera Tarkan 2 ni ningun otro monstruo. CONFIG.ZoneMonsterVisual = { [104] = { CopyScaleFromIndex = 103 }, } CONFIG.OpenWithKey = true CONFIG.OpenKey = 72 CONFIG.OpenKeyAlt = 0 CONFIG.CloseKey = 27 CONFIG.BlockOriginalH = true CONFIG.BlockOpenWhenChat = true CONFIG.BlockOpenWhenWindowOpen = true CONFIG.BlockOpenWindowIDs = { UIWarehouse, UIExpandWarehouse } CONFIG.CloseNativeWindowsOnOpen = true CONFIG.NativeWindowCloseFrames = 12 CONFIG.NativeWindowIDs = { 2 } CONFIG.NativeWindowEventTime = 2 CONFIG.OverrideNativeEventTimeClick = true CONFIG.BlockNativeEventTimeByH = true CONFIG.UseCheckWindowOpenNoArgForChat = false CONFIG.ChatWindowIDs = { 70, 71, 72, 73, 74, 75 } CONFIG.UpdateKeyHookForH = true CONFIG.MainProcKeyFallbackForH = true CONFIG.NativeWindowNames = { "UIEventTime", "UIEventTimer", "UIEventInfo", "UIEventWindow", "UIEventList", "UIEventTable", "UIEventPanel", "UIEventInventory", } CONFIG.SolidHeader = true CONFIG.SolidHeaderAlpha = 0.98 CONFIG.InputBlockPadding = 10 CONFIG.BlockAllMapClickWhenOpen = true CONFIG.LockCharacterWhenOpen = true CONFIG.Window = { X = 155, Y = 55, W = 330, H = 360, Drag = true, DragH = 42, DragFullWindow = false, DragMode = "FullWindowHold", DragThreshold = 2, } CONFIG.Layout = { DetailReplacesList = true, DetailPopup = true, HeaderH = 42, TabX = 20, TabY = 43, TabW = 90, TabH = 19, ListX = 16, ListY = 70, ListW = 298, ListH = 260, RowH = 20, ZoneRowH = 20, ListNameW = 210, ListTimeX = 218, ListTimeW = 64, MouseWheelStep = 2, MouseWheelActive = true, MouseWheelInvert = false, ScrollDragActive = true, DetailX = 16, DetailY = 70, DetailW = 298, DetailH = 260, MonsterBoxX = 184, MonsterBoxY = 35, MonsterBoxW = 96, MonsterBoxH = 128, MonsterScale = 0.56, MonsterAddX = 48, MonsterAddY = 116, RewardBoxX = 214, RewardBoxY = 20, RewardBoxW = 70, RewardBoxH = 15, RewardTextX = 214, RewardTextY = 23, RewardTextW = 70, DropBoxX = 34, DropBoxY = 210, DropBoxW = 40, DropBoxH = 40, DropBoxGap = 6, DropBoxMax = 4, DropItemX = -8, DropItemY = -10, DropItemW = 56, DropItemH = 56, DropItemScale = 0.54, ArrowY = 303, LeftArrowX = 14, RightArrowX = 294, } CONFIG.Colors = { Panel = { 0.00, 0.00, 0.00, 0.93 }, Box = { 0.02, 0.02, 0.02, 0.86 }, Border = { 0.10, 0.45, 0.95, 0.95 }, Select = { 0.05, 0.18, 0.38, 0.88 }, Hover = { 0.04, 0.14, 0.30, 0.82 }, TabActive = { 0.06, 0.27, 0.58, 0.92 }, TabOff = { 0.03, 0.06, 0.12, 0.82 }, Online = { 80, 255, 80, 255 }, Countdown = { 255, 230, 70, 255 }, Killed = { 255, 90, 90, 255 }, Type = { 120, 220, 255, 255 }, } CONFIG.MonsterMove = false CONFIG.MonsterMoveRange = 0 CONFIG.MonsterMoveSpeed = 0 CONFIG.MonsterHoverRotate = true CONFIG.MonsterHoverTooltip = false CONFIG.ItemRenderMode = 1 CONFIG.ItemSize = 0.52 CONFIG.ItemRotate = 0 CONFIG.ItemStaticRotate = 0 CONFIG.ItemHoverRotate = true CONFIG.ItemHoverRotateUseMapTime = true CONFIG.ItemHoverRotateSpeed = 1 CONFIG.ShowDropTooltips = false CONFIG.DefaultDropItems = { false, false, false, false } CONFIG.IvnLuaPreviewEventPanel = { Enabled = false, Slot = 10, Dir = 90, ObjectID = 0, BoxPaddingX = 2, BoxPaddingY = 4, BoxPaddingBottom = 31, HideWhenClosed = true, HideWhenNoMonster = true, UseFallbackIfMissing = true, UsePluginVisual = true, DefaultPanelScale = 0.56, DefaultStep = 0.06, } -- ======================================================================== -- CONFIGURACIÓN VISUAL EXACTA DE LOS MONSTRUOS -- ======================================================================== CONFIG.MonsterVisualDefault = { Scale = 0.56, AddX = 35, AddY = 115 } CONFIG.MonsterVisual = { -- 1. FANTASMAS / MAGOS FLOTANTES (Se empujan hacia abajo con AddY = 145 para que no corten la cabeza) [135] = { Scale = 0.60, AddX = 00, AddY = 200 }, -- White Wizard [275] = { Scale = 0.45, AddX = 30, AddY = 145 }, -- Kundun [694] = { Scale = 0.88, AddX = 40, AddY = 145 }, -- God of Darkness [463] = { Scale = 0.55, AddX = 35, AddY = 135 }, -- Fire Flame Ghost -- 2. MOBS PEQUEÑOS (Se aumenta su Scale y se sube el AddY a 115 para que no queden tirados en el piso) [904] = { Scale = 0.25, AddX = 30, AddY = 115 }, -- Skeleton Skull (Agrandado al doble) [55] = { Scale = 1.10, AddX = 30, AddY = 115 }, -- Rey Skeleton [365] = { Scale = 0.70, AddX = 30, AddY = 115 }, -- Pouch of Blessing [413] = { Scale = 0.80, AddX = 45, AddY = 115 }, -- Rabbits -- 3. DRAGONES [42] = { Scale = 1.14, AddX = 35, AddY = 115 }, -- Red Dragon [43] = { Scale = 0.30, AddX = 35, AddY = 115 }, -- Golden Dragon -- 4. BOSSES GIGANTES NATIVOS [744] = { Scale = 1.30, AddX = 40, AddY = 120 }, -- Calabaza Horror (REDUCCIÓN EXTREMA DE ESCALA) [708] = { Scale = 0.30, AddX = 40, AddY = 125 }, -- Lord of Ferea [687] = { Scale = 0.90, AddX = 40, AddY = 125 }, -- Nix -- 5. DEMÁS MOBS Y BOSSES [501] = { Scale = 0.50, AddX = 35, AddY = 115 }, -- Golden Invasion [737] = { Scale = 0.95, AddX = 35, AddY = 115 }, -- Evomon [561] = { Scale = 0.70, AddX = 35, AddY = 115 }, -- Medusa [823] = { Scale = 0.75, AddX = 35, AddY = 115 }, -- NightMare [295] = { Scale = 0.55, AddX = 35, AddY = 115 }, -- Erohim [683] = { Scale = 0.80, AddX = 35, AddY = 115 }, -- Core Magriffy [682] = { Scale = 0.80, AddX = 35, AddY = 115 }, -- Lord Silvester [743] = { Scale = 0.75, AddX = 35, AddY = 115 }, -- Parca Hallow } -- ======================================================================== CONFIG.CountUseMapFilter = false CONFIG.DynamicTotalFromLiveCount = true CONFIG.RealOnlyFromServer = true CONFIG.DefaultStatus = "Segun horario" CONFIG.DefaultDrop = "Drop: configurar" CONFIG.DefaultMap = "Mapa: configurar" CONFIG.DefaultCoords = "Coords: configurar" CONFIG.DefaultActionText = "Click/flechas para cambiar evento" CONFIG.HideMonsterBoxOnEvents = true CONFIG.LiveDetect = { Active = true, ScanIntervalSeconds = 3 } CONFIG.CommandDetect = { Active = false, Command = "/invasion", CommandCode = -1 } CONFIG.Timer = { Active = true, DefaultDurationMinutes = 15, ShowSeconds = true, OnlineText = "Online", KilledText = "0" } CONFIG.TimeZoneSelector = { Active = true, Default = "PER", BaseUTCOffsetMinutes = -300, ButtonW = 30, ButtonH = 16, Gap = 4, Bottom = 22, Countries = { { Code = "PER", RelativeOffsetMinutes = 0 }, { Code = "VEN", RelativeOffsetMinutes = 60 }, { Code = "ARG", RelativeOffsetMinutes = 120 }, { Code = "ES", RelativeOffsetMinutes = 360, SummerRelativeOffsetMinutes = 420, AutoSummerTime = true }, }, } CONFIG.MobCounter = { Active = true, DefaultInvasionTotal = 30, DefaultBossTotal = 1, CompleteText = "0" } CONFIG.EventPanelBridge = { UseLiveScan = true, UseMonsterDie = true, UseScheduleCounter = false, UseLatestScheduleOnly = false, SendAllEverySeconds = 3, ClearStateOnLoad = true, RequireScheduleActive = true, AllowManualSpawnOutsideSchedule = false, } local EVENTO_CONFIG = { Active = true, UseEnabledField = true, PackListAutomatically = true, AutoBuildRuntimeTables = true, DefaultDropLayout = { DropBoxX = 34, DropBoxY = 210, DropBoxW = 40, DropBoxH = 40, DropBoxGap = 6, DropBoxMax = 4, DropItemX = -8, DropItemY = -14, DropItemW = 56, DropItemH = 56, DropItemScale = 0.64, }, } CONFIG.EventoConfig = EVENTO_CONFIG local function EventPanel_PackList(list) local packed = {} if type(list) ~= "table" then return packed end local numericKeys = {} for k, _ in pairs(list) do if type(k) == "number" then table.insert(numericKeys, k) end end table.sort(numericKeys) for _, k in ipairs(numericKeys) do local ev = list[k] if type(ev) == "table" then if EVENTO_CONFIG.UseEnabledField ~= true or ev.Enabled ~= false then table.insert(packed, ev) end end end return packed end local function EventPanel_NormalizeEvents(raw) local out = EventPanel_PackList(raw) local dlay = EVENTO_CONFIG.DefaultDropLayout for _, ev in ipairs(out) do if type(ev.DropItems) ~= "table" then ev.DropItems = CONFIG.DefaultDropItems or { false, false, false, false } end if type(ev.DropLayout) ~= "table" and type(dlay) == "table" then ev.DropLayout = dlay end end return out end local function EventPanel_BuildRuntimeTables() CONFIG.EventMonsterClasses = {} CONFIG.EventMaps = {} CONFIG.EventMonsterSpawns = {} CONFIG.EventBossClass = {} CONFIG.EventTotalByIndex = {} for _, ev in ipairs(CONFIG.Invasions or {}) do local idx = tonumber(ev.Index) if idx ~= nil then if type(ev.MonsterClasses) == "table" then CONFIG.EventMonsterClasses[idx] = ev.MonsterClasses elseif tonumber(ev.BossIndex) ~= nil then CONFIG.EventMonsterClasses[idx] = { tonumber(ev.BossIndex) } end if type(ev.Maps) == "table" then CONFIG.EventMaps[idx] = ev.Maps elseif tonumber(ev.BossMap) ~= nil and tonumber(ev.BossMap) >= 0 then CONFIG.EventMaps[idx] = { tonumber(ev.BossMap) } end if type(ev.MonsterSpawns) == "table" then CONFIG.EventMonsterSpawns[idx] = ev.MonsterSpawns end CONFIG.EventBossClass[idx] = tonumber(ev.BossClass or ev.BossIndex or ev.VisualIndex or 0) or 0 CONFIG.EventTotalByIndex[idx] = tonumber(ev.MobTotal or ev.Total or 0) or 0 end end end local EVENTO = { NormalEvents = {}, Invasions = {}, ZoneEvents = {} } CONFIG.NormalEvents = EventPanel_NormalizeEvents(EVENTO.NormalEvents) CONFIG.Invasions = EventPanel_NormalizeEvents(EVENTO.Invasions) CONFIG.ZoneEvents = EventPanel_NormalizeEvents(EVENTO.ZoneEvents) CONFIG.Events = CONFIG.Invasions if EVENTO_CONFIG.AutoBuildRuntimeTables ~= false then EventPanel_BuildRuntimeTables() end return CONFIG