Untitled
unknown
plain_text
a year ago
4.6 kB
9
Indexable
using System;
using Server;
using Server.Commands;
using Server.Mobiles;
using Server.Items;
using Server.Network;
using Server.Targeting;
namespace Server.Commands
{
public class StealthMineCommand
{
public static void Initialize()
{
// Регистрируем команду для игроков с доступом на уровне Player
CommandSystem.Register("StealthMine", AccessLevel.Player, new CommandEventHandler(StealthMine_OnCommand));
}
[Usage("StealthMine")]
[Description("Запускает процесс стелс-добычи руды.")]
public static void StealthMine_OnCommand(CommandEventArgs e)
{
Mobile from = e.Mobile;
// Если игрок не имеет кирки – выдаем сообщение
Pickaxe pickaxe = from.Backpack.FindItemByType(typeof(Pickaxe)) as Pickaxe;
if (pickaxe == null)
{
from.SendMessage("Для добычи руды тебе нужна кирка.");
return;
}
// Устанавливаем режим стелс: делаем игрока скрытым (Hidden = true)
if (!from.Hidden)
{
from.Hidden = true;
from.SendMessage("Ты растворяешься в тенях и начинаешь добычу руды.");
}
// Поиск ближайшего рудного камня (MineralRock) в радиусе 5 тайлов
IPooledEnumerable eable = from.Map.GetItemsInRange(from.Location, 5);
MineralRock rock = null;
foreach (Item item in eable)
{
// Предполагаем, что MineralRock – это тип, отвечающий за добычу руды, и у него свойство Resource (OreType)
if (item is MineralRock && ((MineralRock)item).Resource != OreType.None)
{
rock = (MineralRock)item;
break;
}
}
eable.Free();
if (rock == null)
{
from.SendMessage("В окрестностях нет рудного камня для добычи.");
// Выходим из стелс-режима, если добыча невозможна
if (from.Hidden)
{
from.Hidden = false;
from.SendMessage("Ты выходишь из режима скрытности.");
}
return;
}
// Симулируем процесс добычи – можно добавить проверку навыка Mining, случай успеха и т.п.
from.SendMessage("Ты начинаешь добычу руды...");
bool success = true; // Здесь можно реализовать логику проверки навыка, RNG и прочее
if (success)
{
// Определяем случайное количество добытой руды (например, от 1 до 3 единиц)
int amount = Utility.RandomMinMax(1, 3);
Ore ore = new Ore(amount); // Предполагается, что конструктор Ore принимает количество
if (from.PlaceInBackpack(ore))
{
from.SendMessage("Ты успешно добываешь руду.");
}
else
{
ore.MoveToWorld(from.Location, from.Map);
from.SendMessage("Ты не смог унести руду – она падает на землю.");
}
}
else
{
from.SendMessage("Добыча не увенчалась успехом.");
}
// После добычи запускаем таймер, чтобы через 10 секунд игрок вышел из стелс-режима
Timer.DelayCall(TimeSpan.FromSeconds(10), delegate
{
if (from.Hidden)
{
from.Hidden = false;
from.SendMessage("Ты вновь становишься видимым.");
}
});
}
}
}
Editor is loading...
Leave a Comment