Any possibility to fix the "level up" message? I've noticed that since some patch, the game only shows the "level up" message when you reach the needed experience by recieving exp from quest, but not from monsters anymore. So if you reach the next level gaining experience by killing monsters, you won't notice that you've level up.
I tried to fix it myself some time ago but without any lucky. Maybe you or someone else can find a way to do it...
Turns out if you use this mod you will in fact get the level up message when you kill an enemy, provided the xp does "show". But I found a universal fix- Just edit levelManager.ws and on line 255 (of vanilla file) change if( GainLevel( show) ) to if( GainLevel( true ) ). That way you'll always get the level up message no matter where the xp came from )
Thank you so much! It worked :D I was troubling with that since a long time ago and you finally found an easy fix.
Do you mind if I upload a mod with just that simple fix for anyone who has troubles with modding or edditing files? Of course I will give you the credits for finding the fix :)
Hi. If you do this if(GainLevel(true)), then there will be a bug with taking the book after level up. For myself solved the problem by editing "npc.ws". Instead of line 2553 witcher.AddPoints(EExperiencePoint, RoundF( expPoints * theGame.expGlobalMod_kills ), false ); replaced by exp_kill = RoundF( expPoints * theGame.expGlobalMod_kills );
total_nextlevel = witcher.levelManager.GetTotalExpForNextLevel(); total = witcher.levelManager.GetPointsTotal(EExperiencePoint);
if(total_nextlevel > 0 && exp_kill >= (total_nextlevel - total)) { witcher.AddPoints(EExperiencePoint, exp_kill, true ); } else { witcher.AddPoints(EExperiencePoint, exp_kill, false ); } where the variables "exp_kill", "total_nextlevel", "total" are integers
A mod works in next gen 4.01. If you have a bug in IsMountedByPlayer, just comment it out or remove bool value, Example ( IsMountedByPlayer(true) -> //IsMountedByPlayer(true) ) Тhis causes a bug for new game Hearth of Stone or BoW - is cheked! Thanks for the works.
I'm trying to use it in conjunction with the W3EE mod. Everything seems to be working. But I don't see a message about gaining experience for killing monsters. Probably because the W3EE mod disabled the message about getting the level of pumping Geralt.
I found a minor bug, but It can be easily fixed by every user. The minimum XP is by default set to 10, and it only can be increased by 10, up to 200 (though you never get 200 XP from killing). I tweaked the slider, I set it to 1 and it appears I get only 3 XP, thats why it didn't work for me at first.
So, the slider is like this: <Var id="kxpxps" displayName="kxp_xps" displayType="SLIDER;0;200;20" />
should be (in my opinion): <Var id="kxpxps" displayName="kxp_xps" displayType="SLIDER;1;40;39" />
I second that :) The massive popup can quickly get old, after killing 100+ enemies, and something much more subtle would do - either action log mention, or the way the loot shows.
I am so impressed! Not only with how quickly you responded to the suggestion above, but also just how cool this mod works. Even better combined with Action Log mod (https://www.nexusmods.com/witcher3/mods/934) - this way you never lose track of the exp you’ve earned!
Also, seeing how easy it was for you, if you're looking for eternal glory and a challenging challenge - there is a well known mod out there, that definitely requires some love and attention, and someone to carry the good work, as the original author deleted his online presence. Comes with an immediate cry for help, in the posts section, from yours truly :)
Well, you could just test it out and see. I don't think conflicts would be a serious issue, mainly the fact that ghost mode alters experience rewards. I don't know at what stage the XP is calculated differently, so it's possible that the values my mod shows and what you actually get with ghost mode could be different.
Yes, the XP it shows is the same amount that is awarded to the player (in vanilla). Looks like this- RoundF( expPoints * theGame.expGlobalMod_kills ). If a mod changes that (perhaps adding it's own multiplier to the equation), then it is incompatible. Unless it only changes the actual process of calculation and doesn't touch that line.
//modSigns: show exp given arrInt.PushBack(expPoints); theGame.witcherLog.AddMessage( GetLocStringByKeyExtWithParams("hud_combat_log_gained_experience", arrInt) ); } if (theGame.GetInGameConfigWrapper().GetVarValue( 'KXP', 'kxpen')) GetWitcherPlayer().AddPoints(EExperiencePoint, expPoints, true ); else GetWitcherPlayer().AddPoints(EExperiencePoint, expPoints, false ); } else GetWitcherPlayer().AddPoints(EExperiencePoint, expPoints, false ); //modShowKillXP
Did some testing and I think it works, killed couple of monsters and it gave me the correct amount, still not 100% so I will test some more. If you notice anything wrong with the code pls let me know, and thank you for your help
34 comments
Any possibility to fix the "level up" message?
I've noticed that since some patch, the game only shows the "level up" message when you reach the needed experience by recieving exp from quest, but not from monsters anymore.
So if you reach the next level gaining experience by killing monsters, you won't notice that you've level up.
I tried to fix it myself some time ago but without any lucky. Maybe you or someone else can find a way to do it...
Just edit levelManager.ws and on line 255 (of vanilla file) change if( GainLevel( show) ) to if( GainLevel( true ) ). That way you'll always get the level up message no matter where the xp came from )
I was troubling with that since a long time ago and you finally found an easy fix.
Do you mind if I upload a mod with just that simple fix for anyone who has troubles with modding or edditing files?
Of course I will give you the credits for finding the fix :)
For myself solved the problem by editing "npc.ws". Instead of line 2553
witcher.AddPoints(EExperiencePoint, RoundF( expPoints * theGame.expGlobalMod_kills ), false );
replaced byexp_kill = RoundF( expPoints * theGame.expGlobalMod_kills );
where the variables "exp_kill", "total_nextlevel", "total" are integerstotal_nextlevel = witcher.levelManager.GetTotalExpForNextLevel();
total = witcher.levelManager.GetPointsTotal(EExperiencePoint);
if(total_nextlevel > 0 && exp_kill >= (total_nextlevel - total))
{
witcher.AddPoints(EExperiencePoint, exp_kill, true );
}
else
{
witcher.AddPoints(EExperiencePoint, exp_kill, false );
}
I found a minor bug, but It can be easily fixed by every user. The minimum XP is by default set to 10, and it only can be increased by 10, up to 200 (though you never get 200 XP from killing). I tweaked the slider, I set it to 1 and it appears I get only 3 XP, thats why it didn't work for me at first.
So, the slider is like this:
<Var id="kxpxps" displayName="kxp_xps" displayType="SLIDER;0;200;20" />
should be (in my opinion):
<Var id="kxpxps" displayName="kxp_xps" displayType="SLIDER;1;40;39" />
The massive popup can quickly get old, after killing 100+ enemies, and something much more subtle would do - either action log mention, or the way the loot shows.
Comes with an immediate cry for help, in the posts section, from yours truly :)
https://www.nexusmods.com/witcher3/mods/1996?tab=posts
also, will you publish a version with only a hud message without action log, that would probably solve at least some conflicts?
otherwise great mod, thanks for your work :D
//modSigns
expPoints = RoundMath( expPoints * (1 + CalculateAttributeValue(bonusExp)) * theGame.expGlobalMod_kills );
expPoints = Max(1, expPoints);
//modSigns: final exp modifier
if( theGame.params.GetMonsterExpModifier() != 0 )
expPoints = RoundMath(expPoints * (1 + theGame.params.GetMonsterExpModifier()));
//modShowKillXP
if (( theGame.GetInGameConfigWrapper().GetVarValue( 'KXP', 'kxplvlen') && npcLevel >= witcher.GetLevel()-StringToInt(theGame.GetInGameConfigWrapper().GetVarValue( 'KXP', 'kxplvls')) || !theGame.GetInGameConfigWrapper().GetVarValue( 'KXP', 'kxplvlen') )
&& ( theGame.GetInGameConfigWrapper().GetVarValue( 'KXP', 'kxpxpen') && expPoints >=StringToInt(theGame.GetInGameConfigWrapper().GetVarValue( 'KXP', 'kxpxps')) || !theGame.GetInGameConfigWrapper().GetVarValue( 'KXP', 'kxpxpen') ))
{
if (theGame.GetInGameConfigWrapper().GetVarValue( 'KXP', 'kxplog'))
{
xpmsg = IntToString( expPoints )+' experience points received from kill';
hud = (CR4ScriptedHud)theGame.GetHud();
hud.HudConsoleMsg(xpmsg);
//modSigns: show exp given
arrInt.PushBack(expPoints);
theGame.witcherLog.AddMessage( GetLocStringByKeyExtWithParams("hud_combat_log_gained_experience", arrInt) );
}
if (theGame.GetInGameConfigWrapper().GetVarValue( 'KXP', 'kxpen')) GetWitcherPlayer().AddPoints(EExperiencePoint, expPoints, true );
else GetWitcherPlayer().AddPoints(EExperiencePoint, expPoints, false );
}
else GetWitcherPlayer().AddPoints(EExperiencePoint, expPoints, false );
//modShowKillXP
Did some testing and I think it works, killed couple of monsters and it gave me the correct amount, still not 100% so I will test some more.
If you notice anything wrong with the code pls let me know, and thank you for your help
I was only hoping for an option to disable the objective complete sound after every kill, otherwise superb.
Cam you a upgrade for show lv bar in HUD?
Humm... sou lv in hud.