POMLUA. Функции связанные с предметами.

Разъяснение. В описании каждый отдельный параметр заключен в <>. Необязательная часть в []. В самом коде эту "обвязку" указывать не нужно. Пример. func(<A>[,<B>]) - в реальном коде, при A = 10 и B = 20, будет иметь вид func(10,20). Необязательную часть можно пропускать в вызове, но если указывать, то внутреннюю последовательность нарушать нельзя. Например, (<A>[,<B>,<C>]) - параметр A нужно указывать всегда, B и C можно опустить. При этом можно указать A и B без C. Но если нужно указать C, то перед обязательно должен быть и В (выбросить В и указать только С нельзя).

getObjParam(<код_предмета>).
(в редакторе меню "Предметы" - "<-Получить параметры по коду")
Возвращает таблицу (массив) с именованными полями-параметрами указанного предмета. К полям можно обращаться по текстовым идентификаторам: "'id" (код_предмета), "action" (основное_действие), "secActionCount" (счетчик_второго/временного_действия), "secAction" (код_второго/временного_действия), "secActionScript" (скрипт_обнуления_счетчика), "caption" (заголовок). Надо понимать, что возвращается копия параметров, редактировать таблицу можно, но изменения не переносятся на исходный предмет. Реальные параметры изменяются вызовом отдельных функций.
Пример.
local curObj = getObjParam(12817)
curObj.caption --будет содержать "Рубаха_странника"
curObj.id --будет содержать 12817
curObj.action --основное действие, которое назначено на этот предмет в самой программе  
Эта команда позволит выстраивать нужную логику ориентируясь на параметры других предметов.

setObjParam(<код_предмета> либо {<предмет1>,<предмет2>,<предмет3>,...массив кодов},<основное_действие>[,<счетчик_врем. действия>,<временное_действие>]).
(в редакторе меню "Предметы" -  "=>Изменить параметры")
Назначает указанным первым параметром предметам (это может быть как одиночный код, так и массив кодов через запятую, заключенных в фигурные скобки {A,B,C,D}) значения из указанных последующих. Как минимум должно быть указано два параметра (предметы и основное действие). Остальные параметры не обязательны. 
Если указан массив предметов, то каждому из них будет назначен один и тот же набор параметров.

Пример.
setObjParam({12817,14910}, objActNoAction, 5, objActTake) 
-- предметам Рубаха_странника и Кольцо_шести_культов будет назначен сбор по 5шт каждого наименования и дальнейшее игнорирование (пропуск у монстров либо продажу при атаке всего дропа). Эквивалентно такому виду в самой программе (показано для одного предмета).
В качестве кодов действий можно использовать следующие текстовые константы:
    objActNoAction - "Нет_действия";
    objActTake - "Собирать";
    objActAlwaysTake - "Важный_сбор" (особых отличий от обычного не имеет, можно использовать просто для выделения предметов в отдельную категорию);
    objActDismantle - "Разбирать";
    objActSell - "Продавать";
    objActDismantleNSell - "Вскрыть-Продать" (специфическое действие применимое только к тем предметам, на которых подобное есть и в игре, например коробках с рабами/рабочими. Не используйте на неподдерживаемых предметах. Это будет вызывать ошибку при их обработке);
    objActDismantleAll - "Вскрыть Все" (так же специфическое действие, которое может применяться только к предметам которые имеют его поддержку и в игре, например, брилл. сюрпризы, рецепты и сосуды с энергией. Использование на других запрещено);
    objActTakeNStop - "Собрать и Стоп" (остановиться после первого сбора данного предмета);
    objActBuy - "Покупать" (из магазинов других хранителей и биржи, если выставлены соотв. настройки. При обработке дропа эквивалентно "Собирать", но не наоборот: "Собирать" никогда не равно "Покупать");
    objActStop - "Остановиться" (при "Нужный дроп" на монстре - остановиться до атаки, при выбитом предмете - собрать и остановиться);
    objActStudy - "Изучить рецепт" (старый вид действия, полностью эквивалентен "Разбирать");
 
В редакторе константу можно выбрать из меню "Константы"-"Действия_на_предметах" либо соответствующего блока на панели (выбрать из списка и нажать кнопку "V Вставить V")

Кроме того, в редакторе доступен шаблон (на панели сверху "Шаблоны"-"Параметры"-"Предмет"-"Комплект"), позволяющий вставить пропись команды с заполненными параметрами предмета. Для этого нужно перетащить на него картинку предмета из любого списка в программе, либо изображение в окне параметров. Текущие параметры, установленные на предмете, будут скопированы с него и добавлены в пропись. Так что все параметры (которые потом должны быть установлены скриптом) можно сначала назначить привычным образом в программе и затем просто "сбросить" картинку на шаблон.

setObjAction(<код_предмета либо {массив,кодов,предметов}>,<действие>)
(в редакторе меню "Предметы" -  "=>Изменить действие")
В отличие от предыдущей команды всегда устанавливает только один параметр для каждого из указанных предметов - основное действие. 
 
Кроме того, в редакторе доступен шаблон на панели сверху ("Шаблоны"-"Параметры"-"Предмет"-"Основ.действие"). Принцип работы идентичен описанию для комплекта настроек выше.

setObjSecCount(<код_предмета либо {массив,кодов,предметов}>,<счетчик>).
(в редакторе меню "Предметы" -  "=>Изменить счетчик врем.действия")
Назначает каждому из указанных предметов один и тот же счетчик временного действия.

setObjSecAction(<код_предмета либо {массив,кодов,предметов}>,<врем.действие>).
(в редакторе меню "Предметы" -  "=>Изменить временное действие")
Назначает каждому из указанных предметов одно и то же временное действие.

sellObj(<код предмета> либо {массив,кодов,предметов},<количество>=0).
(в редакторе меню "Предметы" -  "Продать предмет в сундуке")
Продает указанные предметы из сундука. Параметр <количество> имеет специфику в зависимости от значения: "ноль" = все, что есть в сундуке; "больше нуля" = указанное количество, либо все, если в реальности есть меньше; "меньше нуля" = все, кроме указанного, либо ничего, если реальное количество меньше либо равно указанному по модулю (без знака минус). 
Если второй параметр не указан, то он принимается равным нулю. Если осуществляется частичная продажа стекуемых предметов, то производится автоматическое разделение пачек, для получения отдельных с нужными для точного попадания в итоговое число стеками.

Кроме того, в редакторе доступен шаблон (на панели сверху "Шаблоны"-"Действия"-"Продать(сунд.)"), позволяющий вставить пропись команды с заполненными параметрами. Для этого нужно перетащить на него картинку предмета из любого списка в программе, либо изображение в окне параметров. Значение второго параметра берется из поля справа надписи.

dismantleObj(<код предмета> либо {массив,кодов,предметов},<количество>=0[,<Вскрыть-Продать>=0]).
(в редакторе меню "Предметы" -  "Разобрать предмет в сундуке")
Разбирает указанные предметы в сундуке. Параметр <количество> имеет специфику в зависимости от значения: "ноль" = все, что есть в сундуке; "больше нуля" = указанное количество, либо все, если в реальности есть меньше; "меньше нуля" = все, кроме указанного, либо ничего, если реальное количество меньше либо равно указанному по модулю (без знака минус). 
Если второй параметр не указан, то он принимается равным нулю. Если осуществляется частичная обработка стекуемых предметов, то производится автоматическое разделение пачек, для получения отдельных с нужными для точного попадания в итоговое число стеками. Если стекуемый предмет поддерживает "Разобрать все", то этим действием обрабатывается вся пачка, вместо разбора каждой штуки по отдельности.
Третьим необязательным параметром можно задать применение "Вскрыть-Продать". По умолчанию = 0.

Кроме того, в редакторе доступен шаблон (на панели сверху "Шаблоны"-"Действия"-"Разобрать(сунд.)"), позволяющий вставить пропись команды с заполненными параметрами. Принцип работы идентичен описанию для шаблона продажи предмета выше.
 
getChestFreeSpace(без параметров).
(в редакторе меню "Предметы" -  "<-Получить свободн.в сундуке")
(в редакторе меню "Разное" -  "Сундук" - "<-Получить число свободн.слотов")
Возвращает число свободных слотов в сундуке.
 
getCellId(<номер страницы(0 для рюкзака)>,<положение на ней>)
(в редакторе меню "Разное" -  "Сундук" - "<-Получить код ячейки")
Возвращает код ячейки для указанных номера страницы (указывайте 0 для рюкзака) и номера ячейки на ней. Может использоваться в вызовах других функций в качестве параметра (будет показано в примере ниже).
 
getObjCodeFromCell(<код ячейки>)
(в редакторе меню "Предметы" -  "<-Получить код предмета в ячейке")
(в редакторе меню "Разное" -  "Сундук" - "<-Получить код предмета в ячейке")
Возвращает код предмета содержащегося в указанной ячейке и 0, если она пуста. Таким образом может использоваться в первую очередь для определения занятости слота, а во вторую для уточнения, что же именно там лежит.
Кроме непосредственно указания кода в виде цифр, что довольно неудобно, можно использовать вызов функции описанной выше.
Пример.
curCell = getObjCodeFromCell(getCellId(0,5)) --присвоить переменной curCell код предмета в пятой ячейке рюкзака
curCell = getObjCodeFromCell(getCellId(1,25)) --получить код предмета со 2 стр. сундука и 25 позиции в нем.
Для обращения к слотам экипировки можно использовать текстовые константы:
    eqipSlotLeftHand - слот левой руки
    eqipSlotRightHand - слот правой руки
    eqipSlotArmor - слот брони
    eqipSlotRing - слот кольца
    eqipSlotAmulet - слот амулета
    eqipSlotRelic - слот реликвии
    eqipSlotTalisman - слот оберега
    eqipSlotPet - слот питомца
    eqipSlotMount - слот маунта
    eqipSlotSignOfStrength - слот знака силы
    eqipSlotScabbard - слот ножн
    eqipSlotGarb - слот облачения
    eqipSlotTrophy - слот трофея
(в редакторе меню "Константы" - "Слоты экипировки")
Пример.
curCell = getObjCodeFromCell(eqipSlotRelic) --узнать что за предмет экипирован в слоте реликвии

getObjAllCount(<код предмета>).
(в редакторе меню "Разное" -  "Сундук" - "<-Получить число предмета в налич.")
Возвращает общее количество предмета в сундуке.

moveObjToCell(<код предмета>,<код ячейки>).
(в редакторе меню "Разное" -  "Сундук" - "Переместить предмет в ячейку")
Перемещает первый экземпляр предмета в указанную ячейку (производит обмен содержимого исходной и целевой ячеек). Получение кода конкретной ячейки указано выше.
 
moveCellToCell(<код ячейки1>,<код ячейки2>)
(в редакторе меню "Разное" -  "Сундук" - "Обмен двух ячеек")
Производит обмен содержимого двух указанных ячеек. Получение кода конкретной ячейки указано выше.
 
getShopFreeSpace(<без параметров>)
(в редакторе меню "Разное" -  "Мой магазин" - "<-Cвободно в магазине")
Возвращает число свободных слотов магазина. Если есть торговый аккаунт, то вместе с суммой свободных биржевых ячеек.

moveObjToShop(<код предмета>,<количество>=0).
(в редакторе меню "Предметы" -  "Предмет в мой магазин")
(в редакторе меню "Разное" -  "Мой магазин" - "Предмет в магазин")
Производит перемещение экземпляров указанного предмета в первую свободную ячейку магазина. Процесс регулируется параметром <количество> с тем же самым смыслом, что и обработка в сундуке. "ноль" = все, что есть в сундуке; "больше нуля" = указанное количество, либо все, если в реальности есть меньше; "меньше нуля" = все, кроме указанного, либо ничего, если реальное количество меньше либо равно указанному по модулю (без знака минус). 
Если второй параметр не указан, то он принимается равным нулю. Если осуществляется частичная обработка стекуемых предметов, то производится автоматическое разделение пачек, для получения отдельных с нужными для точного попадания в итоговое число стеками.
 
Кроме того, в редакторе доступен шаблон (на панели сверху "Шаблоны"-"Действия"-"Предм.в_магазин"), позволяющий вставить пропись команды с заполненными параметрами. Принцип работы идентичен описанию для шаблона продажи предмета выше.
 
moveCellsToShop({<код_ячейки1>,<код_ячейки2>,<код_ячейки3>,...массив_кодов})
(в редакторе меню "Разное" -  "Мой магазин" - "Ячейки в магазин")
Производит перемещение указанных ячеек в свободные слоты магазина начиная с первого. При окончании свободного места процесс прерывается.
 
getMarketFreeSpace(<без параметров>)
(в редакторе меню "Разное" -  "Мой магазин" - "<-Свободно на бирже")
Возвращает число свободных биржевых слотов магазина. Требуется наличие активного торгового аккаунта.
 
moveObjToMarket(<код предмета>,<количество>=0).
(в редакторе меню "Предметы" -  "Предмет на биржу (магазин)")
(в редакторе меню "Разное" -  "Мой магазин" - "Предмет на биржу")
Производит перемещение экземпляров указанного предмета в первую свободную биржевую ячейку магазина. Требуется наличие активного торгового аккаунта. Процесс регулируется параметром <количество> с тем же самым смыслом, что и обработка в сундуке. "ноль" = все, что есть в сундуке; "больше нуля" = указанное количество, либо все, если в реальности есть меньше; "меньше нуля" = все, кроме указанного, либо ничего, если реальное количество меньше либо равно указанному по модулю (без знака минус). 
Если второй параметр не указан, то он принимается равным нулю. Если осуществляется частичная обработка стекуемых предметов, то производится автоматическое разделение пачек, для получения отдельных с нужными для точного попадания в итоговое число стеками.
 
Кроме того, в редакторе доступен шаблон (на панели сверху "Шаблоны"-"Действия"-"Предм.на_биржу"), позволяющий вставить пропись команды с заполненными параметрами. Принцип работы идентичен описанию для шаблона продажи предмета выше.
 
moveCellsToMarket({<код_ячейки1>,<код_ячейки2>,<код_ячейки3>,...массив_кодов}).
(в редакторе меню "Разное" -  "Мой магазин" - "Ячейки на биржу")
Производит перемещение указанных ячеек в свободные биржевые слоты магазина начиная с первого. Требуется наличие активного торгового аккаунта. При окончании свободного места процесс прерывается.

Комментариев нет:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.