-- ============================================================================ -- MoonWell -- ============================================================================ CHARACTER_SELECT_ROTATION_START_X = nil; CHARACTER_SELECT_INITIAL_FACING = nil; CHARACTER_ROTATION_CONSTANT = 0.6; MAX_CHARACTERS_DISPLAYED = 8; MAX_CHARACTERS_PER_REALM = 8; function CharacterSelect_OnLoad(self) REALM_SIRION = GetServerName(); self:SetSequence(0); self:SetCamera(0); self.createIndex = 0; self.selectedIndex = 0; self.selectLast = 0; self.currentModel = nil; self:RegisterEvent("ADDON_LIST_UPDATE"); self:RegisterEvent("CHARACTER_LIST_UPDATE"); self:RegisterEvent("UPDATE_SELECTED_CHARACTER"); self:RegisterEvent("SELECT_LAST_CHARACTER"); self:RegisterEvent("SELECT_FIRST_CHARACTER"); self:RegisterEvent("SUGGEST_REALM"); self:RegisterEvent("FORCE_RENAME_CHARACTER"); SetCharSelectModelFrame("CharacterSelect"); CharacterSelectCharacterFrame:SetBackdrop({ bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = true, tileSize = 16, edgeSize = 16, insets = { left = 3, right = 3, top = 3, bottom = 3 } }); CharacterSelectCharacterFrame:SetBackdropColor(0, 0, 0) SelectBorroso = 1; CharacterSelect_OnEventO(); if CharSelectTooltip then CharSelectTooltipText:SetFont("Fonts\\FRIZQT__.TTF", 14, "OUTLINE") CharSelectTooltipText:SetTextColor(1, 1, 1) CharSelectTooltip:SetBackdropColor(0, 0, 0, 0.9) CharSelectTooltip:SetBackdropBorderColor(0.4, 0.4, 0.4, 1) end end function CharacterSelect_OnShow() -- request account data times from the server (so we know if we should refresh keybindings, etc...) ReadyForAccountDataTimes() local CurrentModel = CharacterSelect.currentModel; if ( CurrentModel ) then PlayGlueAmbience(GlueAmbienceTracks[strupper(CurrentModel)], 4.0); end UpdateAddonButton(); local serverName, isPVP, isRP = GetServerName(); local connected = IsConnectedToServer(); local serverType = ""; if ( serverName ) then if( not connected ) then serverName = serverName.."\n("..SERVER_DOWN..")"; end if ( isPVP ) then if ( isRP ) then serverType = RPPVP_PARENTHESES; else serverType = PVP_PARENTHESES; end elseif ( isRP ) then serverType = RP_PARENTHESES; end CharSelectRealmName:SetText(serverName.." "..serverType); CharSelectRealmName:Show(); else CharSelectRealmName:Hide(); end if ( connected ) then GetCharacterListUpdate(); else UpdateCharacterList(); end -- Gameroom billing stuff (For Korea and China only) if ( SHOW_GAMEROOM_BILLING_FRAME ) then local paymentPlan, hasFallBackBillingMethod, isGameRoom = GetBillingPlan(); if ( paymentPlan == 0 ) then -- No payment plan GameRoomBillingFrame:Hide(); CharacterSelectRealmSplitButton:ClearAllPoints(); CharacterSelectRealmSplitButton:SetPoint("TOP", CharacterSelectLogo, "BOTTOM", 0, -5); else local billingTimeLeft = GetBillingTimeRemaining(); -- Set default text for the payment plan local billingText = _G["BILLING_TEXT"..paymentPlan]; if ( paymentPlan == 1 ) then -- Recurring account billingTimeLeft = ceil(billingTimeLeft/(60 * 24)); if ( billingTimeLeft == 1 ) then billingText = BILLING_TIME_LEFT_LAST_DAY; end elseif ( paymentPlan == 2 ) then -- Free account if ( billingTimeLeft < (24 * 60) ) then billingText = format(BILLING_FREE_TIME_EXPIRE, billingTimeLeft.." "..MINUTES_ABBR); end elseif ( paymentPlan == 3 ) then -- Fixed but not recurring if ( isGameRoom == 1 ) then if ( billingTimeLeft <= 30 ) then billingText = BILLING_GAMEROOM_EXPIRE; else billingText = format(BILLING_FIXED_IGR, MinutesToTime(billingTimeLeft, 1)); end else -- personal fixed plan if ( billingTimeLeft < (24 * 60) ) then billingText = BILLING_FIXED_LASTDAY; else billingText = format(billingText, MinutesToTime(billingTimeLeft)); end end elseif ( paymentPlan == 4 ) then -- Usage plan if ( isGameRoom == 1 ) then -- game room usage plan if ( billingTimeLeft <= 600 ) then billingText = BILLING_GAMEROOM_EXPIRE; else billingText = BILLING_IGR_USAGE; end else -- personal usage plan if ( billingTimeLeft <= 30 ) then billingText = BILLING_TIME_LEFT_30_MINS; else billingText = format(billingText, billingTimeLeft); end end end -- If fallback payment method add a note that says so if ( hasFallBackBillingMethod == 1 ) then billingText = billingText.."\n\n"..BILLING_HAS_FALLBACK_PAYMENT; end GameRoomBillingFrameText:SetText(billingText); GameRoomBillingFrame:SetHeight(GameRoomBillingFrameText:GetHeight() + 26); GameRoomBillingFrame:Show(); CharacterSelectRealmSplitButton:ClearAllPoints(); CharacterSelectRealmSplitButton:SetPoint("TOP", GameRoomBillingFrame, "BOTTOM", 0, -10); end end if( IsTrialAccount() ) then CharacterSelectUpgradeAccountButton:Show(); else CharacterSelectUpgradeAccountButton:Hide(); end -- fadein the character select ui GlueFrameFadeIn(CharacterSelectUI, CHARACTER_SELECT_FADE_IN) RealmSplitCurrentChoice:Hide(); RequestRealmSplitInfo(); --Clear out the addons selected item GlueDropDownMenu_SetSelectedValue(AddonCharacterDropDown, ALL); end function CharacterSelect_OnHide() CharacterDeleteDialog:Hide(); CharacterRenameDialog:Hide(); if ( DeclensionFrame ) then DeclensionFrame:Hide(); end SERVER_SPLIT_STATE_PENDING = -1; end function CharacterSelect_OnUpdate(elapsed) if ( SERVER_SPLIT_STATE_PENDING > 0 ) then CharacterSelectRealmSplitButton:Show(); if ( SERVER_SPLIT_CLIENT_STATE > 0 ) then RealmSplit_SetChoiceText(); RealmSplitPending:SetPoint("TOP", RealmSplitCurrentChoice, "BOTTOM", 0, -10); else RealmSplitPending:SetPoint("TOP", CharacterSelectRealmSplitButton, "BOTTOM", 0, 0); RealmSplitCurrentChoice:Hide(); end if ( SERVER_SPLIT_STATE_PENDING > 1 ) then CharacterSelectRealmSplitButton:Disable(); CharacterSelectRealmSplitButtonGlow:Hide(); RealmSplitPending:SetText( SERVER_SPLIT_PENDING ); else CharacterSelectRealmSplitButton:Enable(); CharacterSelectRealmSplitButtonGlow:Show(); local datetext = SERVER_SPLIT_CHOOSE_BY.."\n"..SERVER_SPLIT_DATE; RealmSplitPending:SetText( datetext ); end if ( SERVER_SPLIT_SHOW_DIALOG and not GlueDialog:IsShown() ) then SERVER_SPLIT_SHOW_DIALOG = false; local dialogString = format(SERVER_SPLIT,SERVER_SPLIT_DATE); if ( SERVER_SPLIT_CLIENT_STATE > 0 ) then local serverChoice = RealmSplit_GetFormatedChoice(SERVER_SPLIT_REALM_CHOICE); local stringWithDate = format(SERVER_SPLIT,SERVER_SPLIT_DATE); dialogString = stringWithDate.."\n\n"..serverChoice; GlueDialog_Show("SERVER_SPLIT_WITH_CHOICE", dialogString); else GlueDialog_Show("SERVER_SPLIT", dialogString); end end else CharacterSelectRealmSplitButton:Hide(); end -- Account Msg stuff if ( (ACCOUNT_MSG_NUM_AVAILABLE > 0) and not GlueDialog:IsShown() ) then if ( ACCOUNT_MSG_HEADERS_LOADED ) then if ( ACCOUNT_MSG_BODY_LOADED ) then local dialogString = AccountMsg_GetHeaderSubject( ACCOUNT_MSG_CURRENT_INDEX ).."\n\n"..AccountMsg_GetBody(); GlueDialog_Show("ACCOUNT_MSG", dialogString); end end end end function CharacterSelect_OnKeyDown(self,key) if ( key == "ESCAPE" ) then CharacterSelect_Exit(); elseif ( key == "ENTER" ) then CharacterSelect_EnterWorld(); elseif ( key == "PRINTSCREEN" ) then Screenshot(); elseif ( key == "UP" or key == "LEFT" ) then local numChars = GetNumCharacters(); if ( numChars > 1 ) then if ( self.selectedIndex > 1 ) then CharacterSelect_SelectCharacter(self.selectedIndex - 1); else CharacterSelect_SelectCharacter(numChars); end end elseif ( arg1 == "DOWN" or arg1 == "RIGHT" ) then local numChars = GetNumCharacters(); if ( numChars > 1 ) then if ( self.selectedIndex < GetNumCharacters() ) then CharacterSelect_SelectCharacter(self.selectedIndex + 1); else CharacterSelect_SelectCharacter(1); end end end end function CharacterSelect_OnEventO() local numChars = GetNumCharacters(); local index = 1; local coords; if ( SelectBorroso == 0 ) then CharSelectCharacterName:SetAlpha(0); CharacterSelectCharacterFrame:SetAlpha(0); CharacterSelectCharacterFrame:SetPoint("TOPRIGHT", 5000, -8); CharSelectCharacterName2:SetPoint("CENTER", 330, 100); CharSelectCharacterName2:SetAlpha(1); CharSelectCharacterName2:SetFont("Fonts\\FRIZQT__.ttf", 43, "OUTLINE"); CharSelectCharacterName2:Show(); CharSelectCharacterName3:SetPoint("TOP", "CharSelectCharacterName2", 0, 120); CharSelectCharacterName3:SetFont("Fonts\\FRIZQT__.ttf", 83, "OUTLINE"); CharSelectCharacterName3:Show(); CharacterSelectRotateLeft:SetAlpha(0); CharacterSelectRotateRight:SetAlpha(0); CharacterSelectAddonsButton:SetAlpha(0); CharSelectEnterWorldButton:SetAlpha(0); CharacterSelectBackButton:SetAlpha(0); CharacterSelectAddonsButton:Disable(); CharacterSelectBackButton:Disable(); DesenfoBoton:SetText(" "); DesenfoBoton2:Hide(); OptionsButton2:Hide(); CharSelectChangeRealmButton:Hide(); CharacterSelectDeleteButton:Hide(); elseif ( SelectBorroso == 1 ) then CharSelectCharacterName:SetAlpha(1); CharacterSelectCharacterFrame:SetAlpha(1); CharacterSelectCharacterFrame:SetPoint("TOPRIGHT", -5, -42); CharSelectCharacterName2:SetPoint("CENTER", 330, 100); CharSelectCharacterName2:SetFont("Fonts\\FRIZQT__.ttf", 43, "OUTLINE"); CharSelectCharacterName2:SetAlpha(0); CharSelectCharacterName2:Hide(); CharSelectCharacterName3:SetPoint("TOP", "CharSelectCharacterName2", 0, 120); CharSelectCharacterName3:SetFont("Fonts\\FRIZQT__.ttf", 83, "OUTLINE"); CharSelectCharacterName3:Hide(); CharacterSelectRotateLeft:SetAlpha(1); CharacterSelectRotateRight:SetAlpha(1); CharacterSelectAddonsButton:SetAlpha(1); CharSelectEnterWorldButton:SetAlpha(1); CharacterSelectBackButton:SetAlpha(1); CharacterSelectAddonsButton:Enable(); CharacterSelectBackButton:Enable(); DesenfoBoton:SetText(" "); DesenfoBoton2:Show(); OptionsButton2:Show(); CharSelectChangeRealmButton:Show(); CharacterSelectDeleteButton:Show(); end PlaySound("igMainMenuOptionCheckBoxOn") end function CharacterSelect_OnEventO2() if (SelectBorroso2 == 0) then CharacterSelectCharacterFrame:Hide(); if CharacterSelectDeleteButton then CharacterSelectDeleteButton:Hide(); end elseif (SelectBorroso2 == 1) then CharacterSelectCharacterFrame:Show(); if CharacterSelectDeleteButton then CharacterSelectDeleteButton:Show(); end end PlaySound("igMainMenuOptionCheckBoxOn"); end function CharacterSelect_OnEvent(self, event, ...) if ( event == "ADDON_LIST_UPDATE" ) then UpdateAddonButton(); elseif ( event == "CHARACTER_LIST_UPDATE" ) then UpdateCharacterList(); CharSelectCharacterName:SetText(GetCharacterInfo(self.selectedIndex)); elseif ( event == "UPDATE_SELECTED_CHARACTER" ) then local index = ...; if ( index == 0 ) then CharSelectCharacterName:SetText(""); else CharSelectCharacterName:SetText(GetCharacterInfo(index)); self.selectedIndex = index; end UpdateCharacterSelection(self); elseif ( event == "SELECT_LAST_CHARACTER" ) then self.selectLast = 1; elseif ( event == "SELECT_FIRST_CHARACTER" ) then CharacterSelect_SelectCharacter(1, 1); elseif ( event == "SUGGEST_REALM" ) then local category, id = ...; local name = GetRealmInfo(category, id); if ( name ) then SetGlueScreen("charselect"); ChangeRealm(category, id); else if ( RealmList:IsShown() ) then RealmListUpdate(); else RealmList:Show(); end end elseif ( event == "FORCE_RENAME_CHARACTER" ) then local message = ...; CharacterRenameDialog:Show(); CharacterRenameText1:SetText(_G[message]); end end function CharacterSelect_UpdateModel(self) UpdateSelectionCustomizationScene(); self:AdvanceTime(); end function UpdateCharacterSelection(self) for i=1, MAX_CHARACTERS_DISPLAYED, 1 do _G["CharSelectCharacterButton"..i]:UnlockHighlight(); end local index = self.selectedIndex; if ( (index > 0) and (index <= MAX_CHARACTERS_DISPLAYED) )then _G["CharSelectCharacterButton"..index]:LockHighlight(); end end function UpdateCharacterList() local numChars = GetNumCharacters(); local index = 1; local coords; for i = 1, MAX_CHARACTERS_DISPLAYED do local button = _G["CharSelectCharacterButton"..i]; button:Show(); end _G["CharacterSelectCharacterFrame"]:SetHeight(620); local GENERAL_BACKGROUND = { texture = "Interface\\Glues\\CharacterSelect\\uicharacterselectglues2x", coords = {0.656250000, 0.965820313, 0.123046875, 0.217285156} }; for i = 1, MAX_CHARACTERS_DISPLAYED do local button = _G["CharSelectCharacterButton"..i]; local generalBg = _G["CharSelectCharacterButton"..i.."GeneralBackground"]; if generalBg then generalBg:Hide(); end local background = _G["CharSelectCharacterButton"..i.."Background"]; if background then background:Hide(); end local factionIcon = _G["CharSelectCharacterButton"..i.."FactionIcon"]; if factionIcon then factionIcon:Hide(); end local nameText = _G["CharSelectCharacterButton"..i.."ButtonTextName"]; if nameText then nameText:SetText(""); end local levelText = _G["CharSelectCharacterButton"..i.."ButtonTextLevel"]; if levelText then levelText:SetText(""); end local classText = _G["CharSelectCharacterButton"..i.."ButtonTextClass"]; if classText then classText:SetText(""); end local zoneText = _G["CharSelectCharacterButton"..i.."ButtonTextZone"]; if zoneText then zoneText:SetText(""); end local statusText = _G["CharSelectCharacterButton"..i.."ButtonTextStatus"]; if statusText then statusText:SetText(""); end local defaultBg = _G["CharSelectCharacterButton"..i.."DefaultBackground"]; if defaultBg then defaultBg:Hide(); end end local CLASS_COLORS = { -- Español ["GUERRERO"]="|cffC79C6E",["GUERRERA"]="|cffC79C6E", ["PALADIN"]="|cffF58CBA", ["CAZADOR"]="|cffABD473",["CAZADORA"]="|cffABD473", ["PICARO"]="|cffFFF569",["PICARA"]="|cffFFF569", ["SACERDOTE"]="|cffFFFFFF",["SACERDOTISA"]="|cffFFFFFF", ["CABALLERO DE LA MUERTE"]="|cffC41F3B", ["CHAMÃN"]="|cff0070DE", ["MAGO"]="|cff69CCF0",["MAGA"]="|cff69CCF0", ["BRUJO"]="|cff9482C9",["BRUJA"]="|cff9482C9", ["DRUIDA"]="|cffFF7D0A", -- English ["WARRIOR"]="|cffC79C6E", ["PALADIN"]="|cffF58CBA", ["HUNTER"]="|cffABD473", ["ROGUE"]="|cffFFF569", ["PRIEST"]="|cffFFFFFF", ["DEATHKNIGHT"]="|cffC41F3B", ["SHAMAN"]="|cff0070DE", ["MAGE"]="|cff69CCF0", ["WARLOCK"]="|cff9482C9", ["DRUID"]="|cffFF7D0A" }; CLASS_COLORS["Воин"] = "|cffC79C6E" CLASS_COLORS["Паладин"] = "|cffF58CBA" CLASS_COLORS["Охотник"] = "|cffABD473" CLASS_COLORS["Разбойник"] = "|cffFFF569" CLASS_COLORS["Жрец"] = "|cffFFFFFF" CLASS_COLORS["Рыцарь смерти"] = "|cffC41F3B" CLASS_COLORS["Шаман"] = "|cff0070DE" CLASS_COLORS["Маг"] = "|cff69CCF0" CLASS_COLORS["Чернокнижник"] = "|cff9482C9" CLASS_COLORS["Друид"] = "|cffFF7D0A" local LOCALIZED_CLASS_NAMES = { ["Воин"] = "Воин", ["Guerrero"] = "Воин", ["Guerrera"] = "Воин", ["Warrior"] = "Воин", ["WARRIOR"] = "Воин", ["Паладин"] = "Паладин", ["Paladín"] = "Паладин", ["Paladin"] = "Паладин", ["PALADIN"] = "Паладин", ["Охотник"] = "Охотник", ["Cazador"] = "Охотник", ["Cazadora"] = "Охотник", ["Hunter"] = "Охотник", ["HUNTER"] = "Охотник", ["Разбойник"] = "Разбойник", ["Pícaro"] = "Разбойник", ["Pícara"] = "Разбойник", ["Rogue"] = "Разбойник", ["ROGUE"] = "Разбойник", ["Жрец"] = "Жрец", ["Sacerdote"] = "Жрец", ["Sacerdotisa"] = "Жрец", ["Priest"] = "Жрец", ["PRIEST"] = "Жрец", ["Рыцарь смерти"] = "Рыцарь смерти", ["Caballero de la Muerte"] = "Рыцарь смерти", ["Death Knight"] = "Рыцарь смерти", ["DEATHKNIGHT"] = "Рыцарь смерти", ["Шаман"] = "Шаман", ["Chamán"] = "Шаман", ["Shaman"] = "Шаман", ["SHAMAN"] = "Шаман", ["Маг"] = "Маг", ["Mago"] = "Маг", ["Maga"] = "Маг", ["Mage"] = "Маг", ["MAGE"] = "Маг", ["Чернокнижник"] = "Чернокнижник", ["Brujo"] = "Чернокнижник", ["Bruja"] = "Чернокнижник", ["Warlock"] = "Чернокнижник", ["WARLOCK"] = "Чернокнижник", ["Друид"] = "Друид", ["Druida"] = "Друид", ["Druid"] = "Друид", ["DRUID"] = "Друид", } local function GetCharacterFaction(race) return GetFactionForRaceName(race) end local FACTION_ICONS = { ["Alliance"] = "Interface\\Glues\\CharacterSelect\\AllianceLogo", ["Horde"] = "Interface\\Glues\\CharacterSelect\\HordeLogo" }; for i=1, numChars, 1 do local name, race, class, level, zone, sex, ghost, PCC, PRC, PFC = GetCharacterInfo(i); local button = _G["CharSelectCharacterButton"..index]; if ( not name ) then button:SetText("Ошибка: обратитесь к администратору"); else if ( not zone ) then zone = ""; end local faction = GetCharacterFaction(race); local defaultBg = _G["CharSelectCharacterButton"..index.."DefaultBackground"]; if defaultBg then defaultBg:Hide(); end local generalBg = _G["CharSelectCharacterButton"..index.."GeneralBackground"]; if not generalBg then generalBg = button:CreateTexture("CharSelectCharacterButton"..index.."GeneralBackground", "BACKGROUND", nil, 1); end generalBg:ClearAllPoints(); generalBg:SetPoint("CENTER", button, "CENTER", -22, 1); generalBg:SetSize(243, 62); generalBg:SetTexture(GENERAL_BACKGROUND.texture); generalBg:SetTexCoord(unpack(GENERAL_BACKGROUND.coords)); generalBg:Show(); local background = _G["CharSelectCharacterButton"..index.."Background"]; if not background then background = button:CreateTexture("CharSelectCharacterButton"..index.."Background", "OVERLAY", nil, 2); end background:ClearAllPoints(); background:SetPoint("CENTER", button, "CENTER", -35, 0); background:SetSize(205, 55); background:Show(); local factionIcon = _G["CharSelectCharacterButton"..index.."FactionIcon"]; if not factionIcon then factionIcon = button:CreateTexture("CharSelectCharacterButton"..index.."FactionIcon", "OVERLAY", nil, 3); end factionIcon:ClearAllPoints(); factionIcon:SetPoint("TOPLEFT", button, "TOPLEFT", 170, -5); factionIcon:SetSize(60, 60); if faction == "Alliance" then factionIcon:SetTexture(FACTION_ICONS["Alliance"]); else factionIcon:SetTexture(FACTION_ICONS["Horde"]); end factionIcon:Show(); -- Nombre local nameText = _G["CharSelectCharacterButton"..index.."ButtonTextName"]; if not nameText then nameText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextName", "OVERLAY", "GlueFontNormal"); end nameText:ClearAllPoints(); nameText:SetPoint("TOPLEFT", button, "TOPLEFT", 0, -8); nameText:SetText(name); -- Nivel local levelText = _G["CharSelectCharacterButton"..index.."ButtonTextLevel"]; if not levelText then levelText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextLevel", "OVERLAY", "GlueFontNormalSmall"); end levelText:ClearAllPoints(); -- Separador entre nivel y clase local separatorText = _G["CharSelectCharacterButton"..index.."ButtonTextSeparator"]; if not separatorText then separatorText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextSeparator", "OVERLAY", "GlueFontNormalSmall"); end separatorText:ClearAllPoints(); separatorText:SetPoint("TOPLEFT", button, "TOPLEFT", 20, -25); separatorText:SetText("|cffffffff-|r"); if level < 10 then levelText:SetPoint("TOPLEFT", button, "TOPLEFT", 5, -25); levelText:SetText("|cffffffff"..level.."|r"); else levelText:SetPoint("TOPLEFT", button, "TOPLEFT", 0, -25); levelText:SetText("|cffffffff"..level.."|r"); end -- Clase local classText = _G["CharSelectCharacterButton"..index.."ButtonTextClass"]; if not classText then classText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextClass", "OVERLAY", "GlueFontNormalSmall"); end classText:ClearAllPoints(); classText:SetPoint("TOPLEFT", button, "TOPLEFT", 30, -25); classText:SetWidth(150); classText:SetJustifyH("LEFT"); classText:SetWordWrap(false); local displayClass = LOCALIZED_CLASS_NAMES[class] or LOCALIZED_CLASS_NAMES[strupper(class)] or class; local classColor = CLASS_COLORS[displayClass] or CLASS_COLORS[strupper(class)] or "|cffFFFFFF"; classText:SetText(classColor..displayClass.."|r"); -- Zona local zoneText = _G["CharSelectCharacterButton"..index.."ButtonTextZone"]; if not zoneText then zoneText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextZone", "OVERLAY", "GlueFontNormalSmall"); end zoneText:ClearAllPoints(); zoneText:SetPoint("TOPLEFT", button, "TOPLEFT", 0, -40); zoneText:SetWidth(180); zoneText:SetJustifyH("LEFT"); zoneText:SetWordWrap(false); zoneText:SetText(zone); zoneText:SetTextColor(0.3, 0.3, 0.3); -- Estado: Vivo/Muerto local statusText = _G["CharSelectCharacterButton"..index.."ButtonTextStatus"]; if not statusText then statusText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextStatus", "OVERLAY", "GlueFontNormalSmall"); end statusText:ClearAllPoints(); if ghost then statusText:SetPoint("TOPLEFT", button, "TOPLEFT", 170, -5); statusText:SetFont("Fonts\\FRIZQT__.TTF", 12, "OUTLINE"); statusText:SetTextColor(1, 0.2, 0.2); local glueLocale = GetGlueLocale and GetGlueLocale() or GetLocale() or "enUS"; local deadText = _G["DEAD_INF"] or (_G["GlueStrings"] and _G["GlueStrings"]["DEAD_INF"] and _G["GlueStrings"]["DEAD_INF"][glueLocale]); statusText:SetText(deadText); else statusText:SetPoint("TOPLEFT", button, "TOPLEFT", 182, -5); statusText:SetFont("Fonts\\FRIZQT__.TTF", 12, "OUTLINE"); statusText:SetTextColor(0.2, 1, 0.2); local glueLocale = GetGlueLocale and GetGlueLocale() or GetLocale() or "enUS"; local aliveText = _G["LIFE_INF"] or (_G["GlueStrings"] and _G["GlueStrings"]["LIFE_INF"] and _G["GlueStrings"]["LIFE_INF"][glueLocale]); statusText:SetText(aliveText); end end button:Show(); _G["CharSelectCharacterCustomize"..index]:Hide(); _G["CharSelectRaceChange"..index]:Hide(); _G["CharSelectFactionChange"..index]:Hide(); if (PFC) then _G["CharSelectFactionChange"..index]:Show(); elseif (PRC) then _G["CharSelectRaceChange"..index]:Show(); elseif (PCC) then _G["CharSelectCharacterCustomize"..index]:Show(); end index = index + 1; if (index > MAX_CHARACTERS_DISPLAYED) then break; end end for i = index, MAX_CHARACTERS_DISPLAYED do local button = _G["CharSelectCharacterButton"..i]; local defaultBg = _G["CharSelectCharacterButton"..i.."DefaultBackground"]; if not defaultBg then defaultBg = button:CreateTexture("CharSelectCharacterButton"..i.."DefaultBackground", "BACKGROUND"); end defaultBg:ClearAllPoints(); defaultBg:SetPoint("CENTER", button, "CENTER", -22, 1); defaultBg:SetSize(242, 61); defaultBg:SetTexture("Interface\\Glues\\CharacterSelect\\uicharacterselectglues2x"); defaultBg:SetTexCoord(0.619628906, 0.929199219, 0.242675781, 0.336425781); defaultBg:Show(); local generalBg = _G["CharSelectCharacterButton"..i.."GeneralBackground"]; if generalBg then generalBg:Hide(); end local background = _G["CharSelectCharacterButton"..i.."Background"]; if background then background:Hide(); end local factionIcon = _G["CharSelectCharacterButton"..i.."FactionIcon"]; if factionIcon then factionIcon:Hide(); end local nameText = _G["CharSelectCharacterButton"..i.."ButtonTextName"]; if nameText then nameText:SetText(""); end local levelText = _G["CharSelectCharacterButton"..i.."ButtonTextLevel"]; if levelText then levelText:SetText(""); end local separatorText = _G["CharSelectCharacterButton"..i.."ButtonTextSeparator"]; if separatorText then separatorText:Hide(); end local classText = _G["CharSelectCharacterButton"..i.."ButtonTextClass"]; if classText then classText:SetText(""); end local zoneText = _G["CharSelectCharacterButton"..i.."ButtonTextZone"]; if zoneText then zoneText:SetText(""); end local statusText = _G["CharSelectCharacterButton"..i.."ButtonTextStatus"]; if statusText then statusText:SetText(""); end _G["CharSelectCharacterCustomize"..i]:Hide(); _G["CharSelectRaceChange"..i]:Hide(); _G["CharSelectFactionChange"..i]:Hide(); button:Show(); end if ( numChars == 0 ) then CharacterSelect.selectedIndex = 0; CharacterSelect_SelectCharacter(CharacterSelect.selectedIndex, 1); CharacterSelectDeleteButton:Disable(); CharSelectEnterWorldButton:Disable(); else CharacterSelectDeleteButton:Enable(); CharSelectEnterWorldButton:Enable(); end CharacterSelect.createIndex = 0; local connected = IsConnectedToServer(); if (numChars < MAX_CHARACTERS_PER_REALM and connected) then CharacterSelect.createIndex = numChars + 1; CharSelectCreateCharacterButton:SetID(CharacterSelect.createIndex); CharSelectCreateCharacterButton:Show(); else CharSelectCreateCharacterButton:Hide(); end if ( CharacterSelect.selectLast == 1 ) then CharacterSelect.selectLast = 0; CharacterSelect_SelectCharacter(numChars, 1); return; end if ( (CharacterSelect.selectedIndex == 0) or (CharacterSelect.selectedIndex > numChars) ) then CharacterSelect.selectedIndex = 1; end CharacterSelect_SelectCharacter(CharacterSelect.selectedIndex, 1); end function CharacterSelectButton_OnClick(self) local id = self:GetID(); local numChars = GetNumCharacters(); if ( id <= numChars and id ~= CharacterSelect.selectedIndex ) then CharacterSelect_SelectCharacter(id); else PlaySound("igMainMenuOptionCheckBoxOn"); end end function CharacterSelectButton_OnDoubleClick(self) local id = self:GetID(); local numChars = GetNumCharacters(); if ( id <= numChars ) then if ( id ~= CharacterSelect.selectedIndex ) then CharacterSelect_SelectCharacter(id); end CharacterSelect_EnterWorld(); else PlaySound("igMainMenuOptionCheckBoxOn"); end end function CharacterSelect_TabResize(self) local buttonMiddle = _G[self:GetName().."Middle"]; local buttonMiddleDisabled = _G[self:GetName().."MiddleDisabled"]; local width = self:GetTextWidth() - 8; local leftWidth = _G[self:GetName().."Left"]:GetWidth(); buttonMiddle:SetWidth(width); buttonMiddleDisabled:SetWidth(width); self:SetWidth(width + (2 * leftWidth)); end function CharacterSelect_SelectCharacter(id, noCreate) if ( id == CharacterSelect.createIndex ) then if ( not noCreate ) then PlaySound("gsCharacterSelectionCreateNew"); SetGlueScreen("charcreate"); end else CharacterSelect.currentModel = GetSelectBackgroundModel(id); SetBackgroundModel(CharacterSelect,CharacterSelect.currentModel); SelectCharacter(id); end end function CharacterDeleteDialog_OnShow() local name, race, class, level = GetCharacterInfo(CharacterSelect.selectedIndex); local faction, isAlliance; if name == "You" or name == "Found" or name == "Asecret" or name == "Area" then DisconnectFromServer(); CharacterDeleteDialog:Hide(); return; end local factionType = GetFactionForRaceName(race) if factionType == "Alliance" then faction = ALLIANCE_RACE; isAlliance = true; else faction = HORDE_RACE; isAlliance = false; end CharacterDeleteText1:SetFont("Fonts\\FRIZQT__.TTF", 12) CharacterDeleteText2:SetFont("Fonts\\FRIZQT__.TTF", 10) CharacterDeleteAlertText:SetFont("Fonts\\FRIZQT__.TTF", 10) CharacterDeleteAlertText:SetTextColor(1, 0.2, 0.2) CharacterDeleteAlertText:SetText(WARNING_CHAR_INF) CharacterDeleteCenterText:SetFont("Fonts\\FRIZQT__.TTF", 11) CharacterDeleteCenterText:SetTextColor(1, 0, 0) CharacterDeleteCenterText:SetText(WARNING_INF) CharacterDeleteText1:SetFormattedText(CONFIRM_CHAR_DELETE, name, level, class, faction); CharacterDeleteText1:ClearAllPoints() CharacterDeleteText1:SetPoint("CENTER", CharacterDeleteBackground, "CENTER", 0, 50) CharacterDeleteText2:ClearAllPoints() CharacterDeleteText2:SetPoint("CENTER", CharacterDeleteBackground, "CENTER", 0, -20) CharacterDeleteBackground:SetWidth(300); CharacterDeleteBackground:SetHeight(250); CharacterDeleteButton1:Disable(); if not CharacterDeleteLeftTexture then CharacterDeleteLeftTexture = CharacterDeleteBackground:CreateTexture(nil, "ARTWORK") CharacterDeleteLeftTexture:SetSize(42, 42) CharacterDeleteLeftTexture:SetPoint("RIGHT", CharacterDeleteText1, "LEFT", 70, 0) CharacterDeleteLeftTexture:SetTexture("Interface\\Glues\\CharacterSelect\\PlusManz-Alliance") end if not CharacterDeleteRightTexture then CharacterDeleteRightTexture = CharacterDeleteBackground:CreateTexture(nil, "ARTWORK") CharacterDeleteRightTexture:SetSize(42, 42) CharacterDeleteRightTexture:SetPoint("LEFT", CharacterDeleteText1, "RIGHT", -70, 0) CharacterDeleteRightTexture:SetTexture("Interface\\Glues\\CharacterSelect\\PlusManz-Horde") end if isAlliance == true then CharacterDeleteLeftTexture:SetDesaturated(false) CharacterDeleteLeftTexture:SetAlpha(1.0) CharacterDeleteRightTexture:SetDesaturated(true) CharacterDeleteRightTexture:SetAlpha(0.6) else CharacterDeleteRightTexture:SetDesaturated(false) CharacterDeleteRightTexture:SetAlpha(1.0) CharacterDeleteLeftTexture:SetDesaturated(true) CharacterDeleteLeftTexture:SetAlpha(0.6) end CharacterDeleteLeftTexture:Show() CharacterDeleteRightTexture:Show() if not CharacterDeleteTooltip then CharacterDeleteTooltip = CreateFrame("Frame", nil, CharacterDeleteBackground) CharacterDeleteTooltip:SetFrameLevel(CharacterDeleteBackground:GetFrameLevel() - 1) CharacterDeleteTooltip:SetBackdrop({ bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\Tooltips\\ui-tooltip-border-mawBlack", tile = true, tileSize = 12, edgeSize = 12, insets = { left = 3, right = 3, top = 3, bottom = 3 } }) CharacterDeleteTooltip:SetBackdropColor(0, 0, 0) end CharacterDeleteTooltip:ClearAllPoints() CharacterDeleteTooltip:SetPoint("LEFT", CharacterDeleteLeftTexture, "LEFT", -10, 0) CharacterDeleteTooltip:SetPoint("RIGHT", CharacterDeleteRightTexture, "RIGHT", 10, 0) CharacterDeleteTooltip:SetPoint("TOP", CharacterDeleteText1, "TOP", 0, 8) CharacterDeleteTooltip:SetPoint("BOTTOM", CharacterDeleteText1, "BOTTOM", 0, -10) CharacterDeleteTooltip:Show() if not CharacterDeleteCenterTooltip then CharacterDeleteCenterTooltip = CreateFrame("Frame", nil, CharacterDeleteBackground) CharacterDeleteCenterTooltip:SetFrameLevel(CharacterDeleteBackground:GetFrameLevel() - 1) CharacterDeleteCenterTooltip:SetBackdrop({ bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = "Interface\\Tooltips\\ui-tooltip-border-mawBlack", tile = true, tileSize = 12, edgeSize = 12, insets = { left = 3, right = 3, top = 3, bottom = 3 } }) CharacterDeleteCenterTooltip:SetBackdropColor(0, 0, 0) end CharacterDeleteCenterTooltip:ClearAllPoints() CharacterDeleteCenterTooltip:SetPoint("TOP", CharacterDeleteCenterText, "TOP", 0, 5) CharacterDeleteCenterTooltip:SetPoint("BOTTOM", CharacterDeleteCenterText, "BOTTOM", 0, -5) CharacterDeleteCenterTooltip:SetPoint("LEFT", CharacterDeleteCenterText, "LEFT", 20, 0) CharacterDeleteCenterTooltip:SetPoint("RIGHT", CharacterDeleteCenterText, "RIGHT", -20, 0) CharacterDeleteCenterTooltip:Show() CharacterDeleteEditBox:SetText("") CharacterDeleteEditBox:SetFocus() end function CharacterSelect_EnterWorld() PlaySound("gsCharacterSelectionEnterWorld"); StopGlueAmbience(); EnterWorld(); end function CharacterSelect_Exit() PlaySound("gsCharacterSelectionExit"); DisconnectFromServer(); SetGlueScreen("login"); end function CharacterSelect_AccountOptions() PlaySound("gsCharacterSelectionAcctOptions"); end function CharacterSelect_TechSupport() PlaySound("gsCharacterSelectionAcctOptions"); LaunchURL(TECH_SUPPORT_URL); end function CharacterSelect_Delete() PlaySound("gsCharacterSelectionDelCharacter"); if ( CharacterSelect.selectedIndex > 0 ) then CharacterDeleteDialog:Show(); end end function CharacterSelect_ChangeRealm() PlaySound("gsCharacterSelectionDelCharacter"); RequestRealmList(1); end function CharacterSelectFrame_OnMouseDown(button) if ( button == "LeftButton" ) then CHARACTER_SELECT_ROTATION_START_X = GetCursorPosition(); CHARACTER_SELECT_INITIAL_FACING = GetCharacterSelectFacing(); end end function CharacterSelectFrame_OnMouseUp(button) if ( button == "LeftButton" ) then CHARACTER_SELECT_ROTATION_START_X = nil end end function CharacterSelectFrame_OnUpdate() if ( CHARACTER_SELECT_ROTATION_START_X ) then local x = GetCursorPosition(); local diff = (x - CHARACTER_SELECT_ROTATION_START_X) * CHARACTER_ROTATION_CONSTANT; CHARACTER_SELECT_ROTATION_START_X = GetCursorPosition(); SetCharacterSelectFacing(GetCharacterSelectFacing() + diff); end end function CharacterSelectRotateRight_OnUpdate(self) if ( self:GetButtonState() == "PUSHED" ) then SetCharacterSelectFacing(GetCharacterSelectFacing() + CHARACTER_FACING_INCREMENT); end end function CharacterSelectRotateLeft_OnUpdate(self) if ( self:GetButtonState() == "PUSHED" ) then SetCharacterSelectFacing(GetCharacterSelectFacing() - CHARACTER_FACING_INCREMENT); end end function CharacterSelect_ManageAccount() PlaySound("gsCharacterSelectionAcctOptions"); LaunchURL(AUTH_NO_TIME_URL); end function RealmSplit_GetFormatedChoice(formatText) if ( SERVER_SPLIT_CLIENT_STATE == 1 ) then realmChoice = SERVER_SPLIT_SERVER_ONE; else realmChoice = SERVER_SPLIT_SERVER_TWO; end return format(formatText, realmChoice); end function RealmSplit_SetChoiceText() RealmSplitCurrentChoice:SetText( RealmSplit_GetFormatedChoice(SERVER_SPLIT_CURRENT_CHOICE) ); RealmSplitCurrentChoice:Show(); end function CharacterSelect_PaidServiceOnClick(self, button, down, service) PAID_SERVICE_CHARACTER_ID = self:GetID(); PAID_SERVICE_TYPE = service; PlaySound("gsCharacterSelectionCreateNew"); SetGlueScreen("charcreate"); end function CharacterSelect_DeathKnightSwap(self) if ( CharacterSelect.currentModel == "DEATHKNIGHT" ) then if (self.currentModel ~= "DEATHKNIGHT") then self.currentModel = "DEATHKNIGHT"; self:SetNormalTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Up-Blue"); self:SetPushedTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Down-Blue"); self:SetHighlightTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Highlight-Blue"); end else if (self.currentModel == "DEATHKNIGHT") then self.currentModel = nil; self:SetNormalTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Up"); self:SetPushedTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Down"); self:SetHighlightTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Highlight"); end end end