ServerScript update
This commit is contained in:
@ -152,7 +152,7 @@ namespace CoopServer
|
||||
}
|
||||
else
|
||||
{
|
||||
GameMode.Start();
|
||||
GameMode.API.InvokeStart();
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -476,7 +476,7 @@ namespace CoopServer
|
||||
|
||||
if (GameMode != null)
|
||||
{
|
||||
GameMode.OnPlayerConnect(Players[packet.Player]);
|
||||
GameMode.API.InvokePlayerConnect(Players[packet.Player]);
|
||||
}
|
||||
|
||||
List<NetConnection> playerList = Util.FilterAllLocal(local);
|
||||
@ -518,7 +518,7 @@ namespace CoopServer
|
||||
{
|
||||
if (GameMode != null)
|
||||
{
|
||||
GameMode.OnPlayerDisconnect(Players[packet.Player], reason);
|
||||
GameMode.API.InvokePlayerDisconnect(Players[packet.Player], reason);
|
||||
}
|
||||
|
||||
List<NetConnection> playerList = Util.FilterAllLocal(packet.Player);
|
||||
@ -644,22 +644,24 @@ namespace CoopServer
|
||||
}
|
||||
else
|
||||
{
|
||||
string username = packet.Username;
|
||||
NetConnection userConnection = Util.GetConnectionByUsername(packet.Username);
|
||||
if (userConnection == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
packet = new()
|
||||
outgoingMessage = MainNetServer.CreateMessage();
|
||||
new ChatMessagePacket()
|
||||
{
|
||||
Username = "Server",
|
||||
Message = "Command not found!"
|
||||
};
|
||||
|
||||
outgoingMessage = MainNetServer.CreateMessage();
|
||||
packet.PacketToNetOutGoingMessage(outgoingMessage);
|
||||
MainNetServer.SendMessage(outgoingMessage, MainNetServer.Connections.Find(con => con.RemoteUniqueIdentifier == Players.First(x => x.Value.Username == username).Key), NetDeliveryMethod.ReliableOrdered, 0);
|
||||
}.PacketToNetOutGoingMessage(outgoingMessage);
|
||||
MainNetServer.SendMessage(outgoingMessage, userConnection, NetDeliveryMethod.ReliableOrdered, 0);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
else if (GameMode.OnChatMessage(packet.Username, packet.Message))
|
||||
else if (GameMode.API.InvokeChatMessage(packet.Username, packet.Message))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -1,29 +1,53 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
|
||||
using Lidgren.Network;
|
||||
|
||||
namespace CoopServer
|
||||
{
|
||||
public class ServerScript
|
||||
public abstract class ServerScript
|
||||
{
|
||||
public virtual void Start() { }
|
||||
public API API = new();
|
||||
}
|
||||
|
||||
public virtual void OnPlayerConnect(Entities.EntitiesPlayer player)
|
||||
public class API
|
||||
{
|
||||
#region DELEGATES
|
||||
public delegate void ChatEvent(string username, string message, CancelEventArgs cancel);
|
||||
public delegate void PlayerEvent(Entities.EntitiesPlayer player);
|
||||
#endregion
|
||||
|
||||
#region EVENTS
|
||||
public event EventHandler OnStart;
|
||||
public event ChatEvent OnChatMessage;
|
||||
public event PlayerEvent OnPlayerConnected;
|
||||
public event PlayerEvent OnPlayerDisconnected;
|
||||
|
||||
internal void InvokeStart()
|
||||
{
|
||||
Logging.Info("New player [" + player.SocialClubName + " | " + player.Username + "] connected!");
|
||||
OnStart?.Invoke(this, EventArgs.Empty);
|
||||
}
|
||||
|
||||
public virtual void OnPlayerDisconnect(Entities.EntitiesPlayer player, string reason)
|
||||
internal void InvokePlayerConnect(Entities.EntitiesPlayer player)
|
||||
{
|
||||
Logging.Info(player.Username + " left the server, reason: " + reason);
|
||||
OnPlayerConnected?.Invoke(player);
|
||||
}
|
||||
|
||||
public virtual bool OnChatMessage(string username, string message)
|
||||
internal void InvokePlayerDisconnect(Entities.EntitiesPlayer player, string reason)
|
||||
{
|
||||
return false;
|
||||
OnPlayerDisconnected?.Invoke(player);
|
||||
}
|
||||
|
||||
internal bool InvokeChatMessage(string username, string message)
|
||||
{
|
||||
var args = new CancelEventArgs(false);
|
||||
OnChatMessage?.Invoke(username, message, args);
|
||||
return args.Cancel;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region FUNCTIONS
|
||||
public static List<long> GetAllConnections()
|
||||
{
|
||||
List<long> result = new();
|
||||
@ -121,6 +145,7 @@ namespace CoopServer
|
||||
{
|
||||
Server.RegisterCommands<T>();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
||||
public class Command
|
||||
|
Reference in New Issue
Block a user