OpenEUO Craft and BOD Filling script
-
Не в сети
- Manticorr
- Автор темы
- Senior Member
- Сообщений: 23
- Thanks: 0
Manticorr
Автор темы
Senior Member

Захотелось написать простенький скрипт для крафта и заполнения булок.
Был пьян. Поэтому не обижайтесь.
Для начала, помимо OpenEUO, советую поставить Modded OpenEUO Interface (GUI) by EN. Version 11d:
www.easyuo.com/forum/viewtopic.php?f=38&t=46408
Использованные материалы
1) Взял замечательный скрипт поиска предметов и их представления в стандартизированном виде от Kal In Ex
Оригинал можно взять отсюда: www.easyuo.com/forum/viewtopic.php?t=43949
Пришлось оверрайдить функцию GetBODInfo, чтобы информация о булках работала на данном шарде. Конкретно, дописал в конец файла это:Благодаря этому костылю информация о булке BODInfo возвращается в виде:
2) Отличная приспособлена для чтения текста из гампов от того же Kal In Ex
Оригинал туда: www.easyuo.com/forum/viewtopic.php?t=43234
Ничего не менял.
Установка
Распаковываем архив в директорию, где установлена OpenEUO, в папку scripts
Инструкция
Создаём свой скрипт и подключаем ту дрянь, что я написал
Теперь можно можно использовать.
Скрафтить предметtoolType - тип инструмента, которым будете пользоваться
toolColor - цвет инструмента. По дефолту 0. Если знаете цвета рунических инструментов, подставляйте. Мне лень искать было.
Найти первый подходящий по параметрам BOD в инвентареsize - "Small" , "Large"
material - название материала кэмел кейсом (Каждое новое слово с заглавной буквы)
quality - "normal" или "exceptional"
amount - кол-во предметов в BOD
itemsNames - массив с именами предметов в нижнем регистре
strictAmount - как учитывать количество требуемых в BOD изделий. true - точное совпадение, false - больше или равное количество
completed - true - искать выполненный BOD, false - любой
Заполнить BODэтой функции надо отдавать на вход BOD в формате, возвращаемом функциями Craft.findBOD (или ScanItems из файла FindItems.lua с моим костылём)
Примеры
Скрафтить 3 Dull Copper даггера обычного качества и запихать их в маленький BOD
Заполнить большой BOD мелкими. Разумеется, всё это должно быть в инвентаре.
Был пьян. Поэтому не обижайтесь.
Для начала, помимо OpenEUO, советую поставить Modded OpenEUO Interface (GUI) by EN. Version 11d:
www.easyuo.com/forum/viewtopic.php?f=38&t=46408
Использованные материалы
1) Взял замечательный скрипт поиска предметов и их представления в стандартизированном виде от Kal In Ex
Оригинал можно взять отсюда: www.easyuo.com/forum/viewtopic.php?t=43949
Пришлось оверрайдить функцию GetBODInfo, чтобы информация о булках работала на данном шарде. Конкретно, дописал в конец файла это:
-- overrided GetBODInfo
IMT.__index = function(table,key)
if key == "Name" or key == "Details" then
local Name,Details = UO.Property(table.ID)
rawset(table,"Name",string.match(Name,"[%s%d]*(.+)"))
rawset(table,"Details",Details)
end
if key == "Property" then
local Property = GetItemData(table.Details)
Property.Name = table.Name
rawset(table,"Property",Property)
end
if key == "BODInfo" then
rawset(table,"BODInfo",GetBODInfo(table.Details,table.Col))
end
return rawget(table,key)
end
local patternPhrases = {
Size = "Bulk Order",
Amount = "Amount To Make",
Quality = "All Items Must Be Exceptional",
Material = "All Items Must Be Made With",
MaterialType = "With .* Ingots",
Name = ".*:",
Digits = "[%w%s]+: (%d+)"
}
local function parseBODInfoString(BODInfo, string)
if string.match(string,patternPhrases.Size) ~= nil then
BODInfo.Size = string.sub(string,1,5)
elseif string.match(string,patternPhrases.Amount) ~= nil then
BODInfo.Amount = tonumber(string.match(string,patternPhrases.Digits))
elseif string.match(string,patternPhrases.Quality) ~= nil then
BODInfo.Quality = "exceptional"
elseif string.match(string,patternPhrases.Material) ~= nil then
BODInfo.Material = string.sub(string.match(string,patternPhrases.MaterialType),6,-8)
else
local indx = table.getn(BODInfo.Items)+1
BODInfo.Items[indx] = {}
BODInfo.Items[indx].Name = string.lower(string.sub(string.match(string,patternPhrases.Name),1,-2))
BODInfo.Items[indx].Done = tonumber(string.match(string,patternPhrases.Digits))
end
return BODInfo
end
local BSmithBodCol = 1102
local TailorBODCol = 1155
GetBODInfo = function(Details,Color)
local DefaultMaterialType
if Color == BSmithBodCol then
DefaultMaterialType = 'Iron'
elseif Color == TailorBODCol then
DefaultMaterialType = 'Leather'
end
if type(Details) == "number" then
local Name
Name,Details = UO.Property(Details)
if Name ~= "A Bulk Order Deed" or string.len(Details) == 0 then
print("GetBODInfo - error item ID:"..ID.." is not a BOD")
return nil
end
end
local GetLine = string.gfind(Details,"([^%c]+)%c*")
GetLine() -- Blessed
GetLine() -- Weight: 1 Stone
local RetVal = {
Size = "Small",
Quality = "normal", -- optional
Material = DefaultMaterialType, -- optional
Amount = 0,
Items = {}
}
local BODInfoString = GetLine()
while BODInfoString ~= nil do
RetVal = parseBODInfoString(RetVal, BODInfoString)
BODInfoString = GetLine()
end
return RetVal
end
Size,Quality,Material,Amount,Items
где Items = {{Name,Done},{Name,Done},{Name,Done},...}
2) Отличная приспособлена для чтения текста из гампов от того же Kal In Ex
Оригинал туда: www.easyuo.com/forum/viewtopic.php?t=43234
Ничего не менял.
Установка
Распаковываем архив в директорию, где установлена OpenEUO, в папку scripts
Инструкция
Создаём свой скрипт и подключаем ту дрянь, что я написал
dofile('modules/modCraft.lua')
Теперь можно можно использовать.
Скрафтить предмет
local Item = {
itemName = "dagger", // название предмета в нижнем регистре
categoryName = "Bladed", // категория, как она написана в гампе инструмента
amount = 3, // сколько надо сделать
Material = "Dull Copper", // название материала ("Iron","Copper","Gold", "Leather"...)
Quality = "normal" // "normal" или "exceptional"
}
Craft.make(Item,toolType,toolColor)
toolColor - цвет инструмента. По дефолту 0. Если знаете цвета рунических инструментов, подставляйте. Мне лень искать было.
Найти первый подходящий по параметрам BOD в инвентаре
BOD = Craft.findBOD(size,material,quality,amount,itemsNames,strictAmount,completed)
material - название материала кэмел кейсом (Каждое новое слово с заглавной буквы)
quality - "normal" или "exceptional"
amount - кол-во предметов в BOD
itemsNames - массив с именами предметов в нижнем регистре
strictAmount - как учитывать количество требуемых в BOD изделий. true - точное совпадение, false - больше или равное количество
completed - true - искать выполненный BOD, false - любой
Заполнить BOD
Craft.fillBOD(BOD)
Примеры
Скрафтить 3 Dull Copper даггера обычного качества и запихать их в маленький BOD
dofile('modules/modCraft.lua')
Types = {
Tool = {
SmithsHammer = 5091,
Tongs = 4027,
},
}
local Item = {
itemName = "dagger",
categoryName = "Bladed",
amount = 3,
Material = "Dull Copper",
Quality = "normal"
}
Craft.make(Item,Types.Tool.SmithsHammer)
wait(1000)
Craft.fillBOD(Craft.findBOD("Small","Dull Copper","normal",10,{Item.itemName}))
Заполнить большой BOD мелкими. Разумеется, всё это должно быть в инвентаре.
Craft.fillBOD(Craft.findBOD("Large","Iron","normal",10,{"ringmail gloves","ringmail tunic","ringmail sleeves","ringmail leggings"},true))
Вложения:
Последнее редактирование: 29 июль 2019 17:27 пользователем Old Man.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
-
Не в сети
- Allice [FreeZzy]
- Пророк
- United Pirates Guild
- Сообщений: 3317
- Thanks: 53
Пророк

Очень полезный скрипт. И ресурсы на которые в посте ссылаются - тоже полезно просмотреть.
Но смотришь и на скрипты на изи и на ескрипт/питон/луа и офигеваешь. Тоже самое под питоном занимает в 4 раза меньше кода.
Но смотришь и на скрипты на изи и на ескрипт/питон/луа и офигеваешь. Тоже самое под питоном занимает в 4 раза меньше кода.
Эта игра ну никак не загнётся... Уходят старые, недовольные, игроки - приходят новые - новые стареют, начинают брюзжать и уходят. И снова на их место приходят новые игроки. Закон EvE
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
-
Не в сети
- Manticorr
- Автор темы
- Senior Member
- Сообщений: 23
- Thanks: 0
Manticorr
Автор темы
Senior Member

Чорт. Вложение не находится.
А я хотел достать, переписать на другие утилиты.
Мб, осталось у кого?
А я хотел достать, переписать на другие утилиты.
Мб, осталось у кого?
Последнее редактирование: 27 июль 2019 22:04 пользователем Manticorr.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
-
Не в сети
- Old Man
- Администрация
- Сообщений: 3507+
- Сообщений: 1360
- Thanks: 316
Администрация

Чорт. Вложение не находится.
А я хотел достать, переписать на другие утилиты.
Мб, осталось у кого?
Элитная команда спасения снова с вами (с)
Прикрепил в аттач.
UPD: в первом посте тоже заменил на рабочий
По поводу ошибок и неточностей пишите только на саппорт, не в лс или мессенджеры, не на форум или в дискорд. Не создавали тикета - не сообщали об ошибке.
Спасибо сказали: Manticorr
Вложения:
Последнее редактирование: 29 июль 2019 17:27 пользователем Old Man.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.