Skip to content

Commit

Permalink
Merge pull request #90 from schwarper/1.4
Browse files Browse the repository at this point in the history
Added skin option for playerskins
  • Loading branch information
schwarper committed Aug 27, 2024
2 parents 95c3363 + 8673af1 commit 9e46e7f
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 20 deletions.
2 changes: 1 addition & 1 deletion Store/src/cs2-store.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ namespace Store;
public class Store : BasePlugin, IPluginConfig<Item_Config>
{
public override string ModuleName => "Store";
public override string ModuleVersion => "1.3";
public override string ModuleVersion => "1.4";
public override string ModuleAuthor => "schwarper";

public Item_Config Config { get; set; } = new Item_Config();
Expand Down
36 changes: 20 additions & 16 deletions Store/src/item/items/playerskin.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,9 @@ public static bool OnEquip(CCSPlayerController player, Dictionary<string, string
return false;
}

player.ChangeModelDelay(item["uniqueid"], item["disable_leg"] is "true" or "1", int.Parse(item["slot"]));
item.TryGetValue("skin", out var skn);

player.ChangeModelDelay(item["uniqueid"], item["disable_leg"] is "true" or "1", int.Parse(item["slot"]), skn);

return true;
}
Expand All @@ -77,11 +79,11 @@ public static bool OnUnequip(CCSPlayerController player, Dictionary<string, stri
return false;
}

(string modelname, bool disableleg)? defaultModel = GetDefaultModel(player);
(string modelname, bool disableleg, string? skin)? defaultModel = GetDefaultModel(player);

if (defaultModel.HasValue)
{
player.ChangeModelDelay(defaultModel.Value.modelname, defaultModel.Value.disableleg, player.TeamNum);
player.ChangeModelDelay(defaultModel.Value.modelname, defaultModel.Value.disableleg, player.TeamNum, defaultModel.Value.skin);
}

return true;
Expand All @@ -101,11 +103,11 @@ public static HookResult OnPlayerSpawn(EventPlayerSpawn @event, GameEventInfo in
return HookResult.Continue;
}

(string modelname, bool disableleg)? modelData = GetModel(player, player.TeamNum);
(string modelname, bool disableleg, string? skin)? modelData = GetModel(player, player.TeamNum);

if (modelData.HasValue)
{
player.ChangeModelDelay(modelData.Value.modelname, modelData.Value.disableleg, player.TeamNum);
player.ChangeModelDelay(modelData.Value.modelname, modelData.Value.disableleg, player.TeamNum, modelData.Value.skin);
}

return HookResult.Continue;
Expand All @@ -127,11 +129,11 @@ public static HookResult OnPlayerTeam(EventPlayerTeam @event, GameEventInfo info

if (@event.Team == 2 || @event.Team == 3)
{
(string modelname, bool disableleg)? modelDatas = GetModel(player, @event.Team);
(string modelname, bool disableleg, string? skin)? modelDatas = GetModel(player, @event.Team);

if (modelDatas.HasValue)
{
player.ChangeModelDelay(modelDatas.Value.modelname, modelDatas.Value.disableleg, @event.Team);
player.ChangeModelDelay(modelDatas.Value.modelname, modelDatas.Value.disableleg, @event.Team, modelDatas.Value.skin);
}
}

Expand All @@ -155,11 +157,11 @@ private static void Command_Model0(CCSPlayerController? player, CommandInfo info

foreach (CCSPlayerController target in Utilities.GetPlayers())
{
(string modelname, bool disableleg)? modelDatas = GetDefaultModel(target);
(string modelname, bool disableleg, string? skin)? modelDatas = GetDefaultModel(target);

if (modelDatas.HasValue)
{
target.PlayerPawn.Value!.ChangeModel(modelDatas.Value.modelname, modelDatas.Value.disableleg);
target.PlayerPawn.Value!.ChangeModel(modelDatas.Value.modelname, modelDatas.Value.disableleg, modelDatas.Value.skin);
}
}

Expand All @@ -179,11 +181,11 @@ private static void Command_Model1(CCSPlayerController? player, CommandInfo info

foreach (CCSPlayerController target in Utilities.GetPlayers())
{
(string modelname, bool disableleg)? modelDatas = GetModel(target, target.TeamNum);
(string modelname, bool disableleg, string? skin)? modelDatas = GetModel(target, target.TeamNum);

if (modelDatas.HasValue)
{
target.PlayerPawn.Value!.ChangeModel(modelDatas.Value.modelname, modelDatas.Value.disableleg);
target.PlayerPawn.Value!.ChangeModel(modelDatas.Value.modelname, modelDatas.Value.disableleg, modelDatas.Value.skin);
}
}

Expand All @@ -192,7 +194,7 @@ private static void Command_Model1(CCSPlayerController? player, CommandInfo info
ForceModelDefault = false;
}

private static (string modelname, bool disableleg)? GetModel(CCSPlayerController player, int teamnum)
private static (string modelname, bool disableleg, string? skin)? GetModel(CCSPlayerController player, int teamnum)
{
Store_Equipment? item = Instance.GlobalStorePlayerEquipments.FirstOrDefault(p => p.SteamID == player.SteamID && p.Type == "playerskin" && (p.Slot == teamnum || p.Slot == 1));

Expand All @@ -206,7 +208,7 @@ private static (string modelname, bool disableleg)? GetModel(CCSPlayerController
}
}

private static (string modelname, bool disableleg)? GetDefaultModel(CCSPlayerController player)
private static (string modelname, bool disableleg, string? skin)? GetDefaultModel(CCSPlayerController player)
{
string[] modelsArray = player.Team == CsTeam.CounterTerrorist ? Config.DefaultModels.CounterTerrorist : Config.DefaultModels.Terrorist;
int maxIndex = modelsArray.Length;
Expand All @@ -217,13 +219,13 @@ private static (string modelname, bool disableleg)? GetDefaultModel(CCSPlayerCon

string model = modelsArray[randomnumber];

return (model, Config.Settings.DefaultModelDisableLeg);
return (model, Config.Settings.DefaultModelDisableLeg, null);
}

return null;
}

private static (string modelname, bool disableleg)? GetStoreModel(Store_Equipment item)
private static (string modelname, bool disableleg, string? skin)? GetStoreModel(Store_Equipment item)
{
Dictionary<string, string>? itemdata = Item.GetItem(item.Type, item.UniqueId);

Expand All @@ -232,6 +234,8 @@ private static (string modelname, bool disableleg)? GetStoreModel(Store_Equipmen
return null;
}

return (item.UniqueId, itemdata["disable_leg"] is "true" or "1");
itemdata.TryGetValue("skin", out var skn);

return (item.UniqueId, itemdata["disable_leg"] is "true" or "1", skn);
}
}
11 changes: 8 additions & 3 deletions Store/src/playerutils/playerutils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ static public void PrintToChatMessage(this CCSPlayerController player, string me
}
}

static public void ChangeModelDelay(this CCSPlayerController player, string model, bool disableleg, int slotNumber)
static public void ChangeModelDelay(this CCSPlayerController player, string model, bool disableleg, int slotNumber, string? skin)
{
float apply_delay = float.Max(Config.Settings.ApplyPlayerskinDelay, 0.1f);

Expand All @@ -32,11 +32,11 @@ static public void ChangeModelDelay(this CCSPlayerController player, string mode
return;
}
player.PlayerPawn.Value?.ChangeModel(model, disableleg);
player.PlayerPawn.Value?.ChangeModel(model, disableleg, skin);
}, TimerFlags.STOP_ON_MAPCHANGE);
}

static public void ChangeModel(this CCSPlayerPawn pawn, string model, bool disableleg)
static public void ChangeModel(this CCSPlayerPawn pawn, string model, bool disableleg, string? skin)
{
if (model == string.Empty)
{
Expand All @@ -57,6 +57,11 @@ static public void ChangeModel(this CCSPlayerPawn pawn, string model, bool disab
{
pawn.Render = Color.FromArgb(255, originalRender.R, originalRender.G, originalRender.B);
}
if (skin != null)
{
pawn.AcceptInput("Skin", null, pawn, skin);
}
});
}

Expand Down

0 comments on commit 9e46e7f

Please sign in to comment.