XeNTaX Forum Index
Forum MultiEx Commander Tools Tools Home
It is currently Sun May 28, 2017 9:14 pm

All times are UTC + 1 hour


Forum rules


Please click here to view the forum rules



Post new topic Reply to topic  [ 1602 posts ]  Go to page Previous  1 ... 101, 102, 103, 104, 105, 106, 107  Next
Author Message
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Sat Jan 28, 2017 10:17 am 
Offline
ultra-n00b

Joined: Tue Oct 06, 2015 9:28 pm
Posts: 8
Has thanked: 1 time
Have thanks: 0 time

caplagrobin wrote:
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


Thanx!
That means any model swap for Assets\tpp\pack\mission2\common\mis_com_quiet.fpk will appear in Mission 11, right?
Gonna try it out.

You can make the ads go away by registering



Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Sat Jan 28, 2017 5:49 pm 
Offline
ultra-n00b

Joined: Thu Oct 06, 2016 7:17 pm
Posts: 8
Has thanked: 3 times
Have thanks: 1 time
Wormheart wrote:
caplagrobin wrote:
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


Thanx!
That means any model swap for Assets\tpp\pack\mission2\common\mis_com_quiet.fpk will appear in Mission 11, right?
Gonna try it out.

Not in the Helispace/Mother Base cutscenes after Mission 11.


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Sat Jan 28, 2017 9:48 pm 
Offline
n00b
User avatar

Joined: Sun Jun 21, 2015 11:20 pm
Posts: 11
Has thanked: 0 time
Have thanks: 2 times
BobDoleOwndU wrote:
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.

You should be able to make a complete stream out of the sound chunks. I wish I remember who wrote it, but I found a tool for extracting the wwise streams and its source on Reddit a while back. https://dl.dropboxusercontent.com/u/884 ... xtract.zip


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Sun Jan 29, 2017 1:29 pm 
Offline
ultra-n00b

Joined: Tue Oct 06, 2015 9:28 pm
Posts: 8
Has thanked: 1 time
Have thanks: 0 time
All these tutorials on how to swap Snake, but very little in the way of swapping other characters (I know, multiple versions for this quest and that make it more difficult).

Mewants to swapz which keep the new model on Quiets Motherbase versions (mtbs cutscenes, medbay) AND her boss model. So far only been successful with her basic buddy model, but she turns back to original model once off the helicopter at motherbase (so she's scripted to switch to another model after going invisible at the helipad).

So far found these on Quiet (as in the fpk/fpkd/ptfxs set).

Chunk0/Assets/tpp/pack/mission2/common>mis_com_quiet (where is this one used?)
Chunk1/Assets/tpp/pack/buddy/quiet (yuge bundle of buddy versions. I guess it does what is says on the can)
Chunk1/Assets/tpp/pack/mission2/quest/battle/bossQuiet (this must be her mission11 model, QARTools crashes when repacking with swaps on this one)
Chunk3/Assets/tpp/pack/mission2/free/f30050>f30050_mbQuiet (motherbase version? Is this the model used in her Motherbase roaming, medbay cell and motherbase cutscenes-rain, shower, stinky Snake?)

Shamelessly asking for it.


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Sun Jan 29, 2017 1:39 pm 
Offline
advanced

Joined: Sat Apr 09, 2016 5:36 pm
Posts: 71
Has thanked: 4 times
Have thanks: 13 times
Wormheart wrote:
quiet models

Code:
0/00/s10050_area_fpk\Assets\tpp\chara\qui\Scenes\qui5_main0_def.fmdl
chunk0/mis_com_quiet_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk0/s10010_d01_fpk\Assets\tpp\chara\qui\Scenes\qui1_main0_def.fmdl
chunk0/s10280_d01_fpk\Assets\tpp\chara\qui\Scenes\qui1_main0_def.fmdl
chunk1/buddy_quiet2_00_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk1/buddy_quiet2_01_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_bld.fmdl
chunk1/buddy_quiet2_02_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_slv.fmdl
chunk1/buddy_quiet2_03_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_gld.fmdl
chunk1/buddy_quiet2_04_fpk\Assets\tpp\chara\qui\Scenes\qui4_main0_def.fmdl
chunk1/buddy_quiet2_05_fpk\Assets\tpp\chara\qui\Scenes\qui5_main0_def.fmdl
chunk1/qest_bossQuiet_00_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk2/s10050_area_fpk\Assets\tpp\chara\qui\Scenes\qui5_main0_def.fmdl
chunk2/s10050_d01_fpk\Assets\tpp\chara\qui\Scenes\qui0_eqhd0_cov.fmdl
chunk2/s10050_d01_fpk\Assets\tpp\chara\qui\Scenes\qui0_eqpd0_def.fmdl
chunk2/s10050_d02_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk2/s10050_d02_fpk\Assets\tpp\chara\qui\Scenes\qui0_slng0_cov.fmdl
chunk2/s10151_d04_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk2/s10151_d06_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk2/s10260_d01_fpk\Assets\tpp\chara\qui\Scenes\qui3_main0_def.fmdl
chunk2/s10050_area_fpk\Assets\tpp\chara\qui\Scenes\qui5_main0_def.fmdl
chunk2/s10050_d01_fpk\Assets\tpp\chara\qui\Scenes\qui0_eqhd0_cov.fmdl
chunk2/s10050_d01_fpk\Assets\tpp\chara\qui\Scenes\qui0_eqpd0_def.fmdl
chunk2/s10050_d02_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk2/s10050_d02_fpk\Assets\tpp\chara\qui\Scenes\qui0_slng0_cov.fmdl
chunk2/s10151_d04_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk2/s10151_d06_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk2/s10260_d01_fpk\Assets\tpp\chara\qui\Scenes\qui3_main0_def.fmdl
chunk3/f30050_d021_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk3/f30050_d022_fpk\Assets\tpp\chara\qui\Scenes\qui2_main0_def.fmdl
chunk3/f30050_d031_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk3/f30050_d040_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk3/f30050_d050_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk3/f30050_d080_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk3/f30050_d090_fpk\Assets\tpp\chara\qui\Scenes\qui0_hood0_cov.fmdl
chunk3/f30050_d090_fpk\Assets\tpp\chara\qui\Scenes\qui0_hood1_cov.fmdl
chunk3/f30050_d090_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk3/f30050_d090_fpk\Assets\tpp\chara\qui\Scenes\qui0_rope0_cov.fmdl
chunk3/f30050_d100_fpk\Assets\tpp\chara\qui\Scenes\qui0_eqit0_def.fmdl
chunk3/f30050_d100_fpk\Assets\tpp\chara\qui\Scenes\qui0_eqit1_def.fmdl
chunk3/f30050_d100_fpk\Assets\tpp\chara\qui\Scenes\qui0_main1_def.fmdl
chunk3/f30050_d1000_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk3/f30050_d101_fpk\Assets\tpp\chara\qui\Scenes\qui0_main0_def.fmdl
chunk3/f30050_mbQuiet_fpk\Assets\tpp\chara\qui\Scenes\qui2_main0_def.fmdl


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Sun Jan 29, 2017 5:16 pm 
Offline
advanced

Joined: Sat Aug 27, 2016 9:43 am
Posts: 53
Has thanked: 7 times
Have thanks: 6 times
nasanhak wrote:
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.
Nah, last one is impact force though. My guess is the lethal and NL dmg varies across the weapons in-game based on the receiver. So those are probably base damages. As for the rest of the settings I put together a spreadsheet with what patterns I could find a while back if you haven't seen it already. You can click on the one of the cells below the parameter row if you want more info on a p value.

@Tex
thanks man, exactly why I was looking for. I wasn't expecting the messages the be able to reference functions that hadn't been created in the file yet. That clears up a lot of things. Also apparently putting in random strings for the messages doesn't negatively affect the game in any way, so that opens the door for brute-forcing strings or just mass-testing known ones, albeit the pita way. No dice trying to get player illumination from that, but I'm assuming that's because the ATK has to actually damage the player to trigger the message. As for the items that function just kept returning 17 (TppEquip.EQP_TYPE_Item ?) but I found the next best thing with a combination of onHudClosed and part of a line from TppDebug.lua.
Code:
function e.Messages()
   return Tpp.StrCode32Table{
      Player={
          {msg="OnEquipHudClosed",func=e.OnEquipHudClosed()}
      }
   }
end

function e.OnEquipHudClosed()
   for o=0,8 do
      TppUiCommand.AnnounceLogView(string.format("Slot:%d : vars.items = %04d, vars.initItems = %04d, gvars.ply_lastItemsUsingTemp = %04d",o,vars.items[o],vars.initItems[o],gvars.ply_lastItemsUsingTemp[o]))
   end
end


I guess vars.items is the table I'd want. After specifying a slot index with it, it returns a 4 digit itemId. I also came across Player.IsVarsCurrentItemCBox() which returns a boolean. Not that useful in itself but I can probably remove some lines from Update() function calls since messages and existing KJP functions essentially auto-handle them. Still haven't found a way to check if a drug/stealth camo/ability is active though. The closest thing would be
Code:
function e.checkItem(guardPhase)
   if not guardPhase or guardPhase==_.PHASE_ALERT then return 0 end
   local n=e.index.points.item
   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
      return n.stealthCamo
   end
   if (bit.band(vars.playerPlayFlag,PlayerPlayFlag.USE_PARASITE_CAMO)==PlayerPlayFlag.USE_PARASITE_CAMO) then
      return n.parasiteCamo
   end
   return 0
end


But that's a one-time thing since it's essentially just for checking if a player disqualified themselves from an S rank or No Traces bonus. I mean you could reset it to 0 or whatever the default value is I guess but creative resets and variable tracking to avoid interfering with gameplay aside I don't think it would be too useful since it would border on being convoluted for a workaround. Then again I haven't checked vars.playerPlayFlag on its own so I might try that later.


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Sun Jan 29, 2017 5:55 pm 
Offline
advanced

Joined: Sat Apr 09, 2016 5:36 pm
Posts: 71
Has thanked: 4 times
Have thanks: 13 times
CantStoptheBipBop wrote:
so that opens the door for brute-forcing strings or just mass-testing known ones

https://github.com/unknown321/mgsvdump/ ... /sequences
I had these parsed like months ago, but occasionaly removed them with cleanup script. These are tpp only, I never bothered with mgo.
messages = msg
commands = commands used with SendCommand function


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Sun Jan 29, 2017 8:21 pm 
Offline
advanced

Joined: Thu Dec 24, 2015 7:45 am
Posts: 65
Has thanked: 10 times
Have thanks: 8 times
Jonathan Ingram wrote:
You should be able to make a complete stream out of the sound chunks. I wish I remember who wrote it, but I found a tool for extracting the wwise streams and its source on Reddit a while back. https://dl.dropboxusercontent.com/u/884 ... xtract.zip

Cool! I didn't even know anyone had already written a tool with this functionality.


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Tue Jan 31, 2017 12:47 pm 
Offline
advanced

Joined: Sat Aug 27, 2016 9:43 am
Posts: 53
Has thanked: 7 times
Have thanks: 6 times
unknown123 wrote:
CantStoptheBipBop wrote:
so that opens the door for brute-forcing strings or just mass-testing known ones

https://github.com/unknown321/mgsvdump/ ... /sequences
I had these parsed like months ago, but occasionaly removed them with cleanup script. These are tpp only, I never bothered with mgo.
messages = msg
commands = commands used with SendCommand function
Awesome, thanks dude. I tested out all of the messages under both Player and GameObject and took some notes. Most of these are obvious but I figured I may as well include them.

Code:
msg={
   Player={
      CBoxSlideEnd={freq='once', info='after cbox slide end'},
      CalcFultonPercent={freq='continuous', info='on player next to fultonable object'},
      CallMenuMessage_HideCallMenu={freq='once', info='on call menu close'},
      CallMenuMessage_ShowCallMenu={freq='once', info='on call menu open'},
      EnableCQC={freq='once', info='on CQC icon popup'},
      FinishOpeningDemoOnHeli={freq='once', info='on control given back to player after init heli door open'},
      IconCrawlStealthShown={freq='once', info='on prone stealth icon popup'},
      IconFultonShown={freq='once', info='on fulton icon popup'},
      IconMBCBoxShown={freq='once', info='on player next to supply drop box'},
      IconTBoxOnShown={freq='once', info='on trash box icon popup'},
      IconToiletOnShown={freq='once', info='on toilet icon popup'},
      LandingFromHeli={freq='once', info='on player exit heli'},
      OnAmmoLessInMagazine={freq='once', info='on trigger pull on empty mag'},
      OnBehind={freq='once', info='on player start press against cover'},
      OnBinocularsMode={freq='varies', info='fires once while using binos or continuous while in first-person vehicle primary turret'},
      OnComeOutSupplyCbox={freq='once', info='on finish supply box'},
      OnCrawl={freq='once', info='on entering prone stance'},
      OnElude={freq='once', info='on hang ledge'},
      OnEquipHudClosed={freq='once', info='on closing equipment slot ui'},
      OnEquipItem={freq='once', info='on active item change'},
      OnEquipWeapon={freq='once', info='on weapon/support slot change'},
      OnPickUpCollection={freq='once', info='on player picked plant, small container, etc.'},
      OnPickUpSupplyCbox={freq='once', info='on start supply box'},
      OnPlayerElude={freq='once', info='on player hang ledge'},
      OnPlayerGatling={freq='once', info='on player enter stationary AA gun'},--didn't test
      OnPlayerHeliHatchOpen={freq='once', info='on control given back to player after init heli door open'},
      OnPlayerMachineGun={freq='once', info='on player enter stationary MG'},--does not include vehicle MG
      OnPlayerMortar={freq='once', info='on player enter statonary mortar'},
      OnPlayerSearchlight={freq='once', info='on player use searchlight'},
      OnPlayerToilet={freq='once', info='player in toilet'},
      OnVehicleDrive={freq='once', info='fires after getting in vehicles'},
      OnVehicleRide_Start={freq='once', info='on player in/out vehicle or pilotable object'},
      PlayerDamaged={freq='once', args={'playerIndex','attackId','attackerId'}, info='on player damage'},
      PlayerHeliGetOff={freq='once', info='on player exit heli'},
      PlayerHoldWeapon={freq='once', info='on player weapon aim'},
      PressedCarryIcon={freq='once', info='player start/stop carry or left ene veh'},
      PutMarkerWithBinocle={freq='once', info='manual marker placement with binos'},
      SetMarkerBySearch={freq='once', info='marker autoplacement via binos or zoom'},
      StartPlayerBrainFilter={freq='once', info='on heavy damage that obscures vision with blood'},
      SuppressorIsBroken={freq='once', info='on suprressor break'},
      WarpEnd={freq='once', info='on control given back to player after init heli door open'}   
   },

   Object={
      BreakGimmick={freq='once', info='stationary enemy equip destroy (weapons, guard tower}'},
      ChangePhase={freq='varies', args={'gameObjectId','newPhase','oldPhase'}, info='once on phase change or multiple if patrol truck passes from alert base to another'},
      CommandPostAnnihilated={freq='once', info='on base or guard post capture'},--use with TppEnemy.IsBaseCp(arg0) & TppEnemy.IsOuterBaseCp(arg0)
      Concious={freq='once', info='transition from unconcious -> concious'},
      ConversationEnd={freq='once', info='conversation stopped naturally or interrupted by player or prevented from starting'},
      Damage={freq='once', args={'gameId','attackId','attackerId'}, info='AI recieved damage'},--apparently needs to be something that can "report" damage to engine, not empty vehicle or random object
      Down={freq='once', info='AI knocked to ground (bleed out, CQC, etc)'},
      EndInvestigate={freq='once', info='on AI player search end'},
      Fulton={freq='once', info='on object fultoned'},
      HeadShot={freq='once', info='on neutralize with headshot'},
      HeadShotDistance={freq='once', info='on neutralize with headshot'},
      Holdup={freq='once', info='player heldup AI'},
      InAnimalLocator={freq='once', info='entered spawn area of animal pack/herd'},
      Interrogate={freq='once', info='on player interrogate soldier'},
      InterrogateEnd={freq='once', info='interrogation failure'},
      InterrogateSetMarker={freq='once', info='interrogation success, enemy gave asset position'},
      InterrogateUpHero={freq='once', info='interrogation earned heroism'},
      MapUpdate={freq='once', info='on map update announce'},
      Neutralize={freq='once', info='on dead, unconcious, destroyed, or held up'},
      PlayerHideHorse={freq='once', info='on player start horse hide'},
      RadioEnd={freq='once', info='on AI radio end'},
      Restraint={freq='once', info='object is being restrained (player CQC hold)'},
      RouteEventFaild={freq='once', info='apparently error feedback if AI route fails'},
      SpecialActionEnd={freq='once', info='triggers every few seconds in ACC'},
      TapCqc={freq='once', info='on neutralize with CQC in valid way for tactical action point.'},
      TapHoldup={freq='once', info='holdup qualifies for mission tactical action point bonus'},
      TapRocketArm={freq='once', info='on neutralize with rocket arm in valid way for tactical action point'},
      Unconcious={freq='once', info='AI knocked unconcious'},
      VehicleAction={freq='once', info='on misc AI actions with vehicle including in/out'},
      VehicleBroken={freq='once', info='vehicle engine fire start (blowup countdown) and after second explosion'}
   }
}


Messages like OnPlayerMortar only fire once but I guess player status and the message IconFultonShown could be monitored easily enough to check if the player left a stationary weapon. SpecialActionEnd is a weird one. It just kind of triggers every few seconds if you're in the ACC. I'm not sure exactly what triggers RouteEventFaild but that might be a useful debug message for anyone toying with AI routes.

I got around to messing with vars.playerPlayFlag. It only updates on mission completion or new flag activation. Meaning you can reset it to 256 or 0 to keep track of when stealth camo is used again but the flag doesn't update while the item is active, only at the start of each use.
Code:
playerPlayFlag={--stays constant until mission complete or until overruled by higher flag
   [0]='no disqualifications',
   [256]='spent ammo/resupply/support fire/dmg to enemy (disqualified from no traces bonus)',--FAILED_NO_TRACE_PLAY
   [264]='used consumable prototype stealth camo during mission',--USE_INSTANT_STEALTH
   [288]='used parasite stealth camo during mission',--USE_PARASITE_CAMO
   [296]='used both consumable prototype stealth camo and parasite stealth camo during mission'--?
}
--[[
USE_CHICK_CAP
USE_CHICKEN_CAP
USE_STEALTH
USE_FULTON_MISSILE
USE_MUGEN_BANDANA
USE_HIGHGRADE_EQUIP
]]


Things that apparently don't negate the No Traces bonus based on that: killing/CQCing animals and driving into exploding barrels.

edit: here's how I ended up checking cbox and stealth camo items in case anyone was curious:
Code:
function e.isCboxCamo(cbox)
   local t={TppEquip.EQP_IT_CBox_WR,TppEquip.EQP_IT_CBox_SMK}
   for i=1,#t do
      if cbox==t[i] then
         return false
      end
   end
   return true
end

function e.cboxCamoType(cbox)
   local boxType={
      desert={TppEquip.EQP_IT_CBox_DSR,TppEquip.EQP_IT_CBox_DSR_G01,TppEquip.EQP_IT_CBox_DSR_G02},
      green={TppEquip.EQP_IT_CBox_FRST,TppEquip.EQP_IT_CBox_FRST_G01},
      red={TppEquip.EQP_IT_CBox_BOLE,TppEquip.EQP_IT_CBox_BOLE_G01},
      urban={TppEquip.EQP_IT_CBox_CITY,TppEquip.EQP_IT_CBox_CITY_G01},
      mix={TppEquip.EQP_IT_CBox_CLB_A,TppEquip.EQP_IT_CBox_CLB_A_G01},
      rock={TppEquip.EQP_IT_CBox_CLB_B,TppEquip.EQP_IT_CBox_CLB_B_G01},
      wet={TppEquip.EQP_IT_CBox_CLB_C,TppEquip.EQP_IT_CBox_CLB_C_G01}
   }

   local s={'desert','green','red','urban','mix','rock','wet'}

   for i=1,#s do
      for _,v in ipairs(boxType[s[i]]) do
         if cbox==v then
            return s[i]
         end
      end
   end
   return false
end

function e.isStealthItem(item)
   local t={TppEquip.EQP_IT_InstantStealth,TppEquip.EQP_IT_Stealth,TppEquip.EQP_IT_ParasiteCamouf}

   for i=1,#t do
      if item==t[i] then
         return true
      end
   end
   return false
end

function e.stealthItemType(item)
   local t={
      limited=TppEquip.EQP_IT_InstantStealth,
      battery=TppEquip.EQP_IT_Stealth,
      parasite=TppEquip.EQP_IT_ParasiteCamouf
   }

   for k,v in pairs(t) do
      if item==v then
         return k
      end
   end
   return false
end

function e.Messages()
   return Tpp.StrCode32Table{
       Player={
         {msg='PlayerDamaged',func=e.OnPlayerDamaged},
         {msg='OnEquipItem',func=e.OnEquipItem}
      }
     }
end

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

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

function e.OnMessage(sender,messageId,arg0,arg1,arg2,arg3,strLogText)
  Tpp.DoMessage(e.messageExecTable,TppMission.CheckMessageOption,sender,messageId,arg0,arg1,arg2,arg3,strLogText)
end

function e.OnPlayerDamaged()
   e.var.stealthCamo=false
   e.var.keepTime.parasiteStealth=false
end

function e.OnEquipItem()
   local itemIndex=vars.items[vars.currentItemIndex]
   
   if e.var.stealthCamo~='parasite' then
      e.var.stealthCamo=false
   elseif e.isStealthItem(itemIndex) then
      e.var.keepTime.parasiteStealth=false
   end

   if Player.IsVarsCurrentItemCBox() then
      e.var.ride='cbox'
      if e.isCboxCamo(itemIndex) then
         e.var.cboxCamo=e.cboxCamoType(itemIndex)
         return
      end
      e.var.cboxCamo=false
      return
   elseif e.var.ride=='cbox' then
      e.var.ride='none'
   end
   e.var.cboxCamo=false

   if e.isStealthItem(itemIndex) then
      e.var.stealthCamo=e.stealthItemType(itemIndex)
      if e.var.stealthCamo=='parasite' then
         e.var.keepTime.parasiteStealth=(Time.GetRawElapsedTimeSinceStartUp()+30)--need to get actual time based on suit grade
      end
      return
   end
end

function e.checkStealthItem(guardPhase)
   if not guardPhase or not e.var.stealthCamo then return 0 end
   if guardPhase==_.PHASE_ALERT then
      e.var.keepTime.parasiteStealth=false
      e.var.stealthCamo=false
      return 0
   end
   local n=e.index.points.item
   if e.var.stealthCamo~='parasite' then
      return n.stealthCamo
   else
      if e.var.keepTime.parasiteStealth then
         if e.buttonHold<e.var.keepTime.parasiteStealth then
            return n.parasiteCamo
         end
      end
   end
   return 0
end


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Tue Feb 07, 2017 9:45 pm 
Offline
advanced

Joined: Thu Dec 24, 2015 7:45 am
Posts: 65
Has thanked: 10 times
Have thanks: 8 times
So I discovered it's possible to get TPP to load new .dat files.

In chunk0, there's a file named foxfs.dat (Fox File System), which is just an .xml with its extension changed. When TPP loads, it uses a hardcoded reference to look for chunk0, but it only uses this reference to load foxfs.dat, and ignores the rest of the files from chunk0.

Inside foxfs.dat it contains a section for loading the chunk.dat files; this is when it loads the other files from chunk0 (and the rest of the chunk.dat files as well). From my testing, it seems that it loads the chunk.dat files in the order they are listed there, but it actually seems to load the texture.dat files in alphabetic order. You can create a .dat with priority over the original files by placing it in the list before the original files (or with a name that comes first alphabetically in the case of texture.dats). From my testing, it doesn't seem possible for .dats created with this method to gain priority over 0/00.dat and 0/01.dat. Hardcoded references are in the .exe for both of these files, and I think their priority is hardcoded as well.

If we could gain priority over 0/00.dat and 0/01.dat, it would allow us to easily add dedicated modding .dat files, and it would also allow SnakeBite to directly install loose .ftex(s) files as mods. It would also mean SnakeBite wouldn't need to shove all of 00.dat's files into 01.dat. There are other ways to work around this, but gaining priority over those files would be the most convenient.


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Tue Feb 07, 2017 9:50 pm 
Offline
ultra-n00b

Joined: Thu Oct 06, 2016 7:17 pm
Posts: 8
Has thanked: 3 times
Have thanks: 1 time
BobDoleOwndU wrote:
So I discovered it's possible to get TPP to load new .dat files.


!
But that's only TPP, right? Won't work on MGO .dats or .G0s?


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Tue Feb 07, 2017 11:27 pm 
Offline
advanced

Joined: Thu Dec 24, 2015 7:45 am
Posts: 65
Has thanked: 10 times
Have thanks: 8 times
caplagrobin wrote:
!
But that's only TPP, right? Won't work on MGO .dats or .G0s?

MGO also has the foxfs.dat, so it should be possible for MGO. Taking a quick look at GZ, it doesn't have one, so I don't think it'll work there.


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Fri Feb 10, 2017 8:18 pm 
Offline
advanced

Joined: Sat Nov 28, 2015 6:01 am
Posts: 71
Has thanked: 10 times
Have thanks: 4 times
Sometime ago I saw an image file detailing how the inputs to Player.SetAroundCameraManualModeParams work. It showed how the camera position offsets resulted in actual in-game camera position. Can't seem to find this image again.

If anybody knows what I am talking about and has the images or the link to them, then please do share!

Would save me a tonne of work :)


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Fri Feb 10, 2017 8:30 pm 
Offline
advanced

Joined: Sat Apr 09, 2016 5:36 pm
Posts: 71
Has thanked: 4 times
Have thanks: 13 times
nasanhak wrote:
Sometime ago I saw an image file detailing how the inputs to Player.SetAroundCameraManualModeParams work. It showed how the camera position offsets resulted in actual in-game camera position. Can't seem to find this image again.

Wasn't it made by Tex? I think he uses that in IH.


Top
 Profile  
 
 Post subject: Re: Metal Gear Solid 5 Ground Zeroes/Phantom Pain g0s archiv
PostPosted: Sat Feb 11, 2017 4:42 am 
Offline
advanced

Joined: Sat Nov 28, 2015 6:01 am
Posts: 71
Has thanked: 10 times
Have thanks: 4 times
unknown123 wrote:
nasanhak wrote:
Sometime ago I saw an image file detailing how the inputs to Player.SetAroundCameraManualModeParams work. It showed how the camera position offsets resulted in actual in-game camera position. Can't seem to find this image again.

Wasn't it made by Tex? I think he uses that in IH.

Yeah I had thought so too but can't find those images. I may as well start with the leg work till I find it.



Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 1602 posts ]  Go to page Previous  1 ... 101, 102, 103, 104, 105, 106, 107  Next

All times are UTC + 1 hour


Who is online

Users browsing this forum: No registered users and 7 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group