New Release

- Dodano więcej modeli do mocy Impostor.
- Zmieniono sposób rejestrowania mocy.
- Zmieniono wiadomości informacyjne o mocy zabójcy oraz sojusznikach.
- Naprawiono crash serwera przy fall damage
This commit is contained in:
D3X 2024-09-23 12:52:05 +02:00
parent 810ca2fa3c
commit 68f26a22f4
30 changed files with 253 additions and 108 deletions

View file

@ -8,28 +8,149 @@ namespace dRandomSkills
{
public static class Impostor
{
private static readonly List<string> CTModels = new List<string>
{
// SWAT
"characters/models/ctm_swat/ctm_swat_variante.vmdl",
"characters/models/ctm_swat/ctm_swat_variantf.vmdl",
"characters/models/ctm_swat/ctm_swat_varianth.vmdl",
"characters/models/ctm_swat/ctm_swat_varianti.vmdl",
"characters/models/ctm_swat/ctm_swat_variantj.vmdl",
"characters/models/ctm_swat/ctm_swat_variantk.vmdl",
// ST6
"characters/models/ctm_st6/ctm_st6_variante.vmdl",
"characters/models/ctm_st6/ctm_st6_variantg.vmdl",
"characters/models/ctm_st6/ctm_st6_varianti.vmdl",
"characters/models/ctm_st6/ctm_st6_variantj.vmdl",
"characters/models/ctm_st6/ctm_st6_variantk.vmdl",
"characters/models/ctm_st6/ctm_st6_variantl.vmdl",
"characters/models/ctm_st6/ctm_st6_variantm.vmdl",
"characters/models/ctm_st6/ctm_st6_variantn.vmdl",
// SAS
"characters/models/ctm_sas/ctm_sas.vmdl",
"characters/models/ctm_sas/ctm_sas_variantf.vmdl",
"characters/models/ctm_sas/ctm_sas_variantg.vmdl",
// CTM_HEAVY
"characters/models/ctm_heavy/ctm_heavy.vmdl",
// GENDARMERIE
"characters/models/ctm_gendarmerie/ctm_gendarmerie_varianta.vmdl",
"characters/models/ctm_gendarmerie/ctm_gendarmerie_variantb.vmdl",
"characters/models/ctm_gendarmerie/ctm_gendarmerie_variantc.vmdl",
"characters/models/ctm_gendarmerie/ctm_gendarmerie_variantd.vmdl",
"characters/models/ctm_gendarmerie/ctm_gendarmerie_variante.vmdl",
// FBI
"characters/models/ctm_fbi/ctm_fbi.vmdl",
"characters/models/ctm_fbi/ctm_fbi_varianta.vmdl",
"characters/models/ctm_fbi/ctm_fbi_variantb.vmdl",
"characters/models/ctm_fbi/ctm_fbi_variantc.vmdl",
"characters/models/ctm_fbi/ctm_fbi_variantd.vmdl",
"characters/models/ctm_fbi/ctm_fbi_variante.vmdl",
"characters/models/ctm_fbi/ctm_fbi_variantf.vmdl",
"characters/models/ctm_fbi/ctm_fbi_variantg.vmdl",
"characters/models/ctm_fbi/ctm_fbi_varianth.vmdl",
// DIVER
"characters/models/ctm_diver/ctm_diver_varianta.vmdl",
"characters/models/ctm_diver/ctm_diver_variantb.vmdl",
"characters/models/ctm_diver/ctm_diver_variantc.vmdl",
};
private static readonly List<string> TModels = new List<string>
{
// BALKAN
"characters/models/tm_balkan/tm_balkan_variantf.vmdl",
"characters/models/tm_balkan/tm_balkan_variantg.vmdl",
"characters/models/tm_balkan/tm_balkan_varianth.vmdl",
"characters/models/tm_balkan/tm_balkan_varianti.vmdl",
"characters/models/tm_balkan/tm_balkan_variantj.vmdl",
"characters/models/tm_balkan/tm_balkan_variantk.vmdl",
"characters/models/tm_balkan/tm_balkan_variantl.vmdl",
// JUMPSUIT
"characters/models/tm_jumpsuit/tm_jumpsuit_varianta.vmdl",
"characters/models/tm_jumpsuit/tm_jumpsuit_variantb.vmdl",
"characters/models/tm_jumpsuit/tm_jumpsuit_variantc.vmdl",
// JUNGLERAIDER
"characters/models/tm_jungle_raider/tm_jungle_raider_varianta.vmdl",
"characters/models/tm_jungle_raider/tm_jungle_raider_variantb.vmdl",
"characters/models/tm_jungle_raider/tm_jungle_raider_variantb2.vmdl",
"characters/models/tm_jungle_raider/tm_jungle_raider_variantc.vmdl",
"characters/models/tm_jungle_raider/tm_jungle_raider_variantd.vmdl",
"characters/models/tm_jungle_raider/tm_jungle_raider_variante.vmdl",
"characters/models/tm_jungle_raider/tm_jungle_raider_variantf.vmdl",
"characters/models/tm_jungle_raider/tm_jungle_raider_variantf2.vmdl",
// LEET
"characters/models/tm_leet/tm_leet_varianta.vmdl",
"characters/models/tm_leet/tm_leet_variantb.vmdl",
"characters/models/tm_leet/tm_leet_variantc.vmdl",
"characters/models/tm_leet/tm_leet_variantd.vmdl",
"characters/models/tm_leet/tm_leet_variante.vmdl",
"characters/models/tm_leet/tm_leet_variantf.vmdl",
"characters/models/tm_leet/tm_leet_variantg.vmdl",
"characters/models/tm_leet/tm_leet_varianth.vmdl",
"characters/models/tm_leet/tm_leet_varianti.vmdl",
"characters/models/tm_leet/tm_leet_variantj.vmdl",
"characters/models/tm_leet/tm_leet_variantk.vmdl",
// PHOENIX
"characters/models/tm_phoenix/tm_phoenix.vmdl",
"characters/models/tm_phoenix/tm_phoenix_varianta.vmdl",
"characters/models/tm_phoenix/tm_phoenix_variantb.vmdl",
"characters/models/tm_phoenix/tm_phoenix_variantc.vmdl",
"characters/models/tm_phoenix/tm_phoenix_variantd.vmdl",
"characters/models/tm_phoenix/tm_phoenix_variantf.vmdl",
"characters/models/tm_phoenix/tm_phoenix_variantg.vmdl",
"characters/models/tm_phoenix/tm_phoenix_varianth.vmdl",
"characters/models/tm_phoenix/tm_phoenix_varianti.vmdl",
// PHOENIX HEAVY
"characters/models/tm_phoenix_heavy/tm_phoenix_heavy.vmdl",
// PROFESSIONAL
"characters/models/tm_professional/tm_professional_varf.vmdl",
"characters/models/tm_professional/tm_professional_varf1.vmdl",
"characters/models/tm_professional/tm_professional_varf2.vmdl",
"characters/models/tm_professional/tm_professional_varf3.vmdl",
"characters/models/tm_professional/tm_professional_varf4.vmdl",
"characters/models/tm_professional/tm_professional_varf5.vmdl",
"characters/models/tm_professional/tm_professional_varg.vmdl",
"characters/models/tm_professional/tm_professional_varh.vmdl",
"characters/models/tm_professional/tm_professional_vari.vmdl",
"characters/models/tm_professional/tm_professional_varj.vmdl",
};
public static void LoadImpostor()
{
Utils.RegisterSkill("Impostor", "Otrzymujesz na start rundy model postaci wroga", "#99140B");
Instance.RegisterEventHandler<EventRoundFreezeEnd>((@event, info) =>
{
Instance.AddTimer(0.1f, () =>
{
foreach (var player in Utilities.GetPlayers())
{
if (!IsPlayerValid(player)) continue;
var playerInfo = Instance.skillPlayer.FirstOrDefault(p => p.SteamID == player.SteamID);
if (playerInfo?.Skill != "Impostor") continue;
string model = player.Team == CsTeam.Terrorist
? "characters/models/ctm_fbi/ctm_fbi_variantb.vmdl"
: player.Team == CsTeam.CounterTerrorist
? "characters/models/tm_phoenix/tm_phoenix_varianta.vmdl"
: null;
if (model != null)
if (playerInfo?.Skill == "Impostor")
{
SetPlayerModel(player, model);
string model = player.Team == CsTeam.Terrorist
? GetRandomModel(CTModels)
: player.Team == CsTeam.CounterTerrorist
? GetRandomModel(TModels)
: null;
if (model != null)
{
SetPlayerModel(player, model);
}
}
}
});
@ -38,6 +159,14 @@ namespace dRandomSkills
});
}
private static string GetRandomModel(List<string> models)
{
if (models == null || models.Count == 0) return null;
var random = new Random();
int index = random.Next(models.Count);
return models[index];
}
private static void SetPlayerModel(CCSPlayerController player, string model)
{
var pawn = player.PlayerPawn?.Value;
@ -51,10 +180,5 @@ namespace dRandomSkills
pawn.Render = Color.FromArgb(255, originalRender.R, originalRender.G, originalRender.B);
});
}
private static bool IsPlayerValid(CCSPlayerController player)
{
return player != null && player.IsValid && player.PlayerPawn?.Value != null;
}
}
}