Page 1 of 1

Multi-map Mappack Woes [Solved]

Posted: Thu Jan 22, 2015 10:21 pm
by AnthonyBF2
I'm trying to combine a total of 18 custom maps into 1 map pack.
They are all just script mods that read stock maps and stock side lvl files.
So there is no custom sides or worlds being read.

My base planet in the project folder is "CAM" - and every other map is 002, 003, 004, etc until 018.
Each of the 18 worlds only contains Conquest mode with CW and GCW era. 2 scripts per world that is. (i.e. CAMg_con, and CAMc_con)

Here is my setups:

addme.lua
Hidden/Spoiler:
--Search through the missionlist to find a map that matches mapName,
--then insert the new flags into said entry.
--Use this when you know the map already exists, but this content patch is just
--adding new gamemodes (otherwise you should just add whole new entries to the missionlist)
function AddNewGameModes(missionList, mapName, newFlags)
for i, mission in missionList do
if mission.mapluafile == mapName then
for flag, value in pairs(newFlags) do
mission[flag] = value
end
end
end
end




--insert totally new maps here:
local sp_n = 0
local mp_n = 0
sp_n = table.getn(sp_missionselect_listbox_contents)

sp_missionselect_listbox_contents[sp_n+1] = { isModLevel = 1, mapluafile = "CAM%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+2] = { isModLevel = 1, mapluafile = "002%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+3] = { isModLevel = 1, mapluafile = "003%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+4] = { isModLevel = 1, mapluafile = "004%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+5] = { isModLevel = 1, mapluafile = "005%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+6] = { isModLevel = 1, mapluafile = "006%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+7] = { isModLevel = 1, mapluafile = "007%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+8] = { isModLevel = 1, mapluafile = "008%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+9] = { isModLevel = 1, mapluafile = "009%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+10] = { isModLevel = 1, mapluafile = "010%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+11] = { isModLevel = 1, mapluafile = "011%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+12] = { isModLevel = 1, mapluafile = "012%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+13] = { isModLevel = 1, mapluafile = "013%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+14] = { isModLevel = 1, mapluafile = "014%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+15] = { isModLevel = 1, mapluafile = "015%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+16] = { isModLevel = 1, mapluafile = "016%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+17] = { isModLevel = 1, mapluafile = "017%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
sp_missionselect_listbox_contents[sp_n+18] = { isModLevel = 1, mapluafile = "018%s_%s", era_e = 1, mode_con_e = 1, mode_ctf_e = 1,}
mp_missionselect_listbox_contents[mp_n+1] = sp_missionselect_listbox_contents[sp_n+1]
mp_missionselect_listbox_contents[mp_n+2] = sp_missionselect_listbox_contents[sp_n+2]
mp_missionselect_listbox_contents[mp_n+3] = sp_missionselect_listbox_contents[sp_n+3]
mp_missionselect_listbox_contents[mp_n+4] = sp_missionselect_listbox_contents[sp_n+4]
mp_missionselect_listbox_contents[mp_n+5] = sp_missionselect_listbox_contents[sp_n+5]
mp_missionselect_listbox_contents[mp_n+6] = sp_missionselect_listbox_contents[sp_n+6]
mp_missionselect_listbox_contents[mp_n+7] = sp_missionselect_listbox_contents[sp_n+7]
mp_missionselect_listbox_contents[mp_n+8] = sp_missionselect_listbox_contents[sp_n+8]
mp_missionselect_listbox_contents[mp_n+9] = sp_missionselect_listbox_contents[sp_n+9]
mp_missionselect_listbox_contents[mp_n+10] = sp_missionselect_listbox_contents[sp_n+10]
mp_missionselect_listbox_contents[mp_n+11] = sp_missionselect_listbox_contents[sp_n+11]
mp_missionselect_listbox_contents[mp_n+12] = sp_missionselect_listbox_contents[sp_n+12]
mp_missionselect_listbox_contents[mp_n+13] = sp_missionselect_listbox_contents[sp_n+13]
mp_missionselect_listbox_contents[mp_n+14] = sp_missionselect_listbox_contents[sp_n+14]
mp_missionselect_listbox_contents[mp_n+15] = sp_missionselect_listbox_contents[sp_n+15]
mp_missionselect_listbox_contents[mp_n+16] = sp_missionselect_listbox_contents[sp_n+16]
mp_missionselect_listbox_contents[mp_n+17] = sp_missionselect_listbox_contents[sp_n+17]
mp_missionselect_listbox_contents[mp_n+18] = sp_missionselect_listbox_contents[sp_n+18]

-- associate this mission name with the current downloadable content directory
-- (this tells the engine which maps are downloaded, so you need to include all new mission lua's here)
-- first arg: mapluafile from above
-- second arg: mission script name
-- third arg: level memory modifier. the arg to LuaScript.cpp: DEFAULT_MODEL_MEMORY_PLUS(x)

AddDownloadableContent("CAM","CAMg_con",4)
AddDownloadableContent("CAM","CAMc_con",4)
AddDownloadableContent("002","002g_con",4)
AddDownloadableContent("002","002c_con",4)
AddDownloadableContent("003","003g_con",4)
AddDownloadableContent("003","003c_con",4)
AddDownloadableContent("004","004g_con",4)
AddDownloadableContent("004","004c_con",4)
AddDownloadableContent("005","005g_con",4)
AddDownloadableContent("005","005c_con",4)
AddDownloadableContent("006","006g_con",4)
AddDownloadableContent("006","006c_con",4)
AddDownloadableContent("007","007g_con",4)
AddDownloadableContent("007","007c_con",4)
AddDownloadableContent("008","008g_con",4)
AddDownloadableContent("008","008c_con",4)
AddDownloadableContent("009","009g_con",4)
AddDownloadableContent("009","009c_con",4)
AddDownloadableContent("010","010g_con",4)
AddDownloadableContent("010","010c_con",4)
AddDownloadableContent("011","011g_con",4)
AddDownloadableContent("011","011c_con",4)
AddDownloadableContent("012","012g_con",4)
AddDownloadableContent("012","012c_con",4)
AddDownloadableContent("013","013g_con",4)
AddDownloadableContent("013","013c_con",4)
AddDownloadableContent("014","014g_con",4)
AddDownloadableContent("014","014c_con",4)
AddDownloadableContent("015","015g_con",4)
AddDownloadableContent("015","015c_con",4)
AddDownloadableContent("016","016g_con",4)
AddDownloadableContent("016","016c_con",4)
AddDownloadableContent("017","017g_con",4)
AddDownloadableContent("017","017c_con",4)
AddDownloadableContent("018","018g_con",4)
AddDownloadableContent("018","018c_con",4)

-- all done
newEntry = nil
n = nil

-- Now load our core.lvl into the shell to add our localize keys
ReadDataFile("..\\..\\addon\\CAM\\data\\_LVL_PC\\core.lvl")
mission.req
Hidden/Spoiler:
ucft
{
REQN
{
"config"
"ingame_movies"
}

REQN
{
"script"
"setup_teams"
"gametype_conquest"
"gametype_capture"
"Objective"
"MultiObjectiveContainer"
"ObjectiveCTF"
"ObjectiveAssault"
"ObjectiveSpaceAssault"
"ObjectiveConquest"
"ObjectiveTDM"
"ObjectiveOneFlagCTF"
"SoundEvent_ctf"
"ObjectiveGoto"
"LinkedShields"
"LinkedDestroyables"
"LinkedTurrets"
"Ambush"
"PlayMovieWithTransition"
}

REQN
{
"lvl"
"CAMg_con"
"CAMc_con"
"002g_con"
"002c_con"
"003g_con"
"003c_con"
"004g_con"
"004c_con"
"005g_con"
"005c_con"
"006g_con"
"006c_con"
"007g_con"
"007c_con"
"008g_con"
"008c_con"
"009g_con"
"009c_con"
"010g_con"
"010c_con"
"011g_con"
"011c_con"
"012g_con"
"012c_con"
"013g_con"
"013c_con"
"014g_con"
"014c_con"
"015g_con"
"015c_con"
"016g_con"
"016c_con"
"017g_con"
"017c_con"
"018g_con"
"018c_con"
}
}
Inside data_CAM\common\mission I made all of the correct reqs. for all of the addon missions.
Inside data_CAM\common\scripts I have all 18 folders with each respective script inside.
Example: CAM\camg_con and camc_con
Example: 002\002g_con and 002c_con and so through 018

In the localization tool I added map title and description keys and filled them in accordingly the way I wanted them from 002 until 018.

I munge and there is no errors. I play the game, enter instant action menu and see the worlds and titles have their correct stuffs, all this is done right I know.

Now, the issue:

I would expect to see each world with Conquest and only eras for CW and GCW era.
What I see instead is; each addon world has listed Conquest and capture the flag. And the era for each of everything is listed as "Earth" (<-- Guessing this is filled in from 1.3 patch)

Now if I pick any addon and play it, it freezes black loading screen.
If I picked the map that calls 008g_con, the game crash/freezes with error
Cannot open mission\008e_con (<--- E for Earth)

I don't know at all what to look at or search for at this point. But I put too much work into what I'm trying to do to let it go to waste.

The proper fix will be very very nice to have :wink:

EDIT:
I tested the current mod progress on LAN mode hosting a session. (Starting from a stock map tat3g_con)
I used /admin /changemap CAMg_con and the mod level played fine.
I was able to use /changemap to test every mod mission and play them correctly.

And:
During LAN map list selections, I noticed several stock levels were no longer listed(Coruscant, etc)
How ever all mod levels and stock levels are listed in instant action.

So I think that my current mods are conflicting with stock levels.




EDIT2
Issue solved.

I was using RED51's tutorial on making a map pack.

I accidentally copied part of his addme.lua as my own.

My correct addme.lua:
Hidden/Spoiler:
--Search through the missionlist to find a map that matches mapName,
--then insert the new flags into said entry.
--Use this when you know the map already exists, but this content patch is just
--adding new gamemodes (otherwise you should just add whole new entries to the missionlist)
function AddNewGameModes(missionList, mapName, newFlags)
for i, mission in missionList do
if mission.mapluafile == mapName then
for flag, value in pairs(newFlags) do
mission[flag] = value
end
end
end
end




--insert totally new maps here:
local sp_n = 0
local mp_n = 0
sp_n = table.getn(sp_missionselect_listbox_contents)

sp_missionselect_listbox_contents[sp_n+1] = { isModLevel = 1, mapluafile = "CAM%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+2] = { isModLevel = 1, mapluafile = "002%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+3] = { isModLevel = 1, mapluafile = "003%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+4] = { isModLevel = 1, mapluafile = "004%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+5] = { isModLevel = 1, mapluafile = "005%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+6] = { isModLevel = 1, mapluafile = "006%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+7] = { isModLevel = 1, mapluafile = "007%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+8] = { isModLevel = 1, mapluafile = "008%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+9] = { isModLevel = 1, mapluafile = "009%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+10] = { isModLevel = 1, mapluafile = "010%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+11] = { isModLevel = 1, mapluafile = "011%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+12] = { isModLevel = 1, mapluafile = "012%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+13] = { isModLevel = 1, mapluafile = "013%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+14] = { isModLevel = 1, mapluafile = "014%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+15] = { isModLevel = 1, mapluafile = "015%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+16] = { isModLevel = 1, mapluafile = "016%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+17] = { isModLevel = 1, mapluafile = "017%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
sp_missionselect_listbox_contents[sp_n+18] = { isModLevel = 1, mapluafile = "018%s_%s", era_g = 1, era_c = 1, mode_con_g = 1, mode_con_c = 1,}
mp_missionselect_listbox_contents[mp_n+1] = sp_missionselect_listbox_contents[sp_n+1]
mp_missionselect_listbox_contents[mp_n+2] = sp_missionselect_listbox_contents[sp_n+2]
mp_missionselect_listbox_contents[mp_n+3] = sp_missionselect_listbox_contents[sp_n+3]
mp_missionselect_listbox_contents[mp_n+4] = sp_missionselect_listbox_contents[sp_n+4]
mp_missionselect_listbox_contents[mp_n+5] = sp_missionselect_listbox_contents[sp_n+5]
mp_missionselect_listbox_contents[mp_n+6] = sp_missionselect_listbox_contents[sp_n+6]
mp_missionselect_listbox_contents[mp_n+7] = sp_missionselect_listbox_contents[sp_n+7]
mp_missionselect_listbox_contents[mp_n+8] = sp_missionselect_listbox_contents[sp_n+8]
mp_missionselect_listbox_contents[mp_n+9] = sp_missionselect_listbox_contents[sp_n+9]
mp_missionselect_listbox_contents[mp_n+10] = sp_missionselect_listbox_contents[sp_n+10]
mp_missionselect_listbox_contents[mp_n+11] = sp_missionselect_listbox_contents[sp_n+11]
mp_missionselect_listbox_contents[mp_n+12] = sp_missionselect_listbox_contents[sp_n+12]
mp_missionselect_listbox_contents[mp_n+13] = sp_missionselect_listbox_contents[sp_n+13]
mp_missionselect_listbox_contents[mp_n+14] = sp_missionselect_listbox_contents[sp_n+14]
mp_missionselect_listbox_contents[mp_n+15] = sp_missionselect_listbox_contents[sp_n+15]
mp_missionselect_listbox_contents[mp_n+16] = sp_missionselect_listbox_contents[sp_n+16]
mp_missionselect_listbox_contents[mp_n+17] = sp_missionselect_listbox_contents[sp_n+17]
mp_missionselect_listbox_contents[mp_n+18] = sp_missionselect_listbox_contents[sp_n+18]

-- associate this mission name with the current downloadable content directory
-- (this tells the engine which maps are downloaded, so you need to include all new mission lua's here)
-- first arg: mapluafile from above
-- second arg: mission script name
-- third arg: level memory modifier. the arg to LuaScript.cpp: DEFAULT_MODEL_MEMORY_PLUS(x)

AddDownloadableContent("CAM","CAMg_con",4)
AddDownloadableContent("CAM","CAMc_con",4)
AddDownloadableContent("002","002g_con",4)
AddDownloadableContent("002","002c_con",4)
AddDownloadableContent("003","003g_con",4)
AddDownloadableContent("003","003c_con",4)
AddDownloadableContent("004","004g_con",4)
AddDownloadableContent("004","004c_con",4)
AddDownloadableContent("005","005g_con",4)
AddDownloadableContent("005","005c_con",4)
AddDownloadableContent("006","006g_con",4)
AddDownloadableContent("006","006c_con",4)
AddDownloadableContent("007","007g_con",4)
AddDownloadableContent("007","007c_con",4)
AddDownloadableContent("008","008g_con",4)
AddDownloadableContent("008","008c_con",4)
AddDownloadableContent("009","009g_con",4)
AddDownloadableContent("009","009c_con",4)
AddDownloadableContent("010","010g_con",4)
AddDownloadableContent("010","010c_con",4)
AddDownloadableContent("011","011g_con",4)
AddDownloadableContent("011","011c_con",4)
AddDownloadableContent("012","012g_con",4)
AddDownloadableContent("012","012c_con",4)
AddDownloadableContent("013","013g_con",4)
AddDownloadableContent("013","013c_con",4)
AddDownloadableContent("014","014g_con",4)
AddDownloadableContent("014","014c_con",4)
AddDownloadableContent("015","015g_con",4)
AddDownloadableContent("015","015c_con",4)
AddDownloadableContent("016","016g_con",4)
AddDownloadableContent("016","016c_con",4)
AddDownloadableContent("017","017g_con",4)
AddDownloadableContent("017","017c_con",4)
AddDownloadableContent("018","018g_con",4)
AddDownloadableContent("018","018c_con",4)

-- all done
newEntry = nil
n = nil

-- Now load our core.lvl into the shell to add our localize keys
ReadDataFile("..\\..\\addon\\CAM\\data\\_LVL_PC\\core.lvl")