Иконка ресурса

FREE CustomPrefabSpawner : 1.0.0 1.0.0

Нет прав для скачивания
C#:
using UnityEngine;
using Oxide.Core;

namespace Oxide.Plugins
{
    [Info("CustomPrefabSpawner", "Assistant", "1.0.0")]
    public class CustomPrefabSpawner : RustPlugin
    {
        private const string Perm = "customprefabspawner.use";

        void Init()
        {
            permission.RegisterPermission(Perm, this);
        }

        [ChatCommand("spawncustom")]
        private void CmdSpawnCustom(BasePlayer player, string command, string[] args)
        {
            if (!permission.UserHasPermission(player.UserIDString, Perm))
            {
                player.ChatMessage("У вас нет прав для использования этой команды.");
                return;
            }

            if (args.Length == 0)
            {
                player.ChatMessage("Использование: /spawncustom <путь_к_префабу>");
                return;
            }

            string prefabName = args[0];
            Vector3 spawnPos = player.transform.position;
            Quaternion spawnRot = player.transform.rotation;

            // Создаем сущность
            BaseEntity entity = GameManager.server.CreateEntity(prefabName, spawnPos, spawnRot);

            if (entity == null)
            {
                player.ChatMessage("Ошибка: Префаб не найден или не может быть заспавнен.");
                return;
            }

            // Инициализация
            entity.Spawn();

            // ВАЖНО: Активируем все компоненты внутри префаба (лут, спавнеры, триггеры)
            // Ищем все дочерние объекты, которые являются сущностями
            foreach (var child in entity.GetComponentsInChildren<BaseEntity>())
            {
                // Отключаем гниение для построек, если они есть
                var buildingBlock = child.GetComponent<BuildingBlock>();
                if (buildingBlock != null)
                {
                    buildingBlock.decay.enabled = false;
                }

                // Отправляем сигнал "OnEntitySpawned", чтобы заработали спавнеры ресурсов/лута
                child.SendMessage("OnEntitySpawned", null, SendMessageOptions.DontRequireReceiver);
                
                // Принудительно обновляем состояние для клиентов
                child.SendNetworkUpdate();
            }

            player.ChatMessage($"Успешно заспавнен префаб: {prefabName}");
        }
    }
}

Автор
15FPS
Скачиваний
0
Просмотры
1
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок
Сверху