Skip to content

Commit

Permalink
fix: fix issues
Browse files Browse the repository at this point in the history
  • Loading branch information
samyycX committed Jan 27, 2025
1 parent 6230823 commit 9ce3dfa
Show file tree
Hide file tree
Showing 7 changed files with 59 additions and 24 deletions.
2 changes: 2 additions & 0 deletions Config.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ public class ModelConfig : BasePluginConfig
[JsonPropertyName("ModelChangeCooldownSecond")] public float ModelChangeCooldownSecond { get; set; } = 0f;
[JsonPropertyName("Inspection")] public InspectionConfig Inspection { get; set; } = new InspectionConfig();

[JsonPropertyName("BasicPermission")] public string BasicPermission { get; set; } = "";
[JsonPropertyName("DisableDefaultModelLeg")] public bool DisableDefaultModelLeg { get; set; } = false;
[JsonPropertyName("DisableInstantChange")] public bool DisableInstantChange { get; set; } = false;
[JsonPropertyName("DisablePrecache")] public bool DisablePrecache { get; set; } = false;
[JsonPropertyName("DisableRandomModel")] public bool DisableRandomModel { get; set; } = false;
Expand Down
46 changes: 23 additions & 23 deletions PlayerModelChanger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace PlayerModelChanger;
public partial class PlayerModelChanger : BasePlugin, IPluginConfig<ModelConfig>
{
public override string ModuleName => "Player Model Changer";
public override string ModuleVersion => "1.8.5";
public override string ModuleVersion => "1.8.6";

public override string ModuleAuthor => "samyyc";
public required ModelConfig Config { get; set; }
Expand All @@ -38,7 +38,8 @@ public override void Load(bool hotReload)
case "mysql":
Storage = new MySQLStorage(Config.MySQLIP, Config.MySQLPort, Config.MySQLUser, Config.MySQLPassword, Config.MySQLDatabase, Config.MySQLTable);
break;
};
}
;
if (Storage == null)
{
throw new Exception("[PlayerModelChanger] Failed to initialize storage. Please check your config");
Expand Down Expand Up @@ -220,10 +221,7 @@ public HookResult OnPlayerSpawnEvent(EventPlayerSpawn @event, GameEventInfo info
}
if (botmodel != null)
{
AddTimer(0.03f, () =>
{
SetModelNextServerFrame(player, botmodel, botmodel.Disableleg);
});
SetModelNextServerFrame(player, botmodel, botmodel.Disableleg);
}
else
{
Expand Down Expand Up @@ -274,27 +272,25 @@ public HookResult OnPlayerSpawnEvent(EventPlayerSpawn @event, GameEventInfo info
}
}

AddTimer(0.03f, () =>
Server.NextFrame(() =>
{
if (!Service.MapDefaultModelInitialized(player))
{
Service.SetMapDefaultModel(player, player.PlayerPawn.Value.CBodyComponent!.SceneNode!.GetSkeletonInstance().ModelState.ModelName);
}
Server.NextFrame(() =>
{
if (!Service.MapDefaultModelInitialized(player))
var model = Service.GetPlayerNowTeamModel(player);
if (model != null)
{
Service.SetMapDefaultModel(player, player.PlayerPawn.Value.CBodyComponent!.SceneNode!.GetSkeletonInstance().ModelState.ModelName);
SetModelNextServerFrame(player, model, model.Disableleg);
}
Server.NextFrame(() =>
else
{
var model = Service.GetPlayerNowTeamModel(player);
if (model != null)
{
SetModelNextServerFrame(player, model, model.Disableleg);
}
else
{
var originalRender = player.PlayerPawn.Value.Render;
player.PlayerPawn.Value.Render = Color.FromArgb(255, originalRender.R, originalRender.G, originalRender.B);
}
});
var originalRender = player.PlayerPawn.Value.Render;
player.PlayerPawn.Value.Render = Color.FromArgb(Config.DisableDefaultModelLeg ? 254 : 255, originalRender.R, originalRender.G, originalRender.B);
Utilities.SetStateChanged(player.PlayerPawn.Value, "CBaseModelEntity", "m_clrRender");
}
});
});
}
Expand All @@ -311,19 +307,23 @@ public Task SetModelNextServerFrame(CCSPlayerController player, Model? model, bo
return Server.NextFrameAsync(() =>
{
var pawn = player.Pawn.Value!;
var originalRender = pawn.Render;
if (model == null)
{
var defaultModel = Service.GetMapDefaultModel(player);
if (defaultModel != null)
{
pawn.SetModel(defaultModel);

}
pawn.Render = Color.FromArgb(Config.DisableDefaultModelLeg ? 254 : 255, originalRender.R, originalRender.G, originalRender.B);
Utilities.SetStateChanged(pawn, "CBaseModelEntity", "m_clrRender");

return;
}
pawn.SetModel(model.Path);
var originalRender = pawn.Render;
pawn.Render = Color.FromArgb(disableleg ? 254 : 255, originalRender.R, originalRender.G, originalRender.B);

Utilities.SetStateChanged(pawn, "CBaseModelEntity", "m_clrRender");

ulong meshgroupmask = pawn.CBodyComponent.SceneNode.GetSkeletonInstance().ModelState.MeshGroupMask;
if (Service.InitMeshgroupPreference(player, model, meshgroupmask))
Expand Down
2 changes: 1 addition & 1 deletion Service.cs
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ public void SetPlayerModel(ulong steamid, string? modelIndex, Side side, bool pe
if (Utils.CanPlayerSetModelInstantly(player, side))
{
var model = GetPlayerModel(player, side);
Utils.InstantUpdatePlayer(player, model, _Config.Inspection.Enable && modelIndex != "@random");
Utils.InstantUpdatePlayer(player, model, _Config.Inspection.Enable);
}
}
}
Expand Down
14 changes: 14 additions & 0 deletions Utils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,20 @@ public static void ExecuteSide(Side? side, Action? whenAll, Action whenT, Action
action();
}

public static bool PlayerHasBasicPermission(CCSPlayerController player)
{
var basicPermission = PlayerModelChanger.getInstance().Config.BasicPermission;
if (basicPermission == "")
{
return true;
}
if (PlayerHasPermission(player, [basicPermission], []))
{
return true;
}
return false;
}

public static bool PlayerHasPermission(CCSPlayerController player, string[] permissions, string[] permissionsOr)
{

Expand Down
Binary file modified build/Release/PlayerModelChanger/PlayerModelChanger.dll
Binary file not shown.
Binary file modified build/Release/PlayerModelChanger/PlayerModelChanger.pdb
Binary file not shown.
19 changes: 19 additions & 0 deletions commands/PlayerCommand.cs
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,11 @@ public void ChangeModelCommand(CCSPlayerController player, CommandInfo commandIn
{
return;
}
if (!Utils.PlayerHasBasicPermission(player))
{
commandInfo.ReplyToCommand(Localizer["model.nochangepermission"]);
return;
}

var modelIndex = commandInfo.GetArg(1);

Expand Down Expand Up @@ -75,6 +80,11 @@ public void GetAllModelsCommand(CCSPlayerController player, CommandInfo commandI
{
return;
}
if (!Utils.PlayerHasBasicPermission(player))
{
commandInfo.ReplyToCommand(Localizer["model.nochangepermission"]);
return;
}
if (commandInfo.ArgCount == 1)
{
OpenSelectSideMenu(player);
Expand All @@ -96,6 +106,15 @@ public void GetAllModelsCommand(CCSPlayerController player, CommandInfo commandI
[CommandHelper(minArgs: 0, usage: "", whoCanExecute: CommandUsage.CLIENT_ONLY)]
public void MeshgroupCommand(CCSPlayerController player, CommandInfo commandInfo)
{
if (Config.DisablePlayerSelection)
{
return;
}
if (!Utils.PlayerHasBasicPermission(player))
{
commandInfo.ReplyToCommand(Localizer["model.nochangepermission"]);
return;
}
OpenSelectMeshgroupMenu(player);
}
}

0 comments on commit 9ce3dfa

Please sign in to comment.