This is a read only copy without any forum functionality of the old Modcraft forum.
If there is anything that you would like to have removed, message me on Discord via Kaev#5208.
Big thanks to Alastor for making this copy!

Menu

Author Topic: [QUESTION] Races Models Not Working  (Read 1270 times)

ivanitt

  • Registred Member
  • MS Paint Freak
  • *****
  • Posts: 3
    • View Profile
[QUESTION] Races Models Not Working
« on: October 13, 2012, 08:19:44 pm »
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
« Last Edit: January 01, 1970, 01:00:00 am by Admin »

schlumpf

  • Administrator
  • Creator of Worlds
  • *****
  • Posts: 2967
    • View Profile
Re: [QUESTION] Races Models Not Working
« Reply #1 on: October 13, 2012, 09:09:25 pm »
Well, then add a model filename in the array.
« Last Edit: January 01, 1970, 01:00:00 am by Admin »

ivanitt

  • Registred Member
  • MS Paint Freak
  • *****
  • Posts: 3
    • View Profile
Re: [QUESTION] Races Models Not Working
« Reply #2 on: October 13, 2012, 09:17:47 pm »
Quote from: "schlumpf"
Well, then add a model filename in the array.

in which array?
« Last Edit: January 01, 1970, 01:00:00 am by Admin »

schlumpf

  • Administrator
  • Creator of Worlds
  • *****
  • Posts: 2967
    • View Profile
Re: [QUESTION] Races Models Not Working
« Reply #3 on: October 13, 2012, 09:22:53 pm »
GlueXML/something.lua. I guess GlueParent, AccountLogin or such. Surely, the name can be found in AccountLogin. The array itself was somewhere else.
« Last Edit: January 01, 1970, 01:00:00 am by Admin »

ivanitt

  • Registred Member
  • MS Paint Freak
  • *****
  • Posts: 3
    • View Profile
Re: [QUESTION] Races Models Not Working
« Reply #4 on: October 13, 2012, 09:29:40 pm »
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.

I edited and still the same error:

Code: [Select]
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

« Last Edit: January 01, 1970, 01:00:00 am by Admin »