public void RPC_SelectedLootItem(RPCMessage msg) { BasePlayer player = msg.player; uint itemUID = msg.read.UInt32(); if (player == null || !player.inventory.loot.IsLooting() || player.inventory.loot.entitySource != this) { return; } Item vehicleItem = carOccupant.GetVehicleItem(itemUID); if (vehicleItem == null || Interface.CallHook("OnVehicleModuleSelect", vehicleItem, this, player) != null) { return; } bool flag = player.inventory.loot.RemoveContainerAt(3); BaseVehicleModule result; VehicleModuleStorage vehicleModuleStorage; if (TryGetModuleForItem(vehicleItem, out result) && (object)(vehicleModuleStorage = result as VehicleModuleStorage) != null) { IItemContainerEntity container = vehicleModuleStorage.GetContainer(); if (!ObjectEx.IsUnityNull(container)) { player.inventory.loot.AddContainer(container.inventory); flag = true; } } if (flag) { player.inventory.loot.SendImmediate(); } Interface.CallHook("OnVehicleModuleSelected", vehicleItem, this, player); }
public override void Save(SaveInfo info) { base.Save(info); info.msg.cassette = Facepunch.Pool.Get <ProtoBuf.Cassette>(); info.msg.cassette.audioId = AudioId; info.msg.cassette.creatorSteamId = CreatorSteamId; info.msg.cassette.preloadAudioId = preloadedAudioId; if (!ObjectEx.IsUnityNull(currentCassettePlayer) && BaseEntityEx.IsValid(currentCassettePlayer.ToBaseEntity)) { info.msg.cassette.holder = currentCassettePlayer.ToBaseEntity.net.ID; } }