Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ Вопросы по RunUO _ Создание новой руды

Автор: Nerengot 18.11.2020, 19:47

Приветствую. Хочется все таки понять как создать новую руду. Вроде пробовал делать по аналогии с родными - сервер не стартует. Почитал подобные темы тут и увидел про приведение к string но что и как приводить не понял. В С# немного разбираюсь. Есть ли желающие потратить время на помощь и написать какие файлы надо менять и как именно? Для начала просто добавить руду, для примера Mithril Ore и дать возможность переплавки.

Автор: Juzzver 18.11.2020, 20:59

Цитата(Nerengot @ 18.11.2020, 20:47) *

Приветствую. Хочется все таки понять как создать новую руду. Вроде пробовал делать по аналогии с родными - сервер не стартует. Почитал подобные темы тут и увидел про приведение к string но что и как приводить не понял. В С# немного разбираюсь. Есть ли желающие потратить время на помощь и написать какие файлы надо менять и как именно? Для начала просто добавить руду, для примера Mithril Ore и дать возможность переплавки.

string нужен для того, чтобы обойти проблему с клилоком, откуда берутся все имена предметов, ресурсов в том числе. По стандарту мы имеем от Iron до Valorite диапазон ресурсов. Соответственно в чем идея стринга, просто переписываются значения из Int переменной клилока в текстовый вид. Что позволяет добавлять новые и изменять уже существующие виды ресурсов.

Основная же проблема - это найти и правильно дописать прочие скрипты, где используются ресурсы. Если использовать Visual Studio среду или просто что-то типа Notepad++ блокнотика, можно произвести поиск по всем файлам в папке Scripts, по ключу к примеру Valorite или Iron. Таким образом ты явно выйдешь на все места, где используются базовые металлы. По памяти, это будет около 40-50 файлов, если это RunUO сборка.

Из сложного - это правильно указать процентные соотношения по добыче ресурсов в Mining.cs. Т.к. в сумме должно выйти 100% на все виды металлов, иначе то что переваливает за 100% - будет вне досягаемости игроков.

А так-же Bulk Orders, там много правок сделать надо. Но если это не будет использоваться в заказах, то можно просто проигнорировать.

Автор: Nerengot 19.11.2020, 0:15

Так в том и дело что я полный ноль пока. Я понимаю что инт клилока надо преобразовать в стринг, но как именно не трогая (кроме шанса 100%) родные руды УО дописать свою не понимаю. Я хочу оставить все родные и добавить несколько "своих" (практически самые распространенные Лава, Мифрил, Сталь, ну и пару своих). Может ли кто-то подсказать в каких строках и что менять если использую Ранку 2.3 r 987. Использую для работы Notepad++. Был бы очень благодарен.

Делаю шард для себя лично. Хочется практически оригинальный ХС и пару плюшек. Остальное вроде все сделал (статику пока не трогал), а вот с рудой и логами встал. Пойму как делать руду, пойму и как делать логи. Дописать крафты я думаю будет легче если понять кто такие клилоки (впервые встретил данное понятие) и понять какие строки файла Ore.cs отвечают за правильное добавление руды.

Покажите пожалуйста пример на файле этой сборки. (можно несколько файлов в 1 архиве, с добавленной любой рудой и комментами по возможности.

И в догонку, как изменять цвета руды? Есть ли какие-то мануалы или таблицы цветов?

Автор: Juzzver 19.11.2020, 18:30

Цитата
Так в том и дело что я полный ноль пока.

Ну ты же сказал, что немного разбираешься smile.gif
Там идёт не преобразование инта, а присвоение ему значения через switch блок. К примеру мы крафтим любую часть армора, т.е. работаем с родительским классом BaseArmor. У него есть метод, который отвечает за отображение имени void NameProperties(ObjectProperyLabel list) или что-то в этом роде. Задача метода - собрать из кусков данных (тип ресурса, имя предмета, экзепшионал ли, и прочее) - имя предмета. В данном методе тебе нужно будет просто переопределить int значения клилока на string значение.

В BaseArmor класс уже был передан параметр Resource при создании объекта, и по нему делается выборка в метода NamePropeties через switch блок. типа
Код
switch(Resource)
{
case CraftResource.Iron: res = 4124124; break;
case CraftResource.Copper: res = 345235; break;
}

соответственно твоя задача - это создать переменную типа string, и таким же образом просто присвоить ей соответствующее значение в зависимости от типа ресурса.
string resource = "";
Код
switch(Resource)
{
case CraftResource.Iron: resource = "Iron"; break;
case CraftResource.Copper: res = "Copper"; break;
}


а чтобы добавить в список ресурсов свой новый Mythril, сделать это можно в Scripts/Misc/ResourceInfo.cs
по примеру любого из существующих ресурсов просто добавь свои строки. Тут у тебя тоже возникнут небольшие проблемы с клилоками, когда будешь регистрировать созданный кастомный ресурс, но там, если не обишаюсь, уже есть готовые перегрузки для методов, которые примут в параметр string значения. Чтобы сразу видеть и понимать такие методы и какие параметры они могут использовать - установи Visual Studio среду разработки. Работая через проект стулии - ты получить куда лучшую навигацию по коду, чем через какой либо другой редактор.

Как найти в каких файлах править.
Открываешь Notepad++, жмёшь Ctrl+Shif+F, вбиваешь папку со скриптами и ключ для поиска -"Valorite", без ковычек. На что тебе выдаст все скрипты, в которых упоминается данный тип. И по тому же сценарию просто добавляешь себе Mythril и т.д уже со своими параметрами.

Автор: Nerengot 19.11.2020, 19:29

Цитата(Juzzver @ 19.11.2020, 18:30) *

Ну ты же сказал, что немного разбираешься smile.gif
Там идёт не преобразование инта, а присвоение ему значения через switch блок. К примеру мы крафтим любую часть армора, т.е. работаем с родительским классом BaseArmor. У него есть метод, который отвечает за отображение имени void NameProperties(ObjectProperyLabel list) или что-то в этом роде. Задача метода - собрать из кусков данных (тип ресурса, имя предмета, экзепшионал ли, и прочее) - имя предмета. В данном методе тебе нужно будет просто переопределить int значения клилока на string значение.

В BaseArmor класс уже был передан параметр Resource при создании объекта, и по нему делается выборка в метода NamePropeties через switch блок. типа
Код
switch(Resource)
{
case CraftResource.Iron: res = 4124124; break;
case CraftResource.Copper: res = 345235; break;
}

соответственно твоя задача - это создать переменную типа string, и таким же образом просто присвоить ей соответствующее значение в зависимости от типа ресурса.
string resource = "";
Код
switch(Resource)
{
case CraftResource.Iron: resource = "Iron"; break;
case CraftResource.Copper: res = "Copper"; break;
}


а чтобы добавить в список ресурсов свой новый Mythril, сделать это можно в Scripts/Misc/ResourceInfo.cs
по примеру любого из существующих ресурсов просто добавь свои строки. Тут у тебя тоже возникнут небольшие проблемы с клилоками, когда будешь регистрировать созданный кастомный ресурс, но там, если не обишаюсь, уже есть готовые перегрузки для методов, которые примут в параметр string значения. Чтобы сразу видеть и понимать такие методы и какие параметры они могут использовать - установи Visual Studio среду разработки. Работая через проект стулии - ты получить куда лучшую навигацию по коду, чем через какой либо другой редактор.

Как найти в каких файлах править.
Открываешь Notepad++, жмёшь Ctrl+Shif+F, вбиваешь папку со скриптами и ключ для поиска -"Valorite", без ковычек. На что тебе выдаст все скрипты, в которых упоминается данный тип. И по тому же сценарию просто добавляешь себе Mythril и т.д уже со своими параметрами.

Не все понял, но общую суть вроде уловил. Попробую что-то сделать по данной инструкции.

Но вообще я просил именно правки в файлах: Ore.cs и Ingots.cs

Автор: Juzzver 19.11.2020, 21:05

Цитата
Но вообще я просил именно правки в файлах: Ore.cs и Ingots.cs

Так там особо менять то и нечего.
Начинать надо с ResourceInfo.cs, куда ты добавляешь новый тип ресурса с его параметрами.
Оттуда идешь в Ore.cs и Ingots.cs, где копи-пастом делаешь руду нужного тебе типа. Дополнительно указываешь difficulty для уровня скилла при переплавке руды. Клилоки трогать не зачем в Ore и Ingots скриптах

Автор: Nerengot 19.11.2020, 21:17

Цитата(Juzzver @ 19.11.2020, 21:05) *

Так там особо менять то и нечего.
Начинать надо с ResourceInfo.cs, куда ты добавляешь новый тип ресурса с его параметрами.
Оттуда идешь в Ore.cs и Ingots.cs, где копи-пастом делаешь руду нужного тебе типа. Дополнительно указываешь difficulty для уровня скилла при переплавке руды. Клилоки трогать не зачем в Ore и Ingots скриптах

Теперь понял. Базово надо плясать от файла ResourcesInfo.cs, а не от Ore.cs как думал я. Теперь все встало по местам. Большое спасибо за терпение и отзывчивость)

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)