(3a5d98b) v0.9.6.0
This commit is contained in:
@@ -268,8 +268,8 @@ namespace Barotrauma
|
||||
break;
|
||||
case NetEntityEvent.Type.Control:
|
||||
msg.WriteRangedInteger(1, 0, 3);
|
||||
Client owner = ((Client)extraData[1]);
|
||||
msg.Write(owner == null ? (byte)0 : owner.ID);
|
||||
Client owner = (Client)extraData[1];
|
||||
msg.Write(owner != null && owner.Character == this && GameMain.Server.ConnectedClients.Contains(owner) ? owner.ID : (byte)0);
|
||||
break;
|
||||
case NetEntityEvent.Type.Status:
|
||||
msg.WriteRangedInteger(2, 0, 3);
|
||||
@@ -445,14 +445,14 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
public void WriteSpawnData(IWriteMessage msg)
|
||||
public void WriteSpawnData(IWriteMessage msg, UInt16 entityId)
|
||||
{
|
||||
if (GameMain.Server == null) return;
|
||||
|
||||
int msgLength = msg.LengthBytes;
|
||||
|
||||
msg.Write(Info == null);
|
||||
msg.Write(ID);
|
||||
msg.Write(entityId);
|
||||
msg.Write(SpeciesName);
|
||||
msg.Write(seed);
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ namespace Barotrauma
|
||||
{
|
||||
Instance = this;
|
||||
|
||||
CommandLineArgs = args;
|
||||
CommandLineArgs = ToolBox.MergeArguments(args);
|
||||
|
||||
World = new World(new Vector2(0, -9.82f));
|
||||
FarseerPhysics.Settings.AllowSleep = true;
|
||||
@@ -189,6 +189,13 @@ namespace Barotrauma
|
||||
ownerKey = 0;
|
||||
}
|
||||
|
||||
#if DEBUG
|
||||
foreach (string s in CommandLineArgs)
|
||||
{
|
||||
Console.WriteLine(s);
|
||||
}
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < CommandLineArgs.Length; i++)
|
||||
{
|
||||
switch (CommandLineArgs[i].Trim())
|
||||
@@ -213,6 +220,9 @@ namespace Barotrauma
|
||||
password = CommandLineArgs[i + 1];
|
||||
i++;
|
||||
break;
|
||||
case "-nopassword":
|
||||
password = "";
|
||||
break;
|
||||
case "-upnp":
|
||||
case "-enableupnp":
|
||||
bool.TryParse(CommandLineArgs[i + 1], out enableUpnp);
|
||||
@@ -303,6 +313,7 @@ namespace Barotrauma
|
||||
Server.Update((float)Timing.Step);
|
||||
if (Server == null) { break; }
|
||||
SteamManager.Update((float)Timing.Step);
|
||||
TaskPool.Update();
|
||||
CoroutineManager.Update((float)Timing.Step, (float)Timing.Step);
|
||||
|
||||
Timing.Accumulator -= Timing.Step;
|
||||
|
||||
@@ -7,7 +7,7 @@ namespace Barotrauma.Items.Components
|
||||
{
|
||||
partial void SetState(bool open, bool isNetworkMessage, bool sendNetworkMessage, bool forcedOpen)
|
||||
{
|
||||
if (isStuck || isOpen == open)
|
||||
if (IsStuck || isOpen == open)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ namespace Barotrauma.Items.Components
|
||||
public void ServerWrite(IWriteMessage msg, Client c, object[] extraData = null)
|
||||
{
|
||||
msg.Write(state);
|
||||
msg.Write(user == null ? (ushort)0 : user.ID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Barotrauma.Items.Components
|
||||
msg.Write(deteriorationTimer);
|
||||
msg.Write(deteriorateAlwaysResetTimer);
|
||||
msg.Write(DeteriorateAlways);
|
||||
msg.Write(CurrentFixer == c.Character);
|
||||
msg.Write(CurrentFixer == null ? (ushort)0 : CurrentFixer.ID);
|
||||
msg.WriteRangedInteger((int)currentFixerAction, 0, 2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,7 +32,6 @@ namespace Barotrauma.Items.Components
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
List<Wire> clientSideDisconnectedWires = new List<Wire>();
|
||||
ushort disconnectedWireCount = msg.ReadUInt16();
|
||||
for (int i = 0; i < disconnectedWireCount; i++)
|
||||
@@ -179,6 +178,7 @@ namespace Barotrauma.Items.Components
|
||||
|
||||
public void ServerWrite(IWriteMessage msg, Client c, object[] extraData = null)
|
||||
{
|
||||
msg.Write(user == null ? (ushort)0 : user.ID);
|
||||
ClientWrite(msg, extraData);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -100,16 +100,26 @@ namespace Barotrauma
|
||||
{
|
||||
ActionType actionType = (ActionType)extraData[1];
|
||||
ItemComponent targetComponent = extraData.Length > 2 ? (ItemComponent)extraData[2] : null;
|
||||
ushort targetID = extraData.Length > 3 ? (ushort)extraData[3] : (ushort)0;
|
||||
ushort characterID = extraData.Length > 3 ? (ushort)extraData[3] : (ushort)0;
|
||||
Limb targetLimb = extraData.Length > 4 ? (Limb)extraData[4] : null;
|
||||
ushort useTargetID = extraData.Length > 5 ? (ushort)extraData[5] : (ushort)0;
|
||||
Vector2? worldPosition = null;
|
||||
if (extraData.Length > 6) { worldPosition = (Vector2)extraData[6]; }
|
||||
|
||||
Character targetCharacter = FindEntityByID(targetID) as Character;
|
||||
Character targetCharacter = FindEntityByID(characterID) as Character;
|
||||
byte targetLimbIndex = targetLimb != null && targetCharacter != null ? (byte)Array.IndexOf(targetCharacter.AnimController.Limbs, targetLimb) : (byte)255;
|
||||
|
||||
msg.WriteRangedInteger((int)actionType, 0, Enum.GetValues(typeof(ActionType)).Length - 1);
|
||||
msg.Write((byte)(targetComponent == null ? 255 : components.IndexOf(targetComponent)));
|
||||
msg.Write(targetID);
|
||||
msg.Write(characterID);
|
||||
msg.Write(targetLimbIndex);
|
||||
msg.Write(useTargetID);
|
||||
msg.Write(worldPosition.HasValue);
|
||||
if (worldPosition.HasValue)
|
||||
{
|
||||
msg.Write(worldPosition.Value.X);
|
||||
msg.Write(worldPosition.Value.Y);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NetEntityEvent.Type.ChangeProperty:
|
||||
@@ -197,7 +207,7 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
public void WriteSpawnData(IWriteMessage msg)
|
||||
public void WriteSpawnData(IWriteMessage msg, UInt16 entityID)
|
||||
{
|
||||
if (GameMain.Server == null) return;
|
||||
|
||||
@@ -209,7 +219,7 @@ namespace Barotrauma
|
||||
msg.Write(Description);
|
||||
}
|
||||
|
||||
msg.Write(ID);
|
||||
msg.Write(entityID);
|
||||
|
||||
if (ParentInventory == null || ParentInventory.Owner == null)
|
||||
{
|
||||
|
||||
@@ -25,24 +25,23 @@ namespace Barotrauma
|
||||
SpawnOrRemove entities = (SpawnOrRemove)extraData[0];
|
||||
|
||||
message.Write(entities.Remove);
|
||||
|
||||
if (entities.Remove)
|
||||
{
|
||||
message.Write(entities.Entity.ID);
|
||||
message.Write(entities.OriginalID);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (entities.Entity is Item)
|
||||
{
|
||||
message.Write((byte)SpawnableType.Item);
|
||||
DebugConsole.Log("Writing item spawn data " + entities.Entity.ToString() + " (ID: " + entities.Entity.ID + ")");
|
||||
((Item)entities.Entity).WriteSpawnData(message);
|
||||
DebugConsole.Log("Writing item spawn data " + entities.Entity.ToString() + " (original ID: " + entities.OriginalID + ", current ID: " + entities.Entity.ID + ")");
|
||||
((Item)entities.Entity).WriteSpawnData(message, entities.OriginalID);
|
||||
}
|
||||
else if (entities.Entity is Character)
|
||||
{
|
||||
message.Write((byte)SpawnableType.Character);
|
||||
DebugConsole.Log("Writing character spawn data: " + entities.Entity.ToString() + " (ID: " + entities.Entity.ID + ")");
|
||||
((Character)entities.Entity).WriteSpawnData(message);
|
||||
DebugConsole.Log("Writing character spawn data: " + entities.Entity.ToString() + " (original ID: " + entities.OriginalID + ", current ID: " + entities.Entity.ID + ")");
|
||||
((Character)entities.Entity).WriteSpawnData(message, entities.OriginalID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,10 +134,7 @@ namespace Barotrauma.Networking
|
||||
|
||||
serverSettings = new ServerSettings(this, name, port, queryPort, maxPlayers, isPublic, attemptUPnP);
|
||||
KarmaManager.SelectPreset(serverSettings.KarmaPreset);
|
||||
if (!string.IsNullOrEmpty(password))
|
||||
{
|
||||
serverSettings.SetPassword(password);
|
||||
}
|
||||
serverSettings.SetPassword(password);
|
||||
|
||||
ownerKey = ownKey;
|
||||
|
||||
@@ -874,7 +871,9 @@ namespace Barotrauma.Networking
|
||||
|
||||
if (Level.Loaded != null && levelEqualityCheckVal != Level.Loaded.EqualityCheckVal)
|
||||
{
|
||||
errorStr += " Level equality check failed. The level generated at your end doesn't match the level generated by the server (seed " + Level.Loaded.Seed + ").";
|
||||
errorStr += " Level equality check failed. The level generated at your end doesn't match the level generated by the server(seed: " + Level.Loaded.Seed +
|
||||
", sub: " + Submarine.MainSub.Name + " (" + Submarine.MainSub.MD5Hash.ShortHash + ")" +
|
||||
", mirrored: " + Level.Loaded.Mirrored + ").";
|
||||
}
|
||||
|
||||
Log(c.Name + " has reported an error: " + errorStr, ServerLog.MessageType.Error);
|
||||
|
||||
@@ -306,6 +306,7 @@ namespace Barotrauma.Networking
|
||||
}
|
||||
|
||||
ServerName = doc.Root.GetAttributeString("name", "");
|
||||
if (ServerName.Length > NetConfig.ServerNameMaxLength) { ServerName = ServerName.Substring(0, NetConfig.ServerNameMaxLength); }
|
||||
ServerMessageText = doc.Root.GetAttributeString("ServerMessage", "");
|
||||
|
||||
GameMain.NetLobbyScreen.SelectedModeIdentifier = GameModeIdentifier;
|
||||
|
||||
Reference in New Issue
Block a user