PARAM_EquipParamWeapon = 0 PARAM_EquipParamProtector = 1 PARAM_EquipParamAccessory = 2 PARAM_EquipParamGoods = 3 PARAM_ReinforceParamWeapon = 4 PARAM_ReinforceParamProtector = 5 PARAM_NpcParam = 6 PARAM_AtkParam_Npc = 7 PARAM_AtkParam_Pc = 8 PARAM_NpcThinkParam = 9 PARAM_Bullet = 10 PARAM_BulletCreateLimitParam = 11 PARAM_BehaviorParam = 12 PARAM_BehaviorParam_PC = 13 PARAM_Magic = 14 PARAM_SpEffectParam = 15 PARAM_SpEffectVfxParam = 16 PARAM_SpEffectSetParam = 17 PARAM_TalkParam = 18 PARAM_MenuColorTableParam = 19 PARAM_ItemLotParam_enemy = 20 PARAM_ItemLotParam_map = 21 PARAM_MoveParam = 22 PARAM_CharaInitParam = 23 PARAM_EquipMtrlSetParam = 24 PARAM_FaceParam = 25 PARAM_FaceRangeParam = 26 PARAM_ShopLineupParam = 27 PARAM_ShopLineupParam_Recipe = 28 PARAM_GameAreaParam = 29 PARAM_CalcCorrectGraph = 30 PARAM_LockCamParam = 31 PARAM_ObjActParam = 32 PARAM_HitMtrlParam = 33 PARAM_KnockBackParam = 34 PARAM_DecalParam = 35 PARAM_ActionButtonParam = 36 PARAM_AiSoundParam = 37 PARAM_PlayRegionParam = 38 PARAM_NetworkAreaParam = 39 PARAM_NetworkParam = 40 PARAM_NetworkMsgParam = 41 PARAM_BudgetParam = 42 PARAM_BonfireWarpParam = 43 PARAM_BonfireWarpTabParam = 44 PARAM_BonfireWarpSubCategoryParam = 45 PARAM_MenuPropertySpecParam = 46 PARAM_MenuPropertyLayoutParam = 47 PARAM_MenuValueTableParam = 48 PARAM_Ceremony = 49 PARAM_PhantomParam = 50 PARAM_CharMakeMenuTopParam = 51 PARAM_CharMakeMenuListItemParam = 52 PARAM_HitEffectSfxConceptParam = 53 PARAM_HitEffectSfxParam = 54 PARAM_WepAbsorpPosParam = 55 PARAM_ToughnessParam = 56 PARAM_SeMaterialConvertParam = 57 PARAM_ThrowDirectionSfxParam = 58 PARAM_DirectionCameraParam = 59 PARAM_RoleParam = 60 PARAM_WaypointParam = 61 PARAM_ThrowParam = 62 PARAM_GrassTypeParam = 63 PARAM_GrassTypeParam_Lv1 = 64 PARAM_GrassTypeParam_Lv2 = 65 PARAM_GrassLodRangeParam = 66 PARAM_NpcAiActionParam = 67 PARAM_PartsDrawParam = 68 PARAM_AssetEnvironmentGeometryParam = 69 PARAM_AssetModelSfxParam = 70 PARAM_AssetMaterialSfxParam = 71 PARAM_AttackElementCorrectParam = 72 PARAM_FootSfxParam = 73 PARAM_MaterialExParam = 74 PARAM_HPEstusFlaskRecoveryParam = 75 PARAM_MPEstusFlaskRecoveryParam = 76 PARAM_MultiPlayCorrectionParam = 77 PARAM_MenuOffscrRendParam = 78 PARAM_ClearCountCorrectParam = 79 PARAM_MapMimicryEstablishmentParam = 80 PARAM_WetAspectParam = 81 PARAM_SwordArtsParam = 82 PARAM_KnowledgeLoadScreenItemParam = 83 PARAM_MultiHPEstusFlaskBonusParam = 84 PARAM_MultiMPEstusFlaskBonusParam = 85 PARAM_MultiSoulBonusRateParam = 86 PARAM_WorldMapPointParam = 87 PARAM_WorldMapPieceParam = 88 PARAM_WorldMapLegacyConvParam = 89 PARAM_WorldMapPlaceNameParam = 90 PARAM_ChrModelParam = 91 PARAM_LoadBalancerParam = 92 PARAM_LoadBalancerDrawDistScaleParam = 93 PARAM_LoadBalancerDrawDistScaleParam_ps4 = 94 PARAM_LoadBalancerDrawDistScaleParam_ps5 = 95 PARAM_LoadBalancerDrawDistScaleParam_xb1 = 96 PARAM_LoadBalancerDrawDistScaleParam_xb1x = 97 PARAM_LoadBalancerDrawDistScaleParam_xss = 98 PARAM_LoadBalancerDrawDistScaleParam_xsx = 99 PARAM_LoadBalancerNewDrawDistScaleParam_win64 = 100 PARAM_LoadBalancerNewDrawDistScaleParam_ps4 = 101 PARAM_LoadBalancerNewDrawDistScaleParam_ps5 = 102 PARAM_LoadBalancerNewDrawDistScaleParam_xb1 = 103 PARAM_LoadBalancerNewDrawDistScaleParam_xb1x = 104 PARAM_LoadBalancerNewDrawDistScaleParam_xss = 105 PARAM_LoadBalancerNewDrawDistScaleParam_xsx = 106 PARAM_WwiseValueToStrParam_Switch_AttackType = 107 PARAM_WwiseValueToStrParam_Switch_DamageAmount = 108 PARAM_WwiseValueToStrParam_Switch_DeffensiveMaterial = 109 PARAM_WwiseValueToStrParam_Switch_HitStop = 110 PARAM_WwiseValueToStrParam_Switch_OffensiveMaterial = 111 PARAM_WwiseValueToStrParam_Switch_GrassHitType = 112 PARAM_WwiseValueToStrParam_Switch_PlayerShoes = 113 PARAM_WwiseValueToStrParam_Switch_PlayerEquipmentTops = 114 PARAM_WwiseValueToStrParam_Switch_PlayerEquipmentBottoms = 115 PARAM_WwiseValueToStrParam_Switch_PlayerVoiceType = 116 PARAM_WwiseValueToStrParam_Switch_AttackStrength = 117 PARAM_WwiseValueToStrParam_EnvPlaceType = 118 PARAM_WeatherParam = 119 PARAM_WeatherLotParam = 120 PARAM_WeatherAssetCreateParam = 121 PARAM_WeatherAssetReplaceParam = 122 PARAM_SpeedtreeParam = 123 PARAM_RideParam = 124 PARAM_SeActivationRangeParam = 125 PARAM_RollingObjLotParam = 126 PARAM_NpcAiBehaviorProbability = 127 PARAM_BuddyParam = 128 PARAM_GparamRefSettings = 129 PARAM_RandomAppearParam = 130 PARAM_MapGridCreateHeightLimitInfoParam = 131 PARAM_EnvObjLotParam = 132 PARAM_MapDefaultInfoParam = 133 PARAM_BuddyStoneParam = 134 PARAM_LegacyDistantViewPartsReplaceParam = 135 PARAM_SoundCommonIngameParam = 136 PARAM_SoundAutoEnvSoundGroupParam = 137 PARAM_SoundAutoReverbEvaluationDistParam = 138 PARAM_SoundAutoReverbSelectParam = 139 PARAM_EnemyCommonParam = 140 PARAM_GameSystemCommonParam = 141 PARAM_GraphicsCommonParam = 142 PARAM_MenuCommonParam = 143 PARAM_PlayerCommonParam = 144 PARAM_CutsceneGparamWeatherParam = 145 PARAM_CutsceneGparamTimeParam = 146 PARAM_CutsceneTimezoneConvertParam = 147 PARAM_CutsceneWeatherOverrideGparamConvertParam = 148 PARAM_SoundCutsceneParam = 149 PARAM_ChrActivateConditionParam = 150 PARAM_CutsceneMapIdParam = 151 PARAM_CutSceneTextureLoadParam = 152 PARAM_GestureParam = 153 PARAM_EquipParamGem = 154 PARAM_EquipParamCustomWeapon = 155 PARAM_GraphicsConfig = 156 PARAM_SoundChrPhysicsSeParam = 157 PARAM_FeTextEffectParam = 158 PARAM_CoolTimeParam = 159 PARAM_WhiteSignCoolTimeParam = 160 PARAM_MapPieceTexParam = 161 PARAM_MapNameTexParam = 162 PARAM_WeatherLotTexParam = 163 PARAM_KeyAssignParam_TypeA = 164 PARAM_KeyAssignParam_TypeB = 165 PARAM_KeyAssignParam_TypeC = 166 PARAM_MapGdRegionInfoParam = 167 PARAM_MapGdRegionDrawParam = 168 PARAM_KeyAssignMenuItemParam = 169 PARAM_SoundAssetSoundObjEnableDistParam = 170 PARAM_SignPuddleParam = 171 PARAM_AutoCreateEnvSoundParam = 172 PARAM_WwiseValueToStrParam_BgmBossChrIdConv = 173 PARAM_ResistCorrectParam = 174 PARAM_PostureControlParam_WepRight = 175 PARAM_PostureControlParam_WepLeft = 176 PARAM_PostureControlParam_Gender = 177 PARAM_PostureControlParam_Pro = 178 PARAM_RuntimeBoneControlParam = 179 PARAM_TutorialParam = 180 PARAM_BaseChrSelectMenuParam = 181 PARAM_MimicryEstablishmentTexParam = 182 PARAM_SfxBlockResShareParam = 183 PARAM_FinalDamageRateParam = 184 PARAM_HitEffectSeParam = 185 function tableLength(T) local count = 0 for _ in pairs(T) do count = count + 1 end return count end -- Function to calculate offset function calculateOffset(data) local offset = 0 local offsetTable = {} for i = 1, tableLength(data) do local key = "Field " .. i local value = data[key] local dataType, fieldName = value:match("^(%S+)%s(.*)$") if not (fieldName:find(":")) then offset = math.ceil(offset) end local offsetIncrement = 0 local type = "unknown" type = dataType if dataType == "h" then offsetIncrement = tonumber(fieldName) type = "donottouch" elseif dataType == "u8" then offsetIncrement = 1 -- Check if ":1" is present in the field name if fieldName:find(":1") then offsetIncrement = 1 / 8 type = "bit" end -- Check if ":2" is present in the field name if fieldName:find(":2") then offsetIncrement = 2 / 8 type = "bit" end -- Check if ":3" is present in the field name if fieldName:find(":3") then offsetIncrement = 3 / 8 type = "bit" end -- Check if ":4" is present in the field name if fieldName:find(":4") then offsetIncrement = 4 / 8 type = "bit" end -- Check if ":5" is present in the field name if fieldName:find(":5") then offsetIncrement = 5 / 8 type = "bit" end -- Check if ":6" is present in the field name if fieldName:find(":6") then offsetIncrement = 6 / 8 type = "bit" end -- Check if ":7" is present in the field name if fieldName:find(":7") then offsetIncrement = 7 / 8 type = "bit" end else local dataTypeOffset = tonumber(dataType:sub(2)) / 8 offsetIncrement = dataTypeOffset end fieldName = fieldName:match("(%S+)") fieldName = fieldName:gsub(":.*", "") offsetTable[fieldName] = {offsetDec = offset, typeof = type} offset = offset + offsetIncrement end return offsetTable end local script_dir = debug.getinfo(1, "S").source:sub(2):gsub("/", "\\"):match("(.*\\)"):sub(1, -2):match("(.*\\)") g_offsetDirectory = script_dir .. "paramDef_Bastardized\\" pcall(loadfile(g_offsetDirectory .. "AtkParam.lua")) pcall(loadfile(g_offsetDirectory .. "BehaviorParam.lua")) pcall(loadfile(g_offsetDirectory .. "BuddyParam.lua")) pcall(loadfile(g_offsetDirectory .. "BuddyStoneParam.lua")) pcall(loadfile(g_offsetDirectory .. "BulletParam.lua")) pcall(loadfile(g_offsetDirectory .. "CalcCorrectGraph.lua")) pcall(loadfile(g_offsetDirectory .. "CharaInitParam.lua")) pcall(loadfile(g_offsetDirectory .. "EquipParamAccessory.lua")) pcall(loadfile(g_offsetDirectory .. "EquipParamCustomWeapon.lua")) pcall(loadfile(g_offsetDirectory .. "EquipParamGem.lua")) pcall(loadfile(g_offsetDirectory .. "EquipParamGoods.lua")) pcall(loadfile(g_offsetDirectory .. "EquipParamProtector.lua")) pcall(loadfile(g_offsetDirectory .. "EquipParamWeapon.lua")) pcall(loadfile(g_offsetDirectory .. "LockCamParam.lua")) pcall(loadfile(g_offsetDirectory .. "MagicParam.lua")) pcall(loadfile(g_offsetDirectory .. "NpcParam.lua")) pcall(loadfile(g_offsetDirectory .. "NpcThinkParam.lua")) pcall(loadfile(g_offsetDirectory .. "SpEffect.lua")) pcall(loadfile(g_offsetDirectory .. "SpEffectVfx.lua")) pcall(loadfile(g_offsetDirectory .. "SwordArtsParam.lua")) -- itemlotparam is fucked -- Post-processing tables AtkParamPC_Offsets = { ["paramType"] = PARAM_AtkParam_Pc, ["sizeOf"] = 456, -- from libEr ["offsetTable"] = calculateOffset(AtkParamPreprocessedTable) } AtkParamNPC_Offsets = { ["paramType"] = PARAM_AtkParam_Npc, ["sizeOf"] = 456, -- from libEr ["offsetTable"] = calculateOffset(AtkParamPreprocessedTable) } BehaviorParamPC_Offsets = { ["paramType"] = PARAM_BehaviorParam_PC, ["sizeOf"] = 32, -- from libEr ["offsetTable"] = calculateOffset(BehaviorParamPreprocessedTable) } BehaviorParamNPC_Offsets = { ["paramType"] = PARAM_BehaviorParam, ["sizeOf"] = 32, -- from libEr ["offsetTable"] = calculateOffset(BehaviorParamPreprocessedTable) } BuddyParam_Offsets = { ["paramType"] = PARAM_BuddyParam, ["sizeOf"] = 160, -- from libEr ["offsetTable"] = calculateOffset(BuddyParamPreprocessedTable) } BuddyStoneParam_Offsets = { ["paramType"] = PARAM_BuddyStoneParam, ["sizeOf"] = 64, -- from libEr ["offsetTable"] = calculateOffset(BuddyStoneParamPreprocessedTable) } BulletParam_Offsets = { ["paramType"] = PARAM_Bullet, ["sizeOf"] = 272, -- from libEr ["offsetTable"] = calculateOffset(BulletParamPreprocessedTable) } CalcCorrectGraphParam_Offsets = { ["paramType"] = PARAM_CalcCorrectGraph, ["sizeOf"] = 80, -- from libEr ["offsetTable"] = calculateOffset(CalcCorrectGraphParamPreprocessedTable) } CharaInitParam_Offsets = { ["paramType"] = PARAM_CharaInitParam, ["sizeOf"] = 320, -- from libEr ["offsetTable"] = calculateOffset(CharaInitParamPreprocessedTable) } EquipParamAccessory_Offsets = { ["paramType"] = PARAM_EquipParamAccessory, ["sizeOf"] = 96, -- from libEr ["offsetTable"] = calculateOffset(EquipParamAccessoryPreprocessedTable) } EquipParamCustomWeapon_Offsets = { ["paramType"] = PARAM_EquipParamCustomWeapon, ["sizeOf"] = 16, -- from libEr ["offsetTable"] = calculateOffset(EquipParamCustomWeaponPreprocessedTable) } EquipParamGem_Offsets = { ["paramType"] = PARAM_EquipParamGem, ["sizeOf"] = 96, -- from libEr ["offsetTable"] = calculateOffset(EquipParamGemPreprocessedTable) } EquipParamGoods_Offsets = { ["paramType"] = PARAM_EquipParamGoods, ["sizeOf"] = 176, -- from libEr ["offsetTable"] = calculateOffset(EquipParamGoodsPreprocessedTable) } EquipParamProtector_Offsets = { ["paramType"] = PARAM_EquipParamProtector, ["sizeOf"] = 416, -- from libEr ["offsetTable"] = calculateOffset(EquipParamProtectorPreprocessedTable) } EquipParamWeapon_Offsets = { ["paramType"] = PARAM_EquipParamWeapon, ["sizeOf"] = 664, -- from libEr ["offsetTable"] = calculateOffset(EquipParamWeaponPreprocessedTable) } LockCamParam_Offsets = { ["paramType"] = PARAM_LockCamParam, ["sizeOf"] = 128, -- from libEr ["offsetTable"] = calculateOffset(LockCamParamPreprocessedTable) } MagicParam_Offsets = { ["paramType"] = PARAM_Magic, ["sizeOf"] = 168, -- from libEr ["offsetTable"] = calculateOffset(MagicParamPreprocessedTable) } NpcParam_Offsets = { ["paramType"] = PARAM_NpcParam, ["sizeOf"] = 736, -- from libEr ["offsetTable"] = calculateOffset(NpcParamPreprocessedTable) } NpcThinkParam_Offsets = { ["paramType"] = PARAM_NpcThinkParam, ["sizeOf"] = 228, -- from libEr ["offsetTable"] = calculateOffset(NpcThinkParamPreprocessedTable) } SpEffectParam_Offsets = { ["paramType"] = PARAM_SpEffectParam, ["sizeOf"] = 912, -- from libEr ["offsetTable"] = calculateOffset(SpEffectParamPreprocessedTable) } SpEffectVfxParam_Offsets = { ["paramType"] = PARAM_SpEffectVfxParam, ["sizeOf"] = 164, -- from libEr ["offsetTable"] = calculateOffset(SpEffectVfxParamPreprocessedTable) } SwordArtsParam_Offsets = { ["paramType"] = PARAM_SwordArtsParam, ["sizeOf"] = 32, -- from libEr ["offsetTable"] = calculateOffset(SwordArtsParamPreprocessedTable) } --minhkslib.puts(json.encode(BulletParam_Offsets["offsetTable"])) --[[ -- Printing the result for key, value in pairs(tablething) do print(key, value) end --]]