Forum > Miscellaneous
[QUESTION] Races Models Not Working
(1/1)
ivanitt:
Hi there, i just want to ask you how to fix this problem that appears on my custom races (Goblins and FelOrcs).
When i select them, no model appears...
[Screenshots attached] [attachment=1:1jed075j]WoWScrnShot_101312_201326.jpg[/attachment:1jed075j] [attachment=0:1jed075j]WoWScrnShot_101312_201332.jpg[/attachment:1jed075j]
What can i do to fix this? Thank you very much
schlumpf:
Well, then add a model filename in the array.
ivanitt:
--- Quote from: "schlumpf" ---Well, then add a model filename in the array. --- End quote ---
in which array?
schlumpf:
GlueXML/something.lua. I guess GlueParent, AccountLogin or such. Surely, the name can be found in AccountLogin. The array itself was somewhere else.
ivanitt:
--- Quote from: "schlumpf" ---GlueXML/something.lua. I guess GlueParent, AccountLogin or such. Surely, the name can be found in AccountLogin. The array itself was somewhere else. --- End quote ---
I edited and still the same error:
--- Code: ---CurrentGlueMusic = "GS_LichKing";
GlueCreditsSoundKits = { }; GlueCreditsSoundKits[1] = "Menu-Credits01"; GlueCreditsSoundKits[2] = "Menu-Credits02"; GlueCreditsSoundKits[3] = "Menu-Credits03";
GlueScreenInfo = { }; GlueScreenInfo["login"] = "AccountLogin"; GlueScreenInfo["charselect"] = "CharacterSelect"; GlueScreenInfo["realmwizard"] = "RealmWizard"; GlueScreenInfo["charcreate"] = "CharacterCreate"; GlueScreenInfo["patchdownload"] = "PatchDownload"; GlueScreenInfo["trialconvert"] = "TrialConvert"; GlueScreenInfo["movie"] = "MovieFrame"; GlueScreenInfo["credits"] = "CreditsFrame"; GlueScreenInfo["options"] = "OptionsFrame";
CharModelFogInfo = { }; CharModelFogInfo["HUMAN"] = { r=0.8, g=0.65, b=0.73, far=222 }; CharModelFogInfo["ORC"] = { r=0.5, g=0.5, b=0.5, far=270 }; CharModelFogInfo["DWARF"] = { r=0.85, g=0.88, b=1.0, far=500 }; CharModelFogInfo["NIGHTELF"] = { r=0.25, g=0.22, b=0.55, far=611 }; CharModelFogInfo["TAUREN"] = { r=1.0, g=0.61, b=0.42, far=153 }; CharModelFogInfo["SCOURGE"] = { r=0, g=0.22, b=0.22, far=26 }; CharModelFogInfo["CHARACTERSELECT"] = { r=0.8, g=0.65, b=0.73, far=222 };
CharModelGlowInfo = { }; CharModelGlowInfo["WORGEN"] = 0.0; CharModelGlowInfo["GOBLIN"] = 0.0; CharModelGlowInfo["HUMAN"] = 0.15; CharModelGlowInfo["DWARF"] = 0.15; CharModelGlowInfo["CHARACTERSELECT"] = 0.3;
GlueAmbienceTracks = { }; GlueAmbienceTracks["HUMAN"] = "GlueScreenHuman"; GlueAmbienceTracks["ORC"] = "GlueScreenOrcTroll"; GlueAmbienceTracks["FELORC"] = "GlueScreenOrcTroll"; GlueAmbienceTracks["GOBLIN"] = "GlueScreenOrcTroll"; GlueAmbienceTracks["DWARF"] = "GlueScreenDwarfGnome"; GlueAmbienceTracks["TAUREN"] = "GlueScreenTauren"; GlueAmbienceTracks["SCOURGE"] = "GlueScreenUndead"; GlueAmbienceTracks["NIGHTELF"] = "GlueScreenNightElf"; GlueAmbienceTracks["DRAENEI"] = "GlueScreenDraenei"; GlueAmbienceTracks["BLOODELF"] = "GlueScreenBloodElf"; GlueAmbienceTracks["DARKPORTAL"] = "GlueScreenIntro"; GlueAmbienceTracks["DEATHKNIGHT"] = "GlueScreenIntro"; GlueAmbienceTracks["CHARACTERSELECT"] = "GlueScreenIntro";
-- RaceLights[] duplicates the 3.2.2 color values in the models. Henceforth, the models no longer contain directional lights RaceLights = { HUMAN = { {1, 0, 0.000000, 0.000000, -1.000000, 1.0, 0.27, 0.27, .27, 1.0, 0, 0, 0}, {1, 0, -0.45756075, -0.58900136, -0.66611975, 1.0, 0.000000, 0.000000, 0.000000, 1.0, 0.19882353, 0.34921569, 0.43588236 }, {1, 0, -0.64623469, 0.57582057, -0.50081086, 1.0, 0.000000, 0.000000, 0.000000, 2.0, 0.52196085, 0.44, 0.29764709 }, }, ORC = { {1, 0, 0.00000, 0.00000, -1.00000, 1.0, 0.15000, 0.15000, 0.15000, 1.0, 0.00000, 0.00000, 0.00000}, {1, 0, -0.74919, 0.35208, -0.56103, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.44706, 0.54510, 0.73725}, {1, 0, 0.53162, -0.84340, 0.07780, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.55, 0.338625, 0.148825}, }, DWARF = { {1, 0, -0.00000, -0.00000, -1.00000, 1.0, 0.30000, 0.30000, 0.30000, 0.0, 0.00000, 0.00000, 0.00000}, {1, 0, -0.88314, 0.42916, -0.18945, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.44706, 0.67451, 0.760785}, }, TAUREN = { {1, 0, -0.48073, 0.71827, -0.50297, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.65, 0.397645, 0.2727}, {1, 0, -0.49767, -0.78677, 0.36513, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.60000, 0.47059, 0.32471}, }, SCOURGE = { {1, 0, 0.00000, 0.00000, -1.00000, 1.0, 0.20000, 0.20000, 0.20000, 1.0, 0.00000, 0.00000, 0.00000}, }, NIGHTELF = { {1, 0, -0.00000, -0.00000, -1.00000, 1.0, 0.09020, 0.09020, 0.17020, 1.0, 0.00000, 0.00000, 0.00000}, }, DRAENEI = { {1, 0, 0.61185, 0.62942, -0.47903, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.56941, 0.52000, 0.60000}, {1, 0, -0.64345, -0.31052, -0.69968, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.60941, 0.60392, 0.70000}, {1, 0, -0.46481, -0.14320, 0.87376, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.5835, 0.48941, 0.60000}, }, BLOODELF = { {1, 0, -0.82249, -0.54912, -0.14822, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.581175, 0.50588, 0.42588}, {1, 0, 0.00000, -0.00000, -1.00000, 1.0, 0.60392, 0.61490, 0.70000, 1.0, 0.00000, 0.00000, 0.00000}, {1, 0, 0.02575, 0.86518, -0.50081, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.59137, 0.51745, 0.63471}, }, DEATHKNIGHT = { {1, 0, 0.00000, 0.00000, -1.00000, 1.0, 0.38824, 0.66353, 0.76941, 1.0, 0.00000, 0.00000, 0.00000}, }, CHARACTERSELECT = { {1, 0, 0.00000, 0.00000, -1.00000, 1.0, 0.15000, 0.15000, 0.15000, 1.0, 0.00000, 0.00000, 0.00000}, {1, 0, -0.74919, 0.35208, -0.56103, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.44706, 0.54510, 0.73725}, {1, 0, 0.53162, -0.84340, 0.07780, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.55, 0.338625, 0.148825}, }, }
-- indicies for adding lights ModelFFX:Add*Light LIGHT_LIVE = 0; LIGHT_GHOST = 1;
-- Alpha animation stuff FADEFRAMES = {}; CURRENT_GLUE_SCREEN = nil; PENDING_GLUE_SCREEN = nil; -- Time in seconds to fade LOGIN_FADE_IN = 1.5; LOGIN_FADE_OUT = 0.5; CHARACTER_SELECT_FADE_IN = 0.75; RACE_SELECT_INFO_FADE_IN = .5; RACE_SELECT_INFO_FADE_OUT = .5;
-- Realm Split info SERVER_SPLIT_SHOW_DIALOG = false; SERVER_SPLIT_CLIENT_STATE = -1; -- -1 uninitialized; 0 - no choice; 1 - realm 1; 2 - realm 2 SERVER_SPLIT_STATE_PENDING = -1; -- -1 uninitialized; 0 - no server split; 1 - server split (choice mode); 2 - server split (no choice mode) SERVER_SPLIT_DATE = nil;
-- Account Messaging info ACCOUNT_MSG_NUM_AVAILABLE = 0; ACCOUNT_MSG_PRIORITY = 0; ACCOUNT_MSG_HEADERS_LOADED = false; ACCOUNT_MSG_BODY_LOADED = false; ACCOUNT_MSG_CURRENT_INDEX = nil;
-- Gender Constants SEX_NONE = 1; SEX_MALE = 2; SEX_FEMALE = 3;
function SetGlueScreen(name) local newFrame; for index, value in pairs(GlueScreenInfo) do local frame = _G[value]; if ( frame ) then frame:Hide(); if ( index == name ) then newFrame = frame; end end end if ( newFrame ) then newFrame:Show(); SetCurrentScreen(name); SetCurrentGlueScreenName(name); if ( name == "credits" ) then PlayCreditsMusic( GlueCreditsSoundKits[CreditsFrame.creditsType] ); StopGlueAmbience(); elseif ( name ~= "movie" ) then PlayGlueMusic(CurrentGlueMusic); if (name == "login") then PlayGlueAmbience(GlueAmbienceTracks["DARKPORTAL"], 4.0); end end end end
function SetCurrentGlueScreenName(name) CURRENT_GLUE_SCREEN = name; end
function GetCurrentGlueScreenName() return CURRENT_GLUE_SCREEN; end
function SetPendingGlueScreenName(name) PENDING_GLUE_SCREEN = name; end
function GetPendingGlueScreenName() return PENDING_GLUE_SCREEN; end
function GlueParent_OnLoad(self) local width = GetScreenWidth(); local height = GetScreenHeight(); if ( width / height > 16 / 9) then local maxWidth = height * 16 / 9; local barWidth = ( width - maxWidth ) / 2; self:ClearAllPoints(); self:SetPoint("TOPLEFT", barWidth, 0); self:SetPoint("BOTTOMRIGHT", -barWidth, 0); end self:RegisterEvent("FRAMES_LOADED"); self:RegisterEvent("SET_GLUE_SCREEN"); self:RegisterEvent("START_GLUE_MUSIC"); self:RegisterEvent("DISCONNECTED_FROM_SERVER"); self:RegisterEvent("GET_PREFERRED_REALM_INFO"); self:RegisterEvent("SERVER_SPLIT_NOTICE"); self:RegisterEvent("ACCOUNT_MESSAGES_AVAILABLE"); self:RegisterEvent("ACCOUNT_MESSAGES_HEADERS_LOADED"); self:RegisterEvent("ACCOUNT_MESSAGES_BODY_LOADED"); end
function GlueParent_OnEvent(event, arg1, arg2, arg3) if ( event == "FRAMES_LOADED" ) then LocalizeFrames(); elseif ( event == "SET_GLUE_SCREEN" ) then GlueScreenExit(GetCurrentGlueScreenName(), arg1); elseif ( event == "START_GLUE_MUSIC" ) then PlayGlueMusic(CurrentGlueMusic); PlayGlueAmbience(GlueAmbienceTracks["DARKPORTAL"], 4.0); elseif ( event == "DISCONNECTED_FROM_SERVER" ) then TokenEntry_Cancel(TokenEnterDialog); SetGlueScreen("login"); if ( arg1 == 4 ) then GlueDialog_Show("PARENTAL_CONTROL"); else GlueDialog_Show("DISCONNECTED"); end AddonList:Hide(); elseif ( event == "GET_PREFERRED_REALM_INFO" ) then if( arg1 == 1) then SetPreferredInfo(1); else SetGlueScreen("realmwizard"); PlayGlueAmbience(GlueAmbienceTracks["DARKPORTAL"], 4.0); end elseif ( event == "SERVER_SPLIT_NOTICE" ) then CharacterSelectRealmSplitButton:Show(); if ( SERVER_SPLIT_STATE_PENDING == -1 and arg1 == 0 and arg2 == 1 ) then SERVER_SPLIT_SHOW_DIALOG = true; end SERVER_SPLIT_CLIENT_STATE = arg1; SERVER_SPLIT_STATE_PENDING = arg2; SERVER_SPLIT_DATE = arg3; elseif ( event == "ACCOUNT_MESSAGES_AVAILABLE" ) then -- ACCOUNT_MSG_NUM_AVAILABLE = arg1; ACCOUNT_MSG_HEADERS_LOADED = false; ACCOUNT_MSG_BODY_LOADED = false; ACCOUNT_MSG_CURRENT_INDEX = nil; AccountMsg_LoadHeaders(); elseif ( event == "ACCOUNT_MESSAGES_HEADERS_LOADED" ) then ACCOUNT_MSG_HEADERS_LOADED = true; ACCOUNT_MSG_NUM_AVAILABLE = AccountMsg_GetNumUnreadMsgs(); ACCOUNT_MSG_CURRENT_INDEX = AccountMsg_GetIndexNextUnreadMsg(); if ( ACCOUNT_MSG_NUM_AVAILABLE > 0 ) then AccountMsg_LoadBody( ACCOUNT_MSG_CURRENT_INDEX ); end elseif ( event == "ACCOUNT_MESSAGES_BODY_LOADED" ) then ACCOUNT_MSG_BODY_LOADED = true; end end
-- Glue screen animation handling function GlueScreenExit(currentFrame, pendingFrame) if ( currentFrame == "login" and pendingFrame == "charselect" ) then GlueFrameFadeOut(AccountLoginUI, LOGIN_FADE_OUT, GoToPendingGlueScreen); SetPendingGlueScreenName(pendingFrame); else SetGlueScreen(pendingFrame); end end
function GoToPendingGlueScreen() SetGlueScreen(GetPendingGlueScreenName()); end
-- Generic fade function function GlueFrameFade(frame, timeToFade, mode, finishedFunction) if ( frame ) then frame.fadeTimer = 0; frame.timeToFade = timeToFade; frame.mode = mode; -- finishedFunction is an optional function that is called when the animation is complete if ( finishedFunction ) then frame.finishedFunction = finishedFunction; end tinsert(FADEFRAMES, frame); end end
-- Fade in function function GlueFrameFadeIn(frame, timeToFade, finishedFunction) GlueFrameFade(frame, timeToFade, "IN", finishedFunction); end
-- Fade out function function GlueFrameFadeOut(frame, timeToFade, finishedFunction) GlueFrameFade(frame, timeToFade, "OUT", finishedFunction); end
-- Function that actually performs the alpha change function GlueFrameFadeUpdate(elapsed) local index = 1; while FADEFRAMES[index] do local frame = FADEFRAMES[index]; frame.fadeTimer = frame.fadeTimer + elapsed; if ( frame.fadeTimer < frame.timeToFade ) then if ( frame.mode == "IN" ) then frame:SetAlpha(frame.fadeTimer / frame.timeToFade); elseif ( frame.mode == "OUT" ) then frame:SetAlpha((frame.timeToFade - frame.fadeTimer) / frame.timeToFade); end else if ( frame.mode == "IN" ) then frame:SetAlpha(1.0); elseif ( frame.mode == "OUT" ) then frame:SetAlpha(0); end GlueFrameFadeRemoveFrame(frame); if ( frame.finishedFunction ) then frame.finishedFunction(); frame.finishedFunction = nil; end end index = index + 1; end end
function GlueFrameRemoveFrame(frame, list) local index = 1; while list[index] do if ( frame == list[index] ) then tremove(list, index); end index = index + 1; end end
function GlueFrameFadeRemoveFrame(frame) GlueFrameRemoveFrame(frame, FADEFRAMES); end
function SetLighting(model, race) model:SetSequence(0); model:SetCamera(0); local fogInfo = CharModelFogInfo[race]; if ( fogInfo ) then model:SetFogColor(fogInfo.r, fogInfo.g, fogInfo.b); model:SetFogNear(0); model:SetFogFar(fogInfo.far); else model:ClearFog(); end
local glowInfo = CharModelGlowInfo[race]; if ( glowInfo ) then model:SetGlow(glowInfo); else model:SetGlow(0.3); end
model:ResetLights(); --[[ ResetLights() sets all 6 light sets to default for the background. The six sets are:
background - live background - ghost character - live character - ghost pet - live pet - ghost
If you add a light to any one of these, NONE of the default lights are used for that set (most backgrounds have 3).
You can add up to four lights per light set in the current version. They are merged in the engine.
The current version only supports setting directional lights, and pulls the default point lights from the models. ]] local LightValues = RaceLights[race]; if(LightValues) then for index, Array in pairs (LightValues) do if (Array[1]==1) then -- is this light enabled? for j, f in pairs ({model.AddCharacterLight, model.AddLight, model.AddPetLight }) do f(model, LIGHT_LIVE, unpack(Array)); end end end end end
-- Function to set the background model for character select and create screens function SetBackgroundModel(model, name) local nameupper = strupper(name); local path = "Interface\Glues\Models\UI_"..name.."\UI_"..name..".m2"; if ( model == CharacterCreate ) then SetCharCustomizeBackground(path); else SetCharSelectBackground(path); end PlayGlueAmbience(GlueAmbienceTracks[nameupper], 4.0); SetLighting(model, nameupper) end
function SecondsToTime(seconds, noSeconds) local time = ""; local count = 0; local tempTime; seconds = floor(seconds); if ( seconds >= 86400 ) then tempTime = floor(seconds / 86400); time = tempTime.." "..DAYS_ABBR.." "; seconds = mod(seconds, 86400); count = count + 1; end if ( seconds >= 3600 ) then tempTime = floor(seconds / 3600); time = time..tempTime.." "..HOURS_ABBR.." "; seconds = mod(seconds, 3600); count = count + 1; end if ( count < 2 and seconds >= 60 ) then tempTime = floor(seconds / 60); time = time..tempTime.." "..MINUTES_ABBR.." "; seconds = mod(seconds, 60); count = count + 1; end if ( count < 2 and seconds > 0 and not noSeconds ) then seconds = format("%d", seconds); time = time..seconds.." "..SECONDS_ABBR.." "; end return time; end
function MinutesToTime(mins, hideDays) local time = ""; local count = 0; local tempTime; -- only show days if hideDays is false if ( mins > 1440 and not hideDays ) then tempTime = floor(mins / 1440); time = tempTime.." "..DAYS_ABBR.." "; mins = mod(mins, 1440); count = count + 1; end if ( mins > 60 ) then tempTime = floor(mins / 60); time = time..tempTime.." "..HOURS_ABBR.." "; mins = mod(mins, 60); count = count + 1; end if ( count < 2 ) then tempTime = mins; time = time..tempTime.." "..MINUTES_ABBR.." "; count = count + 1; end return time; end
function TriStateCheckbox_SetState(checked, checkButton) local checkedTexture = _G[checkButton:GetName().."CheckedTexture"]; if ( not checkedTexture ) then message("Can't find checked texture"); end if ( not checked or checked == 0 ) then -- nil or 0 means not checked checkButton:SetChecked(nil); checkButton.state = 0; elseif ( checked == 2 ) then -- 2 is a normal checkButton:SetChecked(1); checkedTexture:SetVertexColor(1, 1, 1); checkedTexture:SetDesaturated(0); checkButton.state = 2; else -- 1 is a gray check checkButton:SetChecked(1); local shaderSupported = checkedTexture:SetDesaturated(1); if ( not shaderSupported ) then checkedTexture:SetVertexColor(0.5, 0.5, 0.5); end checkButton.state = 1; end end
function SetStateRequestInfo( choice ) if ( SERVER_SPLIT_CLIENT_STATE ~= choice ) then SERVER_SPLIT_CLIENT_STATE = choice; SetRealmSplitState(choice); RealmSplit_SetChoiceText(); -- RequestRealmSplitInfo(); end end
function UpgradeAccount() PlaySound("gsLoginNewAccount"); LaunchURL(AUTH_NO_TIME_URL); end
--- End code ---
Navigation
[0] Message Index
|