forked from SoDOff-Project/sodoff-mmo
exploits protection bugfixes
This commit is contained in:
parent
158ac4ee21
commit
783d02d4b2
@ -50,8 +50,13 @@ class SetPositionVariablesHandler : CommandHandler {
|
|||||||
|
|
||||||
// user event
|
// user event
|
||||||
string? ue = spvData.Get<string>("UE");
|
string? ue = spvData.Get<string>("UE");
|
||||||
if (ue != null)
|
if (ue != null) {
|
||||||
|
long time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
|
||||||
|
if ((time - client.PlayerData.last_ue_time) > 499 || Configuration.ServerConfiguration.AllowChaos) {
|
||||||
vars.Add("UE", ue);
|
vars.Add("UE", ue);
|
||||||
|
client.PlayerData.last_ue_time = time;
|
||||||
|
}
|
||||||
|
}
|
||||||
// pitch
|
// pitch
|
||||||
float? cup = spvData.Get<float?>("CUP");
|
float? cup = spvData.Get<float?>("CUP");
|
||||||
if (cup != null)
|
if (cup != null)
|
||||||
|
@ -43,7 +43,7 @@ class SetUserVariablesHandler : CommandHandler {
|
|||||||
foreach (string varName in PlayerData.SupportedVariables) {
|
foreach (string varName in PlayerData.SupportedVariables) {
|
||||||
string? value = suvData.Get<string>(varName);
|
string? value = suvData.Get<string>(varName);
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
client.PlayerData.SetVariable(varName, value);
|
value = client.PlayerData.SetVariable(varName, value);
|
||||||
updated = true;
|
updated = true;
|
||||||
data.Add(varName, value);
|
data.Add(varName, value);
|
||||||
vl.Add(NetworkArray.Param(varName, value));
|
vl.Add(NetworkArray.Param(varName, value));
|
||||||
|
@ -38,6 +38,8 @@ public class PlayerData {
|
|||||||
public string DiplayName { get; set; } = "placeholder";
|
public string DiplayName { get; set; } = "placeholder";
|
||||||
public Role Role { get; set; } = Role.User;
|
public Role Role { get; set; } = Role.User;
|
||||||
|
|
||||||
|
public long last_ue_time { get; set; } = 0;
|
||||||
|
|
||||||
public static readonly string[] SupportedVariables = {
|
public static readonly string[] SupportedVariables = {
|
||||||
"A", // avatar data
|
"A", // avatar data
|
||||||
"FP", // raised pet data
|
"FP", // raised pet data
|
||||||
@ -69,18 +71,18 @@ public class PlayerData {
|
|||||||
return variables[varName];
|
return variables[varName];
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetVariable(string varName, string value) {
|
public string SetVariable(string varName, string value) {
|
||||||
// do not store in variables directory
|
// do not store in variables directory
|
||||||
if (varName == "UID") {
|
if (varName == "UID") {
|
||||||
return;
|
return value;
|
||||||
}
|
}
|
||||||
if (varName == "R") {
|
if (varName == "R") {
|
||||||
R = float.Parse(value, CultureInfo.InvariantCulture);
|
R = float.Parse(value, CultureInfo.InvariantCulture);
|
||||||
return;
|
return value;
|
||||||
}
|
}
|
||||||
if (varName == "F") {
|
if (varName == "F") {
|
||||||
F = unchecked((int)Convert.ToUInt32(value, 16));
|
F = unchecked((int)Convert.ToUInt32(value, 16));
|
||||||
return;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
// fix variable value before store
|
// fix variable value before store
|
||||||
@ -90,6 +92,7 @@ public class PlayerData {
|
|||||||
|
|
||||||
// store in directory
|
// store in directory
|
||||||
variables[varName] = value;
|
variables[varName] = value;
|
||||||
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InitFromNetworkData(NetworkObject suvData) {
|
public void InitFromNetworkData(NetworkObject suvData) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user