public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length < 1) { shell.WriteLine(Loc.GetString("Wrong number of arguments.")); return; } if (!int.TryParse(args[0], out var entityUid)) { shell.WriteLine(Loc.GetString("EntityUid must be a number.")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); var eUid = new EntityUid(entityUid); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.WriteLine(Loc.GetString("Invalid entity ID.")); return; } var target = entityManager.GetEntity(eUid); if (!target.TryGetComponent <InventoryComponent>(out var inventoryComponent)) { shell.WriteLine(Loc.GetString("Target entity does not have an inventory!")); return; } if (args.Length == 1) { var eui = IoCManager.Resolve <EuiManager>(); var ui = new SetOutfitEui(target); var player = shell.Player as IPlayerSession; eui.OpenEui(ui, player); return; } var prototypeManager = IoCManager.Resolve <IPrototypeManager>(); if (!prototypeManager.TryIndex <StartingGearPrototype>(args[1], out var startingGear)) { shell.WriteLine(Loc.GetString("Invalid outfit id")); return; } foreach (var slot in inventoryComponent.Slots) { inventoryComponent.ForceUnequip(slot); var gearStr = startingGear.GetGear(slot, null); if (gearStr != "") { var equipmentEntity = entityManager.SpawnEntity(gearStr, target.Transform.Coordinates); inventoryComponent.Equip(slot, equipmentEntity.GetComponent <ItemComponent>(), false); } } }
public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length < 1) { shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } if (!int.TryParse(args[0], out var entityUid)) { shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); var target = new EntityUid(entityUid); if (!target.IsValid() || !entityManager.EntityExists(target)) { shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } if (!entityManager.HasComponent <InventoryComponent?>(target)) { shell.WriteLine(Loc.GetString("shell-target-entity-does-not-have-message", ("missing", "inventory"))); return; } if (args.Length == 1) { if (shell.Player is not IPlayerSession player) { shell.WriteError(Loc.GetString("set-outfit-command-is-not-player-error")); return; } var eui = IoCManager.Resolve <EuiManager>(); var ui = new SetOutfitEui(target); eui.OpenEui(ui, player); return; } if (!SetOutfit(target, args[1], entityManager)) { shell.WriteLine(Loc.GetString("set-outfit-command-invalid-outfit-id-error")); } }
public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length < 1) { shell.WriteLine(Loc.GetString("shell-wrong-arguments-number")); return; } if (!int.TryParse(args[0], out var entityUid)) { shell.WriteLine(Loc.GetString("shell-entity-uid-must-be-number")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); var target = new EntityUid(entityUid); if (!target.IsValid() || !entityManager.EntityExists(target)) { shell.WriteLine(Loc.GetString("shell-invalid-entity-id")); return; } if (!entityManager.TryGetComponent <InventoryComponent?>(target, out var inventoryComponent)) { shell.WriteLine(Loc.GetString("shell-target-entity-does-not-have-message", ("missing", "inventory"))); return; } if (args.Length == 1) { if (shell.Player is not IPlayerSession player) { shell.WriteError(Loc.GetString("set-outfit-command-is-not-player-error")); return; } var eui = IoCManager.Resolve <EuiManager>(); var ui = new SetOutfitEui(target); eui.OpenEui(ui, player); return; } var prototypeManager = IoCManager.Resolve <IPrototypeManager>(); if (!prototypeManager.TryIndex <StartingGearPrototype>(args[1], out var startingGear)) { shell.WriteLine(Loc.GetString("set-outfit-command-invalid-outfit-id-error")); return; } HumanoidCharacterProfile?profile = null; // Check if we are setting the outfit of a player to respect the preferences if (entityManager.TryGetComponent <ActorComponent?>(target, out var actorComponent)) { var userId = actorComponent.PlayerSession.UserId; var preferencesManager = IoCManager.Resolve <IServerPreferencesManager>(); var prefs = preferencesManager.GetPreferences(userId); profile = prefs.SelectedCharacter as HumanoidCharacterProfile; } var invSystem = EntitySystem.Get <InventorySystem>(); if (invSystem.TryGetSlots(target, out var slotDefinitions, inventoryComponent)) { foreach (var slot in slotDefinitions) { invSystem.TryUnequip(target, slot.Name, true, true, inventoryComponent); var gearStr = startingGear.GetGear(slot.Name, profile); if (gearStr == string.Empty) { continue; } var equipmentEntity = entityManager.SpawnEntity(gearStr, entityManager.GetComponent <TransformComponent>(target).Coordinates); if (slot.Name == "id" && entityManager.TryGetComponent <PDAComponent?>(equipmentEntity, out var pdaComponent) && pdaComponent.ContainedID != null) { pdaComponent.ContainedID.FullName = entityManager.GetComponent <MetaDataComponent>(target).EntityName; } invSystem.TryEquip(target, equipmentEntity, slot.Name, true, inventory: inventoryComponent); } } }
public void Execute(IConsoleShell shell, string argStr, string[] args) { if (args.Length < 1) { shell.WriteLine(Loc.GetString("Wrong number of arguments.")); return; } if (!int.TryParse(args[0], out var entityUid)) { shell.WriteLine(Loc.GetString("EntityUid must be a number.")); return; } var entityManager = IoCManager.Resolve <IEntityManager>(); var eUid = new EntityUid(entityUid); if (!eUid.IsValid() || !entityManager.EntityExists(eUid)) { shell.WriteLine(Loc.GetString("Invalid entity ID.")); return; } var target = entityManager.GetEntity(eUid); if (!target.TryGetComponent <InventoryComponent>(out var inventoryComponent)) { shell.WriteLine(Loc.GetString("Target entity does not have an inventory!")); return; } if (args.Length == 1) { if (!(shell.Player is IPlayerSession player)) { shell.WriteError( Loc.GetString( "This does not work from the server console. You must pass the outfit id aswell.")); return; } var eui = IoCManager.Resolve <EuiManager>(); var ui = new SetOutfitEui(target); eui.OpenEui(ui, player); return; } var prototypeManager = IoCManager.Resolve <IPrototypeManager>(); if (!prototypeManager.TryIndex <StartingGearPrototype>(args[1], out var startingGear)) { shell.WriteLine(Loc.GetString("Invalid outfit id")); return; } HumanoidCharacterProfile?profile = null; // Check if we are setting the outfit of a player to respect the preferences if (target.TryGetComponent <IActorComponent>(out var actorComponent)) { var userId = actorComponent.playerSession.UserId; var preferencesManager = IoCManager.Resolve <IServerPreferencesManager>(); var prefs = preferencesManager.GetPreferences(userId); profile = prefs.SelectedCharacter as HumanoidCharacterProfile; } foreach (var slot in inventoryComponent.Slots) { inventoryComponent.ForceUnequip(slot); var gearStr = startingGear.GetGear(slot, profile); if (gearStr == "") { continue; } var equipmentEntity = entityManager.SpawnEntity(gearStr, target.Transform.Coordinates); if (slot == EquipmentSlotDefines.Slots.IDCARD && equipmentEntity.TryGetComponent <PDAComponent>(out var pdaComponent) && pdaComponent.ContainedID != null) { pdaComponent.ContainedID.FullName = target.Name; } inventoryComponent.Equip(slot, equipmentEntity.GetComponent <ItemComponent>(), false); } }