Page 1 of 1

Custom Unit not appearing (and yes I HAVE searched ALOT)

Posted: Mon May 29, 2006 9:43 am
by danrosen
Hi everyone, I'm new to bf2 modding and made my first map yesterday. I did all the basics like CPs and vehicles and got them all working great. I decided it was lacking something, fun. I decided to make a super beefed-up ewok!!! I modified the weapons of ewk_inf_scout to give it a republic sniper rifle, an arc caster, an alliance rocket launcher, thermal detonators, time bombs and rally buff. I also threw in the rocket and sniper AWARD weapons.

I tested the unit with the ALL side in the GCW mission lua, replacing the first four rebel units with various ewoks. My custom ewok worked fine and I had a lot of fun with it! Then I decided to change a few things, ammo and stuff, and I replaced the ALL team with their original units. But now I cannot get ANY ewok to appear, either in place of an ALL unit or with AddUnitClass.

I've been searching GameToast frantically, reading many topics and trying many things, but no success. Please help?

Posted: Mon May 29, 2006 9:50 am
by yankeefan05
Welcome to GameToast, danrosen . R u saying u replaced rebels with ewoks?

Posted: Mon May 29, 2006 9:55 am
by danrosen
I only replaced the rebels with ewoks to test my custom ewok, which worked fine. But now I cannot get the ewok to appear in the character select screen as well as the rebels.

Posted: Mon May 29, 2006 10:31 am
by MercuryNoodles
Post your lua. It could be anything, but it's a start.

Posted: Mon May 29, 2006 10:37 am
by danrosen

Code: Select all

--
-- 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("SIDE\\all.lvl",
                    "all_inf_rifleman",
                    "all_inf_rocketeer",
                    "all_inf_sniper",
                    "all_inf_engineer",
                    "all_inf_wookiee",
                    "all_inf_officer",
                    "all_hero_luke_jedi",
                    "all_hover_combatspeeder",
                    "all_fly_snowspeeder" )
                    
    ReadDataFile("SIDE\\imp.lvl",
                    "imp_inf_rifleman",
                    "imp_inf_rocketeer",
                    "imp_inf_engineer",
                    "imp_inf_sniper",
                    "imp_inf_officer",
                    "imp_inf_dark_trooper",
                    "imp_hero_darthvader",
                    "imp_fly_destroyer_dome",
                    "imp_walk_atst",
                    "imp_hover_fightertank",
                    "imp_walk_atat",
                    "imp_hover_speederbike" )

    ReadDataFile("dc:SIDE\\ewk.lvl",
                    "ewk_inf",
                    "ewk_inf_repair",
                    "ewk_inf_scout",
                    "ewk_inf_trooper")


	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},
		},
	}
    AddUnitClass(ALL,"ewk_inf_scout",8,15)

    SetHeroClass(ALL, "all_hero_luke_jedi")
    SetHeroClass(IMP, "imp_hero_darthvader")

    --  Level Stats
    ClearWalkers()
    AddWalkerType(0, 0) -- special -> droidekas
    AddWalkerType(1, 6) -- 1x2 (1 pair of legs)
    AddWalkerType(2, 2) -- 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)
	SetMemoryPoolSize("CommandWalker", 2)

    SetSpawnDelay(10.0, 0.25)
    ReadDataFile("dc:BBT\\BBT.lvl", "BBT_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\\global.lvl",  "gcw_music")
    OpenAudioStream("sound\\tat.lvl",  "tat2")
    OpenAudioStream("sound\\tat.lvl",  "tat2")
    -- 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_tat_amb_start",  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
This is what I currently have in my BBTg_con (BBT is my world) lua, and ewk_inf_scout is the customised ewok I am trying to get in.

Posted: Mon May 29, 2006 10:52 am
by Big_rich
clean and remunge your side. Also your gonna need to delete your lvl_PC folder in data_modid before you munge. Try that first.

Posted: Mon May 29, 2006 10:53 am
by PvtParts
If you use addunitclass, your setupteams must be organized slightly different, I can explain, but you should be able to see what I mean by looking at the tat2g_eli.lua, found assets\scripts\tat\

Posted: Mon May 29, 2006 11:18 am
by danrosen
Still nothing. :( I took a look at the tat2g_eli.lua and set my teams up thus:

Code: Select all

	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},
		},
	}

    AddUnitClass(ALL,"ewk_inf_scout",8,15)
	SetupTeams{
		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},
		},
	}
And I also cleaned and remunged the ewk side. I deleted the lvl_PC in data_BTT before munging, but still I am getting only the default rebel and imperial troops and nothing more. Thanks for the help people, and any further input would be greatly appreciated.

Posted: Mon May 29, 2006 11:31 am
by PvtParts
Try doing a full clean and remunge. Now that I think of it that alone could be the problem. But I doubt it...

Posted: Mon May 29, 2006 12:26 pm
by danrosen
No luck. :( Tried lots of things now. I've worked backwards and recopied the ewk side, but for SOME reason I can't even get the normal Ewoks to show up! Even without dc: !!! There must be SOMEthing I've forgotten. I've got the lua set up right (I think) and I've got the common folder in there. I just don't get how one minute its all working fine and the next...

Posted: Mon May 29, 2006 12:45 pm
by Epena
In the first LUA you added the EWK side BUT you forgot to add them to the unit spawn list later on. You have one, but it's under rep.

Posted: Mon May 29, 2006 1:03 pm
by danrosen
Hmm, I'm not quite sure what you mean by this. In my latest team setup, the code looks like this:

Code: Select all

	SetupTeams{
		all = {
			team = ALL,
			units = 20,
			reinforcements = 150,
			soldier	= { "all_inf_rifleman",9, 25},
			assault	= { "ewk_inf_repair",1,4},
			engineer = { "ewk_inf_scout",1,4},
			sniper	= { "ewk_inf_trooper",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},
		},
	}
What is happening now is, only the rebel soldier, wookiee and bothan are appearing for the Alliance. No ewoks :(

EDIT: I fixed it!!! Turns out that to call up the ewok scout, I had to make it call up ewk_inf_basic as well!!! Something so simple took so much time!! Thanks alot people anyway

Posted: Mon May 29, 2006 6:23 pm
by Teancum

Code: Select all

    ReadDataFile("dc:SIDE\\ewk.lvl",
                    "ewk_inf",
                    "ewk_inf_repair",
                    "ewk_inf_scout",
                    "ewk_inf_trooper") 
Should be:

Code: Select all

    ReadDataFile("dc:SIDE\\ewk.lvl",
                    --"ewk_inf",
                    "ewk_inf_repair",
                    "ewk_inf_scout",
                    "ewk_inf_trooper")