private static void OnChangeOwnerRequest(MySyncGrid sync, ref ChangeOwnershipMsg msg, MyNetworkClient sender) { MyCubeBlock block = null; if (MyEntities.TryGetEntityById<MyCubeBlock>(msg.BlockId, out block)) { if (Sync.IsServer && ((MyFakes.ENABLE_BATTLE_SYSTEM && MySession.Static.Battle && block.IDModule == null) || (block.IDModule.Owner == 0) || block.IDModule.Owner == msg.RequestingPlayer || (msg.Owner == 0))) { OnChangeOwner(sync, ref msg, sender); Sync.Layer.SendMessageToAll(ref msg, MyTransportMessageEnum.Success); } else { System.Diagnostics.Debug.Fail("Invalid ownership change request!"); } } }
private static void OnChangeOwner(MySyncGrid grid, ref ChangeOwnershipMsg msg, MyNetworkClient sender) { MyCubeBlock block = null; if (MyEntities.TryGetEntityById<MyCubeBlock>(msg.BlockId, out block)) { block.ChangeOwner(msg.Owner, msg.ShareMode); } }
internal void ChangeOwnerRequest(MyCubeGrid grid, MyCubeBlock block, long playerId, MyOwnershipShareModeEnum shareMode) { System.Diagnostics.Debug.Assert(playerId >= 0); System.Diagnostics.Debug.Assert((int)shareMode >= 0); var msg = new ChangeOwnershipMsg(); msg.GridEntityId = grid.EntityId; msg.BlockId = block.EntityId; msg.Owner = playerId; msg.RequestingPlayer = playerId; msg.ShareMode = shareMode; Sync.Layer.SendMessageToServer(ref msg, MyTransportMessageEnum.Request); }