Add credit rewards

This commit is contained in:
MSWS
2024-09-18 03:51:38 -07:00
parent e11efa72ac
commit b546170485
3 changed files with 51 additions and 11 deletions

View File

@@ -12,6 +12,9 @@
</ItemGroup>
<ItemGroup>
<Reference Include="GangsAPI">
<HintPath>..\..\public\Jailbreak.Public\Mixin\GangsAPI.dll</HintPath>
</Reference>
<Reference Include="MStatsShared">
<HintPath>..\..\public\Jailbreak.Public\Mixin\MStatsShared.dll</HintPath>
</Reference>

View File

@@ -5,6 +5,8 @@ using CounterStrikeSharp.API.Modules.Cvars;
using CounterStrikeSharp.API.Modules.Cvars.Validators;
using CounterStrikeSharp.API.Modules.Menu;
using CounterStrikeSharp.API.Modules.Utils;
using GangsAPI.Data;
using GangsAPI.Services;
using Jailbreak.Formatting.Extensions;
using Jailbreak.Formatting.Views.LastRequest;
using Jailbreak.Public;
@@ -105,6 +107,19 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
if (died != null && player.SteamID == died.SteamID) continue;
player.ExecuteClientCommandFromServer("css_lr");
}
if (API.Gangs != null) {
var eco = API.Gangs.Services.GetService<IEcoManager>();
if (eco == null) return;
var survivors = Utilities.GetPlayers()
.Where(p => p is { IsBot: false, PawnIsAlive: true })
.Select(p => new PlayerWrapper(p))
.ToList();
Task.Run(async () => {
foreach (var survivor in survivors)
await eco.Grant(survivor, 100, reason: "LR Reached");
});
}
}
public bool InitiateLastRequest(CCSPlayerController prisoner,
@@ -137,6 +152,18 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
if (result is LRResult.GUARD_WIN or LRResult.PRISONER_WIN) {
RoundUtil.AddTimeRemaining(CV_LR_BONUS_TIME.Value);
messages.LastRequestDecided(lr, result).ToAllChat();
if (API.Gangs != null) {
var eco = API.Gangs.Services.GetService<IEcoManager>();
if (eco == null) return false;
var wrapper =
new PlayerWrapper(result == LRResult.GUARD_WIN ?
lr.Guard :
lr.Prisoner);
Task.Run(async () => {
await eco.Grant(wrapper, 30, reason: "LR Win");
});
}
}
API.Stats?.PushStat(new ServerStat("JB_LASTREQUEST_RESULT",
@@ -192,14 +219,7 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
if (!IsLREnabledForRound) return HookResult.Continue;
if (player.Team != CsTeam.Terrorist) return HookResult.Continue;
if (countAlivePrisoners() - 1 > CV_PRISONER_TO_LR.Value)
return HookResult.Continue;
if (Utilities.GetPlayers().All(p => p.Team != CsTeam.CounterTerrorist))
return HookResult.Continue;
EnableLR(player);
checkLR();
return HookResult.Continue;
}
@@ -226,13 +246,20 @@ public class LastRequestManager(ILRLocale messages, IServiceProvider provider)
if (!IsLREnabledForRound) return HookResult.Continue;
if (player.Team != CsTeam.Terrorist) return HookResult.Continue;
if (countAlivePrisoners() > CV_PRISONER_TO_LR.Value)
return HookResult.Continue;
EnableLR();
checkLR();
return HookResult.Continue;
}
private void checkLR() {
Server.NextFrame(() => {
if (Utilities.GetPlayers().All(p => p.Team != CsTeam.CounterTerrorist))
return;
if (countAlivePrisoners() > CV_PRISONER_TO_LR.Value) return;
EnableLR();
});
}
private int countAlivePrisoners() {
return Utilities.GetPlayers().Count(prisonerCountsToLR);
}

View File

@@ -7,6 +7,7 @@ using CounterStrikeSharp.API.Modules.Memory.DynamicFunctions;
using CounterStrikeSharp.API.Modules.Utils;
using Gangs.BombIconPerk;
using GangsAPI.Data;
using GangsAPI.Services;
using GangsAPI.Services.Gang;
using GangsAPI.Services.Player;
using Jailbreak.Formatting.Extensions;
@@ -267,6 +268,15 @@ public class C4Behavior(IC4Locale ic4Locale, IRebelService rebelService)
}
}
if (API.Gangs != null) {
var eco = API.Gangs.Services.GetService<IEcoManager>();
if (eco != null) {
var wrapper = new PlayerWrapper(player);
Task.Run(async ()
=> await eco.Grant(wrapper, killed * 50, reason: "C4 Kill"));
}
}
API.Stats?.PushStat(new ServerStat("JB_BOMB_EXPLODED", killed.ToString()));
// If they didn't have the C4 make sure to remove it.