Yoko

All sides of Injection
It is currently 2025-10-28 13:31:20

All times are UTC+02:00




Post new topic  Reply to topic  [ 589 posts ]  Go to page Previous 112 13 14 15 1630 Next
Author Message
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 20:46:45 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
1403.10

Список изменений:
    - Убрано ограничение на кол-во символов в Original Text в диалоге Replaces
    - Исправлено сохранение Replaces. Для корректной замены кастов необходимо в Original Text ставить пробел после текста каста
    - Изменено действие Nearest для комманд uo.FindType и uo.FindList. При Nearest равном -1 производится поиск по всему списку предметов, при удачном поиске в finditem и в return_value будет самый ближайший к персонажу предмет (при поиске на земле)
    - Исправлено изменение разрешения игрового окна УО. Теперь клиент запускается без ошибок и разрешение устанавливается согласно заданным параметрам
    - Исправлен краш на стадии входа в игру (при закрытии клиента на окне выборе сервера или выбора персонажа)
    - _msg работает с русским текстом (заглавные и прописные)
    - Исправлена работа Clear Memory. Теперь мир чистится правильно и без ошибок
    - Основная часть галок с вкладки Main собрана в отдельный список (пока только список)
    - Добавлена галка Linked Logs. При включенной галке на стадии входа в игру создает файл в папке %injection%\logs\log_%account%_%data%(%time).txt и пишет лог туда отдельно для каждой сессии. Включение/выключение этой галки уже в игре ни к чему не приведет, актуальна только до начала коннекта к серверу.
    - Исправлена работа Notoriety в коммандах uo.FindType и uo.FindList. Если кто-то обнаружил проблеммы с ней - забудьте.
    - Добавлен параметр Nearest в комманду uo.FindMan([Notoriety],[Distance],[Nearest]). Работает аналогично uo.FindType и uo.FindList. Так же исправлена Notoriety
    - На вкладке Skills кнопка Reset переименована в Refresh, удалена кнопка Req
    - Добавлена функция uo.InJournalBetweenTimes(Text,StartTime,[EndTime],[MaxLines/IgnoreCase])
    осуществляет поиск текста Text (фраза/набор фраз разделенных | ) в журнале за время от StartTime до EndTime
    Если EndTime не указано - берется текущее время
    MaxLines - количество строк в журнале, в котором производить поиск. Если указано -1 то поиск ведется без учета регистра
    Изменено время сообщения в журнале. Раньше оно сохранялось как Now()/100, теперь же просто Now(). Что повлекло изменения в uo.JournalTimer() если кто-то пользовался ею - обратите внимание.
    В Script.dll добавлена функция Now() - возвращает текущее время в мс. Вызывается без UO.*
    - Добавлены комманды:
    - uo.AddIgnoreList(ListName,Graphic,[Color]) - добавить тип,[цвет] в список игнорируемых типов с названием ListName
    - uo.DeleteIgnoreList(ListName,Graphic,[Color]) - удалить тип,[цвет] их списка игнорируемых типов с названием ListName
    - uo.ClearIgnoreList(ListName) - очистить игнорируемый список типов с названием ListName
    - uo.SelectIgnoreList(ListName) - выбрать игнор-лист для использования в коммандах uo.FindType и uo.FindList
    Если список не выбран - комманды поиска не будут игнорировать указанные в нем типы
    Для выключения списка игнора достаточно вызвать uo.SelectIgnoreList(-1) - тогда поиск будет производиться без учета игнор-листа
    uo.SelectIgnoreList можно вызвать 1 раз (в том же автостарте) и он будет учитываться поисковиками пока не выбрать другой список или не отключить список
    - Добавлена локализация Лаунчера и Инжекта. Файл с русским текстом прилагается


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 21:11:13 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Ой, еще же нужно было и
Quote:
WaitJournalLine

function WaitJournalLine(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean

ожидание появления строки в журнале

_________________
CodeSweeper


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 21:23:58 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Incorrect User wrote:
Ой, еще же нужно было и
Quote:
WaitJournalLine

function WaitJournalLine(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean

ожидание появления строки в журнале

А чем это хуже?)
Juicy Fruit wrote:
- Добавлена комманда uo.WaitingForJournalText(MaxDelay,Text,[Equals],[IgnoreCase],[SkillName/ObjectID])
Работает по принципу uo.WaitingForMenu()
MaxDelay - время в мс за которое должно появиться сообщение
Text - текст, или наборы текста, разделенные символом "|"
Equals - 0 - поиск фрагмента в пришедшем сообщении, 1 - точное соответствие строк (стандартно 0)
IgnoreCase - 0 поиск с учетом регистра, 1 - поиск без учета регистра (стандартно 0)
SkillName/ObjectID - название скилла или ИД объекта для использования (если требуется)


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 21:27:01 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Не указывается время с которого начинать ждать. В этом случае не нужна очистка журнала в общем.

_________________
CodeSweeper


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 21:30:33 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
А uo.InJournalBetweenTimes тогда на что оО?
Проверить наличие в журнале через uo.InJournalBetweenTimes, если нет - то uo.WaitingForJournalText с текущего момента.


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 21:32:29 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
ненене, ты ен писал в стелсе мининг например? вот как все происходит
Code:
repeat
   starttime:=Now;   
      Waittargettile('1341',i,j,mz);
      Usetype($0E85);
      WaitJournalLine(starttime,allmsg,10000);
until injournalbetweentimes(endmsg,starttime,now);

_________________
CodeSweeper


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 21:34:05 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
То есть нам больше не нужно ни timer = uo.timer() + 10 и until uo.injournal(msg) or uo.timer() > timer и очистка журнала не нужна и тд и т.п

_________________
CodeSweeper


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 21:39:03 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Incorrect User wrote:
ненене, ты ен писал в стелсе мининг например? вот как все происходит
Code:
repeat
   starttime:=Now;   
      Waittargettile('1341',i,j,mz);
      Usetype($0E85);
      WaitJournalLine(starttime,allmsg,10000);
until injournalbetweentimes(endmsg,starttime,now);

У меня работало и так
Code:
      Usetype($0E85);
      WaitJournalLine(Now,allmsg,10000);
Задержки между вызовами функций нет, а пакет от сервера приходит через несколько мс после запроса +время на прием и отправку таргета и если руды там нет то и ответное сообщение.
Твой вариант правильный по логике, но по факту можно и просто юзануть эту функцию после юза кирки/лопаты без временной переменной.


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 21:47:08 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Code:
   uo.useobject(0x400906F2)
   uo.print(str(uo.WaitingForJournalText(200,'reach that')))
Сейчас проверил на объекте, до которого не может достать. 15/15 выдало что фраза получена)
В таких случаях можешь пока мою функцию заюзать, потом допилю туда старттайм.


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 21:50:48 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
А я как-то забыл про это все, помню что только удобно было, в прошлом году весной еще этот сьелс пытались пд ми потребности настроить с игорем, так как инжа падала со страшной силой, но так и ничего не вышло. получаетсянужно не только время starttime но и время сколько ждать сообщения. и уже забываем про всякие уотаймеры и очистки журнала. Макс делай это оно и есть я так понял.

_________________
CodeSweeper


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 21:58:38 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
На ближайшие недели 2-3 остановлю разработку, буду бороться с виндовскими ошибками.
Если что-то будет для фиксов за неделю - на выходных поправлю и выложу фиксы.


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 22:23:53 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Incorrect User wrote:
Кстати, сытость чара как-то можно узнать?
Только если сервер пришлет тебе это значение, а в пакетах не приходит.
Можно анатомию, или анимал лор заюзать на себя, или какой там скилл показывает на сколько сыт персонаж, смотреть на это сообщение и узнавать нужно ли тебе есть или нет, но это извращение)


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-10 23:44:26 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Ну что же, отлично, ждем продолжения. Ах да, еще напомню про реконнектор, опционально, если собирались такое делать, с запуском последнего скрипта.

_________________
CodeSweeper


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-11 00:40:49 
Offline

Joined: 2013-08-09 00:13:57
Posts: 44
Incorrect User wrote:
Ой, еще же нужно было и
Quote:
WaitJournalLine

function WaitJournalLine(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean

ожидание появления строки в журнале

Для полного счастья добавить FoundedParamID как в стелсе и неплохо было бы в скриптовый движок добавить оператор case )))


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-11 05:53:07 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
VeL wrote:
Incorrect User wrote:
Ой, еще же нужно было и
Quote:
WaitJournalLine

function WaitJournalLine(StartTime : TDateTime; Str : String; MaxWaitTimeMS : Integer) : Boolean

ожидание появления строки в журнале

Для полного счастья добавить FoundedParamID как в стелсе и неплохо было бы в скриптовый движок добавить оператор case )))

FoundedParamID - что это?)
Про case давно запланировано, но в скрипт.длл пока вломец что-то лезть.


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-11 06:57:44 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Quote:
FoundedParamId

FoundedParamId

в результате работы функций WaitJournalLine, InJournal, и им подобных функций при удачном нахождении заполняются поля типа LineID, LineType, LineTime и прочие. к ним добавил FoundedParamID.

например в поиск дается строка типа 'create|make|destroy|already'

обнаружена строка со словом destroy.

тогда в FoundedParamID будет число 2 (счет от нуля).

нашлось бы create - было бы ноль.

Только не знаю зачем оно вообще нужно :wink:

_________________
CodeSweeper


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-11 07:20:40 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
А, удобно.
Например, тот же скрипт на мининг.
Ищешь в журнале сообщения о физле, о том что выкопал что–то, о том что нет руды, слишком далеко, не тайл пещеры и тд, в соответствии с мсг делаешь вывод что делать дальше: перейти на другой тайл, повторить, подойти ближе...
Это как пример. Мне для тайминга это необходимо было давно, обход мессаг от игроков о фэйле тайминга, выкрик в чат тех же самых мессаг и сам тайминг, который не реагирует на эти сообщения)


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-11 07:28:24 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
Так что там обходить? Нужно просто проверять наличие в сообщении что пришло ":" и все, если : нету значит не человек его написал. А эта функция кака тебе в этом поможет я не понимаю.

_________________
CodeSweeper


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-11 07:36:00 
Offline

Joined: 2011-06-11 19:54:23
Posts: 820
Дык, так и помогала, у меня просмотр журнала был в отдельной функции, которая возвращала определенный номер в зависимости от сообщения которое нашла.
Приходилось расписывать для каждой группы сообщений свои условия. С этим параметром можно будет сразу же получать это число.
И там в тайминге фэйл у перса над головой вроде писался, не помню, появлялось там : или нет, но свои заморочки с этим были.
Можно по uo.JournalSerial смотреть систем чат это или игрок сказал что–то.


Top
   
 Post subject: Re: Injection 2014 !
PostPosted: 2014-03-11 08:05:44 
Offline

Joined: 2011-05-23 00:33:30
Posts: 949
И как это будет выглядеть? Например есть
Code:
            repeat
               uo.deletejournal(msg)
               uo.waittargettile(-1, uo.getx() + x, uo.gety() + y, uo.getz())
               uo.usetype("0x0E85")
               waittime = uo.timer() + 100
                  wait(100)
               until uo.dead() or uo.injournal(msg) or uo.timer() > waittime
            until uo.injournal("too far away|no ore here|have no line|mining in rock")

А будет так что ли? В любом случае шило на мыло.
Code:
            repeat
               uo.deletejournal(msg)
               uo.waittargettile(-1, uo.getx() + x, uo.gety() + y, uo.getz())
               uo.usetype("0x0E85")
               waittime = uo.timer() + 100
                  wait(100)
               until uo.dead() or uo.injournal(msg) or uo.timer() > waittime
            until FoundedParamId == 2 or FoundedParamId == 6 or FoundedParamId == 10

_________________
CodeSweeper


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 589 posts ]  Go to page Previous 112 13 14 15 1630 Next

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited