Page 1 of 1

Hero Music [Solved]

Posted: Fri May 05, 2017 1:59 pm
by KaskDaxxe
Okay, I've been simply trying to add new music to a custom hero. I've scoured through the sound guides and I'm still getting nothing.
I've done what the other audio guides explain, and put together the wav, req, stm and such, munged the files in bfbuilder, added the bits in the lua, and all I'm getting is the default music, as if there was no hero. I'm not getting any errors either. Is there a guide for hero music, or can somebody talk me through the process to see whats wrong?

Re: Hero Music

Posted: Fri May 05, 2017 4:42 pm
by giftheck
Have you defined the music that's supposed to play with your hero in the hero's ODF file?

Re: Hero Music

Posted: Fri May 05, 2017 4:56 pm
by KaskDaxxe
Yup. I've tried switching various things with audio I've added, so I don't know if its just not munged. The problem here is that theres just so much that could be wrong XD

Re: Hero Music

Posted: Fri May 05, 2017 4:58 pm
by giftheck
Does Mungelog come up with any errors when you munge? Also, are you including the .stm and .au files in your REQ file?

Post your LUA and your hero ODF. I'll see what's wrong.

Re: Hero Music

Posted: Fri May 05, 2017 5:15 pm
by KaskDaxxe
I don't see any errors.
I also don't see any .au files. That might be the problem. I remember seeng some at some point... I've defined the stm and snd in the req

Okay,
lua [KT1g_con.lua]
Hidden/Spoiler:
--
-- Copyright (c) 2005 Pandemic Studios, LLC. All rights reserved.
--

ScriptCB_DoFile("setup_teams")
ScriptCB_DoFile("ObjectiveConquest")

-- Empire Attacking (attacker is always #1)
local ALL = 2
local IMP = 1
-- These variables do not change
local ATT = 1
local DEF = 2

function ScriptPostLoad()


--This defines the CPs. These need to happen first
cp1 = CommandPost:New{name = "cp1"}
cp2 = CommandPost:New{name = "cp2"}
cp3 = CommandPost:New{name = "cp3"}
cp4 = CommandPost:New{name = "cp4"}
cp5 = CommandPost:New{name = "cp5"}


--This sets up the actual objective. This needs to happen after cp's are defined
conquest = ObjectiveConquest:New{teamATT = ATT, teamDEF = DEF,
textATT = "game.modes.con",
textDEF = "game.modes.con2",
multiplayerRules = true}

--This adds the CPs to the objective. This needs to happen after the objective is set up
conquest:AddCommandPost(cp1)
conquest:AddCommandPost(cp2)
conquest:AddCommandPost(cp3)
conquest:AddCommandPost(cp4)
conquest:AddCommandPost(cp5)

conquest:Start()

EnableSPHeroRules()

end


---------------------------------------------------------------------------
-- FUNCTION: ScriptInit
-- PURPOSE: This function is only run once
-- INPUT:
-- OUTPUT:
-- NOTES: The name, 'ScriptInit' is a chosen convention, and each
-- mission script must contain a version of this function, as
-- it is called from C to start the mission.
---------------------------------------------------------------------------

function ScriptInit()

ReadDataFile("ingame.lvl")



SetMaxFlyHeight(40)
SetMaxPlayerFlyHeight(40)


SetMemoryPoolSize ("ClothData",20)
SetMemoryPoolSize ("Combo",50) -- should be ~ 2x number of jedi classes
SetMemoryPoolSize ("Combo::State",650) -- should be ~12x #Combo
SetMemoryPoolSize ("Combo::Transition",650) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Condition",650) -- should be a bit bigger than #Combo::State
SetMemoryPoolSize ("Combo::Attack",550) -- should be ~8-12x #Combo
SetMemoryPoolSize ("Combo::DamageSample",6000) -- should be ~8-12x #Combo::Attack
SetMemoryPoolSize ("Combo::Deflect",100) -- should be ~1x #combo

ReadDataFile("sound\\tat.lvl;tat2gcw")
ReadDataFile("dc:sound\\kt1.lvl;kt1gcw")
-- ReadDataFile("sound\\global.lvl;gcw_music")

ReadDataFile("dc:SIDE\\all.lvl",
"all_inf_rifleman",
"all_inf_rocketeer",
"all_inf_sniper",
"all_inf_engineer",
"all_inf_officer",
"all_inf_wookiee",
"all_hero_wil")

ReadDataFile("dc:SIDE\\imp.lvl",
"imp_inf_rifleman",
"imp_inf_rocketeer",
"imp_inf_engineer",
"imp_inf_sniper",
"imp_inf_officer",
"imp_inf_dark_trooper",
"imp_hero_bobafett",
"imp_fly_destroyer_dome",
"imp_hover_speederbike" )

ReadDataFile("SIDE\\tur.lvl",
"tur_bldg_tat_barge",
"tur_bldg_laser")

SetupTeams{
all = {
team = ALL,
units = 20,
reinforcements = 150,
soldier = { "all_inf_rifleman",9, 25},
assault = { "all_inf_rocketeer",1,4},
engineer = { "all_inf_engineer",1,4},
sniper = { "all_inf_sniper",1,4},
officer = { "all_inf_officer",1,4},
special = { "all_inf_wookiee",1,4},

},
imp = {
team = IMP,
units = 20,
reinforcements = 150,
soldier = { "imp_inf_rifleman",9, 25},
assault = { "imp_inf_rocketeer",1,4},
engineer = { "imp_inf_engineer",1,4},
sniper = { "imp_inf_sniper",1,4},
officer = { "imp_inf_officer",1,4},
special = { "imp_inf_dark_trooper",1,4},
},
}

SetHeroClass(ALL, "all_hero_wil")
SetHeroClass(IMP, "imp_hero_bobafett")

-- Level Stats
ClearWalkers()
AddWalkerType(0, 0) -- special -> droidekas
AddWalkerType(1, 0) -- 1x2 (1 pair of legs)
AddWalkerType(2, 0) -- 2x2 (2 pairs of legs)
AddWalkerType(3, 0) -- 3x2 (3 pairs of legs)

local weaponCnt = 1024
SetMemoryPoolSize("Aimer", 75)
SetMemoryPoolSize("AmmoCounter", weaponCnt)
SetMemoryPoolSize("BaseHint", 1024)
SetMemoryPoolSize("EnergyBar", weaponCnt)
SetMemoryPoolSize("EntityCloth", 32)
SetMemoryPoolSize("EntityFlyer", 32)
SetMemoryPoolSize("EntityHover", 32)
SetMemoryPoolSize("EntityLight", 200)
SetMemoryPoolSize("EntitySoundStream", 4)
SetMemoryPoolSize("EntitySoundStatic", 32)
SetMemoryPoolSize("MountedTurret", 32)
SetMemoryPoolSize("Navigator", 128)
SetMemoryPoolSize("Obstacle", 1024)
SetMemoryPoolSize("PathNode", 1024)
SetMemoryPoolSize("SoundSpaceRegion", 64)
SetMemoryPoolSize("TreeGridStack", 1024)
SetMemoryPoolSize("UnitAgent", 128)
SetMemoryPoolSize("UnitController", 128)
SetMemoryPoolSize("Weapon", weaponCnt)

SetSpawnDelay(10.0, 0.25)
ReadDataFile("dc:KT1\\KT1.lvl", "KT1_conquest")
SetDenseEnvironment("false")


-- Sound Stats

voiceSlow = OpenAudioStream("sound\\global.lvl", "all_unit_vo_slow")
AudioStreamAppendSegments("sound\\global.lvl", "imp_unit_vo_slow", voiceSlow)
AudioStreamAppendSegments("sound\\global.lvl", "des_unit_vo_slow", voiceSlow)
AudioStreamAppendSegments("sound\\global.lvl", "global_vo_slow", voiceSlow)

voiceQuick = OpenAudioStream("sound\\global.lvl", "all_unit_vo_quick")
AudioStreamAppendSegments("sound\\global.lvl", "imp_unit_vo_quick", voiceQuick)

OpenAudioStream("sound\\tat.lvl", "tat2")
OpenAudioStream("sound\\global.lvl", "gcw_music")
OpenAudioStream("dc:sound\\kt1.lvl", "kt1gcw_music")

-- OpenAudioStream("sound\\global.lvl", "global_vo_quick")
-- OpenAudioStream("sound\\global.lvl", "global_vo_slow")

SetBleedingVoiceOver(ALL, ALL, "all_off_com_report_us_overwhelmed", 1)
SetBleedingVoiceOver(ALL, IMP, "all_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(IMP, ALL, "imp_off_com_report_enemy_losing", 1)
SetBleedingVoiceOver(IMP, IMP, "imp_off_com_report_us_overwhelmed", 1)

SetLowReinforcementsVoiceOver(ALL, ALL, "all_off_defeat_im", .1, 1)
SetLowReinforcementsVoiceOver(ALL, IMP, "all_off_victory_im", .1, 1)
SetLowReinforcementsVoiceOver(IMP, IMP, "imp_off_defeat_im", .1, 1)
SetLowReinforcementsVoiceOver(IMP, ALL, "imp_off_victory_im", .1, 1)

SetOutOfBoundsVoiceOver(2, "Allleaving")
SetOutOfBoundsVoiceOver(1, "Impleaving")

SetAmbientMusic(ALL, 1.0, "all_hero_wil_lp", 0,1)
SetAmbientMusic(ALL, 0.8, "all_tat_amb_middle", 1,1)
SetAmbientMusic(ALL, 0.2, "all_tat_amb_end", 2,1)
SetAmbientMusic(IMP, 1.0, "imp_tat_amb_start", 0,1)
SetAmbientMusic(IMP, 0.8, "imp_tat_amb_middle", 1,1)
SetAmbientMusic(IMP, 0.2, "imp_tat_amb_end", 2,1)

SetVictoryMusic(ALL, "all_tat_amb_victory")
SetDefeatMusic (ALL, "all_tat_amb_defeat")
SetVictoryMusic(IMP, "imp_tat_amb_victory")
SetDefeatMusic (IMP, "imp_tat_amb_defeat")

SetSoundEffect("ScopeDisplayZoomIn", "binocularzoomin")
SetSoundEffect("ScopeDisplayZoomOut", "binocularzoomout")
--SetSoundEffect("WeaponUnableSelect", "com_weap_inf_weaponchange_null")
--SetSoundEffect("WeaponModeUnableSelect", "com_weap_inf_modechange_null")
SetSoundEffect("SpawnDisplayUnitChange", "shell_select_unit")
SetSoundEffect("SpawnDisplayUnitAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplaySpawnPointChange", "shell_select_change")
SetSoundEffect("SpawnDisplaySpawnPointAccept", "shell_menu_enter")
SetSoundEffect("SpawnDisplayBack", "shell_menu_exit")

-- Camera Stats
--Tat2 Mos Eisley
AddCameraShot(0.974338, -0.222180, 0.035172, 0.008020, -82.664650, 23.668301, 43.955681);
AddCameraShot(0.390197, -0.089729, -0.893040, -0.205362, 23.563562, 12.914885, -101.465561);
AddCameraShot(0.169759, 0.002225, -0.985398, 0.012916, 126.972809, 4.039628, -22.020613);
AddCameraShot(0.677453, -0.041535, 0.733016, 0.044942, 97.517807, 4.039628, 36.853477);
AddCameraShot(0.866029, -0.156506, 0.467299, 0.084449, 7.685640, 7.130688, -10.895234);
end
hero odf [all_hero_wil.odf]
Hidden/Spoiler:
[GameObjectClass]
ClassParent = "com_hero_default"
GeometryName = "all_inf_wil.msh"

[Properties]
UnitType = "pilot"
ClothODF = "all_inf_wil_cape"
GeometryName = "all_inf_wil"
GeometryLowRes = "all_inf_tatooinehansolo_low1"
FirstPerson = "all\allhstat;all_1st_tatooinehansolo"

AnimationName = "fett"
HealthType = "person"
MaxHealth = 1500.0

WEAPONSECTION = 1
WeaponName1 = "all_weap_hero_sniper"
WeaponAmmo1 = 4

WEAPONSECTION = 2
WeaponName2 = "all_weap_inf_commando_pistol"
WeaponAmmo2 = 1

WEAPONSECTION = 3
WeaponName3 = "all_weap_inf_timebomb"
WeaponAmmo3 = 3
WeaponChannel3 = 1

WEAPONSECTION = 4
WeaponName4 = "imp_weap_inf_autoturret_dispenser"
WeaponAmmo4 = 1
WeaponChannel4 = 1


//SOUND
FoleyFXClass = "all_inf_soldier"

VOSound = "all_off_response_hero_command SC_Follow"
VOSound = "all_off_response_hero_command SC_StopFollow"
VOSound = "all_off_response_hero_command SC_VehicleWaitUp"
VOSound = "all_off_response_hero_command SC_GetIn"
VOSound = "all_off_response_hero_command SC_GetOut"

VOSound = "han_hero_pc_com_hostile SpottedVO"
VOSound = "han_hero_pc_com_mechanic NeedRepairVO"
VOSound = "han_hero_pc_com_transport NeedPickupVO"
VOSound = "han_hero_pc_com_backup NeedBackupVO"
VOSound = "han_hero_pc_com_clear_area AttackPositionVO"
VOSound = "han_hero_pc_com_defend DefendPositionVO"

VOSound = "han_hero_pc_com_hostile_inVehicle SpottedVO +InVehicle"
VOSound = "han_hero_pc_com_mechanic_inVehicle NeedRepairVO +InVehicle"
VOSound = "han_hero_pc_com_transport_inVehicle NeedPickupVO +InVehicle"
VOSound = "han_hero_pc_com_backup_inVehicle NeedBackupVO +InVehicle"
VOSound = "han_hero_pc_com_clear_area_inVehicle AttackPositionVO +InVehicle"
VOSound = "han_hero_pc_com_defend_inVehicle DefendPositionVO +InVehicle"


SndHeroSelectable = ""
SndHeroSpawned = ""
SndHeroDefeated = ""
SndHeroKiller = ""

VOSound = "hero_han_AcquiredTarget AcquiredTarget"
VOSound = "hero_han_KillingSpree4 KillingSpree4"

VOUnitType = 185
SoldierMusic = "all_hero_wil_lp"

Re: Hero Music

Posted: Fri May 05, 2017 5:21 pm
by giftheck
Windows identifies the .snd files as "AU Format Sound" files and they need to be included in with your stm file and referenced in the .req file. These contain the information needed for the game to read your music files, and it also gives them their useable names.

Re: Hero Music

Posted: Fri May 05, 2017 5:27 pm
by KaskDaxxe
I've defined them in the req too... :(
Maybe it's the wrong order?
req
Hidden/Spoiler:
ucft
{
REQN
{
"str"
"align=2048"
"kt1gcw_music"

}
REQN
{
"lvl"
"kt1gcw"
"kt1cw"
}
}
gcw req
Hidden/Spoiler:
ucft
{
REQN
{
"bnk"
"align=2048"
}

REQN
{
"config"
"global_world"
"exp_obj"
"kt1gcw"
"gcw_vo"
"gcw"
"kt1gcw_music_config"
"kt1gcw_music"
"gcw_vo"
"gcw_tac_vo"
}
}
EDIT: I guess my files were just misnamed, I got it to work. And oh my lord am I happy.