Yoko

All sides of Injection
It is currently 2025-10-11 21:33:23

All times are UTC+02:00




Post new topic  Reply to topic  [ 19 posts ] 
Author Message
 Post subject: Время магии
PostPosted: 2006-06-28 03:41:51 
Offline

Joined: 2005-08-07 04:23:56
Posts: 44
Вобщем я снова со своим бредом лезу сюда. У нас на сервере при касте магии сообщается время каста. К сожалению оно указывается на 0,7 меньше чем спелл кастуется - проверял таким скриптиком.

Code:
sub counter()
var i, time
i=1
UO.DeleteJournal()
UO.Cast('Bless','self') #Поставьте сво спелл
While UO.Mana==UO.Int
           wait(50)
           i=i+1
     wend
wait(500)
Time=i/20
uo.TextOpen()
uo.TextPrint(str(time) + ' ' + 'second')
end sub


У меня такой вопрос - как сделать чтобы чар читал их журнала - определял ето самое время что говорится
Надпись: 'Время каста - 2.1 сек'
прибавлял к нему 0.7 секунд и естественно ждал 2.8 секунды. Просто хотелось бы чтобы чар мог распознать задержку на любой спелл. Буду весьма признателен в помощи, хоть и не смогу отблагодарить ничем кроме слов и вечного почёта )))


Top
   
PostPosted: 2006-06-28 09:56:14 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Sebastian wrote:
Надпись: 'Время каста - 2.1 сек'


Этот текст появляется в журнале? Тебе надо его ловить и ждать сколько указано плюс 0.7 сек?

1. После появления сообщения набери в клиенте
,showjournal 100
и проверь какая точно выскакивает мессага в журнале инжекта.

2. Проверь на разных кастах - не отличаются ли по структуре сообщения.

Если сообщения все одинаковые, отличается только время, то принцип такой:

Code:
VAR tmpmes, strtime, realtime
VAR commonmes = 'Время каста'   ; тут совпадающая часть фразы для всех кастов
UO.DeleteJournal()
...кастуем куда что надо...
repeat
   wait(100)
until UO.InJournal( commonmes )
tmpmessage = UO.Journal( UO.InJournal( commonmes ) - 1 )


теперь у тебя в tmpmessage нужная строка из журнала. Выдрать нужную часть можно функцией GetWord(), возьми ее в моей подписи в автолоаде или здесь на форуме, она много где есть... Это будет выглядеть так:

Code:
strtime = GetWord( tmpmessage, 4 )


теперь тебе надо преобразовать строку в число. Поэкспериментируй с val(), сможет ли она тебе преобразовать строку в вещественное число. Не помню. Если нет - ищи по форуму, когда-то где-то здесь были функции подходящие. Или напиши сам - тебе надо выловить точку в строке, разделить слева и справа от нее куски строки, преобразовать их в числа и соответствующим образом сложить потом. Ну и добавить 0.7, умножить на 1000 и ждать сколько получится командой wait()

_________________
Ни один скрипт не работает? Пора обновить Инжект...
Все работает, но хочется большего? Пора переходить на стелс...


Top
   
 Post subject:
PostPosted: 2006-06-28 10:42:02 
Offline
Sphere expert
User avatar

Joined: 2004-10-01 08:27:38
Posts: 1143
Location: Уфа
Простая проверка на UO.MANA уже видимо не в моде.
Просто перед кастом запомнить скока маны и палить в цикле что настанет раньше - физл или уменьшение маны.

Code:
var tmana
tmana = uo.mana
uo.deletejournal()
uo.cast('Имя кастуемого спела')
repeat
   wait(10)
until uo.injournal("The spell fizzles.") or uo.injournal("You lack") or uo.mana<tmana

_________________
Сделал дело - флуди смело !!!


Top
   
 Post subject:
PostPosted: 2006-06-28 13:11:49 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
;) Уж как минимум автор пронего не забыл;) Речь не об этом
из его скрипта не понятно чье время соответствет действительности. в журнале как я понимаю время меньше чем в реальности... но это как то еще и проверил через тот скрипт что он ему дал хз... по логике он должен был дать точное время;)


Top
   
 Post subject:
PostPosted: 2006-06-28 13:29:26 
Offline
Sphere expert
User avatar

Joined: 2004-10-01 08:27:38
Posts: 1143
Location: Уфа
Grin wrote:
;) Уж как минимум автор пронего не забыл;) Речь не об этом
из его скрипта не понятно чье время соответствет действительности. в журнале как я понимаю время меньше чем в реальности... но это как то еще и проверил через тот скрипт что он ему дал хз... по логике он должен был дать точное время;)

А зачем нужно время то ?
Важен результат. В данном случае каст.
Неврубаюсь зачем загонятся так ...

_________________
Сделал дело - флуди смело !!!


Top
   
 Post subject:
PostPosted: 2006-06-28 13:32:36 
Offline

Joined: 2005-08-07 04:23:56
Posts: 44
В том скрипте надо чтобы мана равна была инте.

В сотальном же есть просто много фич в инже которые не документированы - или я просто не нашол к ним документации. А атк как по образованию я далеко не програмист и с скриптингом имел дело ещё в далёёёкой школе, то приходится крутится в три раза больше. :shock:


Top
   
 Post subject:
PostPosted: 2006-06-28 13:42:56 
Offline
Sphere expert
User avatar

Joined: 2004-10-01 08:27:38
Posts: 1143
Location: Уфа
Sebastian wrote:
В том скрипте надо чтобы мана равна была инте.

В сотальном же есть просто много фич в инже которые не документированы - или я просто не нашол к ним документации. А атк как по образованию я далеко не програмист и с скриптингом имел дело ещё в далёёёкой школе, то приходится крутится в три раза больше. :shock:


В моём примере неважно скока у тебя маны изначально
равна она ИНТ или нет каст пройдёт нормально (если канечно маны достаточно для каста).

Тебе я так полагаю надо друг за другом кастать разные спелы ?

_________________
Сделал дело - флуди смело !!!


Top
   
 Post subject:
PostPosted: 2006-06-28 14:12:54 
Offline

Joined: 2005-08-07 04:23:56
Posts: 44
Да я пытаюсь сделать обкаст скрипт вот что было до )

Code:
sub upcast()
VAR Target='target'
   
uo.Print('Укажите цель: ')
uo.Exec('addobject target')
while uo.Targeting()
wait(100)
wend
wait (100)
uo.msg ("Обкастовываю чара - " +uo.GetName('target'))

     
         UO.DeleteJournal()
         UO.Cast('Bless', 'target')
         wait(2300)
         UO.DeleteJournal()
         UO.Cast('Strength', 'target')
         wait(2100)
         UO.DeleteJournal()
         UO.Cast('Cunning', 'target')
         wait(2100)
         UO.DeleteJournal()
         UO.Cast('Agility', 'target')
         wait(2300)

      uo.msg ("Чар - " +uo.GetName('target') +" полностью обкастован")
end sub


а вот что пытаюсь сделать и не выходит )) пишет парсерные ошибки


Code:
sub upcast()
VAR tmpmessage, strtime, realtime
VAR commonmes = 'Скорость каста:'
VAR Target='target'
UO.DeleteJournal()


   
   
uo.Print('Укажите цель')
uo.Exec('addobject target')
while uo.Targeting()
wait(100)
wend
wait (100)
uo.msg ("Обкастовываю чара - " +uo.GetName('target'))

     
         UO.DeleteJournal()
         UO.Cast('Bless', 'target')
         repeat
   wait(100)
until UO.InJournal( commonmes )
tmpmessage = UO.Journal( UO.InJournal( commonmes ) - 1 )
strtime = GetWord('tmpmessage', 4 )
wend

         
      uo.msg ("Чар - " +uo.GetName('target') +" полностью обкастован")
end sub


Sub GetWord( st, nom )
; (c) Edred
   VAR tmpst, i, dlin, kol = 0, start = 0
   dlin = len( st )
   For i=0 To dlin - 1
      If mid( st, i, 1 ) == ' ' OR i == dlin - 1 Then
         kol = kol + 1
         If kol == nom Then
            tmpst = mid( st, start, i - start )
            return tmpst
         Else
            While mid( st, i, 1 ) == ' '
               i = i + 1
            Wend
            If kol == nom - 1 Then
               start = i
            Endif
         Endif
      Endif
   Next
   tmpst = ''
   return tmpst
endsub



Top
   
 Post subject:
PostPosted: 2006-06-28 14:30:54 
Offline
Expert!
User avatar

Joined: 2006-02-25 21:48:38
Posts: 1032
Зачем тут пробелы после уо.мсг??
Code:
uo.msg ("Обкастовываю чара - " +uo.GetName('target'))
uo.msg ("Чар - " +uo.GetName('target') +" полностью обкастован")

_________________
DerMeister сейчас на нейрале!


Top
   
 Post subject:
PostPosted: 2006-06-28 15:01:07 
Offline
Expert!
User avatar

Joined: 2005-05-04 14:05:19
Posts: 2580
Location: Москва
Askaneli wrote:
Grin wrote:
;) Уж как минимум автор пронего не забыл;) Речь не об этом
из его скрипта не понятно чье время соответствет действительности. в журнале как я понимаю время меньше чем в реальности... но это как то еще и проверил через тот скрипт что он ему дал хз... по логике он должен был дать точное время;)

А зачем нужно время то ?
Важен результат. В данном случае каст.
Неврубаюсь зачем загонятся так ...

Речь идет отом что н ена всех шардах спел считается с кастованым после изменения маны! Не ясно чего он хочет...
Если с пел скастован после изменения то и твоего скрипта ему достаточно будет


Top
   
 Post subject:
PostPosted: 2006-06-28 22:28:19 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Askaneli wrote:
Простая проверка на UO.MANA уже видимо не в моде.


Тебе просто не попадались шарды, которые при физле каста снимают ману в том же количестве, как и при успехе каста.

Сравнивать же с Int вообще не корректно, так как Int может спокойно уменьшиться от вражеского каста.

_________________
Ни один скрипт не работает? Пора обновить Инжект...

Все работает, но хочется большего? Пора переходить на стелс...


Last edited by Edred on 2006-06-28 22:42:47, edited 1 time in total.

Top
   
 Post subject:
PostPosted: 2006-06-28 22:37:06 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Code:
VAR Target='target'
UO.DeleteJournal()


И на фига тебе эта локальная переменная? К тому же еще с именем, совпадающим с объектом? Чтобы легче было запутаться?

И зачем тут трешь журнал? Ты в нем до следующего стирания ничего не проверяешь.

Code:
wend 
wait (100)


Зачем здесь ждем?

Code:
strtime = GetWord('tmpmessage', 4 )
wend


strtime ты нигде не используешь. Wend лишний вообще, парного while к нему нет.

_________________
Ни один скрипт не работает? Пора обновить Инжект...

Все работает, но хочется большего? Пора переходить на стелс...


Top
   
 Post subject:
PostPosted: 2006-06-28 23:54:43 
Offline

Joined: 2005-08-07 04:23:56
Posts: 44
Вот когда я поиду изучать програминг хотябы на курсы и позанимаюсь месяцок - можешь спросить снова ))))) Ето все равно что тебя попросит со льда фигурку вырезать.


Top
   
 Post subject:
PostPosted: 2006-06-29 00:07:10 
Offline

Joined: 2005-08-07 04:23:56
Posts: 44
Немогу понять вообще (((


Top
   
 Post subject:
PostPosted: 2006-06-29 00:31:30 
Offline

Joined: 2005-08-07 04:23:56
Posts: 44
Вот что вышло с другой стороны.

Code:
sub upcast()
var tmana

   
uo.Print('Укажите цель: ')
uo.Exec('addobject target')
while uo.Targeting()
wait(100)
wend
uo.msg ("Обкастовываю чара - " +uo.GetName('target'))

     
tmana = uo.mana
uo.deletejournal()
UO.Cast('Bless', 'target')
repeat
   wait(10)
until uo.injournal("The spell fizzles.") or uo.injournal("You lack") or uo.mana<tmana 
tmana = uo.mana
uo.deletejournal()
UO.Cast('Strength', 'target')
repeat
   wait(10)
until uo.injournal("The spell fizzles.") or uo.injournal("You lack") or uo.mana<tmana       
tmana = uo.mana
uo.deletejournal()
UO.Cast('Agility', 'target')
repeat
   wait(10)
until uo.injournal("The spell fizzles.") or uo.injournal("You lack") or uo.mana<tmana       
tmana = uo.mana
uo.deletejournal()
UO.Cast('Cunning', 'target')
repeat
   wait(10)
until uo.injournal("The spell fizzles.") or uo.injournal("You lack") or uo.mana<tmana       

      uo.msg ("Чар - " +uo.GetName('target') +" полностью обкастован")
end sub


Но тем не менее хотелось бы понять как сделать вариант с читанием с журнала о времени. Так как инже требуется послекунды чтобы бросить следуюшши таргет с заклинанием на цель - а если бы оно знало время, то можно было ети пол секунды учесть заранее.


Top
   
 Post subject:
PostPosted: 2006-06-29 01:34:21 
Offline
Expert!

Joined: 2004-04-03 17:36:29
Posts: 2544
Location: Saint-Petersburg
Sebastian wrote:
Вот что вышло с другой стороны.


Не лучший скрипт. Если один из кастов сфизлит - скрипт просто продолжит кастовать следущие. А надо повторять этот каст, по идее.

_________________
Ни один скрипт не работает? Пора обновить Инжект...

Все работает, но хочется большего? Пора переходить на стелс...


Top
   
 Post subject:
PostPosted: 2006-06-29 02:02:08 
Offline

Joined: 2005-08-07 04:23:56
Posts: 44
Ето я заметил. только вот попытка сделать повторение при физле дала ужасные результаты.


Top
   
 Post subject:
PostPosted: 2006-06-29 05:41:32 
Offline
Sphere expert
User avatar

Joined: 2004-10-01 08:27:38
Posts: 1143
Location: Уфа
2Edred
У мня и не сравнивает с INT.

_________________
Сделал дело - флуди смело !!!


Top
   
 Post subject:
PostPosted: 2006-06-29 05:45:02 
Offline
Sphere expert
User avatar

Joined: 2004-10-01 08:27:38
Posts: 1143
Location: Уфа
Вот один из вариантов перекастовки в случае физла.
Ешо не мешало бы поставить проверку на количество маны и питьё бутылки ТМ ...
Code:
var tmana,flag
repeat
flag=1
tmana = uo.mana
uo.deletejournal()
uo.cast('Имя кастуемого спела')
repeat
   wait(10)
until uo.injournal("The spell fizzles.") or uo.injournal("You lack") or uo.mana<tmana
if uo.injournal("The spell fizzles.") then
flag=0
end if
until flag=1


_________________
Сделал дело - флуди смело !!!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 19 posts ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 7 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:  
Powered by phpBB® Forum Software © phpBB Limited