If you'd like to support our preservation efforts (and this wasn't cheap), please consider donating or supporting us on Patreon. Thank you!
Midtown Madness 3
| Midtown Madness 3 |
|---|
|
Developer:
Digital Illusions CE
|
The sequel of Midtown Madness 2, Midtown Madness 3 has been released only on Xbox. This sequel takes the player around two cities, Paris and Washington D.C., with 40 cars from both France and the United States. With multiplayer support and DLC, the game fully took advantage of Xbox Live.
Contents
- 1 Uncompiled Code
- 1.1 Data\Data_hd\Scripts
- 1.1.1 aidebug.lua
- 1.1.2 broadcasters.lua
- 1.1.3 dopeddebug.lua
- 1.1.4 E3settings.lua
- 1.1.5 logic_events.lua
- 1.1.6 logic_events.lua
- 1.1.7 logic_multi_client.lua
- 1.1.8 logic_multi_spawnlocations_paris.lua
- 1.1.9 logic_multi_spawnlocations_washington.lua
- 1.1.10 PedDebugSetup.lua
- 1.1.11 unlockallskins.lua
- 1.1.12 user.lua
- 1.1.13 userSetup.lua
- 1.2 Data\Data_hd\Scripts\Test
- 1.1 Data\Data_hd\Scripts
- 2 Debug Leftovers
- 3 Strange Folder
- 4 Regional Differences
Uncompiled Code
Data\Data_hd\Scripts
"Data\Data_hd\Scripts" contains 49 files with debugging features, complete game-mode scripts and other interesting stuff like E3 settings.
Note: Out of respect and to avoid copyright issues, the main files are not posted here (i.e. full game-mode scripts...).
aidebug.lua
-----------------------------------------------------------------------------------------------------------------------
--
-- Debug script for AI
--
--
-----------------------------------------------------------------------------------------------------------------------
function onInit()
--setPedDebugFlags()
--doAiTest()
--debugPedestrians()
--doSearchForStartSlowdown()
--doTestSpawner()
--doTestCinematicPeds()
doSearchForAmbientCarLeak()
end
function loadCurves()
setLogLevel( "projects/mmx/main/game/profiletools", "info" )
loadModule( "profiletools" )
profilerGraphAddCurve( "Main_update/ai", 255,255,255 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects",0,255,0 )
-- profilerGraphAddCurve( "Main_update/ai/SphereOfInterest", 0,0,255 )
profilerGraphAddCurve( "Main_update/ai/UpdateWeb", 226,6,209 ) -- purple
-- profilerGraphAddCurve( "Main_update/ai/UpdateWeb/postUpdate/populateContainers", 0,215,232 ) -- light seablue
-- profilerGraphAddCurve( "Main_update/ai/ExternalTestLine", 255,0,0 )
-- profilerGraphAddCurve( "Main_update/ai/InternalTestLine", 0,255,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdatePedestrians",226,133,5 ) -- yellow
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdateAmbientCars",176,225,6 ) -- green
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdateSubwayCars",72,159,126 ) -- light window green/blue
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdatePedestrians/LocomotionUpdate",0,0,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdatePedestrians/LocomotionUpdate/advancePoint",0,0,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdatePedestrians/LocomotionUpdate/checkDrift",0,0,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateLocomotion",0,0,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateLocomotion/adjustLocalVelocity",0,0,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateLocomotion/advancePoint",0,0,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateGraphics",0,0,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateCollisionTransform",0,0,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateSound",0,0,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/UpdateAmbientCars/onPulse",0,0,0 )
profilerCounterToggle()
profilerCounterAdd( "Main_update/ai/UpdateWeb" )
profilerCounterAdd( "Main_update/ai/UpdateObjects" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdatePedestrians" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdateAmbientCars" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdateSubwayCars" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdatePedestrians/LocomotionUpdate" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdatePedestrians/LocomotionUpdate/advancePoint" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdatePedestrians/LocomotionUpdate/checkDrift" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateLocomotion" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateLocomotion/adjustLocalVelocity" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateLocomotion/advancePoint" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateGraphics" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateCollisionTransform" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdateAmbientCars/UpdateSound" )
profilerCounterAdd( "Main_update/ai/UpdateObjects/UpdateAmbientCars/onPulse" )
end
function enablePulseUpdate()
aiSetVariable( "objects::m_ambientCarUpdateFreq", 0.5 )
aiSetVariable( "objects::m_pedestrianUpdateFreq", 0.5 )
end
function disablePulseUpdate()
aiSetVariable( "objects::m_ambientCarUpdateFreq", 1 )
aiSetVariable( "objects::m_pedestrianUpdateFreq", 1 )
end
function disableGroundAdjusts()
-- Disable the ambient car reset stuff
aiSetVariable( "ac::m_cameraAdjustRadius", -1 )
aiSetVariable( "ac::m_useHeightReset", 0 )
aiSetVariable( "ped::m_pedUseHeightReset", 0 )
end
function enableGroundAdjusts()
aiSetVariable( "ac::m_cameraAdjustRadius", 30 )
aiSetVariable( "ac::m_useHeightReset", 1 )
aiSetVariable( "ped::m_pedUseHeightReset", 1 )
end
function enableOccluders()
aiSetVariable( "web::m_useOccluders", 1 )
aiSetVariable( "web::m_useLazyOcclusion", 0 )
end
function doSplitScreen()
job = 0
city = 0
weather = 0
timeOfDay = 1
race = 0
opponentCount = 4
playType = 1 -- SinglePlayer = 0, SplitScreen = 1, Client = 2, Host = 3
startCruiseRace(city, weather, timeOfDay, playType)
end
function setPedDebugFlags()
--aiSetVariable( "ped::m_maxAngleSpeed", 100 )
--aiSetVariable( "ped::m_avoidanceDistance", 150 )
--aiSetVariable( "system::m_cameraSphereRadius", 150 )
setLogLevel( "projects/mmx/main/shared/ai/engine/objects/pedestrian", "all" )
aiDebugSetPedestrianCount(1)
setFixedDeltaTime( 33 )
aiTogglePedestrianInfo()
aiSetFixedDeltaTime( 0.001 )
unloadModule( "dof" )
end
function doAiTest()
loadModule( "profiletools" )
unloadModule( "dof" )
toggleFps(1);
--aiTogglePopulationInfo()
profilerGraphSetSampleCount(128)
profilerGraphSetYScale(200.0)
setFixedDeltaTime(33)
deviceSetFlipSync(0)
profilerGraphSetSampleCount(128)
profilerGraphAddCurve( "Main_update/ai", 255,255,255 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects",0,255,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateWeb", 226,6,209 ) -- purple
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/pedestrians",226,133,5 ) -- yellow
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/ambientcars",0,0,255 ) -- green
-- renderSetViewDistance( 2000 )
-- aiSetVariable( "web::m_innerSphereRadius", 250 )
-- aiSetVariable( "web::m_maxContainerDistance", 400 )
-- aiSetVariable( "web::m_maxContainerPercentPopulatePerFrame", 0.2 )
-- aiSetVariable( "web::m_maxObjectSpawnedPerFrame", 3 )
end
function debugPedestrians()
memeDebug()
aiDebugSetPedestrianCount(1)
aiSetVariable( "ped::m_minorThreatFrequency", 1 )
aiSetVariable( "ped::m_majorThreatFrequency", 0.1 )
end
function doSearchForStartSlowdown()
loadModule( "profiletools" )
unloadModule( "dof" )
toggleFps(1);
--aiTogglePopulationInfo()
profilerGraphSetSampleCount(128)
profilerGraphSetYScale(200.0)
--setFixedDeltaTime(33)
deviceSetFlipSync(0)
profilerGraphSetSampleCount(128)
profilerGraphAddCurve( "Main_update/ai", 0,0,0 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects",0,0,0 )
-- profilerGraphAddCurve( "Main_update/ai/UpdateObjects/ambientcars",255,100,100 )
-- profilerGraphAddCurve( "Main_update/ai/UpdateObjects/ambientcars/onPulse",0,10,255 )
-- profilerGraphAddCurve( "Main_update/ai/UpdateObjects/ambientcars/Update",0,255,10 )
-- profilerGraphAddCurve( "Main_update/ai/UpdateObjects/ambientcars/UpdateObjectCache",255,255,255 )
profilerGraphAddCurve( "Main_update/ai/UpdateObjects/pedestrians",0,0,0 )
end
function doTestSpawner()
setFixedDeltaTime(33)
memeDebug()
aiToggleCameraInfo(1)
aiToggleContainerSortingInfo(1)
aiToggleAmbientCarInfo(1)
aiToggleAmbientCarStateInfo(1)
aiToggleUpdateWebInfo(1)
aiToggleContainerSortingInfo(1)
renderSetViewDistance( 1000 )
aiSetVariable( "dbg::m_cameraRenderScale", 0.2 )
aiDebugSetPlayerCarPos(2075,29,556)
aiSetVariable( "web::m_trailingPopulateThresholdSpeed", -1 )
end
function doTestCinematicPeds()
setFixedDeltaTime(33)
memeDebug()
aiSetVariable( "level::m_disablePedInterpolate", 1 )
aiSetVariable( "cin::m_defaultGridSize",0.5 )
aiSetVariable( "cin::m_defaultGridWidth", 10 )
aiSetVariable( "cin::m_defaultGridExtraExtend", 10 )
aiTogglePedestrianInfo(1)
end
function doSearchForAmbientCarLeak()
cameraBindToPlayer( 1, "Comp--1", 0 )
aiTogglePopulationInfo(1)
end
broadcasters.lua
With most of the file commented out, these functions were probably shown as part of an early version.
function onInit() -- Creating services mail mailRadius = 10 mailDuration = 5 aiCreateBroadCaster( 1332.65827 ,61.67926 - 1.811, 1258.69892 , mailRadius, mailDuration, 'mail' ) --aiCreateBroadCaster( 1274.43449 ,61.6671 - 1.811, 1162.96391 , mailRadius, mailDuration, 'mail' ) --aiCreateBroadCaster( 1226.28601 ,61.68954 - 1.811, 1260.2383 , mailRadius, mailDuration, 'mail' ) --aiCreateBroadCaster( 1141.48446 ,55.22907 - 1.811, 1204.47642 , mailRadius, mailDuration, 'mail' ) --aiCreateBroadCaster( 1112.94561 ,52.8401 - 1.811, 1275.65365 , mailRadius, mailDuration, 'mail' ) --aiCreateBroadCaster( 1272.41749 ,56.79825 - 1.811, 1350.84961 , mailRadius, mailDuration, 'mail' ) --aiCreateBroadCaster( 1048.79726 ,35.29428 - 1.811, 1444.6209 , mailRadius, mailDuration, 'mail' ) --aiCreateBroadCaster( 936.49465 ,33.27933 - 1.811, 1399.15838 , mailRadius, mailDuration, 'mail' ) --aiCreateBroadCaster( 744.93696 ,32.29973 - 1.811, 1353.62178 , mailRadius, mailDuration, 'mail' ) --aiCreateBroadCaster( 1028.98182 ,52.8028 - 1.811, 1243.46753 , mailRadius, mailDuration, 'mail' ) --aiCreateBroadCaster( 1059.20696 ,46.5964 - 1.811, 1171.77081 , mailRadius, mailDuration, 'mail' ) -- Creating services trash trashRadius = 10 trashDuration = 2 aiCreateBroadCaster( 1168.38237 ,47.44184 , 1123.81628 , trashRadius, trashDuration, 'trash' ) --aiCreateBroadCaster( 1142.65054 ,53.70776 , 1187.22191 , trashRadius, trashDuration, 'trash' ) --aiCreateBroadCaster( 1120.24458 ,53.69802 , 1195.90994 , trashRadius, trashDuration, 'trash' ) --aiCreateBroadCaster( 1052.22699 ,45.20135 , 1175.18068 , trashRadius, trashDuration, 'trash' ) --aiCreateBroadCaster( 1026.6599 ,51.37973 , 1237.63743 , trashRadius, trashDuration, 'trash' ) --aiCreateBroadCaster( 1092.24607 ,51.42217 , 1266.99937 , trashRadius, trashDuration, 'trash' ) --aiCreateBroadCaster( 1097.926 ,51.08131 , 1296.06835 , trashRadius, trashDuration, 'trash' ) --aiCreateBroadCaster( 1211.73156 ,55.40998 , 1327.74428 , trashRadius, trashDuration, 'trash' ) --aiCreateBroadCaster( 1234.65614 ,60.28755 , 1239.43479 , trashRadius, trashDuration, 'trash' ) --aiCreateBroadCaster( 1253.72558 ,60.30076 , 1163.34658 , trashRadius, trashDuration, 'trash' ) -- Creating services rest --aiCreateBroadCaster( 1128.53097 ,33.12035 ,-1030.56577 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1143.24641 ,33.32184 ,-1035.80347 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1160.74997 ,33.51633 ,-1042.40397 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1173.67495 ,33.64051 ,-1047.77536 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1085.17152 ,40.10253 ,-1111.47153 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1113.56825 ,52.10391 ,-1163.78372 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1291.76677 ,54.3735 ,-1130.81722 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1330.27836 ,54.38406 ,-1147.96944 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1328.47942 ,46.11142 ,-1126.74483 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1308.34283 ,46.13301 ,-1117.97723 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1320.17179 ,36.89738 ,-1090.53882 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1340.61473 ,36.89738 ,-1099.61113 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1076.94821 ,51.38193 ,-1282.39252 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1073.29597 ,51.39886 ,-1293.20315 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1069.20546 ,51.41205 ,-1306.35121 , 10, 120, 'rest' ) --aiCreateBroadCaster( 589.25034 ,26.31558 ,-1147.28401 , 10, 120, 'rest' ) --aiCreateBroadCaster( 588.75196 ,25.03382 ,-1121.76616 , 10, 120, 'rest' ) --aiCreateBroadCaster( 588.04408 ,24.63449 ,-1113.18482 , 10, 120, 'rest' ) --aiCreateBroadCaster( 642.19163 ,31.93389 ,-1263.42969 , 10, 120, 'rest' ) --aiCreateBroadCaster( 652.26072 ,31.93389 ,-1263.42969 , 10, 120, 'rest' ) --aiCreateBroadCaster( 631.8763 ,31.93389 ,-1275.5048 , 10, 120, 'rest' ) --aiCreateBroadCaster( 631.8763 ,31.93389 ,-1283.10207 , 10, 120, 'rest' ) --aiCreateBroadCaster( 631.8763 ,30.6975 ,-1319.81102 , 10, 120, 'rest' ) --aiCreateBroadCaster( 631.8763 ,30.83273 ,-1312.21375 , 10, 120, 'rest' ) --aiCreateBroadCaster( 679.75364 ,31.93389 ,-1263.42969 , 10, 120, 'rest' ) --aiCreateBroadCaster( 669.68455 ,31.93389 ,-1263.42969 , 10, 120, 'rest' ) --aiCreateBroadCaster( 713.613 ,31.93389 ,-1263.42969 , 10, 120, 'rest' ) --aiCreateBroadCaster( 703.54391 ,31.93389 ,-1263.42969 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1170.13041 ,28.47486 ,-975.24921 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1170.13041 ,28.95063 ,-988.15536 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1910.40571 ,19.067 ,-816.97786 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1918.75099 ,19.12645 ,-830.88665 , 10, 120, 'rest' ) --aiCreateBroadCaster( 1930.26073 ,19.22818 ,-847.19211 , 10, 120, 'rest' ) end
dopeddebug.lua
Used for debug pedestrians.
function onInit()
doReloadPed()
end
function doReloadPed()
local pedCount = 1
local pedFile = "+Animation/Woman_Generic2/Woman_Generic2.mod"
local pedPersonality = "Paris_Woman_Generic1"
local pedFrequency = 1
aiClearCityProperties()
aiAddCityPropPededstrian( pedFile, pedPersonality, pedFrequency )
aiDebugSetPedestrianCount( pedCount )
end
E3settings.lua
Settings for E3! Unfortunately, there isn't much to see here.
function onInit()
gameLog("E3settings\n")
renderSetCityLodZones(80, 100, 350)
renderSetFov(62)
renderFacadeSetMaxFloors(2)
soundEnableStreamingSounds(1)
gameLog("End E3settings\n")
end
logic_events.lua
-- ******************************************************************************** -- ******************************************************************************** -- * Midtown Madness X * -- * Event script * -- * OBS: No modifications should be made to this file!!! * -- ******************************************************************************** -- ******************************************************************************** -- ******************************************************************************** -- * Variables * -- ******************************************************************************** event_prev_id = -1 event_obj_ids = 0 events = 4 -- ******************************************************************************** -- * Functions * -- ******************************************************************************** -- Run the commands on startup of the race function randomNewEvent() local new_id repeat new_id = rand(events) until not event_prev_id == new_id event_prev_id = new_id if new_id == 0 then eventAmbulance() end end function eventAmbulance() end function eventFiretruck() end function eventPoliceHunt() end function eventSpeeders() end function endEvents() for i = 0, event_obj_ids, 1 do endEvent(id) end end function endEvent() end
logic_events.lua
Note: This starts from line 702. All lines before that contain the main part of the game, so these aren't shown.
-- ********************************************************************************
-- * Debug functions (should be removed in final version!) *
-- ********************************************************************************
function addTime() -- DEBUG
timerChangeDelta("race_timer", 60) -- DEBUG
gameLog("Added 60s to the counter ... enjoy!") -- DEBUG
end -- DEBUG
function setTime(new_time) -- DEBUG
timerChange("race_timer", new_time) -- DEBUG
gameLog("Set counter to " .. new_time .. "s ... enjoy!") -- DEBUG
end -- DEBUG
function forceWin() -- DEBUG
career_result = 1
for i = 0, players_human_amount - 1, 1 do -- DEBUG
raceFinish(1, ply_HUMAN_subname .. i) -- DEBUG
end -- DEBUG
if players_human_amount < players then -- DEBUG
for i = 0, players - players_human_amount - 1, 1 do -- DEBUG
raceFinish(0, ply_AI_subname .. i) -- DEBUG
end -- DEBUG
end -- DEBUG
raceFinish(1) -- DEBUG
end -- DEBUG
function forceLose() -- DEBUG
career_result = 0
for i = 0, players_human_amount - 1, 1 do -- DEBUG
raceFinish(0, ply_HUMAN_subname .. i) -- DEBUG
end -- DEBUG
if players_human_amount < players then -- DEBUG
for i = 0, players - players_human_amount - 1, 1 do -- DEBUG
raceFinish(1, ply_AI_subname .. i) -- DEBUG
end -- DEBUG
end -- DEBUG
raceFinish(0) -- DEBUG
end -- DEBUG
logic_multi_client.lua
-- ********************************************************************************
-- ********************************************************************************
-- * Midtown Madness X *
-- * Generic multiplayer : Cruise *
-- * OBS: No modifications should be made to this file!!! *
-- ********************************************************************************
-- ********************************************************************************
-- Only InitAmbience() should be called in this script
gameLoadScript("logic_general.lua")
-- ********************************************************************************
-- * Startup functions *
-- ********************************************************************************
function generalOnRaceStart(player, view, timeLeft)
local timer_in = 0.15
local timer_out = 0
local timer_show = (timeLeft/6) - timer_in - timer_out
local timer_sound = 0
local timer_wait = (timeLeft/6) - timer_sound
if (timeLeft > 1) then
stack(0, "cameraPreRaceSweep(" .. view .. ", " .. (timeLeft/2) .. ")")
stack(timeLeft/2, "gameCountDownStart(3, " .. timer_in .. ", " .. timer_show .. ", " .. timer_out .. ")")
stack(timer_sound, "soundPlayEffect('321')")
stack(timer_wait, "gameCountDownStart(2, " .. timer_in .. ", " .. timer_show .. ", " .. timer_out .. ")")
stack(timer_sound, "soundPlayEffect('321')")
stack(timer_wait, "gameCountDownStart(1, " .. timer_in .. ", " .. timer_show .. ", " .. timer_out .. ")")
stack(timer_sound, "soundPlayEffect('321')")
stack(timer_wait, "gameCountDownStart(0, " .. timer_in .. ", " .. timer_show .. ", " .. timer_out .. ")")
stack(timer_sound, "soundPlayEffect('go')")
stack(timer_sound, "playerEnableInput('" .. player .. "')")
stack(timer_sound, "raceStart()")
else
gameLog("Quick countdown")
sweepTime = 2
stack(0, "cameraPreRaceSweep(" .. view .. ", " .. sweepTime .. ")")
stack(sweepTime, "playerEnableInput('" .. player .. "')")
stack(timer_sound, "raceStart()")
end
stackRun()
end
logic_multi_spawnlocations_paris.lua
This file contains all multiplayer spawn locations for the Paris map.
-- ********************************************************************************
-- ********************************************************************************
-- * Midtown Madness X *
-- * Multiplayer Paris spawn-locations *
-- ********************************************************************************
-- ********************************************************************************
-- ********************************************************************************
-- * Variables *
-- ********************************************************************************
multi_spawn_location = {}
-- Arc de Triumph
multi_spawn_location[1] = {}
multi_spawn_location[1]["constrain"] = {-703.014038,28.599976,885.903259, 525;}
multi_spawn_location[1][1] = {-729.062622,28.860729,824.705627, 0.425785;}
multi_spawn_location[1][2] = {-677.116394,28.857939,949.094666, 3.571365;}
multi_spawn_location[1][3] = {-641.333069,28.863956,860.687378, 5.155476;}
multi_spawn_location[1][4] = {-766.623108,28.857964,912.715942, 1.978534;}
multi_spawn_location[1][5] = {-676.919922,28.857769,823.593689, 5.871404;}
multi_spawn_location[1][6] = {-728.254639,28.857880,948.912903, 2.760859;}
multi_spawn_location[1][7] = {-767.676270,28.857950,859.173645, 1.161324;}
multi_spawn_location[1][8] = {-638.290466,28.857740,913.429626, 4.350385;}
multi_spawn_location[1]["hunter"] = {-981.388855,23.768562,1018.33545, 2.041837;}
-- Madelene
multi_spawn_location[2] = {}
multi_spawn_location[2]["constrain"] = {422.957336,17.246643,612.156738, 525;}
multi_spawn_location[2][1] = {322.972992,16.837706,347.575134, 5.907536;}
multi_spawn_location[2][2] = {334.735931,16.837709,373.062439, 5.909806;}
multi_spawn_location[2][3] = {353.446503,16.837776,415.699432, 4.431984;}
multi_spawn_location[2][4] = {366.081696,16.837925,443.371582, 4.377823;}
multi_spawn_location[2][5] = {333.614349,16.837883,457.941254, 2.809117;}
multi_spawn_location[2][6] = {321.175781,16.837658,430.809875, 2.794186;}
multi_spawn_location[2][7] = {302.376709,16.837711,388.463440, 1.236599;}
multi_spawn_location[2][8] = {289.608276,16.837986,361.928284, 1.226411;}
multi_spawn_location[2]["hunter"] = {439.119110,17.847754,647.673523, 3.564979;}
-- Sacre Coeur
multi_spawn_location[3] = {}
multi_spawn_location[3]["constrain"] = {1325.210571,59.870087,1250.398804, 425;}
multi_spawn_location[3][1] = {1313.419067,60.337944,1194.342896, 3.189455;}
multi_spawn_location[3][2] = {1317.712891,60.337757,1194.975830, 2.936446;}
multi_spawn_location[3][3] = {1322.614136,60.337952,1196.053589, 2.857661;}
multi_spawn_location[3][4] = {1327.407104,60.337914,1197.515991, 2.719390;}
multi_spawn_location[3][5] = {1332.121338,60.337757,1200.257446, 2.714844;}
multi_spawn_location[3][6] = {1336.138672,60.337765,1203.317993, 2.504399;}
multi_spawn_location[3][7] = {1339.617676,60.337688,1207.518433, 2.518405;}
multi_spawn_location[3][8] = {1342.158447,60.337975,1211.277466, 2.424995;}
multi_spawn_location[3]["hunter"] = {1290.744629,60.334320,1284.734375, 2.759937;}
-- Eleftower
multi_spawn_location[4] = {}
multi_spawn_location[4]["constrain"] = {-696.029297,18.000000,-49.686310, 425;}
multi_spawn_location[4][1] = {-719.329651,18.447693,-26.505781, 2.349847;}
multi_spawn_location[4][2] = {-695.599915,18.447969,-15.732449, 3.137931;}
multi_spawn_location[4][3] = {-671.047241,18.447758,-25.033384, 3.931411;}
multi_spawn_location[4][4] = {-661.050720,18.448000,-50.882565, 4.715195;}
multi_spawn_location[4][5] = {-671.032288,18.447788,-74.669556, 5.502910;}
multi_spawn_location[4][6] = {-694.474854,18.447910,-83.900726, 0.000088;}
multi_spawn_location[4][7] = {-719.453979,18.447958,-74.749634, 0.810257;}
multi_spawn_location[4][8] = {-729.589783,18.447727,-50.130402, 1.580507;}
multi_spawn_location[4]["hunter"] = {-848.239014,18.347912,97.422989, 2.379388;}
-- Ivalides
multi_spawn_location[5] = {}
multi_spawn_location[5]["constrain"] = {28.115973,18.720947,-79.843658, 425;}
multi_spawn_location[5][1] = {69.609177,16.347717,54.545708, 3.918060;}
multi_spawn_location[5][2] = {46.931175,16.347748,54.368378, 3.826791;}
multi_spawn_location[5][3] = {6.487767,16.347996,54.640152, 2.510480;}
multi_spawn_location[5][4] = {-14.708457,16.347748,54.839447, 2.419253;}
multi_spawn_location[5][5] = {-14.491766,17.847687,-37.188122, 0.761890;}
multi_spawn_location[5][6] = {4.228920,17.847748,-36.878803, 0.687307;}
multi_spawn_location[5][7] = {49.918549,17.847965,-37.113750, 5.566256;}
multi_spawn_location[5][8] = {68.750893,17.847935,-36.856266, 5.562202;}
multi_spawn_location[5]["hunter"] = {27.721218,16.347717,331.313538, 3.157137;}
-- City Isle
multi_spawn_location[6] = {}
multi_spawn_location[6]["constrain"] = {1448.582764,16.400024,-313.651245, 450;}
multi_spawn_location[6][1] = {1393.877075,16.847881,-366.040558, 5.947467;}
multi_spawn_location[6][2] = {1402.866943,16.847683,-346.525665, 5.948645;}
multi_spawn_location[6][3] = {1419.379883,16.847746,-308.096161, 4.345691;}
multi_spawn_location[6][4] = {1410.813599,16.847914,-328.220581, 4.377406;}
multi_spawn_location[6][5] = {1348.520874,16.847792,-271.827545, 2.714844;}
multi_spawn_location[6][6] = {1341.157715,16.847725,-289.324158, 2.694270;}
multi_spawn_location[6][7] = {1333.005249,16.847767,-308.282532, 1.321308;}
multi_spawn_location[6][8] = {1323.927490,16.897749,-327.855591, 1.248204;}
multi_spawn_location[6]["hunter"] = {1166.150391,16.847935,-231.310135, 2.371164;}
-- Unlimited
multi_spawn_location[7] = {}
multi_spawn_location[7][1] = {1313.419067,60.337944,1194.342896, 3.189455;}
multi_spawn_location[7][2] = {1317.712891,60.337757,1194.975830, 2.936446;}
multi_spawn_location[7][3] = {1322.614136,60.337952,1196.053589, 2.857661;}
multi_spawn_location[7][4] = {1327.407104,60.337914,1197.515991, 2.719390;}
multi_spawn_location[7][5] = {1332.121338,60.337757,1200.257446, 2.714844;}
multi_spawn_location[7][6] = {1336.138672,60.337765,1203.317993, 2.504399;}
multi_spawn_location[7][7] = {1339.617676,60.337688,1207.518433, 2.518405;}
multi_spawn_location[7][8] = {1342.158447,60.337975,1211.277466, 2.424995;}
multi_spawn_location[7]["hunter"] = {1290.744629,60.334320,1284.734375, 2.759937;}
-- Cruise
multi_spawn_location[8] = {}
multi_spawn_location[8][1] = {180.986481,16.655756,58.177841, 1.593299;}
multi_spawn_location[8][2] = {-615.324341,21.842503,412.393097, 3.931410;}
multi_spawn_location[8][3] = {-1128.711670,24.289661,883.728882, 3.074329;}
multi_spawn_location[8][4] = {54.421188,23.347857,1386.962402, 3.079253;}
multi_spawn_location[8][5] = {1406.147461,53.851055,1266.255249, 1.336572;}
multi_spawn_location[8][6] = {1861.869995,19.371660,630.421021, 5.883550;}
multi_spawn_location[8][7] = {1497.211548,16.847780,-250.838928, 2.021087;}
multi_spawn_location[8][8] = {1539.080200,16.937584,-566.287537, 4.717976;}
-- Gold
multi_spawn_location["gold"] = {}
multi_spawn_location["gold"][1] = {27.619831,15.899979,151.004028;} -- 16
multi_spawn_location["gold"][2] = {510.128723,17.399979,802.096802;} -- 38
multi_spawn_location["gold"][3] = {637.825623,16.899979,439.395630;} -- 29
multi_spawn_location["gold"][4] = {70.373413,15.899979,594.340332;} -- 30
multi_spawn_location["gold"][5] = {325.681641,16.899979,-120.995880;} -- 17
multi_spawn_location["gold"][6] = {-137.839081,17.299988,729.480713;} -- 48
multi_spawn_location["gold"][7] = {613.216919,16.899979,-5.279836;} -- 23
multi_spawn_location["gold"][8] = {600.029785,17.310059,-145.191147;} -- 46
multi_spawn_location["gold"][9] = {-1555.703369,28.399979,-37.747147;}
multi_spawn_location["gold"][10] = {-1022.544434,15.399979,-559.657471;}
multi_spawn_location["gold"][11] = {-1355.485352,15.899979,-426.604187;}
multi_spawn_location["gold"][12] = {-800.916809,17.899963,51.394344;}
multi_spawn_location["gold"][13] = {-485.074951,17.899979,-451.198364;}
multi_spawn_location["gold"][14] = {-748.948853,16.399979,-715.916992;}
multi_spawn_location["gold"][15] = {-373.973633,16.899979,-5.527623;}
multi_spawn_location["gold"][16] = {-1070.768311,21.899979,1061.608154;}
multi_spawn_location["gold"][17] = {116.333023,17.899979,954.202881;}
multi_spawn_location["gold"][18] = {305.166138,19.899979,-622.457764;}
multi_spawn_location["gold"][19] = {49.180462,18.150024,-810.410339;}
multi_spawn_location["gold"][20] = {1261.429932,26.899979,-676.699585;}
multi_spawn_location["gold"][21] = {970.703003,21.899979,-359.442871;}
multi_spawn_location["gold"][22] = {1095.965698,16.400055,-113.556137;}
multi_spawn_location["gold"][23] = {-858.444824,28.899979,553.948975;}
multi_spawn_location["gold"][24] = {1624.031372,16.399963,-386.684357;}
multi_spawn_location["gold"][25] = {1481.129150,17.399979,77.869461;}
multi_spawn_location["gold"][26] = {1824.858643,16.899979,32.501091;}
multi_spawn_location["gold"][27] = {1876.052246,16.899979,442.743164;}
multi_spawn_location["gold"][28] = {1617.268066,18.399979,644.669800;}
multi_spawn_location["gold"][29] = {-437.763275,19.900024,1446.560913;}
multi_spawn_location["gold"][30] = {66.243362,22.899979,1338.643799;}
multi_spawn_location["gold"][31] = {772.134155,17.399979,846.217041;}
multi_spawn_location["gold"][32] = {1102.542725,18.899979,566.972046;}
multi_spawn_location["gold"][33] = {728.954590,31.899979,1194.063232;}
multi_spawn_location["gold"][34] = {1132.948730,53.274979,1195.590088;}
multi_spawn_location["gold"][35] = {1490.349609,35.900024,1392.827515;}
multi_spawn_location["gold"][36] = {1047.189331,51.008362,1298.597046;}
multi_spawn_location["gold"][37] = {361.496674,25.000000,1243.686157;}
multi_spawn_location["gold"][38] = {-702.358643,18.899979,1179.706787;}
multi_spawn_location["gold"][39] = {1630.941650,20.027954,838.434143;}
multi_spawn_location["gold"][40] = {1170.390991,17.495758,227.624176;}
multi_spawn_location["gold"][41] = {1516.652954,16.520050,-110.829979;}
multi_spawn_location["gold"][42] = {1917.501221,17.861328,-129.258087;}
multi_spawn_location["gold"][43] = {1703.364624,16.954834,-639.585083;}
multi_spawn_location["gold"][44] = {960.939392,22.020508,-624.539551;}
multi_spawn_location["gold"][45] = {543.715515,22.261963,-637.169373;}
multi_spawn_location["gold"][46] = {-1155.555908,36.899979,238.722473;}
multi_spawn_location["gold"][47] = {324.604584,16.499939,395.158051;}
multi_spawn_location["gold"][48] = {-85.309006,16.399979,820.480103;}
multi_spawn_location["gold"][49] = {-585.378174,21.987091,381.403778;}
multi_spawn_location["gold"][50] = {-325.806000,18.100006,-415.904602;}
multi_spawn_location["gold"][51] = {-695.418823,18.000000,-50.609802;}
multi_spawn_location["gold"][52] = {-968.724731,15.863190,-365.412994;}
multi_spawn_location["gold"][53] = {-1595.606934,28.481140,345.600647;}
multi_spawn_location["gold"][54] = {-1205.456787,27.510010,524.623840;}
multi_spawn_location["gold"][55] = {-964.912415,25.684845,884.870483;}
logic_multi_spawnlocations_washington.lua
This file contains all mutiplayer spawn locations for the Washington D.C. map.
-- ********************************************************************************
-- ********************************************************************************
-- * Midtown Madness X *
-- * Multiplayer Paris spawn-locations *
-- ********************************************************************************
-- ********************************************************************************
-- ********************************************************************************
-- * Variables *
-- ********************************************************************************
multi_spawn_location = {}
-- Georgetown
multi_spawn_location[1] = {}
multi_spawn_location[1]["constrain"] = {-2406.284912,28.233459,257.859772, 457.336243;}
multi_spawn_location[1][1] = {-2312.196289,27.857698,273.762787, 6.264912;}
multi_spawn_location[1][2] = {-2312.310303,29.223230,331.034180, 6.269712;}
multi_spawn_location[1][3] = {-2298.087891,29.189545,346.298798, 1.559112;}
multi_spawn_location[1][4] = {-2256.141602,27.876236,346.296539, 1.591613;}
multi_spawn_location[1][5] = {-2241.240479,27.543348,331.015015, 3.143258;}
multi_spawn_location[1][6] = {-2241.197510,26.403000,275.176086, 3.113431;}
multi_spawn_location[1][7] = {-2255.969727,26.360155,259.507538, 4.702484;}
multi_spawn_location[1][8] = {-2297.729004,27.643274,258.402679, 4.682470;}
multi_spawn_location[1]["hunter"] = {-2148.211914,24.730377,306.304413, 4.709475;}
-- Foggy Bottom
multi_spawn_location[2] = {}
multi_spawn_location[2]["constrain"] = {-1274.151245,25.806458,237.514755, 525;}
multi_spawn_location[2][1] = {-1210.474854,26.254444,139.140472, 3.204724;}
multi_spawn_location[2][2] = {-1142.356934,26.254408,67.950684, 1.648010;}
multi_spawn_location[2][3] = {-1074.679199,26.254335,139.959030, 6.201978;}
multi_spawn_location[2][4] = {-1142.934937,26.254213,201.887405, 4.776656;}
multi_spawn_location[2][5] = {-1178.864380,26.254211,97.344765, 2.349544;}
multi_spawn_location[2][6] = {-1101.678711,26.254206,101.780121, 0.628363;}
multi_spawn_location[2][7] = {-1104.268799,26.254423,171.039917, 5.606558;}
multi_spawn_location[2][8] = {-1175.988281,26.254255,175.927887, 4.012073;}
multi_spawn_location[2]["hunter"] = {-906.435181,27.766840,346.279297, 4.008389;}
-- Old Downtown
multi_spawn_location[3] = {}
multi_spawn_location[3]["constrain"] = {154.533295,13.246826,-604.300781, 425;}
multi_spawn_location[3][1] = {253.174438,12.832956,-458.188568, 6.254433;}
multi_spawn_location[3][2] = {254.085526,13.595224,-362.554382, 6.261364;}
multi_spawn_location[3][3] = {212.474258,14.834875,-313.326752, 4.657073;}
multi_spawn_location[3][4] = {126.169525,18.095253,-312.895813, 4.667452;}
multi_spawn_location[3][5] = {86.928024,18.104650,-353.726746, 3.119173;}
multi_spawn_location[3][6] = {87.669640,13.472976,-459.261383, 3.092720;}
multi_spawn_location[3][7] = {123.060104,12.538389,-504.920013, 1.522342;}
multi_spawn_location[3][8] = {215.124588,12.538510,-504.384888, 1.566956;}
multi_spawn_location[3]["hunter"] = {399.824646,13.452885,-391.600189, 4.711599;}
-- Tidal Basin
multi_spawn_location[4] = {}
multi_spawn_location[4]["constrain"] = {-1751.606079,5.042877,-1244.110840, 425;}
multi_spawn_location[4][1] = {-1844.580811,4.047687,-1274.358765, 6.138587;}
multi_spawn_location[4][2] = {-1855.360107,4.968145,-1188.194336, 0.014566;}
multi_spawn_location[4][3] = {-1855.978149,6.616273,-997.628235, 3.269839;}
multi_spawn_location[4][4] = {-1864.538940,4.926413,-1075.166870, 3.184719;}
multi_spawn_location[4][5] = {-1728.561890,5.654915,-1138.595337, 4.932168;}
multi_spawn_location[4][6] = {-1777.593872,7.935446,-1127.870850, 4.845860;}
multi_spawn_location[4][7] = {-2000.258423,6.316060,-1142.433838, 1.308180;}
multi_spawn_location[4][8] = {-1916.541382,8.947168,-1134.218872, 1.522468;}
multi_spawn_location[4]["hunter"] = {-1554.485474,5.528229,-1138.989624, 4.696843;}
-- The Mall
multi_spawn_location[5] = {}
multi_spawn_location[5]["constrain"] = {-53.649681,68.835258,-1095.499878, 425;}
multi_spawn_location[5][1] = {-193.962738,9.486697,-745.444397, 1.572119;}
multi_spawn_location[5][2] = {-57.936405,7.360875,-730.081665, 4.676148;}
multi_spawn_location[5][3] = {-98.880318,7.730098,-735.058594, 4.718804;}
multi_spawn_location[5][4] = {-158.140762,8.988713,-740.526245, 1.529459;}
multi_spawn_location[5][5] = {-193.222382,7.961590,-811.556213, 1.561941;}
multi_spawn_location[5][6] = {-63.259972,6.446536,-796.941040, 4.710402;}
multi_spawn_location[5][7] = {-96.747589,6.737310,-801.879333, 4.681288;}
multi_spawn_location[5][8] = {-159.718521,7.662846,-806.645325, 1.571498;}
multi_spawn_location[5]["hunter"] = {197.416855,6.171320,-939.905396, 5.213995;}
-- Capitol Hill
multi_spawn_location[6] = {}
multi_spawn_location[6]["constrain"] = {979.961731,23.781250,-1375.919434, 450;}
multi_spawn_location[6][1] = {788.779358,5.832767,-1473.733887, 4.093361;}
multi_spawn_location[6][2] = {756.3,5.832571,-1496.8, 4.108547;}
multi_spawn_location[6][3] = {723.821838,5.832766,-1520.122192, 4.072991;}
multi_spawn_location[6][4] = {696.873413,5.832688,-1551.566040, 4.103737;}
multi_spawn_location[6][5] = {789.430298,5.832827,-1297.911377, 5.217075;}
multi_spawn_location[6][6] = {760.426453,5.832639,-1269.318604, 5.222821;}
multi_spawn_location[6][7] = {721.383362,5.832563,-1257.920898, 5.265994;}
multi_spawn_location[6][8] = {692.771240,5.832766,-1228.780396, 5.229215;}
multi_spawn_location[6]["hunter"] = {1035.887573,13.826936,-1613.959839, 4.726848;}
-- Unlimited
multi_spawn_location[7] = {}
multi_spawn_location[7][1] = {-193.962738,9.486697,-745.444397, 1.572119;}
multi_spawn_location[7][2] = {-57.936405,7.360875,-730.081665, 4.676148;}
multi_spawn_location[7][3] = {-98.880318,7.730098,-735.058594, 4.718804;}
multi_spawn_location[7][4] = {-158.140762,8.988713,-740.526245, 1.529459;}
multi_spawn_location[7][5] = {-193.222382,7.961590,-811.556213, 1.561941;}
multi_spawn_location[7][6] = {-63.259972,6.446536,-796.941040, 4.710402;}
multi_spawn_location[7][7] = {-96.747589,6.737310,-801.879333, 4.681288;}
multi_spawn_location[7][8] = {-159.718521,7.662846,-806.645325, 1.571498;}
multi_spawn_location[7]["hunter"] = {197.416855,6.171320,-939.905396, 5.213995;}
-- Cruise
multi_spawn_location[8] = {}
multi_spawn_location[8][1] = {1086.434570,13.006753,-691.295715, 3.161417;}
multi_spawn_location[8][2] = {97.657379,6.513629,-1028.308838, 0.000000;}
multi_spawn_location[8][3] = {-120.714798,21.335129,-308.182770, 4.716100;}
multi_spawn_location[8][4] = {-1267.814575,18.625660,-112.020821, 3.145168;}
multi_spawn_location[8][5] = {-2057.449219,28.237991,329.260193, 3.097996;}
multi_spawn_location[8][6] = {-2654.936035,9.911852,-257.709259, 1.567365;}
multi_spawn_location[8][7] = {-2086.356689,4.125021,-1158.038940, 2.287669;}
multi_spawn_location[8][8] = {-622.063171,3.861327,-2366.347168, 3.278423;}
multi_spawn_location["gold"] = {}
multi_spawn_location["gold"][1] = {-823.757080,9.042435,-807.373047;} -- 18
multi_spawn_location["gold"][2] = {-215.927460,5.376343,-1149.390381;} -- 11
multi_spawn_location["gold"][3] = {-560.312073,11.648438,-1416.510498;} -- 45
multi_spawn_location["gold"][4] = {-823.286560,3.797882,-1383.062256;} -- 17
multi_spawn_location["gold"][5] = {-1152.007813,7.518433,-994.587402;} -- 25
multi_spawn_location["gold"][6] = {-915.442261,16.482178,-500.939667;} -- 47
multi_spawn_location["gold"][7] = {1331.952271,25.035522,-1378.985352;} -- 18
multi_spawn_location["gold"][8] = {252.642960,13.614441,-315.798004;}
multi_spawn_location["gold"][9] = {90.469711,9.042435,-737.973389;}
multi_spawn_location["gold"][10] = {-204.500488,24.282425,-123.829163;}
multi_spawn_location["gold"][11] = {1226.847412,16.662430,-887.609253;}
multi_spawn_location["gold"][12] = {90.463791,7.518433,-1619.827637;}
multi_spawn_location["gold"][13] = {-373.016968,2.946426,-1915.495361;}
multi_spawn_location["gold"][14] = {-881.556641,2.946472,-2382.582275;}
multi_spawn_location["gold"][15] = {-1248.853638,2.946442,-1815.185059;}
multi_spawn_location["gold"][16] = {-1692.629150,3.556030,-1651.590576;}
multi_spawn_location["gold"][17] = {899.436768,11.898163,-1382.999512;}
multi_spawn_location["gold"][18] = {850.169312,13.614441,-469.590607;}
multi_spawn_location["gold"][19] = {-475.943298,16.662430,-460.694519;}
multi_spawn_location["gold"][20] = {-744.277466,18.186417,-189.698212;}
multi_spawn_location["gold"][21] = {-908.473938,26.092407,138.648117;}
multi_spawn_location["gold"][22] = {-569.073975,27.025635,331.281403;}
multi_spawn_location["gold"][23] = {-1409.874390,33.426453,592.885437;}
multi_spawn_location["gold"][24] = {-1259.039673,19.710449,-314.376343;}
multi_spawn_location["gold"][25] = {405.971344,7.017456,-1315.076416;}
multi_spawn_location["gold"][26] = {-1565.794678,19.710449,-605.743774;}
multi_spawn_location["gold"][27] = {-1812.878418,3.246796,-681.379578;}
multi_spawn_location["gold"][28] = {-1893.446777,9.278564,-1126.059570;}
multi_spawn_location["gold"][29] = {-2190.589844,4.420425,-426.005554;}
multi_spawn_location["gold"][30] = {-2379.901123,2.943787,-454.653198;}
multi_spawn_location["gold"][31] = {-2315.466309,15.419510,-60.655846;}
multi_spawn_location["gold"][32] = {-1689.187744,18.186417,-55.506271;}
multi_spawn_location["gold"][33] = {-2438.995605,33.426407,348.999146;}
multi_spawn_location["gold"][34] = {-2735.429443,54.762451,850.812134;}
multi_spawn_location["gold"][35] = {-1776.693481,22.532410,541.993652;}
multi_spawn_location["gold"][36] = {-2337.846680,30.378448,1067.245850;}
multi_spawn_location["gold"][37] = {-2147.818848,24.282425,305.503845;}
multi_spawn_location["gold"][38] = {-2820.763672,2.992188,-292.342377;}
multi_spawn_location["gold"][39] = {-1693.137329,20.848450,-313.710663;}
multi_spawn_location["gold"][40] = {-1769.080933,14.698730,-667.219421;}
multi_spawn_location["gold"][41] = {-1994.677490,16.113220,-994.193909;}
multi_spawn_location["gold"][42] = {-1550.736328,4.171875,-1445.967041;}
multi_spawn_location["gold"][43] = {-1006.503418,2.946411,-1639.946655;}
multi_spawn_location["gold"][44] = {-592.787354,3.231445,-2198.611328;}
multi_spawn_location["gold"][45] = {828.365845,6.604019,-1141.348633;}
multi_spawn_location["gold"][46] = {-593.308411,6.437500,-989.502014;}
multi_spawn_location["gold"][47] = {575.737183,12.040436,-871.566895;}
multi_spawn_location["gold"][48] = {-1185.986938,28.467407,473.999695;}
multi_spawn_location["gold"][49] = {-785.597656,24.601379,81.120331;}
multi_spawn_location["gold"][50] = {-498.295013,19.783508,-218.474136;}
multi_spawn_location["gold"][51] = {159.620483,5.681335,-1033.451904;}
multi_spawn_location["gold"][52] = {454.527954,12.440735,-684.490051;}
multi_spawn_location["gold"][53] = {1244.252930,12.734436,-694.813843;}
multi_spawn_location["gold"][54] = {1331.838745,25.806427,-1707.602295;}
multi_spawn_location["gold"][55] = {709.055664,5.384827,-1732.383423;}
PedDebugSetup.lua
Another file for debugging pedestrians.
function peddebug() objectCreate(1,"pedDebugTarget") objectSetPos( 355, 16.40, 369 ) objectEnable( "pedDebugTarget" ) objectShow( "pedDebugTarget" ) objectCreate(6,"myPed") objectSetParam( "Cinematic Pedestrian1" ) objectSetPos( 269, 16.40, 377 ) objectEnable( "myPed" ) objectShow( "myPed" ) objectUpdateAdd( "myPed" ) objectSetActive( "myPed" ) pedGoTo( "pedDebugTarget" ) end
unlockallskins.lua
--
-- Unlocks all the skins.
--
function onInit()
local mytable = {
{"Ambulance", 2 },
{"ArmoredCar", 2 },
{"AudiTT", 2 },
--{"Avalanche", 0 },
{"Avant", 3 },
{"Cement", 2 },
{"ChevySSR", 3 },
{"Corvette", 2 },
{"Crossfire", 2 },
{"DCBus", 2 },
{"Escalade", 2 },
{"FireTruck", 2 },
{"Freightliner", 2 },
{"Garbage", 2 },
{"HummerH2", 2 },
{"Koenigsegg", 2 },
{"Limo", 2 },
{"Lotus", 2 },
{"MFastBack", 3 },
{"Microcar", 2 },
{"mini", 2 },
{"mv_badguy", 2 },
{"NewBeetle", 2 },
{"Opel_Astra", 0 },
{"ParisBus", 2 },
{"ParisPolice", 2 },
{"ParisTaxi", 2 },
{"Pt", 2 },
{"Renault5", 2 },
{"Saab93", 2 },
--{"SerpentMk2", 0 },
{"Seville", 2 },
{"WashingtonPolice", 2 },
{"WashingtonTaxi", 2 },
{"Viper", 0 },
}
local index = 0
for i,v in mytable do
index = 1
while index <= v[2] do
playerProfileAddKey( v[1] .. "." .. index )
index = index + 1
end
end
playerProfileAddKey( "Avalanche" )
playerProfileAddKey( "SerpentMk2" )
end
user.lua
A basic initialization routine.
function onInit()
gameLog("running user init...\n")
cityAdd("Paris", "d:\\Data\\Shared\\Paris\\Paris", "d:\\Data\\Shared\\Paris\\ParisSplit")
cityAdd("Washington", "d:\\Data\\Shared\\Washington\\Washington", "d:\\Data\\Shared\\Washington\\WashingtonSplit")
gameLog("exiting user init...\n")
-- Moved to E3settings.lua
-- renderSetFov(65) -- 56
end
userSetup.lua
-- Description:
-- Configure the game settings per user.
--
-- Dependencies:
-- [Which scripts / modules / states must be set/run/ok]
--
--
function onInit()
gameLog("running user setup...\n")
--
-- Disable some loglevels...
--
if queryBuildMode() == 1 then
-- NDEBUG
setLogLevel("", "warning")
else
setLogLevel("", "warning")
end
gameLog("exiting user setup...\n")
end
Data\Data_hd\Scripts\Test
This folder and the AI subfolder contain seven files.
test_Base.lua
-- callbacks that can be overloaded by other test scripts
function test_onEnterFrontEndFirstTime()
end
function test_onEnterFrontEnd()
end
function test_onStartRace()
end
function test_onFinishRace()
end
function test_onUpdate(deltaTime, state)
end
-- utility functions used by other test scripts
function test_exitToMenu()
input("s2dara")
end
test_CarsParisBlitz.lua
test_isFirstTime = 0
function test_onEnterFrontEnd()
if (test_isFirstTime == 0) then
input("sdadaa2ra")
input("20la")
test_isFirstTime = 1
else
input("2ara")
end
end
function test_onStartRace()
input("s2da")
end
test_ParisCruise.lua
test_isFirstTime = 0
function test_onEnterFrontEnd()
if (test_isFirstTime == 0) then
input("ad5a")
test_isFirstTime = 1
else
input("2a")
end
end
function test_onStartRace()
input("s2da")
end
test_RestartParisCruise.lua
function test_onEnterFrontEndFirstTime()
input("ad6a")
end
test_firstTime = 0
function test_onStartRace()
if (firstTime == 0) then
input("sdala")
test_firstTime = 1
else
input("ala")
end
end
test_SwitchCity.lua
test_isFirstTime = 0
test_city = 0
function test_onEnterFrontEndFirstTime()
input("ad5a")
end
function test_onEnterFrontEnd()
if (test_city == 0) then
input("br3a")
test_city = 1
else
input("bl3a")
test_city = 0
end
end
function test_onStartRace()
test_exitToMenu()
end
\AI\test_CruiseParis.lua
test_haveRun = nil
function test_onEnterFrontEnd()
if( not test_haveRun ) then
command = ""
-- Enter profile menu
command = command .. "s"
-- Select default profile
command = command .. "a"
-- Enter single race
command = command .. "da"
-- Select cruise
command = command .. "a"
-- Select paris city
command = command .. "a"
-- Select the parameters (just accept the default)
command = command .. "a"
-- Select car and transmission (just take the default)
command = command .. "a"
-- Send command to MEME.
input( command );
-- Set flag to true
test_haveRun = 1
else
-- Restart race directly
-- input( "aaa" )
end
end
function test_onStartRace()
-- input("s2da")
end
\AI\test_TaxiCareer0103.lua
test_haveRun = nil
function test_onEnterFrontEnd()
gameLog( "Automatic AI test script - starting taxi race" )
if( not test_haveRun ) then
command = ""
-- Enter main menu
command = command .. "s"
-- Enter career sub menu
command = command .. "a"
-- Select paris city
command = command .. "a"
-- This doesn't work ???
-- Skip movie
-- command = command .. "a"
-- Choose taxi
command = command .. "da"
-- Chose race 4
command = command .. "ddda"
-- Choose transmission automatic
command = command .. "a"
-- Send command to MEME.
input( command );
-- Set flag to true
test_haveRun = 1
else
-- Restart race directly
-- input( "aaa" )
end
end
function test_onStartRace()
-- input("s2da")
end
Debug Leftovers
In 'Data\Data_hd\Menu' , there are two folders named 'Debug' and 'DebugHUD'. In 'Debug', a single file named DebugMenu is present. Inside 'DebugHUD', a file called DebugHUD is present.
DebugHUD
The debug HUD shows car speed, RPM, gear, position (in X, Y and Z); brake, engine, gear and suspension damage; camera positions (in X, Y, Z and angle).
However, the final version only has engine damage. Gear, suspension and brake damage were probably present in an early version.
DebugMenu
The debugMenu file can be loaded and we can extract the strings, that indicates the available options. This debug menu can change level-of-detail (draw distance), anti-aliasing, V-sync and AI options; Enable/Disable traffic, debug HUD, peds, skybox and a wireframe mode but in-game it is broken you only can select the options but they don't do anything.
dice::meme::NameNode dice::meme::TabstopManagerNode dice::meme::CullEventActionNode"dice::meme::TransitionalEffectNode dice::meme::TransformNode dice::meme::TextNode variables/varFogLength dice::meme::IntData styles/styleDebugValue dice::meme::Style dice::meme::FocusEffectNode dice::meme::TabstopNode dice::meme::ModifyVariableAction dice::meme::ButtonEvent dice::meme::WstringData styles/styleDebugItem dice::meme::RightAlignedStyle dice::meme::ColorEffect variables/varFarClip variables/varLODFar options/optionLODFar variables/varLODNear options/optionLODNear dice::meme::IndexDataData dice::meme::DataListData variables/varAliasMode options/optionAliasing variables/enableVSync dice::meme::BoolData dice::meme::ToggleVariableAction options/optionVSync variables/paintAiAmbientDebug options/optionAiAmbientDebug variables/paintAiGraph options/optionAiGraph&variables/enableTrafficLightIndicators$options/optionTrafficLightIndicators variables/enableDebugHud options/optionDebugHud ariables/enableTraffic options/optionTraffic variables/enablePeds options/optionPedsvariables/enableWireframe options/optionWireframe variables/enableSkyBox options/optionSkyBox styles/styleDebugTitle dice::meme::CenterAlignedStyle dice::meme::EffectNode dice::meme::PictureNode dice::meme::AlphaFadeEffect dice::meme::SetTabstopAction optionsTab dice::meme::TypeEvent
Strange Folder
'Data\Data_dvd\Constrain' contains two files, 'MatrixCode.cdds' and 'Secret.cdds' and one subfolder 'bak' containing what appears to be an early version of 'MatrixCode.cdds', because both files have the same name.
Regional Differences
'Data\Data_dvd\Menu\Gfx' contains error messages for dirty/damaged DVDs. 'badgamedisc.tga' contains an early version of this screen in English, with an edit date of February 23, 2003, compared to May 9, 2003 in the final version. The only change is that the small text blurb saying "Press A to continue" was removed. However, the file used for the Japanese version, 'BadGameDiscJapanese.tga', is a copy of the early version!
| Early/Japan | Final |
|---|---|
| The Madness series | |
|---|---|
| Windows | Monster Truck Madness • Monster Truck Madness 2 Midtown Madness (Prototypes) • Midtown Madness 2 (Prototypes) |
| Nintendo 64 | Monster Truck Madness 64 |
| Xbox | Midtown Madness 3 |
- Games developed by Digital Illusions CE
- Games published by Microsoft Game Studios
- Xbox games
- Games released in 2003
- Games with unused code
- Games with uncompiled source code
- Games with hidden development-related text
- Games with unused graphics
- Games with debugging functions
- Games with regional differences
- Madness series
Games > Games by content > Games with debugging functions
Games > Games by content > Games with hidden development-related text
Games > Games by content > Games with regional differences
Games > Games by content > Games with uncompiled source code
Games > Games by content > Games with unused code
Games > Games by content > Games with unused graphics
Games > Games by developer > Games developed by Electronic Arts > Games developed by EA DICE > Games developed by Digital Illusions CE
Games > Games by platform > Xbox games
Games > Games by publisher > Games published by Microsoft > Games published by Microsoft Studios > Games published by Microsoft Game Studios
Games > Games by release date > Games released in 2003
Games > Games by series > Madness series