Injection 2015

General Injection issues

Moderators: Murderator+, Murderator

Post Reply
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Injection 2015

Post by Mirage »

у меня такая фигня возникала после полутора часов активного фарма. После оптимизации скриптов - убрал почти все игноры, оптимизировал циклы на динамических паузах, встроил проверки на запуски - стала херня вылезать раз часов в 4-5 хардкора. Если просто бегать по лесу и городу постреливая то можно чара не выключать по нескколько суток.
genri
Posts: 17
Joined: 2015-01-15 17:53:51

Re: Injection 2015

Post by genri »

Juicy Fruit wrote:
genri wrote:Если указан my или 2 то ищется в бекпаке и всех подсумках.
Не ищет в бекпаке сумка в которой придмет лежит пока сумку не откроешь а должен(((
версия 1505/29
Не должен, т.к. пока не открыли контейнер – сервер не присылает его содержимое.



а как сделать если после смерти нужно резко юзнуть бутылку хила которая в сумке в бекпаке
-=Tiger=-
Posts: 20
Joined: 2015-03-17 04:02:00

Re: Injection 2015

Post by -=Tiger=- »

Mirage wrote:у меня такая фигня возникала после полутора часов активного фарма. После оптимизации скриптов - убрал почти все игноры, оптимизировал циклы на динамических паузах, встроил проверки на запуски - стала херня вылезать раз часов в 4-5 хардкора. Если просто бегать по лесу и городу постреливая то можно чара не выключать по нескколько суток.

Динамичские паузы? что это, покажи.
И проверки на запуски, это что?)
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Injection 2015

Post by Mirage »

Динамическая пауза, зависящая от какого либо события:

задаем константу времени
использует труп
гоняем паузу пока серийник трупа не будет равен серийнику последнего открытого контейнера, последний открытый контейнер будет не нулевым, или дистанция до трупа не будет превышать дистанцию доступную для открытия трупа, или не пройдет несколько секунды времени.

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 найденных предметов разные но переместить то нужно.... Инжект крашит клиент от таких оборотов. Защита от повторного запуска исключит подобные ситуации.

ЗЫ это просто примеры, реализовать подобные штуки можно несколькими способами. Какие то изящнее какие то функциональнее. Важно то что включая подобное в свои скрипты человек уменьшает вероятность вылетания клиента.
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Injection 2015

Post by Juicy Fruit »

Мираж, в той версии, которую в личку относительно недавно скидывал есть встроенная проверка на запущенный скрипт.
exec __runonce#Rez_Cleaver
Не допустит запуск 2 экземпляра скрипта, если запущен первый.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Injection 2015

Post by Mirage »

это я в курсе. Просто придется под неё несколько скриптов переписывать а глобалка пока справляется.
А так я пользовался вот такой штукой

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 у тебя как с учебой? Релизить свою глобальную задумку пока не готов?
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Injection 2015

Post by Juicy Fruit »

Диплом давно защитил, еще в конце января, в начале марта получил и свобода от этой фигни)
Но сейчас на работе завал, да и в реале дела.
Там еще несколько моментов нужно подправить и выяснить причину утечки памяти.
-=Tiger=-
Posts: 20
Joined: 2015-03-17 04:02:00

Re: Injection 2015

Post by -=Tiger=- »

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 реккомендуешь?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Injection 2015

Post by Mirage »

Машу каслом не испортишь :)
Я не люблю работать с журналом. :roll:
-=Tiger=-
Posts: 20
Joined: 2015-03-17 04:02:00

Re: Injection 2015

Post by -=Tiger=- »

Mirage wrote:Машу каслом не испортишь :)
Я не люблю работать с журналом. :roll:

Ну а так смотри за один круг цикла ты используешь 4 раза getserial и getdistance один раз, мне кажется это опасно) может ошибаюсь, все в зависимости от задержки внутри цикла.
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: Injection 2015

Post by Mirage »

по сути это простое сравнение цифр такое же как

Code: Select all

выполнять действие
пока 1<>0 или 2<>3

Чеклаг нужен несколько для другого. Если использовать чеклаг то в игре будет совершаться какое то действие - клик по бэкпаку, флуд в окне клиента, и чеклаг только от лага защитит. На сервере где я играю админ искусственно увеличивает паузу между перемещением предмета например. То есть предмет двигается не сферовые 300-350 мсек а около 600 мсек. Моя проверка учтет условия и подстроится даже под произвольную паузу потому что она проверяет именно присутствие предмета в паке персонажа.

ЗЫ пауза то ли 100 то ли 150. Не меньше 100 в общем.
ЗЗЫ Скрипт это просто пример для наглядности что из цикла можно выйти при выполнении определенного условия. И пауза будет минимальная. У меня проверка чуть чуть другая. Там даже больше условий прописано.
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: Injection 2015

Post by ZeroDX »

Самый скучный в мире разговор :lol:

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

PS А что за секретная глобальная задумка у Джуси Фрута? :roll:
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Injection 2015

Post by Juicy Fruit »

Версия 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 в данный момент, если запущена - ничего не произойдет, иначе - запустит скрипт в штатном режиме.
    - Улучшена стабильность инжекта.
Gatard
Posts: 62
Joined: 2013-05-17 10:38:53

Re: Injection 2015

Post by Gatard »

А в старой инже была закладка Layers как-то так, теперь ее нету? Как посмотреть, что надето на чаре?
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Injection 2015

Post by Juicy Fruit »

Это окошко покинуло инжект еще 1,5 года назад, ввиду неиспользуемости.
Что бы в нем корректно отображались названия предметов в слоях – необходимо получить их имя (клик на предмет), это нужно делать вручную.
Та и раз впервые за такой промежуток времени об этом поинтересовался только 1 человек – то оно и впрямь было лишним.
Если очень нужно – могу вернуть.

У кого–то наблюдаются какие–либо проблеммы с последним релизом?
VeL
Posts: 44
Joined: 2013-08-09 00:13:57

Re: Injection 2015

Post by VeL »

UO.FindList находит предметы не в том порядке в котором они прописаны через UO.AddFindList

ПС: если искать на земле то все норм., если искать в контейнере то находит не по списку
Gatard
Posts: 62
Joined: 2013-05-17 10:38:53

Re: Injection 2015

Post by Gatard »

в пвп, почти, не крашит! точнее функции в хоткеях не залипают. но теперь такое иногда.... примерно 4-5 часов не выключая инжект и играя по полной: картинки идут в порядку появления.
Attachments
2015_08_23_04_38_19_997.jpg
2015_08_23_04_38_19_997.jpg (63.47 KiB) Viewed 5103 times
2015_08_23_04_38_37_804.jpg
2015_08_23_04_38_37_804.jpg (54.88 KiB) Viewed 5103 times
2015_08_23_04_38_45_789.jpg
2015_08_23_04_38_45_789.jpg (17.9 KiB) Viewed 5103 times
beluga
Posts: 1
Joined: 2015-08-31 16:18:55

Re: Injection 2015

Post by beluga »

тут есть еще люди кто играет на ХП винде?
у меня на всех компах 1 проблема при команде массмув крашит. все вариации пробовал и с задержками и с настройками.
может есть секрет какой-то?
на старой и на 14 инже все ок.
спасибо.
Juicy Fruit
Posts: 820
Joined: 2011-06-11 19:54:23

Re: Injection 2015

Post by Juicy Fruit »

beluga wrote:тут есть еще люди кто играет на ХП винде?
у меня на всех компах 1 проблема при команде массмув крашит. все вариации пробовал и с задержками и с настройками.
может есть секрет какой-то?
на старой и на 14 инже все ок.
спасибо.
Только на ХР такое?
Проверял на 7 - все в порядке.
Включи галочку Verbose Logging, добейся краша и injection_log.txt в личку скинь ссылкой (при этом должен быть запущен только 1 клиент с инжектом, чтоб в логе не было лишнего мусора).
bad_dog
Posts: 10
Joined: 2015-07-20 15:00:23

Re: Injection 2015

Post by bad_dog »

Не показывало изображения регов и т.д. в заголовке окна при первом запуске, при следующих запусках просто крашится.
тоже самое на Injection_08_03_2015

при этих же настройках Injection_22_10_2014 работает

пысы: после перезагрузки компа все заработало, возможно это у меня проблема какая то)
Attachments
injection_log.txt
(16.94 KiB) Downloaded 501 times
Post Reply