Помогите Переделайте пожалуйста код и проверьте, буду очень благодарен!

HelpyYT

14 Мар 2024
6
0
7
C#:
using Oxide.Core;
using UnityEngine;


namespace Oxide.Plugins
{
    [Info("RandomVeinResource", "YourName", "1.0.0")]
    [Description("Adds random resource veins upon throwing geology charge")]


    public class RandomVeinResource : RustPlugin
    {
        // Массив возможных ресурсов для жилы
        private string[] veinResources = { "metal.ore", "sulfur.ore", "hq.metal.ore" };


        // Обработчик события броска геологического заряда
        private void OnThrownGeologyCharge(BasePlayer player, BaseEntity entity)
        {
            // Проверяем, что бросили геологический заряд
            if (entity?.ShortPrefabName == "geologycharge.deployed")
            {
                // Получаем случайный ресурс из массива
                string randomResource = veinResources[Random.Range(0, veinResources.Length)];


                // Создаем жилу с случайным ресурсом
                CreateVein(entity.transform.position, randomResource);
            }
        }


        // Метод для создания жилы с указанным ресурсом
        private void CreateVein(Vector3 position, string resourceType)
        {
            // Создаем жилу по указанным параметрам
            BaseEntity veinEntity = GameManager.server.CreateEntity("assets/bundled/prefabs/resource/ores/" + resourceType + ".prefab", position);
            if (veinEntity != null)
            {
                // Активируем жилу
                veinEntity.Spawn();
            }
            else
            {
                PrintError("Failed to create vein entity");
            }
        }
    }
}


Спасибо!
 
  • Вау
Реакции: Northdead
C#:
using Oxide.Core;
using UnityEngine;


namespace Oxide.Plugins
{
    [Info("RandomVeinResource", "YourName", "1.0.0")]
    [Description("Adds random resource veins upon throwing geology charge")]


    public class RandomVeinResource : RustPlugin
    {
        // Массив возможных ресурсов для жилы
        private string[] veinResources = { "metal.ore", "sulfur.ore", "hq.metal.ore" };


        // Обработчик события броска геологического заряда
        private void OnThrownGeologyCharge(BasePlayer player, BaseEntity entity)
        {
            // Проверяем, что бросили геологический заряд
            if (entity?.ShortPrefabName == "geologycharge.deployed")
            {
                // Получаем случайный ресурс из массива
                string randomResource = veinResources[Random.Range(0, veinResources.Length)];


                // Создаем жилу с случайным ресурсом
                CreateVein(entity.transform.position, randomResource);
            }
        }


        // Метод для создания жилы с указанным ресурсом
        private void CreateVein(Vector3 position, string resourceType)
        {
            // Создаем жилу по указанным параметрам
            BaseEntity veinEntity = GameManager.server.CreateEntity("assets/bundled/prefabs/resource/ores/" + resourceType + ".prefab", position);
            if (veinEntity != null)
            {
                // Активируем жилу
                veinEntity.Spawn();
            }
            else
            {
                PrintError("Failed to create vein entity");
            }
        }
    }
}


Спасибо!
он тут вам просто заспавнить руду хочет на месте котором вы бросили заряд
 
Код, который ты предоставил, должен спавнить жилу с ресурсом для ручной добычи. А именно: камень, металл и серу. МВК выпадает после добычи металла.
Вот исправленный код:

C#:
using Oxide.Core;
using UnityEngine;

namespace Oxide.Plugins
{
    [Info("RandomVeinResource", "YourName", "1.0.0")]
    [Description("Добавляет случайные жилы ресурсов в точке взрыва геологического заряда")]
    public class RandomVeinResource : RustPlugin
    {
        private string[] veinResources = { "metal-ore", "sulfur-ore", "stone-ore" };

        void OnEntitySpawned(BaseNetworkable entity)
        {
            if (entity?.ShortPrefabName.Equals("survey_charge.deployed", System.StringComparison.OrdinalIgnoreCase) == true)
            {
                Puts("Обнаружен геологический заряд.");

                // Задержка, предполагаемая для взрыва заряда
                timer.Once(3.5f, () =>
                {
                    string randomResource = veinResources[Oxide.Core.Random.Range(0, veinResources.Length)];
                    Puts($"Выбран случайный ресурс: {randomResource}");
                    CreateVein(entity.transform.position, randomResource);
                });
            }
        }

        private void CreateVein(Vector3 position, string resourceType)
        {
            string prefabPath = $"assets/bundled/prefabs/autospawn/resource/ores/{resourceType}.prefab";
            BaseEntity veinEntity = GameManager.server.CreateEntity(prefabPath, position);
            if (veinEntity != null)
            {
                veinEntity.Spawn();
                Puts("Жила успешно создана и активирована.");
            }
            else
            {
                PrintError($"Не удалось создать жилу. Префаб {prefabPath} не найден.");
            }
        }
    }
}

-Исправил названия руд
-Добавил задержку по времени перед спавном
-Исправил определение геологического заряда

lrB4tV-2IbA.jpg
 
Активность
Пока никто не печатает сообщение