Fix calls in TShock.cs and TSPlayer.cs

This commit is contained in:
Enerdy 2015-07-04 14:18:17 +01:00
parent 84c6d97f6d
commit b7aaf4092c
2 changed files with 143 additions and 183 deletions

View file

@ -339,8 +339,8 @@ namespace TShockAPI
{
get
{
return RealPlayer &&
(Netplay.serverSock[Index] != null && Netplay.serverSock[Index].active && !Netplay.serverSock[Index].kill);
return RealPlayer
&& (Netplay.Clients[Index] != null && Netplay.Clients[Index].IsActive && !Netplay.Clients[Index].PendingTermination);
}
}
@ -354,8 +354,8 @@ namespace TShockAPI
public int State
{
get { return Netplay.serverSock[Index].state; }
set { Netplay.serverSock[Index].state = value; }
get { return Netplay.Clients[Index].State; }
set { Netplay.Clients[Index].State = value; }
}
/// <summary>
@ -363,7 +363,7 @@ namespace TShockAPI
/// </summary>
public string UUID
{
get { return RealPlayer ? Netplay.serverSock[Index].clientUUID : ""; }
get { return RealPlayer ? Netplay.Clients[Index].ClientUUID : ""; }
}
/// <summary>
@ -375,10 +375,8 @@ namespace TShockAPI
{
if (string.IsNullOrEmpty(CacheIP))
return
CacheIP =
RealPlayer
? (Netplay.serverSock[Index].tcpClient.Connected
? TShock.Utils.GetRealIP(Netplay.serverSock[Index].tcpClient.Client.RemoteEndPoint.ToString())
CacheIP = RealPlayer ? (Netplay.Clients[Index].Socket.IsConnected()
? TShock.Utils.GetRealIP(Netplay.Clients[Index].Socket.GetRemoteAddress().ToString())
: "")
: "";
else
@ -521,7 +519,7 @@ namespace TShockAPI
TilesDestroyed = new Dictionary<Vector2, Tile>();
TilesCreated = new Dictionary<Vector2, Tile>();
Index = -1;
FakePlayer = new Player {name = playerName, whoAmi = -1};
FakePlayer = new Player {name = playerName, whoAmI = -1};
Group = Group.DefaultGroup;
AwaitingResponse = new Dictionary<string, Action<object>>();
}
@ -533,11 +531,11 @@ namespace TShockAPI
public virtual void Flush()
{
var sock = Netplay.serverSock[Index];
if (sock == null)
var client = Netplay.Clients[Index];
if (client == null)
return;
TShock.PacketBuffer.Flush(sock);
TShock.PacketBuffer.Flush(client);
}
@ -573,13 +571,13 @@ namespace TShockAPI
SendTileSquare((int) (x/16), (int) (y/16), 15);
TPlayer.Teleport(new Vector2(x, y), style);
NetMessage.SendData((int)PacketTypes.Teleport, -1, -1, "", 0, TPlayer.whoAmi, x, y, style);
NetMessage.SendData((int)PacketTypes.Teleport, -1, -1, "", 0, TPlayer.whoAmI, x, y, style);
return true;
}
public void Heal(int health = 600)
{
NetMessage.SendData((int)PacketTypes.PlayerHealOther, -1, -1, "", this.TPlayer.whoAmi, health);
NetMessage.SendData((int)PacketTypes.PlayerHealOther, -1, -1, "", this.TPlayer.whoAmI, health);
}
public void Spawn()
@ -838,7 +836,8 @@ namespace TShockAPI
NetMessage.SendData((int) msgType, Index, -1, text, number, number2, number3, number4, number5);
}
public virtual void SendDataFromPlayer(PacketTypes msgType, int ply, string text = "", float number2 = 0f, float number3 = 0f, float number4 = 0f, int number5 = 0)
public virtual void SendDataFromPlayer(PacketTypes msgType, int ply, string text = "", float number2 = 0f,
float number3 = 0f, float number4 = 0f, int number5 = 0)
{
if (RealPlayer && !ConnectionAlive)
return;
@ -850,7 +849,8 @@ namespace TShockAPI
{
if (!RealPlayer || !ConnectionAlive)
return;
NetMessage.SendBytes(Netplay.serverSock[Index], data, 0, data.Length, Netplay.serverSock[Index].ServerWriteCallBack, Netplay.serverSock[Index].networkStream);
Netplay.Clients[Index].Socket.AsyncSend(data, 0, data.Length, Netplay.Clients[Index].ServerWriteCallBack);
}
/// <summary>
@ -1089,7 +1089,7 @@ namespace TShockAPI
public Color? shoeColor;
public Color? skinColor;
public Color? eyeColor;
public BitsByte? hideVisuals;
public bool[] hideVisuals;
public int questsCompleted;
public PlayerData(TSPlayer player)
@ -1200,9 +1200,9 @@ namespace TShockAPI
player.TPlayer.eyeColor = this.eyeColor.Value;
if (this.hideVisuals != null)
player.TPlayer.hideVisual = this.hideVisuals.Value;
player.TPlayer.hideVisual = this.hideVisuals;
else
player.TPlayer.hideVisual.ClearAll();
player.TPlayer.hideVisual = new bool[player.TPlayer.hideVisual.Length];
for (int i = 0; i < NetItem.MaxInventory; i++)
{

View file

@ -280,7 +280,7 @@ namespace TShockAPI
TileBans = new TileManager(DB);
RememberedPos = new RememberedPosManager(DB);
CharacterDB = new CharacterManager(DB);
RestApi = new SecureRest(Netplay.serverListenIP, Config.RestApiPort);
RestApi = new SecureRest(Netplay.ServerIP, Config.RestApiPort);
RestApi.Port = Config.RestApiPort;
RestManager = new RestManager(RestApi);
RestManager.RegisterRestfulCommands();
@ -442,14 +442,14 @@ namespace TShockAPI
/// <param name="args">args - The NameCollisionEventArgs object.</param>
private void NetHooks_NameCollision(NameCollisionEventArgs args)
{
string ip = Utils.GetRealIP(Netplay.serverSock[args.Who].tcpClient.Client.RemoteEndPoint.ToString());
string ip = Utils.GetRealIP(Netplay.Clients[args.Who].Socket.GetRemoteAddress().ToString());
var player = Players.First(p => p != null && p.Name == args.Name && p.Index != args.Who);
if (player != null)
{
if (player.IP == ip)
{
Netplay.serverSock[player.Index].kill = true;
Netplay.Clients[player.Index].PendingTermination = true;
args.Handled = true;
return;
}
@ -458,7 +458,7 @@ namespace TShockAPI
var ips = JsonConvert.DeserializeObject<List<string>>(player.User.KnownIps);
if (ips.Contains(ip))
{
Netplay.serverSock[player.Index].kill = true;
Netplay.Clients[player.Index].PendingTermination = true;
args.Handled = true;
}
}
@ -506,13 +506,13 @@ namespace TShockAPI
e.ExceptionObject.ToString().Contains("Terraria.Netplay.ServerLoop"))
{
var sb = new List<string>();
for (int i = 0; i < Netplay.serverSock.Length; i++)
for (int i = 0; i < Netplay.Clients.Length; i++)
{
if (Netplay.serverSock[i] == null)
if (Netplay.Clients[i] == null)
{
sb.Add("Sock[" + i + "]");
sb.Add("Client[" + i + "]");
}
else if (Netplay.serverSock[i].tcpClient == null)
else if (Netplay.Clients[i].Socket == null)
{
sb.Add("Tcp[" + i + "]");
}
@ -595,7 +595,7 @@ namespace TShockAPI
{
case "-port":
int port = Convert.ToInt32(parms[++i]);
Netplay.serverPort = port;
Netplay.ListenPort = port;
Config.ServerPort = port;
OverridePort = true;
Log.ConsoleInfo("Port overridden by startup argument. Set to " + port);
@ -919,7 +919,7 @@ namespace TShockAPI
Console.Title = string.Format("{0}{1}/{2} @ {3}:{4} (TShock for Terraria v{5})",
!string.IsNullOrWhiteSpace(Config.ServerName) ? Config.ServerName + " - " : "",
empty ? 0 : Utils.ActivePlayers(),
Config.MaxSlots, Netplay.serverListenIP, Netplay.serverPort, Version);
Config.MaxSlots, Netplay.ServerIPText, Netplay.ListenPort, Version);
}
/// <summary>OnHardUpdate - Fired when a hardmode tile update event happens.</summary>
@ -1375,75 +1375,37 @@ namespace TShockAPI
e.Object.SetDefaults(0);
}
/// <summary>
/// Send bytes to client using packetbuffering if available
/// </summary>
/// <param name="client">socket to send to</param>
/// <param name="bytes">bytes to send</param>
/// <returns>False on exception</returns>
public static bool SendBytes(ServerSock client, byte[] bytes)
{
if (PacketBuffer != null)
{
PacketBuffer.BufferBytes(client, bytes);
return true;
}
return SendBytesBufferless(client, bytes);
}
/// <summary>
/// Send bytes to a client ignoring the packet buffer
/// </summary>
/// <param name="client">socket to send to</param>
/// <param name="bytes">bytes to send</param>
/// <returns>False on exception</returns>
public static bool SendBytesBufferless(ServerSock client, byte[] bytes)
{
try
{
if (client.tcpClient.Connected)
client.networkStream.Write(bytes, 0, bytes.Length);
return true;
}
catch (Exception ex)
{
Log.Warn("This is a normal exception");
Log.Warn(ex.ToString());
}
return false;
}
/// <summary>NetHooks_SendData - Fired when the server sends data.</summary>
/// <param name="e">e - The SendDataEventArgs object.</param>
private void NetHooks_SendData(SendDataEventArgs e)
{
if (e.MsgId == PacketTypes.Disconnect)
{
Action<ServerSock, string> senddisconnect = (sock, str) =>
Action<RemoteClient, string> disconnect = (client, str) =>
{
if (sock == null || !sock.active)
if (client == null || !client.IsActive || client.Socket.IsConnected())
return;
sock.kill = true;
using (var ms = new MemoryStream())
{
new DisconnectMsg { Reason = str }.PackFull(ms);
SendBytesBufferless(sock, ms.ToArray());
var msg = new DisconnectMsg() { Reason = str };
msg.PackFull(ms);
client.Socket.AsyncSend(ms.ToArray(), 0, (int)ms.Length, client.ServerWriteCallBack);
client.Socket.Close();
}
};
if (e.remoteClient != -1)
{
senddisconnect(Netplay.serverSock[e.remoteClient], e.text);
disconnect(Netplay.Clients[e.remoteClient], e.text);
}
else
{
for (int i = 0; i < Netplay.serverSock.Length; i++)
for (int i = 0; i < Netplay.Clients.Length; i++)
{
if (e.ignoreClient != -1 && e.ignoreClient == i)
continue;
senddisconnect(Netplay.serverSock[i], e.text);
disconnect(Netplay.Clients[i], e.text);
}
}
e.Handled = true;
@ -1925,16 +1887,14 @@ namespace TShockAPI
}
if (!OverridePort)
{
Netplay.serverPort = file.ServerPort;
Netplay.ListenPort = file.ServerPort;
}
if (file.MaxSlots > 235)
file.MaxSlots = 235;
Main.maxNetPlayers = file.MaxSlots + 20;
Netplay.password = "";
Netplay.ServerPassword = "";
Netplay.spamCheck = false;
Utils.HashAlgo = file.HashAlgorithm;
}
}
}