Injection 2015
Moderators: Murderator+, Murderator
Re: Injection 2015
у меня такая фигня возникала после полутора часов активного фарма. После оптимизации скриптов - убрал почти все игноры, оптимизировал циклы на динамических паузах, встроил проверки на запуски - стала херня вылезать раз часов в 4-5 хардкора. Если просто бегать по лесу и городу постреливая то можно чара не выключать по нескколько суток.
Re: Injection 2015
Juicy Fruit wrote:Не должен, т.к. пока не открыли контейнер – сервер не присылает его содержимое.genri wrote:Если указан my или 2 то ищется в бекпаке и всех подсумках.
Не ищет в бекпаке сумка в которой придмет лежит пока сумку не откроешь а должен(((
версия 1505/29
а как сделать если после смерти нужно резко юзнуть бутылку хила которая в сумке в бекпаке
Re: Injection 2015
Mirage wrote:у меня такая фигня возникала после полутора часов активного фарма. После оптимизации скриптов - убрал почти все игноры, оптимизировал циклы на динамических паузах, встроил проверки на запуски - стала херня вылезать раз часов в 4-5 хардкора. Если просто бегать по лесу и городу постреливая то можно чара не выключать по нескколько суток.
Динамичские паузы? что это, покажи.
И проверки на запуски, это что?)
Re: Injection 2015
Динамическая пауза, зависящая от какого либо события:
задаем константу времени
использует труп
гоняем паузу пока серийник трупа не будет равен серийнику последнего открытого контейнера, последний открытый контейнер будет не нулевым, или дистанция до трупа не будет превышать дистанцию доступную для открытия трупа, или не пройдет несколько секунды времени.
Если сравнить с простыми wait(100) или wait(500) то в первом случае моя пауза независима от лага а 100 может и не сработать, а во втором случае моя пауза сработает быстрее чем 500 мсек.
Защита от повторного запуска:
где то там выше задается глобальная переменная равная 1. Скрипт запустится только если она равна 1 и сразу переключит её на 2. Повторный запуск проверит переменную и выключит повторно запущенный скрипт. Когда скрипт успешно завершит свою работу переменная опять станет равной 1 и скрипт будет доступен для запуска.
Это нужно например в ситуации когда лежит 2 тела и ты случайно нажимаешь 2 раза на лут. 2 скрипта начнут одновременно пытаться облутить оба тела, один скрипт ищет в первом теле, в этот момент второй скрипт пытается переместить предмет из второго тела, ID найденных предметов разные но переместить то нужно.... Инжект крашит клиент от таких оборотов. Защита от повторного запуска исключит подобные ситуации.
ЗЫ это просто примеры, реализовать подобные штуки можно несколькими способами. Какие то изящнее какие то функциональнее. Важно то что включая подобное в свои скрипты человек уменьшает вероятность вылетания клиента.
задаем константу времени
использует труп
гоняем паузу пока серийник трупа не будет равен серийнику последнего открытого контейнера, последний открытый контейнер будет не нулевым, или дистанция до трупа не будет превышать дистанцию доступную для открытия трупа, или не пройдет несколько секунды времени.
Code: Select all
timemove=UO.Timer()
uo.useobject(corpse)
repeat
wait(lootwait)
until (UO.GetSerial(corpse)<>uo.GetSerial('lastcontainer') && uo.GetSerial('lastcontainer')<>'0xFFFFFFFF') || Uo.GetDistance(corpse) <= LootDist || timemove+10>UO.Timer()
Если сравнить с простыми wait(100) или wait(500) то в первом случае моя пауза независима от лага а 100 может и не сработать, а во втором случае моя пауза сработает быстрее чем 500 мсек.
Защита от повторного запуска:
Code: Select all
sub Rez_Cleaver()
UO.Set('quiet','1')
if val(uo.getGlobal('running'))==1 then ; эти
uo.setGlobal('running',2) ; три
REZall('0x0EC2','0x0000')
uo.setGlobal('running',1) ; строчки
endif
UO.Set('quiet','0')
end sub
где то там выше задается глобальная переменная равная 1. Скрипт запустится только если она равна 1 и сразу переключит её на 2. Повторный запуск проверит переменную и выключит повторно запущенный скрипт. Когда скрипт успешно завершит свою работу переменная опять станет равной 1 и скрипт будет доступен для запуска.
Это нужно например в ситуации когда лежит 2 тела и ты случайно нажимаешь 2 раза на лут. 2 скрипта начнут одновременно пытаться облутить оба тела, один скрипт ищет в первом теле, в этот момент второй скрипт пытается переместить предмет из второго тела, ID найденных предметов разные но переместить то нужно.... Инжект крашит клиент от таких оборотов. Защита от повторного запуска исключит подобные ситуации.
ЗЫ это просто примеры, реализовать подобные штуки можно несколькими способами. Какие то изящнее какие то функциональнее. Важно то что включая подобное в свои скрипты человек уменьшает вероятность вылетания клиента.
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Injection 2015
Мираж, в той версии, которую в личку относительно недавно скидывал есть встроенная проверка на запущенный скрипт.
exec __runonce#Rez_Cleaver
Не допустит запуск 2 экземпляра скрипта, если запущен первый.
exec __runonce#Rez_Cleaver
Не допустит запуск 2 экземпляра скрипта, если запущен первый.
Re: Injection 2015
это я в курсе. Просто придется под неё несколько скриптов переписывать а глобалка пока справляется.
А так я пользовался вот такой штукой
Вполне себе работало. main1 запустит процедуру test только 1 раз сколько бы не тыкали в main1. main2 100% грохнет ВСЕ даже случайно запущенные процедуры test.
2 Juicy Fruit у тебя как с учебой? Релизить свою глобальную задумку пока не готов?
А так я пользовался вот такой штукой
Code: Select all
sub main1()
startexec('test')
endsub
sub main2()
stopexec('test')
endsub
Sub test()
repeat
uo.print('Прювед!')
wait(1000)
until uo.dead()
endsub
Sub startexec(index)
while not UO.FunRunning(index)
uo.exec('exec ' +index)
wend
endsub
Sub stopexec(index)
while UO.FunRunning(index)
uo.exec('terminate ' +index)
wend
endsub
Вполне себе работало. main1 запустит процедуру test только 1 раз сколько бы не тыкали в main1. main2 100% грохнет ВСЕ даже случайно запущенные процедуры test.
2 Juicy Fruit у тебя как с учебой? Релизить свою глобальную задумку пока не готов?
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Injection 2015
Диплом давно защитил, еще в конце января, в начале марта получил и свобода от этой фигни)
Но сейчас на работе завал, да и в реале дела.
Там еще несколько моментов нужно подправить и выяснить причину утечки памяти.
Но сейчас на работе завал, да и в реале дела.
Там еще несколько моментов нужно подправить и выяснить причину утечки памяти.
Re: Injection 2015
Code: Select all
timemove=UO.Timer()
uo.useobject(corpse)
repeat
wait(lootwait)
until (UO.GetSerial(corpse)<>uo.GetSerial('lastcontainer') && uo.GetSerial('lastcontainer')<>'0xFFFFFFFF') || Uo.GetDistance(corpse) <= LootDist || timemove+10>UO.Timer()
Мне кажется тяжелый скрипт, не лучше ли обычный чек лаг вместо этого? и кстати в таком цикле какой lootwait реккомендуешь?
Re: Injection 2015
Машу каслом не испортишь 
Я не люблю работать с журналом.

Я не люблю работать с журналом.

Re: Injection 2015
Mirage wrote:Машу каслом не испортишь
Я не люблю работать с журналом.
Ну а так смотри за один круг цикла ты используешь 4 раза getserial и getdistance один раз, мне кажется это опасно) может ошибаюсь, все в зависимости от задержки внутри цикла.
Re: Injection 2015
по сути это простое сравнение цифр такое же как
Чеклаг нужен несколько для другого. Если использовать чеклаг то в игре будет совершаться какое то действие - клик по бэкпаку, флуд в окне клиента, и чеклаг только от лага защитит. На сервере где я играю админ искусственно увеличивает паузу между перемещением предмета например. То есть предмет двигается не сферовые 300-350 мсек а около 600 мсек. Моя проверка учтет условия и подстроится даже под произвольную паузу потому что она проверяет именно присутствие предмета в паке персонажа.
ЗЫ пауза то ли 100 то ли 150. Не меньше 100 в общем.
ЗЗЫ Скрипт это просто пример для наглядности что из цикла можно выйти при выполнении определенного условия. И пауза будет минимальная. У меня проверка чуть чуть другая. Там даже больше условий прописано.
Code: Select all
выполнять действие
пока 1<>0 или 2<>3
Чеклаг нужен несколько для другого. Если использовать чеклаг то в игре будет совершаться какое то действие - клик по бэкпаку, флуд в окне клиента, и чеклаг только от лага защитит. На сервере где я играю админ искусственно увеличивает паузу между перемещением предмета например. То есть предмет двигается не сферовые 300-350 мсек а около 600 мсек. Моя проверка учтет условия и подстроится даже под произвольную паузу потому что она проверяет именно присутствие предмета в паке персонажа.
ЗЫ пауза то ли 100 то ли 150. Не меньше 100 в общем.
ЗЗЫ Скрипт это просто пример для наглядности что из цикла можно выйти при выполнении определенного условия. И пауза будет минимальная. У меня проверка чуть чуть другая. Там даже больше условий прописано.
Re: Injection 2015
Самый скучный в мире разговор
По делу:
Всякие гетсериал и гетдистанс выполняются локально и никаких запросов на сервер не посылают - всё это барахло должно хранится локально и обновляться по мере изменения или какого-нибудь ресинка. Чеклаг это для серверных запросов (перемещение шмотки, туда-сюда, банк открой), НО только для действий, при которых могут потеряться или испортиться внутриигровое барахло (передача вещей от чара к чару перед банком, разгрузка с мининга там).
PS А что за секретная глобальная задумка у Джуси Фрута?

По делу:
Всякие гетсериал и гетдистанс выполняются локально и никаких запросов на сервер не посылают - всё это барахло должно хранится локально и обновляться по мере изменения или какого-нибудь ресинка. Чеклаг это для серверных запросов (перемещение шмотки, туда-сюда, банк открой), НО только для действий, при которых могут потеряться или испортиться внутриигровое барахло (передача вещей от чара к чару перед банком, разгрузка с мининга там).
PS А что за секретная глобальная задумка у Джуси Фрута?

-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Injection 2015
Версия 1508.09
Список изменений:
Список изменений:
- - Исправлено зависание скриптов в окошке скриптов.
- Исправлена ошибка с появлением предупреждения "Creation thread error".
- Добавлена проверка на нахождение функции в теле скрипта UO.SubExists(SubName).
- Реализована возможность вызова функции через UO.CallSub(SubName, Params...)
Может принимать различное количество параметров (минимум 1 - название функции), сканирует тело скрипта на предмет нахождения указанной функции в нем с указанным количеством параметров и выполняет ее в стандартном режиме.
- Исправлена работа функции UO.FunRunning(SubName), теперь работает правильно и без сбоев.
- Некоторые корректировки в Script.dll.
- Исправления в поисковых функциях.
- Исправлена работа UO.mfgi.
- Реализован доступ к списку найденного с помощью поисковых фукнций (FindType/FindList) через UO.FindItem(index). Индексы от 0 до UO.FindCount() - 1.
- Добавлен спецификатор вызова __runonce#ScriptName. При вызове скрипта с таким спецификатором через хоткеи или через uo.exec('exec __runonce#MyScript') - скриптовый движок проверит, запущена ли функция MyScript в данный момент, если запущена - ничего не произойдет, иначе - запустит скрипт в штатном режиме.
- Улучшена стабильность инжекта.
Re: Injection 2015
А в старой инже была закладка Layers как-то так, теперь ее нету? Как посмотреть, что надето на чаре?
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Injection 2015
Это окошко покинуло инжект еще 1,5 года назад, ввиду неиспользуемости.
Что бы в нем корректно отображались названия предметов в слоях – необходимо получить их имя (клик на предмет), это нужно делать вручную.
Та и раз впервые за такой промежуток времени об этом поинтересовался только 1 человек – то оно и впрямь было лишним.
Если очень нужно – могу вернуть.
У кого–то наблюдаются какие–либо проблеммы с последним релизом?
Что бы в нем корректно отображались названия предметов в слоях – необходимо получить их имя (клик на предмет), это нужно делать вручную.
Та и раз впервые за такой промежуток времени об этом поинтересовался только 1 человек – то оно и впрямь было лишним.
Если очень нужно – могу вернуть.
У кого–то наблюдаются какие–либо проблеммы с последним релизом?
Re: Injection 2015
UO.FindList находит предметы не в том порядке в котором они прописаны через UO.AddFindList
ПС: если искать на земле то все норм., если искать в контейнере то находит не по списку
ПС: если искать на земле то все норм., если искать в контейнере то находит не по списку
Re: Injection 2015
в пвп, почти, не крашит! точнее функции в хоткеях не залипают. но теперь такое иногда.... примерно 4-5 часов не выключая инжект и играя по полной: картинки идут в порядку появления.
- Attachments
-
- 2015_08_23_04_38_19_997.jpg (63.47 KiB) Viewed 5104 times
-
- 2015_08_23_04_38_37_804.jpg (54.88 KiB) Viewed 5104 times
-
- 2015_08_23_04_38_45_789.jpg (17.9 KiB) Viewed 5104 times
Re: Injection 2015
тут есть еще люди кто играет на ХП винде?
у меня на всех компах 1 проблема при команде массмув крашит. все вариации пробовал и с задержками и с настройками.
может есть секрет какой-то?
на старой и на 14 инже все ок.
спасибо.
у меня на всех компах 1 проблема при команде массмув крашит. все вариации пробовал и с задержками и с настройками.
может есть секрет какой-то?
на старой и на 14 инже все ок.
спасибо.
-
- Posts: 820
- Joined: 2011-06-11 19:54:23
Re: Injection 2015
Только на ХР такое?beluga wrote:тут есть еще люди кто играет на ХП винде?
у меня на всех компах 1 проблема при команде массмув крашит. все вариации пробовал и с задержками и с настройками.
может есть секрет какой-то?
на старой и на 14 инже все ок.
спасибо.
Проверял на 7 - все в порядке.
Включи галочку Verbose Logging, добейся краша и injection_log.txt в личку скинь ссылкой (при этом должен быть запущен только 1 клиент с инжектом, чтоб в логе не было лишнего мусора).
Re: Injection 2015
Не показывало изображения регов и т.д. в заголовке окна при первом запуске, при следующих запусках просто крашится.
тоже самое на Injection_08_03_2015
при этих же настройках Injection_22_10_2014 работает
пысы: после перезагрузки компа все заработало, возможно это у меня проблема какая то)
тоже самое на Injection_08_03_2015
при этих же настройках Injection_22_10_2014 работает
пысы: после перезагрузки компа все заработало, возможно это у меня проблема какая то)
- Attachments
-
injection_log.txt
- (16.94 KiB) Downloaded 501 times