Skip to content

Commit 151bed1

Browse files
committed
Partially Revert "fix: Scale fix (#571)"
This reverts commit b896a73. Because of NW making crash on Player
1 parent 3faecbb commit 151bed1

2 files changed

Lines changed: 32 additions & 17 deletions

File tree

EXILED/Exiled.API/Features/Player.cs

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,7 @@ public ScpSpawnPreferences.SpawnPreferences ScpPreferences
699699
public Vector3 Scale
700700
{
701701
get => ReferenceHub.transform.localScale;
702-
set => SetScale(value);
702+
set => SetScale(value, List);
703703
}
704704

705705
/// <summary>
@@ -2065,25 +2065,27 @@ public void Disconnect(string reason = null) =>
20652065
/// </summary>
20662066
public void ResetStamina() => Stamina = StaminaStat.MaxValue;
20672067

2068-
/// <summary>
2069-
/// Sets the scale of a player on the server side.
2070-
/// </summary>
2071-
/// <param name="scale">The scale to set.</param>
2072-
public void SetScale(Vector3 scale)
2073-
{
2074-
ReferenceHub.transform.localScale = scale;
2075-
new SyncedScaleMessages.ScaleMessage(scale, ReferenceHub).SendToAuthenticated();
2076-
}
2077-
20782068
/// <summary>
20792069
/// Sets the scale of a player on the server side.
20802070
/// </summary>
20812071
/// <param name="scale">The scale to set.</param>
20822072
/// <param name="viewers">Who should see the updated scale.</param>
20832073
public void SetScale(Vector3 scale, IEnumerable<Player> viewers)
20842074
{
2085-
ReferenceHub.transform.localScale = scale;
2086-
new SyncedScaleMessages.ScaleMessage(scale, ReferenceHub).SendToHubsConditionally(x => x != null && viewers.Contains(Get(x)));
2075+
if (scale == Scale)
2076+
return;
2077+
2078+
try
2079+
{
2080+
ReferenceHub.transform.localScale = scale;
2081+
2082+
foreach (Player target in viewers)
2083+
Server.SendSpawnMessage?.Invoke(null, new object[] { NetworkIdentity, target.Connection });
2084+
}
2085+
catch (Exception exception)
2086+
{
2087+
Log.Error($"{nameof(SetScale)} error: {exception}");
2088+
}
20872089
}
20882090

20892091
/// <summary>
@@ -2093,9 +2095,21 @@ public void SetScale(Vector3 scale, IEnumerable<Player> viewers)
20932095
/// <param name="viewers">Who should see the fake scale.</param>
20942096
public void SetFakeScale(Vector3 fakeScale, IEnumerable<Player> viewers)
20952097
{
2096-
SyncedScaleMessages.ScaleMessage scaleMessage = new(fakeScale, ReferenceHub);
2097-
foreach (Player player in viewers)
2098-
player.Connection.Send(scaleMessage, 0);
2098+
Vector3 currentScale = Scale;
2099+
2100+
try
2101+
{
2102+
ReferenceHub.transform.localScale = fakeScale;
2103+
2104+
foreach (Player target in viewers)
2105+
Server.SendSpawnMessage.Invoke(null, new object[] { NetworkIdentity, target.Connection });
2106+
2107+
ReferenceHub.transform.localScale = currentScale;
2108+
}
2109+
catch (Exception ex)
2110+
{
2111+
Log.Error($"{nameof(SetFakeScale)}: {ex}");
2112+
}
20992113
}
21002114

21012115
/// <summary>

EXILED/Exiled.CustomRoles/API/Features/CustomRole.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ public virtual void AddRole(Player player)
564564
Log.Debug($"{Name}: Setting health values.");
565565
player.Health = MaxHealth;
566566
player.MaxHealth = MaxHealth;
567-
Timing.CallDelayed(0.1f, () => player.Scale = Scale); // To fix : remove the delay in 14.1.2 once the crash issue is resolved
567+
player.Scale = Scale;
568568
if (Gravity.HasValue && player.Role is FpcRole fpcRole)
569569
fpcRole.Gravity = Gravity.Value;
570570
Vector3 position = GetSpawnPosition();
@@ -627,6 +627,7 @@ public virtual void RemoveRole(Player player)
627627
TrackedPlayers.Remove(player);
628628
player.CustomInfo = string.Empty;
629629
player.InfoArea |= PlayerInfoArea.Role | PlayerInfoArea.Nickname;
630+
player.Scale = Vector3.one;
630631
if (CustomAbilities is not null)
631632
{
632633
foreach (CustomAbility ability in CustomAbilities)

0 commit comments

Comments
 (0)