Возможно ли провести поиск на определенном объекте (NPC) по слоям? Подобие uo.objatlayer() Я решил данную проблему следующим образом: uo.findtype('-1', '-1', lastattack) и выдирал из списка нужный слой. Костыль одним словом. Также интересует вопрос выхода из цикла For, на данный момент использую return, но есть свои недостатки данного способа.
repeat uo.findtype('-1', '-1', backpack) if uo.findcount() then uo.textprint(uo.getserial(finditem)+" "+uo.getlayer(finditem)+" "+uo.getgraphic(finditem)+" "+uo.getcolor(finditem)) uo.ignore(finditem) end if until uo.findcount()==0
Существует ли альтернатива без использования uo.ignore()?
Да, break выходит из циклов for-next/while-wend/repeat-until с сохранением значения выхода для for-next, continue - переходит к следующей итерации. В следующем релизе будет uo.finditem(index), можно будет получить список всех найденных предметов с помощью поисковых функций (FindType/FindMan/FindList), могу бетку в личку скинуть.
Не смог разобраться с командой uo.UseFromGround(Type) ... Что изменилось? Также не получилось открыть файлик Injection.chm - вроде же стандартный файлик помощи, но не открывается...
pechkin wrote:Не смог разобраться с командой uo.UseFromGround(Type) ... Что изменилось? Также не получилось открыть файлик Injection.chm - вроде же стандартный файлик помощи, но не открывается...
Команда не изменялась. Как вызываешь? CHM просто не запускается? Или что-то пишет? Мб пустое окно выдает?
А у меня за месяц активной игры практически полностью умерла эта инжа.) Последний релиз всмысле. По ощущения из-за двух причин, т.к. последние 2 суток активно занимался крафтом (крафтил порядка 50 разных итемов разных менюшек разных крафтов). + много пользовался командой ,setreceivingcontainer; ,unsetreceivingcontainer и ,empycontainer + grab + moveitem.
В итоге сейчас у меня при переносе вещей инжектом (не важно граб или мувитем) происходят непонятные вещи - покадровая прорисовка с жутким лагом и долгим выполнением команды. + периодически всё окно ультимы мигает белой вспышкой. Попытки использовать старый скрипт.длл (релиз январь), сносить автолоад и т.п. ни к чему не привели.
Попробуй, судя по описанию это из-за того, что задержка внутренняя на перемещение предметов стоит. Предварительно можно посмотреть это значение в Injection.ini, значение DelayGrab= в блоке [Main]
Да, это встроенная задержка на перемещение предметов при использовании команд граб и мувитем, у тебя какой–то из запущенных скриптов мог ее выставить и началось такое. Кстати, желательно проверить скрипты эти, чтоб после перемещения предметов стоял wait хотяб 100.
я через удаленку смотрел - у него только на перемещении предметов лаги идут. Я правда посоветовал грабделей поставить 300 так как на сервере однокуйственно стоит принудительная задержка. Ну может с 0 и пройдет. А скрипты всяко надо обновлять. Всякие UseFromGround, SetCatchBag, massmove как и goto использовать только с исключительных случаях. Кстати я СЛЫШАЛ что длинные массмувы негативно отражаются в логах сферы - всего скорее это фантазии но может быть и из области #вшитофсферу быть Так что лучше использование минимизировать либо заменить отдельными функциями (укажите какой предмет перемещать, укажите куда перемещать, напишите какое количество перемещать...).
Скачиваем их клиент, удаляем client.exe, переименовываем client.bin в client.exe, запускаем инжектом этот клиент, в инжекте выбираем Encryption: Abyss, Tus bbFix галочку ставим и можно заходить.
Как заставить не закрываться backpack после смерти, как открывать в том же месте, где он был в последний раз, а так же как проверить, открыт ли backpack?
Галочка Undead стоит, но все равно закрывается каждый раз. Плюс еще глюк бывает, совершенно случайным образом, инжа перестает реагировать на какие-либо действия, hotkeys, передвижение через клиент и др., вижу вокруг все движется, а сам никаких действий произвести не могу, и папердолл закрывается, плюс звук как после смерти воспроизводится, что это может быть?
Видел идею сделать finditem(i) - очень круто, но на мой взгляд, гораздо полезнее добавить понятие "найденный набор" и семейство функций для работы с ним, например:
ItemsRem(строка_имя_набора) - запоминает найденное (после поиска FindType и аналог.) в набор с именем "строка_имя_набора", возвращает количество элементов в сохраненном наборе
ItemsGet(строка_имя_набора, целое_индекс) - возвращает серийник сохраненного в наборе объекта под порядковым номером "целое_индекс"
ItemsFree(строка_имя_набора) - обнуляет набор, очищает память
Ну, а если совсем помечтать, то еще и таких функций для работы с наборами, как с множествами:
ItemsUnt(имя_набора_результат, имя_набора1, имя_набора2) - объединение множеств - т.е. объединяет все уникальные элементы содержащиеся в "имя_набора1" и "имя_набора2" и помещает в набор "имя_набора_результат"
ItemsIsc(имя_набора_результат, имя_набора1, имя_набора2) - пересечение множеств - в результат помещаются только элементы содержащиеся и в "имя_набора1" и в "имя_набора2"
ItemsExc(имя_набора_результат, имя_набора1, имя_набора2) - дополнение множеств - в результат помещаются элементы "имя_набора1" и "имя_набора2", не содержащиеся в пересечении наборов, т.е. одновременно в "имя_набора1" и "имя_набора2"
ItemsChk(целое_серийник_объекта, имя_набора) - возвращает истину, если "целое_серийник_объекта" содержится в наборе "имя_набора"
Уверен многие скрипты оценили бы удобства такой модели.
Juicy Fruit wrote:Задумка хорошая, но времени на реализацию этого сейчас нет. Нужно полностью переписывать работу поисковиков для этого. Мб когда–нибудь.
Сложно говорить не видя кода, тебе виднее. Но, допустим имея тот же finditem(i), можно реализовать идею силами самой инжи, с помощью SetGlobal/GetGlobal (хранить в имени переменной имя набора + индекс). Все бы круто, только инжевый скрипт медленно пашет.
Сам я стелсевый фанат, на паскале у меня это давно реализовано. Там я перевожу результат поиска в Array of Cardinal. Могу заверить - очень удобно на практике. Здесь кстати тоже, можно было бы сохранять результат поиска в масcив.