How-To Add Multiple Local Sides via Hex Editing and Zeroeditor

Started by Snake, November 25, 2011, 07:56:31 PM

Previous topic - Next topic
Edit by buckler:  Snake, I think this was information that I posted.  Please reference me :)




Well, first off we will go over the Hex Editing way of doing this to already made maps:

HERE you will find an example .lua of an edited Theed to have 6 local sides. I am not too familiar with hex editing other than the basics so HERE you will find how to edit CP's via Hex Editing. You must have a Hex Editing tool and a little experience I'm sure.

Secondly, if you are making a map and you want to have multiple locals you must use the type of .lua that was mentioned above and also have all the correct CP's added. Double-check and make sure you have all the unit names and sides and all that good stuff.

Heres an example of adding just one Local side if you do not know how:


---------------------------------------------------------------------------
-- 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()
--  Attacker is always #1
    local ALL = 1
    local IMP = 2
--  These variables do not change
    local ATT = 1
    local DEF = 2


    AddMissionObjective(IMP, "orange", "level.naboo2.objectives.1");
    AddMissionObjective(IMP, "red", "level.naboo2.objectives.2");
    AddMissionObjective(ALL, "orange", "level.naboo2.objectives.1");
    AddMissionObjective(ALL, "red", "level.naboo2.objectives.3");

    ReadDataFile("sound\\nab.lvl;nab2gcw");
    ReadDataFile("SIDE\\all.lvl",
        "all_hover_combatspeeder",
        "all_inf_basicurban",
        "all_inf_lukeskywalker",
        "all_inf_smuggler");
    ReadDataFile("SIDE\\imp.lvl",
        "imp_hover_fightertank",
        "imp_inf_basic",
        "imp_inf_dark_trooper",
        "imp_inf_darthvader");

-- +++++++++++++++++++++++++++++++++++++++++

   ReadDataFile("SIDE\\des.lvl",
        "tat_inf_tuskenhunter",
        "tat_inf_tuskenraider")

-- ++++++++++++++++++++++++++++++++++++++++++




    SetAttackingTeam(ATT);

--              Alliance Stats
        SetTeamName(ALL, "Alliance")
        SetTeamIcon(ALL, "all_icon")
    AddUnitClass(ALL, "all_inf_soldierurban",11)
    AddUnitClass(ALL, "all_inf_vanguard",3)
    AddUnitClass(ALL, "all_inf_pilot",3)
    AddUnitClass(ALL, "all_inf_marksman",3)
    AddUnitClass(ALL, "all_inf_smuggler",2)
    SetHeroClass(ALL, "all_inf_lukeskywalker")

--              Imperial Stats
        SetTeamName(IMP, "Empire")
        SetTeamIcon(IMP, "imp_icon")
    AddUnitClass(IMP, "imp_inf_storm_trooper",11)
    AddUnitClass(IMP, "imp_inf_shock_trooper",3)
    AddUnitClass(IMP, "imp_inf_pilotatst",3)
    AddUnitClass(IMP, "imp_inf_scout_trooper",3)
    AddUnitClass(IMP, "imp_inf_dark_trooper",2)
        SetHeroClass(IMP, "imp_inf_darthvader")



-- ++++++++++++++++++++++++++++++++++++++++++

--  Local Stats
    SetTeamName(3, "locals")
    AddUnitClass(3, "tat_inf_tuskenraider", 5);
    AddUnitClass(3, "tat_inf_tuskenhunter", 2);
    SetUnitCount(3, 14)


-- ++++++++++++++++++++++++++++++++++++++++++


--  Attacker Stats
    SetUnitCount(ATT, 22)
    SetReinforcementCount(ATT, 200)
    AddBleedThreshold(ATT, 31, 0.0)
    AddBleedThreshold(ATT, 21, 0.75)
    AddBleedThreshold(ATT, 11, 2.25)
    AddBleedThreshold(ATT, 1, 3.0)




--  Defender Stats
    SetUnitCount(DEF, 25)
    SetReinforcementCount(DEF, 200)
    AddBleedThreshold(DEF, 31, 0.0)
    AddBleedThreshold(DEF, 21, 0.75)
    AddBleedThreshold(DEF, 11, 2.25)
    AddBleedThreshold(DEF, 1, 3.0)

--  Level Stats
    ClearWalkers()
    AddWalkerType(1, 0) -- 0 atsts with 1 leg pairs each
    SetMemoryPoolSize("EntityHover", 6)
    SetMemoryPoolSize("MountedTurret", 20)
    SetSpawnDelay(10.0, 0.25);
    ReadDataFile("NAB\\nab2.lvl")
    SetDenseEnvironment("true")
    AddDeathRegion("Water");
    AddDeathRegion("Waterfall");
    SetMaxFlyHeight(-20)

--  Birdies
    SetNumBirdTypes(1);
    SetBirdType(0,1.0,"bird");
    SetBirdFlockMinHeight(-28.0);

--  Sound
--    OpenAudioStream("sound\\nab.lvl",  "nabgcw_music");
--    OpenAudioStream("sound\\gcw.lvl",  "gcw_vo");
--    OpenAudioStream("sound\\gcw.lvl",  "gcw_tac_vo");
--    OpenAudioStream("sound\\nab.lvl",  "nab2");
--    OpenAudioStream("sound\\nab.lvl",  "nab2");
--    OpenAudioStream("sound\\nab.lvl",  "nab2_emt");


-- ++++++++++++++++++++++++++++++++++++++++++


    OpenAudioStream("sound\\tat.lvl",  "tatgcw_music");
    OpenAudioStream("sound\\tat.lvl",  "tat1");
    OpenAudioStream("sound\\tat.lvl",  "tat1");
    OpenAudioStream("sound\\gcw.lvl",  "gcw_vo");
    OpenAudioStream("sound\\gcw.lvl",  "gcw_tac_vo");
    OpenAudioStream("sound\\tat.lvl",  "tat1_emt");

    OpenAudioStream("sound\\geo.lvl",  "geocw_music");
    OpenAudioStream("sound\\cw.lvl",  "cw_vo");
    OpenAudioStream("sound\\cw.lvl",  "cw_tac_vo");
    OpenAudioStream("sound\\geo.lvl",  "geo1cw");
    OpenAudioStream("sound\\geo.lvl",  "geo1cw");


-- ++++++++++++++++++++++++++++++++++++++++++






    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(1, "allleaving");
    SetOutOfBoundsVoiceOver(2, "impleaving");

    SetAmbientMusic(ALL, 1.0, "all_nab_amb_start",  0,1);
    SetAmbientMusic(ALL, 0.99, "all_nab_amb_middle", 1,1);
    SetAmbientMusic(ALL, 0.1,"all_nab_amb_end",    2,1);
    SetAmbientMusic(IMP, 1.0, "imp_nab_amb_start",  0,1);
    SetAmbientMusic(IMP, 0.99, "imp_nab_amb_middle", 1,1);
    SetAmbientMusic(IMP, 0.1,"imp_nab_amb_end",    2,1);

    SetVictoryMusic(ALL, "all_nab_amb_victory");
    SetDefeatMusic (ALL, "all_nab_amb_defeat");
    SetVictoryMusic(IMP, "imp_nab_amb_victory");
    SetDefeatMusic (IMP, "imp_nab_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");

    SetPlanetaryBonusVoiceOver(IMP, IMP, 0, "imp_bonus_imp_medical");
    SetPlanetaryBonusVoiceOver(IMP, ALL, 0, "imp_bonus_all_medical");
    SetPlanetaryBonusVoiceOver(IMP, IMP, 1, "");
    SetPlanetaryBonusVoiceOver(IMP, ALL, 1, "");
    SetPlanetaryBonusVoiceOver(IMP, IMP, 2, "imp_bonus_imp_sensors");
    SetPlanetaryBonusVoiceOver(IMP, ALL, 2, "imp_bonus_all_sensors");
    SetPlanetaryBonusVoiceOver(IMP, IMP, 3, "imp_bonus_imp_hero");
    SetPlanetaryBonusVoiceOver(IMP, ALL, 3, "imp_bonus_all_hero");
    SetPlanetaryBonusVoiceOver(IMP, IMP, 4, "imp_bonus_imp_reserves");
    SetPlanetaryBonusVoiceOver(IMP, ALL, 4, "imp_bonus_all_reserves");
    SetPlanetaryBonusVoiceOver(IMP, IMP, 5, "imp_bonus_imp_sabotage");--sabotage
    SetPlanetaryBonusVoiceOver(IMP, ALL, 5, "imp_bonus_all_sabotage");
    SetPlanetaryBonusVoiceOver(IMP, IMP, 6, "");
    SetPlanetaryBonusVoiceOver(IMP, ALL, 6, "");
    SetPlanetaryBonusVoiceOver(IMP, IMP, 7, "imp_bonus_imp_training");--advanced training
    SetPlanetaryBonusVoiceOver(IMP, ALL, 7, "imp_bonus_all_training");--advanced training

    SetPlanetaryBonusVoiceOver(ALL, ALL, 0, "all_bonus_all_medical");
    SetPlanetaryBonusVoiceOver(ALL, IMP, 0, "all_bonus_imp_medical");
    SetPlanetaryBonusVoiceOver(ALL, ALL, 1, "");
    SetPlanetaryBonusVoiceOver(ALL, IMP, 1, "");
    SetPlanetaryBonusVoiceOver(ALL, ALL, 2, "all_bonus_all_sensors");
    SetPlanetaryBonusVoiceOver(ALL, IMP, 2, "all_bonus_imp_sensors");
    SetPlanetaryBonusVoiceOver(ALL, ALL, 3, "all_bonus_all_hero");
    SetPlanetaryBonusVoiceOver(ALL, IMP, 3, "all_bonus_imp_hero");
    SetPlanetaryBonusVoiceOver(ALL, ALL, 4, "all_bonus_all_reserves");
    SetPlanetaryBonusVoiceOver(ALL, IMP, 4, "all_bonus_imp_reserves");
    SetPlanetaryBonusVoiceOver(ALL, ALL, 5, "all_bonus_all_sabotage");--sabotage
    SetPlanetaryBonusVoiceOver(ALL, IMP, 5, "all_bonus_imp_sabotage");
    SetPlanetaryBonusVoiceOver(ALL, ALL, 6, "");
    SetPlanetaryBonusVoiceOver(ALL, IMP, 6, "");
    SetPlanetaryBonusVoiceOver(ALL, ALL, 7, "all_bonus_all_training");--advanced training
    SetPlanetaryBonusVoiceOver(ALL, IMP, 7, "all_bonus_imp_training");--advanced training


--  Camera Stats
--Nab2 Theed
--Palace
AddCameraShot(-0.007592, -0.000002, -0.999971, 0.000209, -168.559723, -45.250122, 13.399481);
--Fountain
AddCameraShot(0.255033, 0.003789, -0.966818, 0.014365, -45.806969, -47.785381, -45.429058);
--Rotunda
AddCameraShot(0.621417, -0.119417, -0.760412, -0.146128, -276.067444, -18.259653, -77.929230);
end


Make sure your CP's are labelled properly (CP3Label, CP12Label, CP3094589Label, etc.) The limit of how many local sides there can be is currently unknown.
=AaTc= Forever

SALLY....

-Retired Modder