Great mod, but won't this just eat your drive's I/O every time you die? Since OBS also reads the file everytime it's been written to. I think it'll be much better if you just displayed the death counter in an overlay.
OBS actually has a built-in delay (something like 1+ second) when repeatedly reading from a text file which the devs intentionally put in place to avoid excessive polling of I/O operations and to minimize both development upkeep and troubleshooting. There are OBS plugins out there that override the delay just by setting a custom parameter, but I assume this mod probably doesn't bother doing so because the functionality doesn't need to be any more precise than "yup, you're dead (again)"
Please help! I am having trouble displaying the death count during play. I don't know if this is an OBS problem or if I am not setting it up right because during setup. Because right as I go to choose the font and color, it projects to all "layers" except the one that I would use to play as.
Hi, I must commend this mod. It's great. But I have two problems. The first one is that it doesn't work for SeaCoop, the moment I save from Coop to .sl2 the sensor doesn't count deaths, it only shows the profile and that's it. Second, I wonder if there is a separate button for the number of deaths ?
You can just alt+tab periodically and see the number of deaths in the deathcounter app. I don't see any reason other than streaming where you need to see your deaths all the time
thanks In 3.7.1 profile list is updated periodically, it should make your life easier. Problem with old version profile select is that profile_index does not always match the profile number you see in game.
I have been getting roasted by everyone when they see that I have died over 1700 times; is there a way to only show DLC deaths or set an amount to start at instead of just resetting to 0?
can you help me here? my deaths.txt file has the value of 133, but i want to put it with 234. how should be my deaths.txt file? i tried to edit the deaths.txt file, saved it, but when i reopen the script, it resets the value.
I'm not super knowledgeable about this, but the address is changing dynamically. Not sure why. But I used this 010 Editor template to parse death count (a few months ago. There could be an updated version of this template.), it's working on latest version of the game too. deathCount is defined around 5 lines before the end of the template. Can I ask why you're looking for it? I've a project in mind that I wanna do but I'm not sure about the implementation. Maybe I can learn something from you?
typedef struct { GUID checksum; int version; int unk; if(header.version > 0x51) { int playtime; int unk; int unk; int unk; int unk; int unk; } } Header;
typedef struct { int unk; int unk; int health; int baseMaxHealth; int maxHealth; int mana; int baseMaxMana; int maxMana; int unk; int stamina; int baseMaxStamina; int maxStamina; int unk; int vigor; int mind; int endurance; int strength; int dexterity; int intelligence; int faith; int arcane; int unk; int unk; int unk; int soulLevel; int souls; int soulMemory; int unk; int resist; int resist; int resist; int resist; int resist; int resist; int resist; int unk; int unk; wchar_t name[0x10]; short unk98; enum <byte> BodyType { TypeB = 0, TypeA = 1 } bodyType; byte unk; byte unk; byte unk; byte voice; byte unk; byte unk; FSeek(FTell() + 0xF3); FSeek(FTell() + 0xD0); } Stats;
typedef struct { uint id; int quantity; int unk; } Item;
typedef struct { uint id; int bool; } UnkItems;
typedef struct { int id; int unk; } Spell;
typedef struct { int leftWeapon1Index; int rightWeapon1Index; int leftWeapon2Index; int rightWeapon2Index; int leftWeapon3Index; int rightWeapon3Index; int arrow1Index; int bolt1Index; int arrow2Index; int bolt2Index; int unk; int unk; int headIndex; int chestIndex; int armsIndex; int legsIndex; int unk; int talisman1Index; int talisman2Index; int talisman3Index; int talisman4Index; int unk; int stance; int unk; int unk; int unk; int unk; int unk; int unk; int leftWeapon1ID; int rightWeapon1ID; int leftWeapon2ID; int rightWeapon2ID; int leftWeapon3ID; int rightWeapon3ID; int arrow1ID; int bolt1ID; int arrow2ID; int bolt2ID; int unk; int unk; int headID; int chestID; int armsID; int legsID; int unk; int talisman1ID; int talisman2ID; int talisman3ID; int talisman4ID; int unk; uint leftWeapon1Lookup; uint rightWeapon1Lookup; uint leftWeapon2Lookup; uint rightWeapon2Lookup; uint leftWeapon3Lookup; uint rightWeapon3Lookup; uint arrow1Lookup; uint bolt1Lookup; uint arrow2Lookup; uint bolt2Lookup; int unk; int unk; uint headLookup; uint chestLookup; uint armsLookup; uint legsLookup; int unk; uint talisman1Lookup; uint talisman2Lookup; uint talisman3Lookup; uint talisman4Lookup; int unk; int inventoryCount; Item inventory[0xA80]; int keyItemCount; Item keyItems[0x180]; int unk; int unk; Spell spells[0xC]; int unk; int unk; int unk; int unk; int unk; uint quick1; int quick1Ref; uint quick2; int quick2Ref; uint quick3; int quick3Ref; uint quick4; int quick4Ref; uint quick5; int quick5Ref; uint quick6; int quick6Ref; uint quick7; int quick7Ref; uint quick8; int quick8Ref; uint quick9; int quick9Ref; uint quick10; int quick10Ref; int unk; uint pouch1; int pouch1Ref; uint pouch2; int pouch2Ref; uint pouch3; int pouch3Ref; uint pouch4; int pouch4Ref; uint pouch5; int pouch5Ref; uint pouch6; int pouch6Ref; int unk; int unk; int unk; int unk; int unk; int unk; int unk; int unk;
int unkCount; UnkItems unkitems[unkCount];
int leftWeapon1ID; int rightWeapon1ID; int leftWeapon2ID; int rightWeapon2ID; int leftWeapon3ID; int rightWeapon3ID; int arrow1ID; int bolt1ID; int arrow2ID; int bolt2ID; int unk; int unk; int headID; int chestID; int armsID; int legsID; int unk; int talisman1ID; int talisman2ID; int talisman3ID; int talisman4ID; int unk; int quick1ID; int quick2ID; int quick3ID; int quick4ID; int quick5ID; int quick6ID; int quick7ID; int quick8ID; int quick9ID; int quick10ID; int pouch1ID; int pouch2ID; int pouch3ID; int pouch4ID; int pouch5ID; int pouch6ID; int unk; int flask1ID; int flask2ID; int unk; int unk; } Items;
Since updating the mod I'm experiencing an issue where the counter will not update from 0, even when pressing the reset button, the counter just always stays at 0 no matter what. I have tried uninstalling and reinstalling, and using the old load method, nothing seems to work to get the counter to update. Does anyone know a fix?
106 comments
I am having trouble displaying the death count during play. I don't know if this is an OBS problem or if I am not setting it up right because during setup. Because right as I go to choose the font and color, it projects to all "layers" except the one that I would use to play as.
Version 3.7 is fantastic.
But old version, I can select a non existent profile. There is no need to change profile after create a new one.
In 3.7.1 profile list is updated periodically, it should make your life easier.
Problem with old version profile select is that profile_index does not always match the profile number you see in game.
I want to know
Have other placeholder besides '{}' ?
Have other format besides '{+30}' ?
i tried to edit the deaths.txt file, saved it, but when i reopen the script, it resets the value.
i didn't download the last update.
PROBLEM SOLVED
What's the offset from each base profile where you can find the death counter in the save file?
typedef struct {
ushort ref;
ubyte unk;
ubyte type;
if(type == 0x80) {
int id;
FSeek(FTell() + 0xD);
} else if(type == 0x90) {
int id;
FSeek(FTell() + 0x8);
} else if(type == 0xc0) {
int id;
} else {
FSeek(FTell() + 0x4);
}
} LookupEntry;
typedef struct {
GUID checksum;
int version;
int unk;
if(header.version > 0x51) {
int playtime;
int unk;
int unk;
int unk;
int unk;
int unk;
}
} Header;
typedef struct {
int unk;
int unk;
int health;
int baseMaxHealth;
int maxHealth;
int mana;
int baseMaxMana;
int maxMana;
int unk;
int stamina;
int baseMaxStamina;
int maxStamina;
int unk;
int vigor;
int mind;
int endurance;
int strength;
int dexterity;
int intelligence;
int faith;
int arcane;
int unk;
int unk;
int unk;
int soulLevel;
int souls;
int soulMemory;
int unk;
int resist;
int resist;
int resist;
int resist;
int resist;
int resist;
int resist;
int unk;
int unk;
wchar_t name[0x10];
short unk98;
enum <byte> BodyType { TypeB = 0, TypeA = 1 } bodyType;
byte unk;
byte unk;
byte unk;
byte voice;
byte unk;
byte unk;
FSeek(FTell() + 0xF3);
FSeek(FTell() + 0xD0);
} Stats;
typedef struct {
uint id;
int quantity;
int unk;
} Item;
typedef struct {
uint id;
int bool;
} UnkItems;
typedef struct {
int id;
int unk;
} Spell;
typedef struct {
int leftWeapon1Index;
int rightWeapon1Index;
int leftWeapon2Index;
int rightWeapon2Index;
int leftWeapon3Index;
int rightWeapon3Index;
int arrow1Index;
int bolt1Index;
int arrow2Index;
int bolt2Index;
int unk;
int unk;
int headIndex;
int chestIndex;
int armsIndex;
int legsIndex;
int unk;
int talisman1Index;
int talisman2Index;
int talisman3Index;
int talisman4Index;
int unk;
int stance;
int unk;
int unk;
int unk;
int unk;
int unk;
int unk;
int leftWeapon1ID;
int rightWeapon1ID;
int leftWeapon2ID;
int rightWeapon2ID;
int leftWeapon3ID;
int rightWeapon3ID;
int arrow1ID;
int bolt1ID;
int arrow2ID;
int bolt2ID;
int unk;
int unk;
int headID;
int chestID;
int armsID;
int legsID;
int unk;
int talisman1ID;
int talisman2ID;
int talisman3ID;
int talisman4ID;
int unk;
uint leftWeapon1Lookup;
uint rightWeapon1Lookup;
uint leftWeapon2Lookup;
uint rightWeapon2Lookup;
uint leftWeapon3Lookup;
uint rightWeapon3Lookup;
uint arrow1Lookup;
uint bolt1Lookup;
uint arrow2Lookup;
uint bolt2Lookup;
int unk;
int unk;
uint headLookup;
uint chestLookup;
uint armsLookup;
uint legsLookup;
int unk;
uint talisman1Lookup;
uint talisman2Lookup;
uint talisman3Lookup;
uint talisman4Lookup;
int unk;
int inventoryCount;
Item inventory[0xA80];
int keyItemCount;
Item keyItems[0x180];
int unk;
int unk;
Spell spells[0xC];
int unk;
int unk;
int unk;
int unk;
int unk;
uint quick1;
int quick1Ref;
uint quick2;
int quick2Ref;
uint quick3;
int quick3Ref;
uint quick4;
int quick4Ref;
uint quick5;
int quick5Ref;
uint quick6;
int quick6Ref;
uint quick7;
int quick7Ref;
uint quick8;
int quick8Ref;
uint quick9;
int quick9Ref;
uint quick10;
int quick10Ref;
int unk;
uint pouch1;
int pouch1Ref;
uint pouch2;
int pouch2Ref;
uint pouch3;
int pouch3Ref;
uint pouch4;
int pouch4Ref;
uint pouch5;
int pouch5Ref;
uint pouch6;
int pouch6Ref;
int unk;
int unk;
int unk;
int unk;
int unk;
int unk;
int unk;
int unk;
int unkCount;
UnkItems unkitems[unkCount];
int leftWeapon1ID;
int rightWeapon1ID;
int leftWeapon2ID;
int rightWeapon2ID;
int leftWeapon3ID;
int rightWeapon3ID;
int arrow1ID;
int bolt1ID;
int arrow2ID;
int bolt2ID;
int unk;
int unk;
int headID;
int chestID;
int armsID;
int legsID;
int unk;
int talisman1ID;
int talisman2ID;
int talisman3ID;
int talisman4ID;
int unk;
int quick1ID;
int quick2ID;
int quick3ID;
int quick4ID;
int quick5ID;
int quick6ID;
int quick7ID;
int quick8ID;
int quick9ID;
int quick10ID;
int pouch1ID;
int pouch2ID;
int pouch3ID;
int pouch4ID;
int pouch5ID;
int pouch6ID;
int unk;
int flask1ID;
int flask2ID;
int unk;
int unk;
} Items;
typedef struct {
ubyte R;
ubyte G;
ubyte B;
} RGB;
typedef struct {
char face[4];
struct {
ubyte unk1[0x8];
ubyte BaseStructure;
ubyte unk433[0x3];
ubyte UnkStructure;
ubyte unk133[0x7];
ubyte FaceAndHairEyebrowsBrow;
ubyte unk3[0x3];
ubyte FaceAndHairBeardBeard;
ubyte unk4[0x3];
ubyte FaceAndHairTattooMarkEyepatchEyepatch;
ubyte unk5[0x3];
ubyte FaceAndHairTattooMarkEyepatchTatooMark;
ubyte unk6[0x3];
ubyte FaceAndHairEyelashesEyelashes;
ubyte unk7[0x3];
ubyte FaceAndHairFaceTemplateApparentAge;
ubyte FaceAndHairFaceTemplateFacialAesthetic;
ubyte FaceAndHairFaceTemplateFormEmphasis;
ubyte unk8;
ubyte FaceAndHairFaceStructureBrowRidgeBrowRidgeHeight;
ubyte FaceAndHairFaceStructureBrowRidgeInnerBrowRidge;
ubyte FaceAndHairFaceStructureBrowRidgeOuterBrowRidge;
ubyte FaceAndHairFaceStructureCheeksCheekboneHeight;
ubyte FaceAndHairFaceStructureCheeksCheekboneDepth;
ubyte FaceAndHairFaceStructureCheeksCheekboneWidth;
ubyte FaceAndHairFaceStructureCheeksCheekboneProtrusion;
ubyte FaceAndHairFaceStructureCheeksCheeks;
ubyte FaceAndHairFaceStructureChinChinTipPosition;
ubyte FaceAndHairFaceStructureChinChinLength;
ubyte FaceAndHairFaceStructureChinChinProtrusion;
ubyte FaceAndHairFaceStructureChinChinDepth;
ubyte FaceAndHairFaceStructureChinChinSize;
ubyte FaceAndHairFaceStructureChinChinHeight;
ubyte FaceAndHairFaceStructureChinChinWidth;
ubyte FaceAndHairFaceStructureEyesEyePosition;
ubyte FaceAndHairFaceStructureEyesEyeSize;
ubyte FaceAndHairFaceStructureEyesEyeSlant;
ubyte FaceAndHairFaceStructureEyesEyeSpacing;
ubyte FaceAndHairFaceStructureFacialBalanceNoseSize;
ubyte FaceAndHairFaceStructureFacialBalanceNoseForeheadRatio;
ubyte unk9;
ubyte FaceAndHairFaceStructureFacialBalanceFaceProtrusion;
ubyte FaceAndHairFaceStructureFacialBalanceVertFaceRatio;
ubyte FaceAndHairFaceStructureFacialBalanceFacialFeatureSlant;
ubyte FaceAndHairFaceStructureFacialBalanceHorizFaceRatio;
ubyte unk10;
ubyte FaceAndHairFaceStructureFacialStructureForeheadDepth;
ubyte FaceAndHairFaceStructureFacialStructureForheadProtrusion;
ubyte unk11;
ubyte FaceAndHairFaceStructureJawJawProtrusion;
ubyte FaceAndHairFaceStructureJawJawWidth;
ubyte FaceAndHairFaceStructureJawLowerJaw;
ubyte FaceAndHairFaceStructureJawJawContour;
ubyte FaceAndHairFaceStructureLipsLipShape;
ubyte FaceAndHairFaceStructureLipsLipSize;
ubyte FaceAndHairFaceStructureLipsLipFullness;
ubyte FaceAndHairFaceStructureLipsMouthExpression;
ubyte FaceAndHairFaceStructureLipsLipProtrusion;
ubyte FaceAndHairFaceStructureLipsLipThickness;
ubyte FaceAndHairFaceStructureMouthMouthProtrusion;
ubyte FaceAndHairFaceStructureMouthMouthSlant;
ubyte FaceAndHairFaceStructureMouthOcclusion;
ubyte FaceAndHairFaceStructureMouthMouthPosition;
ubyte FaceAndHairFaceStructureMouthMouthWidth;
ubyte FaceAndHairFaceStructureMouthMouthChinDistance;
ubyte FaceAndHairFaceStructureNoseRidgeNoseRidgeDepth;
ubyte FaceAndHairFaceStructureNoseRidgeNoseRidgeLength;
ubyte FaceAndHairFaceStructureNoseRidgeNosePosition;
ubyte FaceAndHairFaceStructureNoseRidgeNoseTipHeight;
ubyte FaceAndHairFaceStructureNostrilsNostrilSlant;
ubyte FaceAndHairFaceStructureNostrilsNostrilSize;
ubyte FaceAndHairFaceStructureNostrilsNostrilWidth;
ubyte FaceAndHairFaceStructureNoseRidgeNoseProtrusion;
ubyte FaceAndHairFaceStructureFacialStructureNoseBridgeHeight;
ubyte FaceAndHairFaceStructureFacialStructureBridgeProtrusion1;
ubyte FaceAndHairFaceStructureFacialStructureBridgeProtrusion2;
ubyte FaceAndHairFaceStructureFacialStructureNoseBridgeWidth;
ubyte FaceAndHairFaceStructureNoseRidgeNoseHeight;
ubyte FaceAndHairFaceStructureNoseRidgeNoseSlant;
ubyte unk12[0x40];
ubyte AlterBodyHead;
ubyte AlterBodyChest;
ubyte AlterBodyAbdomen;
ubyte AlterBodyArms;
ubyte AlterBodyLegs;
ubyte AlterBodyArmsR;
ubyte AlterBodyLegsR;
RGB body;
ubyte FaceAndHairSkinFeaturesSkinLuster;
ubyte FaceAndHairSkinFeaturesPores;
ubyte FaceAndHairFacialHairStubble;
ubyte FaceAndHairSkinFeaturesDarkCircles;
RGB FaceAndHairSkinFeaturesDarkCircleColor;
ubyte FaceAndHairCosmeticsCheeks;
RGB FaceAndHairCosmeticsCheeksColor;
ubyte FaceAndHairCosmeticsEyeliner;
RGB FaceAndHairCosmeticsEyelinerColor;
ubyte FaceAndHairCosmeticsEyeshadowLower;
RGB FaceAndHairCosmeticsEyeshadowLowerColor;
ubyte FaceAndHairCosmeticsEyeshadowUpper;
RGB FaceAndHairCosmeticsEyeshadowUpperColor;
ubyte FaceAndHairCosmeticsLipstick;
RGB FaceAndHairCosmeticsLipstickColor;
ubyte FaceAndHairTattooMarkEyepatchTweakTattooMarkPositionHoriz;
ubyte FaceAndHairTattooMarkEyepatchTweakTattooMarkPositionVert;
ubyte FaceAndHairTattooMarkEyepatchTweakTattooMarkAngle;
ubyte FaceAndHairTattooMarkEyepatchTweakTattooMarkExpansion;
RGB FaceAndHairTattooMarkEyepatchTatooMarkColor;
ubyte unk13;
ubyte FaceAndHairTattooMarkEyepatchTweakTattooMarkFlip;
ubyte AlterBodyBodyHair;
RGB AlterBodyBodyHairColor;
RGB FaceAndHairEyesRightIrisColor;
ubyte FaceAndHairEyesRightIrisSize;
ubyte FaceAndHairEyesRClouding;
RGB FaceAndHairEyesRCloudingColor;
RGB FaceAndHairEyesRWhiteColor;
ubyte FaceAndHairEyesREyePosition;
RGB FaceAndHairEyesLeftIrisColor;
ubyte FaceAndHairEyesLeftIrisSize;
ubyte FaceAndHairEyesLClouding;
RGB FaceAndHairEyesLCloudingColor;
RGB FaceAndHairEyesLWhiteColor;
ubyte FaceAndHairEyesLEyePosition;
RGB FaceAndHairAlterFaceAndHairHairHairColor;
ubyte FaceAndHairAlterFaceAndHairHairLuster;
ubyte FaceAndHairAlterFaceAndHairHairRootDarkness;
ubyte FaceAndHairAlterFaceAndHairHairWhiteHairs;
RGB FaceAndHairAlterFaceAndHairFacialHairBeardColor;
ubyte FaceAndHairFacialHairLuster;
ubyte FaceAndHairFacialHairRootDarkness;
ubyte FaceAndHairFacialHairWhiteHairs;
RGB FaceAndHairEyebrowsBrowColor;
ubyte FaceAndHairEyebrowsBrowLuster;
ubyte FaceAndHairEyebrowsBrowRootDarkness;
ubyte FaceAndHairEyebrowsBrowWhiteHairs;
RGB FaceAndHairEyelashesEyelashColor;
RGB FaceAndHairTattooMarkEyepatchEyepatchColor;
ubyte unk14[0x15];
} customizationData;
int unk;
int unk;
} FaceData;
typedef struct {
int storageCount;
Item inventory[0x800];
} Storage;
typedef struct {
int flagsCount;
int flags[flagsCount];
} UnkFlags;
local int i;
local int offset = 0;
local int count = 1;
char magic[4];
if(magic == "BND4") {
offset = 0x300;
count = 10;
}
for(i = 0; i < count; i++) {
FSeek(offset + 0x280010 * i);
struct {
Header header;
if(header.version > 0) {
struct { LookupEntry lookup[0x1400] <optimize=false>; } lookupTable;
Stats stats;
Items items;
FaceData face;
Storage storage;
int unk1[67];
UnkFlags unkFlags;
FSeek(FTell() + 0x1C629);
FSeek(FTell() + 0x1C);
FSeek(FTell() + 0x3FF);
uint deathCount;
FSeek(FTell() + 0x9);
int lastGraceEntity;
FSeek(FTell() + 0x9);
FSeek(FTell() + 0x1AABA3); // Event Flags
}
} character;
}
Since updating the mod I'm experiencing an issue where the counter will not update from 0, even when pressing the reset button, the counter just always stays at 0 no matter what. I have tried uninstalling and reinstalling, and using the old load method, nothing seems to work to get the counter to update. Does anyone know a fix?