Important information: this site is currently scheduled to go offline indefinitely by end of the year.

Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archive

The Original Forum. Game archives, full of resources. How to open them? Get help here.
CantStoptheBipBop
advanced
Posts: 53
Joined: Sat Aug 27, 2016 9:43 am
Has thanked: 7 times
Been thanked: 7 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by CantStoptheBipBop »

Tex wrote:Neato. You could probably roll the camo modding code into player2_camouf_param itself.
That would probably be simpler than keeping track of changes to it outside of the game.

I finished an alpha build of a camo index UI feedback mod. Some things still don't work properly but it takes most parameters into account. It just references player status and misc environment factors like weather and mission time. You can trigger it by holding the reload button to get an iDroid log display at a max of every second.

Notes about player status since I couldn't find anything about them:

Code: Select all

e.debugTable.playerStatus={
	'STAND',--standing; false if HORSE_STAND; true when ON_VEHICLE
	'SQUAT',--crouching or doing cbox slide
	'CRAWL',--prone or when CBOX_EVADE
	'NORMAL_ACTION',--true for most generic on-foot movement-related actions including STOP; false when ON_VEHICLE or ON_HORSE or CBOX
	'PARALLEL_MOVE',--aiming
	'IDLE',
	'GUN_FIRE',--true even with suppressor; GUN_FIRE and GUN_FIRE_SUPPRESSOR not true with player vehicle weapons
	'GUN_FIRE_SUPPRESSOR',--true when discharge with suppressor; GUN_FIRE also true when this
	'STOP',--when idle on foot or cbox; true when CBOX_EVADE; always true if ON_VEHICLE; 
	'WALK',--slow speed
	'RUN',--default speed
	'DASH',--fast speed
	'ON_HORSE',--piloting D-Horse
	'ON_VEHICLE',--piloting vehicle
	'ON_HELICOPTER',
	'HORSE_STAND',
	'HORSE_HIDE_R',
	'HORSE_HIDE_L',
	'HORSE_IDLE',--HORSE_[speed] also used for D-Walker
	'HORSE_TROT',--slow speed
	'HORSE_CANTER',--default speed
	'HORSE_GALLOP',--fast speed
	'BINOCLE',--using int-scope
	'SUBJECT',--first-person camera
	'INTRUDE',
	'LFET_STOCK',
	'CUTIN',--placing guard in something (probably dev typo for PUT_IN)
	'DEAD',
	'DEAD_FRESH',
	'NEAR_DEATH',
	'NEAR_DEAD',
	'FALL',
	'CBOX',--true while in cbox and not sliding and not CBOX_EVADE
	'CBOX_EVADE',--crawling out of cbox; CBOX false if true
	'TRASH_BOX',
	'TRASH_BOX_HALF_OPEN',
	'INJURY_LOWER',
	'INJURY_UPPER',
	'CURE',
	'CQC_CONTINUOUS',
	'BEHIND',--pressed against cover/wall
	'ENABLE_TARGET_MARKER_CHECK',
	'UNCONSCIOUS',
	'PARTS_ACTIVE',--seems to always be true when deployed or in ACC
	'CARRY',
	'CURTAIN',
	'VOLGIN_CHASE'
}
Notes about camo index mod (If anyone has more info on these then do share):

Code: Select all

--[[
To do:
	- CBOX: check current equipped item itemID when PlayerStatus.CBOX and when doing cbox slide to override fatigue camo with cbox camo type
Limitations:
	- Camo surface bonus being given if material type exists at location rather than by catching player collision with material. Need to experiment with getting info from Capture Cage functions.
	- Player illumination not checked. Might be able to do partial with OnDamage() ATK_Flashlight and ATK_FlashlightAttack
	- No status check for prone stealth mode. Might be possible by keeping track of action button press
	- No status check for vehicle weapon discharge. Need to add vehicle fire button press to calculation. Will still need to get ammo count at some point.
	- Free Roam enclosed vehicle bonus being given for piloting any deployable vehicle. Need to figure out how to detect player vehicle name to differentiate.
	- No status check for vehicle speed. PlayerStatus always returns STOP.
	- Hiding in truck cabin is not checked. PlayerStatus always STAND in vehicles. Button could be checked but would still need to detect player vehicle name.
	- Stealth Camouflage and parasite abilities not factored into index.
]]
Mod main script
nasanhak
advanced
Posts: 71
Joined: Sat Nov 28, 2015 6:01 am
Has thanked: 10 times
Been thanked: 4 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by nasanhak »

Figured something out so here's a guide

How to add BGM from any other mission:
1. First find the code associated with the BGM track via the mission specific '_sequence' or '_demo' Lua file. In this example, I have taken the heli pullout BGM from Mission 2 Diamond Dogs:

Code: Select all

	TppSound.SetSceneBGM("bgm_mtbs_departure")
	TppSound.SetSceneBGMSwitch("Set_Switch_bgm_s10030_departure")

2. Next step is to look in the mission's '_sound' Lua file and identify the BGM information. In this case, that file is 's10030_sound.lua':

Code: Select all

	this.bgmList = {
		bgm_mtbs_departure = {
			start = "Play_bgm_s10030_departure",
			finish = "Stop_bgm_s10030_departure",
			switch = {
				"Set_Switch_bgm_s10030_helicall",
				"Set_Switch_bgm_s10030_departure",
			}
		}
	}
3. Now we will look at how to add this BGM track to the Zoo which is a perfect example since it does not have it's own BGM info. For the purposes of this demo, this particular BGM has already been added to Motherbase free roam f30050 correctly and f30050 files will be used to setup the BGM data in f30150(Zoo)

4. So first things first. The BGM banks are located in the path "\Assets\tpp\sound\asset" in each of the chunk dats. The sound banks are sbp files. These sbp files are loaded via a mission specific sdf file which is present in the '_area.fpkd' file of the mission.

5. The BGM we are porting over is from M2(s10030) and belongs to chunk3. The paths to the sbp and sdf files are as below:
chunk3\Assets\tpp\sound\asset\bgm_s10030.sbp
chunk3\Assets\tpp\pack\mission2\story\s10030\s10030_area_fpkd\Assets\tpp\sound\package\bgm_s10030.sdf

6. The sdf file can be unpacked and repacked via the FOX2 tool. It simply has a reference to which sound banks to load from the "\Assets\tpp\sound\asset" folder. So in the case of s10030, the entry in the sdf file looks like this:

Code: Select all

	<property name="loadBanks" type="String" container="DynamicArray" arraySize="2">
		  <value>bgm_s10030</value>

7. Any additional sound banks can be added via an extra value tag.

8. Let's begin porting over this BGM to the Zoo. Unpack f30050.fpkd and f30150.fpkd via GzsTool.

9. f30150 does not have it's own BGM data so copy the following files:
f30050_sound.lua
f30050_sound_music.fox2

from:
f30050_fpkd\Assets\tpp\level\mission2\free\f30050

to:
f30150_fpkd\Assets\tpp\level\mission2\free\f30150

10. Rename the copied files to match with the f30150 naming convention:
f30150_sound.lua
f30150_sound_music.fox2

11. We are only interested in the BGM list present in 'f30150_sound.lua' so change the list to as follows:

Code: Select all

	this.bgmList = {
			bgm_mtbs_departure = {
				start = "Play_bgm_s10030_departure",
				finish = "Stop_bgm_s10030_departure",
				switch = {
					"Set_Switch_bgm_s10030_helicall",
					"Set_Switch_bgm_s10030_departure",
				}
			},
	}

12. This is an important step. Unpack 'f30150_sequence.fox2' via FOX2 tool. Look for the entity TppSimpleMissionData in the generated xml. Under the subScripts tag, you want to update the sound key so it will now look like this:

Code: Select all

	<value key="sound">/Assets/tpp/level/mission2/free/f30150/f30150_sound.lua</value>
For a mission that already uses BGM this step isn't necessary but for Zoo(f30150) and MBQF(f30250) it is important! Once the xml is update, rebuild the FOX2 file via the FOX2 tool.

13. 'f30150_sound_music.fox2', that we copied over and renamed earlier, holds the reference to the sdf file and can be unpacked via FOX2 tool. Since the file was copied over from f30050, it holds the same sdf file path as for Motherbase(f30050). It should be possible to change the sdf name but have not tried this yet. So in this case, simply use the same name for the sdf file.

14. Copy 'bgm_mtbs_phase.sdf' from:
f30050_fpkd\Assets\tpp\sound\package

to:
f30150_fpkd\Assets\tpp\sound\package

15. Unpack the copied over 'bgm_mtbs_phase.sdf' via FOX2 tool. It will hold the load banks as mentioned earlier. Since this file it from f30050, it already holds sound banks from MB:

Code: Select all

	<property name="loadBanks" type="String" container="DynamicArray" arraySize="2">
	  <value>bgm_mtbs_phase</value>
	  <value>p51_020030</value>
	</property>

16. Change this to:

Code: Select all

	<property name="loadBanks" type="String" container="DynamicArray" arraySize="1">
	  <value>bgm_s10030</value>
	</property>

Now repack the xml via FOX2 tool.

While there is no need to remove the other sound banks at all, Zoo doesn't use any BGM so they are really not necessary. If adding sound banks to a mission that already has BGM sound banks, you would want to add an extra value tag entry.

17. Now that all our files and data is ready, all we need to do is repack the 'f30150.fpkd' file with the additional files and write the code.

18. Open 'f30150.fpkd.xml' that GzsTool would have generated and add the following entries:
<Entry FilePath="/Assets/tpp/level/mission2/free/f30150/f30150_sound_music.fox2" />
<Entry FilePath="/Assets/tpp/sound/package/bgm_mtbs_phase.sdf" />
<Entry FilePath="/Assets/tpp/level/mission2/free/f30150/f30150_sound.lua" />

Entries have to be added in alphabetic order first by file type and then by full path to the file. It's a bit tricky but if you look at 'f30050.fpkd.xml' you will understand.

Repack the fpkd via GzsTool.

19. In order to fire this BGM, I have tied it to the pullout message from the heli, but that really isn't necessary:

Code: Select all

	function this.Messages()
		return Tpp.StrCode32Table{
			GameObject={
				{
					msg = "StartedPullingOut", sender = {"SupportHeli", "TppHeli2"},
					func = function ()
						this.PlayPulloutBGMFromM2()
					end
				},
			}
		}
	end
	..................
	..................
	..................

	function this.PlayPulloutBGMFromM2()
		TppSound.SetSceneBGM("bgm_mtbs_departure")
		TppSound.SetSceneBGMSwitch("Set_Switch_bgm_s10030_departure")
		TppSoundDaemon.SetMute( 'HeliClosing' )
	end

20. If you did everything right, and if I didn't miss any step then you would have ported over the BGM from M2 to the Zoo.

21. Interesting tidbit: the engine is capable of playing audio files from the middle. The BGM file in this case is present in bgm_s10030.sbp as the file 'File0001'. This actually consists of two separate tracks which the call TppSound.SetSceneBGMSwitch knows how to distinguish based on the bgmList in '_sound' Lua file. A lot of missions use this approach for example the Prologue/M46 have TMWSTW track stitched together with two other tracks. Why they would do something like this is beyond me. Maybe some kind of performance improvement by loading a single track into memory instead of switching tracks?

22. It may be possible to load sbp sound banks across chunks provided they are added to 00.dat


Final results(please forgive the shitty quality of the first video):
https://youtu.be/4jWel1BPF1Q
https://youtu.be/xpUNNDQW6KY
https://youtu.be/58aX4zDia_8


@morbidslinky Helispaces have the following fpkds associated with them:
h40010_area.fpkd
h40020_area.fpkd
h40050_area.fpkd
h40010_area.fpkd

While they do have '_sound_music.fox2' file, this file does not refer to any sdf file. They do have '_sound_se.fox2' as well which does refer to sdf files which in turn refer to either "se" or "vox" sbp packs. These are sound effect and dialogue packs not BGM.

The reason I mention this is for that elusive sortie prep BGM.

So my guess is that the BGM is either part of the exe(highly unlikely) or is stitched together with some other common BGM file that is loaded for the ACC
youarebritish
n00b
Posts: 13
Joined: Thu Oct 29, 2015 9:23 pm
Been thanked: 7 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by youarebritish »

Hello! Long time lurker, first time poster. The videos of the custom sideops inspired me to finally start doing some digging of my own, as I want to contribute to the effort.

I've been investigating the terrain data, with the hopes of figuring out how to modify it. I've made a decent bit of progress, and thought I'd share what I've found so far.

tre2 files
This was what I figured contained the terrain data at first and was what I spent most of my time so far investigating. So far, I've found the format to go something like this:

Metadata: 704 bytes
Heightmap
Splatmap (0.4x size of heightmap)
MaterialIds? (1/4 size of splatmap)
??? (same size as materialIds)
Footer: 240 bytes

I haven't figured out what any of the metadata is yet, but the heightmap is what we're really interested in. It looks to be a bunch of 4-byte float heights, which I assumed would be a power of 2 size, but it appears to be 10x a power of two. Cypr's heightmap is 163840 bytes, Afgn/Mafr is 655360 bytes, Afc0 is 10240 bytes, Afda is 10240, and Afn0 is also 10240.

I tried replacing the heightmap data for Afc0 with all 0 values, hoping to load a totally flat terrain, but there wasn't any visible difference. I also thought that the resolution of the data is suspiciously small given how big the maps are. So my current theory is that the .tre2 terrain files are actually a lower-res version of the terrain that's loaded to show the distance terrain. I'll need to try my flattening idea on a bigger map to see if I get noticeable results.

That led to my finding...

htre files
I haven't yet found any references to these files in any XML files, and I stumbled upon them by accident. They have a very similar format to the .tre2 files, except the heightmap data is power of two size (!). There appear to be multiple of these for each MGO map, and are named with the format: afc0_107_101_terrain.htre. I haven't looked too deeply into them yet, but I'm guessing/hoping these contain the actual terrain tile height data.

I'm pretty new to reversing so I haven't yet been able to massage the height data into something usable, but I'm going to take a stab at it a little later today.

EDIT: So I managed to extract cypr's tre2 heightmap data and converted it to floats. I expected values in the range of 0-1, but the largest value I'm seeing is 7.972397. :/

EDIT 2: I tried interpreting afc0's height data as raw16 and, while it doesn't look correct, you can clearly see what look like terrain-like features. Hmm...
You do not have the required permissions to view the files attached to this post.
CantStoptheBipBop
advanced
Posts: 53
Joined: Sat Aug 27, 2016 9:43 am
Has thanked: 7 times
Been thanked: 7 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by CantStoptheBipBop »

youarebritish wrote:terrain data info
Interesting stuff. Nice work.

I updated the camo script. It's mostly bug fixes and minor script optimization. link

edit: error in script. Fixed now.
unknown123
advanced
Posts: 75
Joined: Sat Apr 09, 2016 5:36 pm
Has thanked: 4 times
Been thanked: 13 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by unknown123 »

Is there a person who specializes in cyphers? I dumped some traffic between konami servers and the game. All data is encoded using base64, but it looks like garbage after decrypting. I can provide tcp dump (to look at using wireshark) or just raw data. PM me for more info, I don't want to share my login information to everyone on the internet.
User avatar
cra0
ultra-veteran
ultra-veteran
Posts: 438
Joined: Fri Apr 27, 2012 9:37 am
Has thanked: 29 times
Been thanked: 189 times
Contact:

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by cra0 »

Since I haven't done anything for this project for a long time here are my source files
https://github.com/cra0kalo/FoxEngineLib/
CantStoptheBipBop
advanced
Posts: 53
Joined: Sat Aug 27, 2016 9:43 am
Has thanked: 7 times
Been thanked: 7 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by CantStoptheBipBop »

cra0 wrote:Since I haven't done anything for this project for a long time here are my source files
https://github.com/cra0kalo/FoxEngineLib/
You're the one that made that model viewer right? Any chance you can release it?
nasanhak
advanced
Posts: 71
Joined: Sat Nov 28, 2015 6:01 am
Has thanked: 10 times
Been thanked: 4 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by nasanhak »

@CantStoptheBipBop
I am working on a camo setting for my mod. So came across this. We all have tried values between 0-100 but have u ever tried 1000 or 2000?

With 1000 soldiers will not see you at all in plain sight provided you have the right camo! They will hear you however and then they'll see you. But with a value like 2000 they do not see you even if they can hear you. I think the stealth camo item sets the camo index to ridiculous values similar to 2000.

Also and this is awesome, a value like 2000 means you can sprint through enemy outposts which also means you can figure out exactly what terrain a certain area is. Contrary to my assumptions, camo does not tie in to the shrubs/grass/soil in the immediate vicinity around the player but belongs to an entire block(small chunks of the map). At least this seems to be the initial result of this new testing.

Also regarding BlastParameter and SupportWeaponParameter info that you shared earlier - thank you! Saved me a tonne of work!
CantStoptheBipBop
advanced
Posts: 53
Joined: Sat Aug 27, 2016 9:43 am
Has thanked: 7 times
Been thanked: 7 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by CantStoptheBipBop »

nasanhak wrote:camo experiment
Very interesting. I never tried because I assumed 640 was the max applicable bonus since it's the highest value used in enemyParams. So that means when using stealth camouflage the camo index gets boosted to at least 1e3 since the AI behavior you described matches up with it. Parasite camo gets boosted to at least 2e3. Both of them get disabled during a combat alert. I'd assume the night and vehicle bonuses happen in a similar way, maybe under the same function. Their values get boosted by 50, the default material bonus in the camoParam table. Stealth button press when prone and vehicle should operate in a similar manner to camouflage. The camo bonus sheet from the official game guide someone posted (clearly old information based on material bonuses being 50 instead of 10) says that the stealth button reduces enemy sight to 8 meters, so 640+n is its bonus. The function is probably structured as follows:

Code: Select all

function this.checkSpecialCamoufBonus(camoIndex)
	local n=0
	local c=camoIndex
	local ENCLOSED={Vehicle.type.EASTERN_TRACKED_TANK,Vehicle.type.WESTERN_TRACKED_TANK,Vehicle.type.EASTERN_WHEELED_ARMORED_VEHICLE,Vehicle.type.WESTERN_WHEELED_ARMORED_VEHICLE}

	if (bit.band(vars.playerPlayFlag,PlayerPlayFlag.USE_STEALTH)==PlayerPlayFlag.USE_STEALTH) or (bit.band(vars.playerPlayFlag,PlayerPlayFlag.USE_INSTANT_STEALTH)==PlayerPlayFlag.USE_INSTANT_STEALTH) then
		if vars.playerPhase~=TppGameObject.PHASE_COMBAT then
			n=n+1e3
		end
	end

	if (bit.band(vars.playerPlayFlag,PlayerPlayFlag.USE_PARASITE_CAMO)==PlayerPlayFlag.USE_PARASITE_CAMO) then
		if vars.playerPhase~=TppGameObject.PHASE_COMBAT then	
			n=n+2e3
		end
	end

	if (bit.band(vars.playerFlag,PlayerFlag.CHARA_COLLISION_DATA)) then -- pseudo code; actual exe string minus PlayerFlag
		if PlayerInfo.AndCheckStatus{PlayerStatus.ON_VEHICLE} then
			if vars.playerCamoType==PlayerCamoType.SPLITTER then
				n=n+50
			end
		end
	end

	if PlayerInfo.AndCheckStatus{PlayerStatus.ON_VEHICLE} then
		if vars.missionCode==30010 or vars.missionCode==30020 then
			if vars.playerPhase~=TppGameObject.PHASE_COMBAT then
				local CHECKED=false
				for _,v in ipairs(ENCLOSED) do
					if not CHECKED then
						if v==Player2GameObject.TppVehicle2 -- psuedo code
							n=(n+((TppSoldier2.ReloadSoldier2ParameterTables.sightCamouflageParameter.discovery.chara.enemy)*1.3))
							CHECKED=true
						end
					end
				end
			end
		end
	end

	if TppClock.GetTimeOfDay()=='night' and vars.playerCamoType==PlayerCamoType.BLACK then
		n=n+50
	end

	return c+n
end
So I should be able to check the use of stealth camo now in the Camo Index mod. Do you happen to know how to check the itemId of the currently equipped item? I couldn't find a function or vars.player.* anywhere for them. With that I could also give an appropriate surface bonus for the cboxes. Also curious about getting currently equipped cbox poster.

I checked the exe awhile back and found a flag that indicated whether a material, or night, or vehicle bonus is being is being received. Quick way to see it is to stand on a bonused surface and do a scan for the value 1112014848 and then step on an unbonused surface and scan for the value 0. No idea what its name is for calling that from lua but that would be way easier for checking surfaces than baiting AI towards you everywhere.

It's mainly surface bonuses and rock model bonuses for fatigue camos but bushDensity looks to be the max bonus from hiding in bushes, which you can find the exact bonus of in the common location files.
Tex
veteran
Posts: 89
Joined: Sat Aug 20, 2011 4:51 am
Has thanked: 21 times
Been thanked: 11 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by Tex »

nasanhak wrote:Also since we are already on the topic, and since this has been bugging me about your LZs code for a while, the tables in TppLandingZone are misleading:
aprLandingZoneName is actually the LZ name
drpLandingZoneName is actually the drop route. "_drp_" is simply added between the "lz" and actual name part
Those are KJPs names for those vars, not something I deminified. I just continued using them.
I do agree they can be a bit misleading, and I do see one case where it tripped me up naming a var in one of my own features. And there's probably some other cases where I'm specifically referring to the drop route that I should label as such.
KJPs reasoning as near as I can figure is they are trying to differentiate variable wise between one lz being used for both approach (heli going to lz mid mission) and drop (carrying player from mission start).
The issue there is the landing zone entity has a reference to the actual approach route, so the lz name is used as the id for various functions there, but it doesn't have a reference to the drop route, so the functions use the drop route name instead.
Goodness knows why they just didn't extend the lz entity.

You were looking for the return route, which is usually the lz name with a _rtn tag, seen via the TppLandingZoneData entities in the fox2.
I don't remember if you'd asked me about return routes before, sorry I'm telling you after you've already had to manually gather them.

@CantStoptheBipBop
Bringing out some of your questions since they're generally informative:

Messages: recieving/subscribing to messages for your own module requires a bit of setup:

Code: Select all

function this.Messages()
  return Tpp.StrCode32Table{
    GameObject={
      {msg="Damage",func=this.OnDamage},
    },
  }
 end

function this.Init(missionTable)
  this.messageExecTable=Tpp.MakeMessageExecTable(this.Messages())
end

function this.OnReload(missionTable)
  this.messageExecTable=Tpp.MakeMessageExecTable(this.Messages())
end


function this.OnMessage(sender,messageId,arg0,arg1,arg2,arg3,strLogText)
  Tpp.DoMessage(this.messageExecTable,TppMission.CheckMessageOption,sender,messageId,arg0,arg1,arg2,arg3,strLogText)
end
This setup works for Tpp.requires modules along with IH external (MGS_TPP\mod) modules.

For your particular request CantStoptheBipBop you could possibly use PlayerDamaged message

Code: Select all

Player={
{msg="PlayerDamaged",func=function(playerIndex,attackId,attackerId)
or msg OnDamage(gameId,attackId,attackerId) like you were asking, but you'd need to do a GetTypeIndex check on gameId to see if it's a player.
attackId is the TppDamage.ATK_
You can look at InfMain.OnDamage for an example usage (though I see I have a bug, my GetTypeIndex check has gone awol somehow), though there I'm checking damage on soldiers not player.
Can also look at InfLookup.tppDamageEnumToName to see my debug function to get TppDamage enum name from the enum (but it needs a bit of a rework to seperate out all the other enums in TppDamage)


For currently-selected-item I had quick test of:
Player.GetEquipTypeIdBySlot(PlayerSlotType.ITEM,vars.currentItemIndex)

But the returned equipId didn't seem to be right and wouldn't change with currentItemIndex.

Otherwise theres a couple of messages you may want to experiment with:

Code: Select all

  Player={
    {msg="OnEquipItem",

    {msg="OnEquipHudClosed",
You can get the Vehicle.type via

Code: Select all

local vehicleType=GameObject.SendCommand(vars.playerVehicleGameObjectId,{id="GetVehicleType"})
Has anyone had any success with loading lua dll modules in the engine? As far as I've figured mgsvtpp.exe doesn't export any of the lua functions (or export any functions for that matter) so it's probably a no-go anyway, but it's worth asking.
unknown123
advanced
Posts: 75
Joined: Sat Apr 09, 2016 5:36 pm
Has thanked: 4 times
Been thanked: 13 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by unknown123 »

It seems that game sends queries with login-related info(i.e. your amount of nukes) on one url, while everything else(global amount of nukes, fob event info, etc) is sent on another.
Here is a request for nuke amount and server response (TppServerManager.GetNuclearNum()) (most likely base64, 76 characters per line, separated by \r\n) - https://mega.nz/#F!0lBmwSTK!Hxo4l6VbsnqaaK0TMR1YuQ. It feels like xml, but I can't advance any further. If someone deciphers this, we will be able to talk to server without launching the game (or at least pull info that doesn't require auth).

All requests start with

Code: Select all

YnHdLj/1b4RBZXynl0xG1B0domEayp/
which looks like a header.

Stuff I tried:
  • matching first 12 bytes with 12 bytes of files in TPP (encrypted and decrypted using MGSV_QAR_TOOL) - no success
  • same for GZ - no matches as well

EDIT: all nuke requests are done during login procedure. Calling TppServerManager.GetNuclearNum() will just print cached value instead of pulling it from server. Looks like captured info above is just keep-alive requests.
BobDoleOwndU
advanced
Posts: 68
Joined: Thu Dec 24, 2015 7:45 am
Has thanked: 10 times
Been thanked: 10 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by BobDoleOwndU »

Figured I would leave this here in case anyone wants to mess around with it:

FsmTool v0.1

Quickly made tool to extract the chunks from .fsm files. Cannot repack them currently.

There appears to be two separate types of data chunks stored in .fsm files. DEMO chunks and SND chunks. I think the DEMO chunks are the animation data and SND chunks appear to be Wwise Vorbis audio files cut into chunks. I haven't tried patching the SND chunks back together to see if they make a complete audio file yet.
Wormheart
ultra-n00b
Posts: 8
Joined: Tue Oct 06, 2015 9:28 pm
Has thanked: 1 time

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by Wormheart »

Off the beaten path, but has anyone found out where Quiet's boss model is?
caplagrobin
ultra-n00b
Posts: 9
Joined: Thu Oct 06, 2016 7:17 pm
Has thanked: 4 times
Been thanked: 1 time

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by caplagrobin »

Wormheart wrote:Off the beaten path, but has anyone found out where Quiet's boss model is?
Assets\tpp\pack\mission2\common\mis_com_quiet.fpk works for me
nasanhak
advanced
Posts: 71
Joined: Sat Nov 28, 2015 6:01 am
Has thanked: 10 times
Been thanked: 4 times

Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv

Post by nasanhak »

Has anyone figured out what all the params in ReloadDamageParameter in DamageParameterTables.lua are for.

The 3rd and 2nd last are Lethal and Non-Lethal damage.
Post Reply