Skip to content

Commit 9eb0d3a

Browse files
committed
1.3.0²
1 parent 75d11e0 commit 9eb0d3a

File tree

3 files changed

+44
-28
lines changed

3 files changed

+44
-28
lines changed

LevelUP/Client/Instance.cs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
1-
using System;
21
using System.Collections.Generic;
32
using System.Text.Json;
4-
using System.Threading.Tasks;
5-
using ProtoBuf;
63
using Vintagestory.API.Client;
74
using Vintagestory.API.Config;
85

LevelUP/Server/Commands.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,9 @@ private TextCommandResult ChangeExperience(string[] args)
6969
// Save it
7070
instance.api.WorldManager.SaveGame.StoreData($"LevelUPData_{args[1]}", JsonSerializer.Serialize(levels));
7171

72+
// Refresh player levels
73+
Instance.UpdatePlayerLevels(player, instance.api);
74+
7275
return TextCommandResult.Success($"Changed experience from {player.PlayerName} to {args[3]} on level {args[1]}", "10");
7376
}
7477

@@ -98,6 +101,9 @@ private TextCommandResult AddExperience(string[] args)
98101
// Save it
99102
instance.api.WorldManager.SaveGame.StoreData($"LevelUPData_{args[1]}", JsonSerializer.Serialize(levels));
100103

104+
// Refresh player levels
105+
Instance.UpdatePlayerLevels(player, instance.api);
106+
101107
return TextCommandResult.Success($"Added {player.PlayerName} experience to {args[3]} on level {args[1]}", "11");
102108
}
103109

@@ -130,6 +136,9 @@ private TextCommandResult ReduceExperience(string[] args)
130136
// Save it
131137
instance.api.WorldManager.SaveGame.StoreData($"LevelUPData_{args[1]}", JsonSerializer.Serialize(levels));
132138

139+
// Refresh player levels
140+
Instance.UpdatePlayerLevels(player, instance.api);
141+
133142
return TextCommandResult.Success($"Reduced {player.PlayerName} experience to {args[3]} on level {args[1]}", "12");
134143
}
135144

@@ -184,6 +193,10 @@ private TextCommandResult ResetPlayerStatus(string[] args)
184193
player.Entity.Attributes.SetFloat("aimingAccuracy", 0.7f);
185194
player.Entity.Stats.Set("forageDropRate", "forageDropRate", 1.0f);
186195
player.Entity.WatchedAttributes.SetFloat("regenSpeed", 1.0f);
196+
197+
// Refresh player levels
198+
Instance.UpdatePlayerLevels(player, instance.api);
199+
187200
return TextCommandResult.Success($"{args[1]} status has been reseted to vanilla default", "13");
188201
}
189202

@@ -198,8 +211,12 @@ private TextCommandResult ResetPlayerLevels(string[] args)
198211
IServerPlayer player = GetPlayerByUsernameOrUID(args[1]);
199212
if (player == null) return TextCommandResult.Success($"Player {args[1]} not found or not online", "14");
200213

214+
// Removing experience from all levels to this player
201215
Instance.ResetPlayerLevels(player, instance.api, 0);
202216

217+
// Refresh player levels
218+
Instance.UpdatePlayerLevels(player, instance.api);
219+
203220
return TextCommandResult.Success($"{args[1]} levels has been reseted to 0", "13");
204221
}
205222

LevelUP/Server/Instance.cs

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public void Init(ICoreServerAPI serverAPI)
4040
{
4141
api = serverAPI;
4242
// Update player levels when player enters in the world
43-
api.Event.PlayerNowPlaying += UpdatePlayerLevels;
43+
api.Event.PlayerNowPlaying += (IServerPlayer player) => UpdatePlayerLevels(player, api);
4444

4545
// Enable levels
4646
if (Configuration.enableLevelHunter) levelHunter.Init(this);
@@ -206,7 +206,7 @@ public void OnChannelMessage(IServerPlayer player, ServerMessage bruteMessage)
206206
{
207207
switch (bruteMessage.message)
208208
{
209-
case "UpdateLevels": UpdatePlayerLevels(player); return;
209+
case "UpdateLevels": UpdatePlayerLevels(player, api); return;
210210
case "GetEnabledLevels": GetEnabledLevels(player); return;
211211
}
212212
}
@@ -789,7 +789,7 @@ void SaveLevels(Dictionary<string, ulong> levels)
789789
#endregion
790790
}
791791

792-
private void UpdatePlayerLevels(IServerPlayer player)
792+
public static void UpdatePlayerLevels(IServerPlayer player, ICoreServerAPI api)
793793
{
794794
// Get all players saved level
795795
Dictionary<string, ulong> GetSavedLevels(string levelType)
@@ -886,7 +886,7 @@ private static void GetEnabledLevels(IServerPlayer player)
886886
}
887887

888888
public static readonly Dictionary<string, long> playersHardcoreDelay = [];
889-
static public void ResetPlayerLevels(IServerPlayer player, ICoreServerAPI api, double overwriteLose = -1)
889+
static public void ResetPlayerLevels(IServerPlayer player, ICoreServerAPI api, double overwriteLose = -1)
890890
{
891891
// Check if delay config is enabled
892892
if (Configuration.hardcorePenaltyDelayInWorldSeconds > 0 && overwriteLose == -1)
@@ -922,7 +922,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
922922

923923
{
924924
Dictionary<string, ulong> level = GetSavedLevels("Hunter");
925-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
925+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
926926
{
927927
double newValue = value * (ulong)losePercentage;
928928
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -931,7 +931,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
931931
}
932932
{
933933
Dictionary<string, ulong> level = GetSavedLevels("Bow");
934-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
934+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
935935
{
936936
double newValue = value * (ulong)losePercentage;
937937
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -940,7 +940,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
940940
}
941941
{
942942
Dictionary<string, ulong> level = GetSavedLevels("Knife");
943-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
943+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
944944
{
945945
double newValue = value * (ulong)losePercentage;
946946
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -949,7 +949,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
949949
}
950950
{
951951
Dictionary<string, ulong> level = GetSavedLevels("Axe");
952-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
952+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
953953
{
954954
double newValue = value * (ulong)losePercentage;
955955
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -958,7 +958,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
958958
}
959959
{
960960
Dictionary<string, ulong> level = GetSavedLevels("Pickaxe");
961-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
961+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
962962
{
963963
double newValue = value * (ulong)losePercentage;
964964
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -967,7 +967,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
967967
}
968968
{
969969
Dictionary<string, ulong> level = GetSavedLevels("Shovel");
970-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
970+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
971971
{
972972
double newValue = value * (ulong)losePercentage;
973973
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -976,16 +976,18 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
976976
}
977977
{
978978
Dictionary<string, ulong> level = GetSavedLevels("Spear");
979-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
979+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
980980
{
981981
double newValue = value * (ulong)losePercentage;
982982
level[player.PlayerUID] = (ulong)Math.Round(newValue);
983983
}
984984
api.WorldManager.SaveGame.StoreData("LevelUPData_Spear", JsonSerializer.Serialize(level));
985985
}
986986
{
987+
Debug.Log("ALRIGHTT CALLED");
987988
Dictionary<string, ulong> level = GetSavedLevels("Hammer");
988-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
989+
Debug.Log($"{level.TryGetValue(player.PlayerUID, out ulong flinstons)} : {flinstons}");
990+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
989991
{
990992
double newValue = value * (ulong)losePercentage;
991993
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -994,7 +996,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
994996
}
995997
{
996998
Dictionary<string, ulong> level = GetSavedLevels("Sword");
997-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
999+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
9981000
{
9991001
double newValue = value * (ulong)losePercentage;
10001002
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1003,7 +1005,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10031005
}
10041006
{
10051007
Dictionary<string, ulong> level = GetSavedLevels("Shield");
1006-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1008+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10071009
{
10081010
double newValue = value * (ulong)losePercentage;
10091011
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1012,7 +1014,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10121014
}
10131015
{
10141016
Dictionary<string, ulong> level = GetSavedLevels("Hand");
1015-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1017+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10161018
{
10171019
double newValue = value * (ulong)losePercentage;
10181020
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1021,7 +1023,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10211023
}
10221024
{
10231025
Dictionary<string, ulong> level = GetSavedLevels("Farming");
1024-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1026+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10251027
{
10261028
double newValue = value * (ulong)losePercentage;
10271029
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1030,7 +1032,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10301032
}
10311033
{
10321034
Dictionary<string, ulong> level = GetSavedLevels("Cooking");
1033-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1035+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10341036
{
10351037
double newValue = value * (ulong)losePercentage;
10361038
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1039,7 +1041,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10391041
}
10401042
{
10411043
Dictionary<string, ulong> level = GetSavedLevels("Panning");
1042-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1044+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10431045
{
10441046
double newValue = value * (ulong)losePercentage;
10451047
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1048,7 +1050,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10481050
}
10491051
{
10501052
Dictionary<string, ulong> level = GetSavedLevels("Vitality");
1051-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1053+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10521054
{
10531055
double newValue = value * (ulong)losePercentage;
10541056
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1057,7 +1059,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10571059
}
10581060
{
10591061
Dictionary<string, ulong> level = GetSavedLevels("LeatherArmor");
1060-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1062+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10611063
{
10621064
double newValue = value * (ulong)losePercentage;
10631065
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1066,7 +1068,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10661068
}
10671069
{
10681070
Dictionary<string, ulong> level = GetSavedLevels("ChainArmor");
1069-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1071+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10701072
{
10711073
double newValue = value * (ulong)losePercentage;
10721074
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1075,7 +1077,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10751077
}
10761078
{
10771079
Dictionary<string, ulong> level = GetSavedLevels("BrigandineArmor");
1078-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1080+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10791081
{
10801082
double newValue = value * (ulong)losePercentage;
10811083
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1084,7 +1086,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10841086
}
10851087
{
10861088
Dictionary<string, ulong> level = GetSavedLevels("PlateArmor");
1087-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1089+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10881090
{
10891091
double newValue = value * (ulong)losePercentage;
10901092
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1093,7 +1095,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
10931095
}
10941096
{
10951097
Dictionary<string, ulong> level = GetSavedLevels("ScaleArmor");
1096-
if (level.TryGetValue(player.PlayerName, out ulong value) && value > 0)
1098+
if (level.TryGetValue(player.PlayerUID, out ulong value) && value > 0)
10971099
{
10981100
double newValue = value * (ulong)losePercentage;
10991101
level[player.PlayerUID] = (ulong)Math.Round(newValue);
@@ -1103,7 +1105,7 @@ Dictionary<string, ulong> GetSavedLevels(string levelType)
11031105
if (overwriteLose == -1)
11041106
{
11051107
if (Configuration.enableExtendedLog)
1106-
Debug.Log($"{player.PlayerName} died and lost {(int)((1.0 - losePercentage) * 100)}% of all experience");
1108+
Debug.Log($"{player.PlayerUID} died and lost {(int)((1.0 - losePercentage) * 100)}% of all experience");
11071109
if (Configuration.hardcoreMessageWhenDying)
11081110
communicationChannel.SendPacket(new ServerMessage() { message = $"playerhardcoredied&{(int)((1.0 - losePercentage) * 100)}" }, player);
11091111
}

0 commit comments

Comments
 (0)