Skip to content

Commit

Permalink
fix potential null reference while player inspecting skin
Browse files Browse the repository at this point in the history
  • Loading branch information
samyycX committed Jul 29, 2024
1 parent 7c307e1 commit 64d00ed
Show file tree
Hide file tree
Showing 51 changed files with 1,055 additions and 690 deletions.
74 changes: 41 additions & 33 deletions Cache.cs
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
using CounterStrikeSharp.API.Core;
using PlayerModelChanger;
using Storage;

namespace Service;
namespace PlayerModelChanger;

public class ModelCache {
public class ModelCache
{

public ulong steamid { get; set; }
public string? t_model { get; set; }
Expand All @@ -13,52 +12,61 @@ public class ModelCache {
public bool ct_permission_bypass { get; set; }
}

public class ModelCacheManager {
private List<ModelCache> cache = new List<ModelCache>();

private IStorage storage;

public ModelCacheManager(IStorage storage) {
this.storage = storage;
public class ModelCacheManager
{
private List<ModelCache> _Cache = new List<ModelCache>();
private IStorage _Storage;
public ModelCacheManager(IStorage storage)
{
this._Storage = storage;
}
public void ResyncCache() {
var data = storage.GetAllPlayerModel();
if (data != null) {
cache = data;
public void ResyncCache()
{
var data = _Storage.GetAllPlayerModel();
if (data != null)
{
_Cache = data;
}
}

public void SetAllTModels(string tmodel, bool permissionBypass) {
cache.ForEach(model => {model.t_model = tmodel; model.t_permission_bypass = permissionBypass;});
public void SetAllTModels(string tmodel, bool permissionBypass)
{
_Cache.ForEach(model => { model.t_model = tmodel; model.t_permission_bypass = permissionBypass; });
}
public void SetAllCTModels(string ctmodel, bool permissionBypass) {
cache.ForEach(model => {model.ct_model = ctmodel; model.ct_permission_bypass = permissionBypass;});
public void SetAllCTModels(string ctmodel, bool permissionBypass)
{
_Cache.ForEach(model => { model.ct_model = ctmodel; model.ct_permission_bypass = permissionBypass; });
}
public void SetAllModels(string tmodel, string ctmodel, bool permissionBypass) {
cache.ForEach(model => {model.t_model = tmodel; model.ct_model = ctmodel; model.t_permission_bypass = permissionBypass; model.ct_permission_bypass = permissionBypass;});
public void SetAllModels(string tmodel, string ctmodel, bool permissionBypass)
{
_Cache.ForEach(model => { model.t_model = tmodel; model.ct_model = ctmodel; model.t_permission_bypass = permissionBypass; model.ct_permission_bypass = permissionBypass; });
}
public List<ulong> GetAllPlayers() {
return cache.Select(model => model.steamid).ToList();
public List<ulong> GetAllPlayers()
{
return _Cache.Select(model => model.steamid).ToList();
}
public void SetPlayerModel(ulong steamid, string modelIndex, string side, bool permissionBypass) {
var obj = cache.Find(model => model.steamid == steamid);
public void SetPlayerModel(ulong steamid, string modelIndex, string side, bool permissionBypass)
{
var obj = _Cache.Find(model => model.steamid == steamid);

if (obj == null) {
if (obj == null)
{
var modelcache = new ModelCache
{
steamid = steamid
};
cache.Add(modelcache);
_Cache.Add(modelcache);
obj = modelcache;
}
Utils.ExecuteSide(side,
null,
() => {obj.t_model = modelIndex; obj.t_permission_bypass = permissionBypass;},
() => {obj.ct_model = modelIndex; obj.ct_permission_bypass = permissionBypass;}
() => { obj.t_model = modelIndex; obj.t_permission_bypass = permissionBypass; },
() => { obj.ct_model = modelIndex; obj.ct_permission_bypass = permissionBypass; }
);

}
public ModelCache? GetPlayerModelCache(CCSPlayerController player) {
return cache.Find(model => model.steamid == player!.AuthorizedSteamID!.SteamId64);
public ModelCache? GetPlayerModelCache(CCSPlayerController player)
{
return _Cache.Find(model => model.steamid == player!.AuthorizedSteamID!.SteamId64);
}
}
}
25 changes: 13 additions & 12 deletions Config.cs
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
using System.Text.Json.Serialization;
using CounterStrikeSharp.API.Core;
using Service;
namespace PlayerModelChanger;

namespace Config;

public class BotsConfig {
public string CT { get; set; } = "";
public string T { get; set; } = "";
public class BotsConfig
{
public string CT { get; set; } = "";
public string T { get; set; } = "";

}

public class InspectionConfig {
public bool Enable { get; set; } = true;
public string Mode { get; set; } = "rotation";
public class InspectionConfig
{
public bool Enable { get; set; } = true;
public string Mode { get; set; } = "rotation";
}

public class ModelConfig : BasePluginConfig {
public class ModelConfig : BasePluginConfig
{
[JsonPropertyName("Models")] public Dictionary<string, Model> Models { get; set; } = new Dictionary<string, Model>();

[JsonPropertyName("MenuType")] public string MenuType { get; set; } = "centerhtml"; // chat or centerhtml

[JsonPropertyName("StorageType")] public string StorageType { get; set; } = "sqlite";

[JsonPropertyName("MySQL_IP")] public string MySQLIP { get; set; } = "";
Expand Down
Loading

0 comments on commit 64d00ed

Please sign in to comment.