add some plugin event

im crazy
This commit is contained in:
moux23333
2024-10-31 23:52:37 +08:00
parent efd842b1c3
commit adcdfa1c9f
7 changed files with 83 additions and 2 deletions

View File

@@ -4,6 +4,7 @@ using EggLink.DanhengServer.Internationalization;
using EggLink.DanhengServer.Kcp;
using EggLink.DanhengServer.Util;
using Spectre.Console;
using static EggLink.DanhengServer.GameServer.Plugin.Event.PluginEvent;
namespace EggLink.DanhengServer.Command.Command;
@@ -173,6 +174,7 @@ public class CommandManager
}
else
{
InvokeOnPlayerUseCommand(sender, input);
// player
tempTarget = Listener.GetActiveConnection(sender.GetSender());
if (tempTarget == null)

View File

@@ -11,6 +11,7 @@ using EggLink.DanhengServer.GameServer.Server.Packet.Send.Lineup;
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Scene;
using EggLink.DanhengServer.Proto;
using EggLink.DanhengServer.Util;
using static EggLink.DanhengServer.GameServer.Plugin.Event.PluginEvent;
namespace EggLink.DanhengServer.GameServer.Game.Battle;
@@ -188,6 +189,8 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
hitMonsterInstance.AddRange(targetList.Where(x => !x.IsAlive).Select(entityMonster =>
new HitMonsterInstance(entityMonster.EntityID, MonsterBattleType.DirectDieSkipBattle)));
InvokeOnPlayerEnterBattle(player, battleInstance);
await Player.SendPacket(new PacketSceneCastSkillScRsp(req.CastEntityId, battleInstance,
hitMonsterInstance));
Player.SceneInstance?.ClearSummonUnit();
@@ -236,6 +239,8 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
Player.BattleInstance = battleInstance;
InvokeOnPlayerEnterBattle(player, battleInstance);
await Player.SendPacket(new PacketSceneEnterStageScRsp(battleInstance));
Player.SceneInstance?.ClearSummonUnit();
}
@@ -293,6 +298,8 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
Player.BattleInstance = battleInstance;
Player.QuestManager!.OnBattleStart(battleInstance);
InvokeOnPlayerEnterBattle(player, battleInstance);
await Player.SendPacket(new PacketStartCocoonStageScRsp(battleInstance, cocoonId, wave));
Player.SceneInstance?.ClearSummonUnit();
}
@@ -328,6 +335,8 @@ public class BattleManager(PlayerInstance player) : BasePlayerManager(player)
public async ValueTask EndBattle(PVEBattleResultCsReq req)
{
InvokeOnPlayerQuitBattle(player, req);
if (Player.BattleInstance == null)
{
await Player.SendPacket(new PacketPVEBattleResultScRsp());

View File

@@ -5,6 +5,7 @@ using EggLink.DanhengServer.Database.Inventory;
using EggLink.DanhengServer.GameServer.Game.Player;
using EggLink.DanhengServer.GameServer.Server.Packet.Send.Challenge;
using EggLink.DanhengServer.Proto;
using static EggLink.DanhengServer.GameServer.Plugin.Event.PluginEvent;
namespace EggLink.DanhengServer.GameServer.Game.Challenge;
@@ -119,6 +120,8 @@ public class ChallengeManager(PlayerInstance player) : BasePlayerManager(player)
instance.BossBuffs.Add((int)bossBuffs.BuffTwo);
}
InvokeOnPlayerEnterChallenge(player, instance);
// Send packet
await Player.SendPacket(new PacketStartChallengeScRsp(Player));

View File

@@ -9,6 +9,7 @@ using EggLink.DanhengServer.GameServer.Server.Packet.Send.Scene;
using EggLink.DanhengServer.Proto;
using EggLink.DanhengServer.Util;
using LineupInfo = EggLink.DanhengServer.Database.Lineup.LineupInfo;
using static EggLink.DanhengServer.GameServer.Plugin.Event.PluginEvent;
namespace EggLink.DanhengServer.GameServer.Game.Lineup;
@@ -43,7 +44,9 @@ public class LineupManager : BasePlayerManager
public LineupInfo? GetCurLineup()
{
return GetLineup(LineupData.GetCurLineupIndex());
LineupInfo? lineup = GetLineup(LineupData.GetCurLineupIndex());
InvokeOnPlayerSyncLineup(Player, lineup);
return lineup;
}
public List<AvatarSceneInfo> GetAvatarsFromTeam(int index)
@@ -226,6 +229,7 @@ public class LineupManager : BasePlayerManager
if (sendPacket)
{
if (lineupIndex == LineupData.GetCurLineupIndex()) Player.SceneInstance?.SyncLineup();
InvokeOnPlayerSyncLineup(Player, lineup);
await Player.SendPacket(new PacketSyncLineupNotify(lineup));
}
}
@@ -264,6 +268,7 @@ public class LineupManager : BasePlayerManager
if (sendPacket)
{
Player.SceneInstance?.SyncLineup();
InvokeOnPlayerSyncLineup(Player, lineup);
await Player.SendPacket(new PacketSyncLineupNotify(lineup));
}
}
@@ -283,6 +288,7 @@ public class LineupManager : BasePlayerManager
if (sendPacket)
{
if (lineupIndex == LineupData.GetCurLineupIndex()) Player.SceneInstance?.SyncLineup();
InvokeOnPlayerSyncLineup(Player, lineup);
await Player.SendPacket(new PacketSyncLineupNotify(lineup));
}
}
@@ -313,6 +319,7 @@ public class LineupManager : BasePlayerManager
foreach (var avatar in lineupSlotList) await AddAvatar(index, avatar, false);
if (index == LineupData.GetCurLineupIndex()) Player.SceneInstance?.SyncLineup();
InvokeOnPlayerSyncLineup(Player, lineup);
await Player.SendPacket(new PacketSyncLineupNotify(lineup));
}
@@ -336,6 +343,7 @@ public class LineupManager : BasePlayerManager
foreach (var avatar in req.LineupSlotList) await AddAvatar(index, (int)avatar.Id, false);
if (index == LineupData.GetCurLineupIndex()) Player.SceneInstance?.SyncLineup();
InvokeOnPlayerSyncLineup(Player, lineup);
await Player.SendPacket(new PacketSyncLineupNotify(lineup));
}

View File

@@ -643,6 +643,7 @@ public class PlayerInstance(PlayerData data)
Data.Rot = rot;
var notSendMove = true;
SceneInstance instance = new(this, plane, floorId, entryId);
InvokeOnPlayerLoadScene(this, instance);
if (planeId != Data.PlaneId || floorId != Data.FloorId || entryId != Data.EntryId)
{
Data.PlaneId = planeId;

View File

@@ -1,5 +1,10 @@
using EggLink.DanhengServer.GameServer.Game.Player;
using EggLink.DanhengServer.Command;
using EggLink.DanhengServer.GameServer.Game.Battle;
using EggLink.DanhengServer.GameServer.Game.Challenge;
using EggLink.DanhengServer.GameServer.Game.Player;
using EggLink.DanhengServer.GameServer.Game.Scene;
using EggLink.DanhengServer.GameServer.Game.Scene.Entity;
using EggLink.DanhengServer.Proto;
namespace EggLink.DanhengServer.GameServer.Plugin.Event;
@@ -35,6 +40,35 @@ public static class PluginEvent
OnPlayerInteract?.Invoke(player, prop);
}
public static void InvokeOnPlayerLoadScene(PlayerInstance player, SceneInstance scene)
{
OnPlayerLoadScene?.Invoke(player, scene);
}
public static void InvokeOnPlayerEnterBattle(PlayerInstance player, BattleInstance battle)
{
OnPlayerEnterBattle?.Invoke(player, battle);
}
public static void InvokeOnPlayerQuitBattle(PlayerInstance player, PVEBattleResultCsReq result)
{
OnPlayerQuitBattle?.Invoke(player, result);
}
public static void InvokeOnPlayerEnterChallenge(PlayerInstance player, ChallengeInstance? challenge)
{
OnPlayerEnterChallenge?.Invoke(player, challenge);
}
public static void InvokeOnPlayerQuitChallenge(PlayerInstance player, ChallengeInstance? challenge)
{
OnPlayerQuitChallenge?.Invoke(player, challenge);
}
public static void InvokeOnPlayerSyncLineup(PlayerInstance player, Database.Lineup.LineupInfo? lineup)
{
OnPlayerSyncLineup?.Invoke(player, lineup);
}
public static void InvokeOnPlayerUseCommand(ICommandSender sender, string command)
{
OnPlayerUseCommand?.Invoke(sender, command);
}
#region Player
public delegate void OnPlayerHeartBeatHandler(PlayerInstance player);
@@ -49,6 +83,20 @@ public static class PluginEvent
public delegate void OnPlayerInteractHandler(PlayerInstance player, EntityProp prop);
public delegate void OnPlayerLoadSceneHandler(PlayerInstance player, SceneInstance scene);
public delegate void OnPlayerEnterBattleHandler(PlayerInstance player, BattleInstance battle);
public delegate void OnPlayerQuitBattleHandler(PlayerInstance player, PVEBattleResultCsReq result);
public delegate void OnPlayerEnterChallengeHandler(PlayerInstance player, ChallengeInstance? challenge);
public delegate void OnPlayerQuitChallengeHandler(PlayerInstance player, ChallengeInstance? challenge);
public delegate void OnPlayerSyncLineupHandler(PlayerInstance player, Database.Lineup.LineupInfo? lineup);
public delegate void OnPlayerUseCommandHandler(ICommandSender sender, string command);
#endregion
#region Common
@@ -63,6 +111,13 @@ public static class PluginEvent
public static event OnPlayerFinishSubMissionHandler? OnPlayerFinishSubMission;
public static event OnPlayerFinishMainMissionHandler? OnPlayerFinishMainMission;
public static event OnPlayerInteractHandler? OnPlayerInteract;
public static event OnPlayerLoadSceneHandler? OnPlayerLoadScene;
public static event OnPlayerEnterBattleHandler? OnPlayerEnterBattle;
public static event OnPlayerEnterChallengeHandler? OnPlayerEnterChallenge;
public static event OnPlayerQuitBattleHandler? OnPlayerQuitBattle;
public static event OnPlayerQuitChallengeHandler? OnPlayerQuitChallenge;
public static event OnPlayerSyncLineupHandler? OnPlayerSyncLineup;
public static event OnPlayerUseCommandHandler? OnPlayerUseCommand;
#endregion
}

View File

@@ -1,6 +1,7 @@
using EggLink.DanhengServer.Kcp;
using EggLink.DanhengServer.Proto;
using EggLink.DanhengServer.Util;
using static EggLink.DanhengServer.GameServer.Plugin.Event.PluginEvent;
namespace EggLink.DanhengServer.GameServer.Server.Packet.Recv.Challenge;
@@ -21,6 +22,8 @@ public class HandlerLeaveChallengeCsReq : Handler
player.LineupManager!.SetExtraLineup(ExtraLineupType.LineupChallenge, []);
player.LineupManager.SetExtraLineup(ExtraLineupType.LineupChallenge2, []);
InvokeOnPlayerQuitChallenge(player, player.ChallengeManager!.ChallengeInstance);
player.ChallengeManager!.ChallengeInstance = null;
player.ChallengeManager!.ClearInstance();