Callbacks for revived, givenup.

This commit is contained in:
MrOkiDoki 2023-08-14 16:21:30 +03:00
parent d890dcd1f0
commit b66e3b686e
5 changed files with 153 additions and 11 deletions

View File

@ -19,7 +19,7 @@
PlayerConnected = 50,
PlayerDisconnected = 51,
OnPlayerTypedMessage = 52,
OnPlayerKilledAnotherPlayer = 53,
OnAPlayerDownedAnotherPlayer = 53,
OnPlayerJoining = 54,
SavePlayerStats = 55,
OnPlayerAskingToChangeRole = 56,
@ -36,5 +36,7 @@
NotifyNewRoundState = 67,
OnPlayerAskingToChangeTeam = 68,
GameTick = 69,
OnPlayerGivenUp = 70,
OnPlayerRevivedAnother = 71,
}
}

View File

@ -3,6 +3,7 @@ using BattleBitAPI.Networking;
using BattleBitAPI.Server;
using System.Net;
using System.Numerics;
using System.Windows.Markup;
namespace BattleBitAPI
{
@ -15,9 +16,38 @@ namespace BattleBitAPI
public string Name => mInternal.Name;
public IPAddress IP => mInternal.IP;
public GameServer<TPlayer> GameServer => mInternal.GameServer;
public GameRole Role => mInternal.Role;
public Team Team => mInternal.Team;
public Squads Squad => mInternal.Squad;
public GameRole Role
{
get => mInternal.Role;
set
{
if (value == mInternal.Role)
return;
SetNewRole(value);
}
}
public Team Team
{
get => mInternal.Team;
set
{
if (mInternal.Team != value)
ChangeTeam(value);
}
}
public Squads Squad
{
get => mInternal.Squad;
set
{
if (value == mInternal.Squad)
return;
if (value == Squads.NoSquad)
KickFromSquad();
else
JoinSquad(value);
}
}
public bool InSquad => mInternal.Squad != Squads.NoSquad;
public int PingMs => mInternal.PingMs;
@ -27,9 +57,13 @@ namespace BattleBitAPI
public bool IsDown => mInternal.HP == 0f;
public bool IsDead => mInternal.HP == -1f;
public Vector3 Position => mInternal.Position;
public PlayerStand Standing => mInternal.Standing;
public LeaningSide Leaning => mInternal.Leaning;
public Vector3 Position
{
get => mInternal.Position;
set => Teleport(value);
}
public PlayerStand StandingState => mInternal.Standing;
public LeaningSide LeaningState => mInternal.Leaning;
public LoadoutIndex CurrentLoadoutIndex => mInternal.CurrentLoadoutIndex;
public bool InVehicle => mInternal.InVehicle;
public bool IsBleeding => mInternal.IsBleeding;
@ -49,6 +83,22 @@ namespace BattleBitAPI
public virtual async Task OnSpawned()
{
}
public virtual async Task OnDowned()
{
}
public virtual async Task OnGivenUp()
{
}
public virtual async Task OnRevivedByAnotherPlayer()
{
}
public virtual async Task OnRevivedAnotherPlayer()
{
}
public virtual async Task OnDied()
{
@ -96,6 +146,10 @@ namespace BattleBitAPI
{
this.GameServer.KickFromSquad(this);
}
public void JoinSquad(Squads targetSquad)
{
this.GameServer.JoinSquad(this, targetSquad);
}
public void DisbandTheSquad()
{
this.GameServer.DisbandPlayerCurrentSquad(this);

View File

@ -307,7 +307,15 @@ namespace BattleBitAPI.Server
{
}
public virtual async Task OnAPlayerKilledAnotherPlayer(OnPlayerKillArguments<TPlayer> args)
public virtual async Task OnPlayerGivenUp(TPlayer player)
{
}
public virtual async Task OnAPlayerDownedAnotherPlayer(OnPlayerKillArguments<TPlayer> args)
{
}
public virtual async Task OnAPlayerRevivedAnotherPlayer(TPlayer from,TPlayer to)
{
}
@ -439,6 +447,14 @@ namespace BattleBitAPI.Server
{
KickFromSquad(player.SteamID);
}
public void JoinSquad(ulong steamID, Squads targetSquad)
{
ExecuteCommand("setsquad " + steamID + " " + ((int)targetSquad));
}
public void JoinSquad(Player<TPlayer> player, Squads targetSquad)
{
JoinSquad(player.SteamID, targetSquad);
}
public void DisbandPlayerSquad(ulong steamID)
{
ExecuteCommand("squaddisband " + steamID);

View File

@ -701,6 +701,15 @@ namespace BattleBitAPI.Server
if (exist)
{
var @internal = mInstanceDatabase.GetPlayerInternals(steamID);
if (@internal.HP > -1f)
{
@internal.OnDie();
player.OnDied();
server.OnPlayerDied((TPlayer)player);
}
player.OnDisconnected();
server.OnPlayerDisconnected((TPlayer)player);
}
@ -740,7 +749,7 @@ namespace BattleBitAPI.Server
}
break;
}
case NetworkCommuncation.OnPlayerKilledAnotherPlayer:
case NetworkCommuncation.OnAPlayerDownedAnotherPlayer:
{
if (stream.CanRead(8 + 12 + 8 + 12 + 2 + 1 + 1))
{
@ -770,7 +779,8 @@ namespace BattleBitAPI.Server
KillerTool = tool,
};
server.OnAPlayerKilledAnotherPlayer(args);
victimClient.OnDowned();
server.OnAPlayerDownedAnotherPlayer(args);
}
}
}
@ -1141,6 +1151,38 @@ namespace BattleBitAPI.Server
}
break;
}
case NetworkCommuncation.OnPlayerGivenUp:
{
if (stream.CanRead(8))
{
ulong steamID = stream.ReadUInt64();
if (resources.TryGetPlayer(steamID, out var client))
{
client.OnGivenUp();
server.OnPlayerGivenUp((TPlayer)client);
}
}
break;
}
case NetworkCommuncation.OnPlayerRevivedAnother:
{
if (stream.CanRead(8 + 8))
{
ulong from = stream.ReadUInt64();
ulong to = stream.ReadUInt64();
if (resources.TryGetPlayer(to, out var toClient))
{
toClient.OnRevivedByAnotherPlayer();
if (resources.TryGetPlayer(from, out var fromClient))
{
fromClient.OnRevivedAnotherPlayer();
server.OnAPlayerRevivedAnotherPlayer((TPlayer)fromClient, (TPlayer)toClient);
}
}
}
break;
}
}
}

View File

@ -18,6 +18,7 @@ class Program
}
class MyPlayer : Player<MyPlayer>
{
}
class MyGameServer : GameServer<MyPlayer>
{
@ -25,7 +26,34 @@ class MyGameServer : GameServer<MyPlayer>
{
ForceStartGame();
}
public override async Task OnPlayerJoiningToServer(ulong steamID, PlayerJoiningArguments args)
public override async Task OnPlayerConnected(MyPlayer player)
{
await Console.Out.WriteLineAsync("Connected: "+player);
}
public override async Task OnPlayerSpawned(MyPlayer player)
{
await Console.Out.WriteLineAsync("Spawned: " + player);
}
public override async Task OnAPlayerDownedAnotherPlayer(OnPlayerKillArguments<MyPlayer> args)
{
await Console.Out.WriteLineAsync("Downed: " + args.Victim);
}
public override async Task OnPlayerGivenUp(MyPlayer player)
{
await Console.Out.WriteLineAsync("Giveup: " + player);
}
public override async Task OnPlayerDied(MyPlayer player)
{
await Console.Out.WriteLineAsync("Died: " + player);
}
public override async Task OnAPlayerRevivedAnotherPlayer(MyPlayer from, MyPlayer to)
{
await Console.Out.WriteLineAsync(from+" revived "+to);
}
public override async Task OnPlayerDisconnected(MyPlayer player)
{
await Console.Out.WriteLineAsync("Disconnected: " + player);
}
}