Page 1 of 2

Таймер

Posted: 2006-05-26 10:07:13
by Rijo
Как можно сделать тамймер на то что если скрипт ничего не делает, то он его бы запускал сначала. А то у меня действеие скрипта зависит от проверки сообщений в журнале. И если что то не так, то он подвисает и просто чар простаивает

Posted: 2006-05-26 10:45:28
by dmitrykit
nu dobavj schetchik kakojnibud'.. a potom cherez promezhutki vremeni proverjaj... esli neizmenilsja.. to zapuskaj ponovoj

Posted: 2006-05-26 11:20:44
by Scripts Writer
Динамическая пауза.

Code: Select all

k = 0
  while (k<50)
    wait(100)
    k = k + 1
  wend

Posted: 2006-05-26 11:46:45
by Rijo
А не могли бы вы пояснить как и куда именно вставить таймер.

Code: Select all

sub heal()
var frizheal = "You apply bandages but"
var hil = "You put bloody"
var bloodbandage = 0x0E20
var bandage = 0x0E21
var Sunduk = '0x40000FE8'
var DoborBintov = 1
var DoborRegov = 1


while not uo.Dead()
if DoborBintov == 1 then
  DoborBintov()
end if
  if uo.Count('0x0F0B') == 0 then
    MakeRefresh()
  end if
  if uo.Life < uo.Str then
    bandageself()   
  else
    ClickNaUlej()
  end if
wend
end sub
######################################################################################################
sub DoborBintov()
if uo.count('0x0E20') >= 100 then
  uo.findtype('0x0E20', '-1', 'backpack')
  if uo.getquantity('finditem') >= 60 then
    uo.moveitem('finditem', '100', '0x40000FE8')
    wait(700)
  endif
end if
if uo.count('0x0E21') < 1000 then
  uo.findtype('0x0E21', '-1', '0x40000FE8')
  if uo.getquantity('finditem') >= 60 then
    uo.moveitem('finditem', '100', 'my')
    wait(700)
  else
    uo.print( 'Áèíòû â ñóíäóêå êîí÷èëèñü!' )
    return
  endif
end if
end sub
######################################################################################################
sub DoborRegov()
uo.findtype('0x0F7A', '-1', '0x40000FE8')
if uo.getquantity('finditem') >= 60 then
  uo.moveitem('finditem', '150', 'my')
  wait(700)
endif
end sub
######################################################################################################
sub bandageself()
if UO.Stamina < 30 then
  uo.UseType('0x0F0B')
end if
uo.exec('bandageself')
uo.DeleteJournal()
repeat
  wait(100)
until uo.InJournal("You apply bandages but") or uo.InJournal("You put bloody")

end sub
######################################################################################################
sub ClickNaUlej()
var ulej = 0x091A
repeat
 UO.UseFromGround(ulej)
 wait(100)
until uo.Life < (uo.Str - 10)

end sub
######################################################################################################
sub MakeRefresh()
var garlick='0x0F7A'

if uo.bp  < 150 then
  DoborRegov()
end if


while not uo.Count('0x0F0B') == 112 #
  uo.WaitMenu('What sort of potion do you want to','Refresh')
  uo.UseType(garlick)
  uo.DeleteJournal()
  repeat
    wait(100)
  until uo.InJournal("mes1") or uo.InJournal("mes")
wend
end sub

и поясните пожалуста основной принцип действия таймера

Posted: 2006-05-26 11:54:34
by DerMeister =)
You Must Die wrote:Динамическая пауза.

Code: Select all

k = 0
  while (k<50)
    wait(100)
    k = k + 1
  wend


Хуясе... а где тут "динамика"? :wink:

Re: Таймер

Posted: 2006-05-26 11:56:48
by DerMeister =)
Rijo wrote:Как можно сделать тамймер на то что если скрипт ничего не делает, то он его бы запускал сначала. А то у меня действеие скрипта зависит от проверки сообщений в журнале. И если что то не так, то он подвисает и просто чар простаивает


В каком случае ону тебя ничего не делает? И зачем сначала запускать? Сделай просто "вечный" цикл и фсё :wink:

Posted: 2006-05-26 12:02:08
by DerMeister =)
Rijo wrote:

Code: Select all

...
repeat
 UO.UseFromGround(ulej)
 wait(100)
until uo.Life < (uo.Str - 10)
...


Фпятёрке... :mrgreen:

ЗЫ: Каким образом он может "ничего не делать?" Этоже скрипт на прокачку... [/quote]

Posted: 2006-05-26 12:02:29
by Rijo
Допустим чар наложил на себя бинт и ждет пока в журнале не появится сообщага о том положен ли бинт или нет

Code: Select all

repeat 
  wait(100)
until uo.InJournal("You apply bandages but") or uo.InJournal("You put bloody")

вот типа что то этого. А скрипт и так вечный :). Ну смысле пока выполняются все условия

Posted: 2006-05-26 12:03:13
by Rijo
DerMeister =) wrote:
Rijo wrote:

Code: Select all

...
repeat
 UO.UseFromGround(ulej)
 wait(100)
until uo.Life < (uo.Str - 10)
...


Фпятёрке... :mrgreen:

ЗЫ: Каким образом он может "ничего не делать?" Этоже скрипт на прокачку...
[/quote]
а тут то что не так? :)

Posted: 2006-05-26 12:09:58
by DerMeister =)
1) Если ты имеешь ввиду ситуацию, когда сообшения о хеле не приходят, то используй счётчик:

Code: Select all

var schetchik=0
repeat
 schetchik=schetchik+1
  wait(100)
until uo.InJournal("You apply bandages but") or uo.InJournal("You put bloody") or schetchik >200

Принцип работы: даже если сообщения (You apply bandages but и You put bloody) по каким либо причинам не появятся, то счётчик выведет из цикла (условие выхода: schetchik >200 ) Число подстрой под себя...

2)
Rijo wrote:а тут то что не так?

wait(100) :wink:
У тебя не лагает? Или это так специально задумано 100мс задержка?

Posted: 2006-05-26 12:15:36
by Rijo
Rijo wrote:а тут то что не так?

wait(100) :wink:

У тебя не лагает? Или это так специально задумано 100мс задержка?

нет не лагает, специально поставил такую паузу чтобы инжект не потерял случайно сообщагу :). Все равно теряет[/quote]

Posted: 2006-05-26 12:23:38
by DerMeister =)
Rijo wrote:
Rijo wrote:а тут то что не так?

wait(100) :wink:

У тебя не лагает? Или это так специально задумано 100мс задержка?

нет не лагает, специально поставил такую паузу чтобы инжект не потерял случайно сообщагу :). Все равно теряет
[/quote]
Да я не про это (тут всё правильно :wink: ), я пр вот этот цикл:

Code: Select all

repeat 
 UO.UseFromGround(ulej)
 wait(100)
until uo.Life < (uo.Str - 10)

Posted: 2006-05-26 12:25:58
by DerMeister =)
Rijo wrote:нет не лагает, специально поставил такую паузу чтобы инжект не потерял случайно сообщагу :). Все равно теряет


Не может он её терять! Если сервер присылает то потеря не возможна!
Совет попробуй соощения "упростить, напимер вместо "You apply bandages but" попробуй просто "bandages"...

Posted: 2006-05-26 12:41:38
by Rijo
Ну в принципе упростил как ты посоветовал. Ща посмотрим как будет работать.
Ну и получилось примерно так

Code: Select all

sub bandageself() 
var schetchik=0
if UO.Stamina < 30 then
  uo.UseType('0x0F0B')
end if
uo.exec('bandageself')
uo.DeleteJournal()
repeat
  schetchik=schetchik+1
  wait(100)
until uo.InJournal("bandages but") or uo.InJournal("bloody")  or schetchik >300
end sub

может че неправлень сделал. На всякий случай выложил сюда

Posted: 2006-05-26 12:46:01
by Rijo

Code: Select all

repeat 
 UO.UseFromGround(ulej)
 wait(100)
until uo.Life < (uo.Str - 10)

ну а тут я собсно не понял что тебя удевило :). Он у меня раза 3-4 тыкает на улей и и потом лечится до тех пор пока uo.Life = uo.str

Posted: 2006-05-26 12:58:09
by DerMeister =)
Rijo wrote:

Code: Select all

repeat 
 UO.UseFromGround(ulej)
 wait(100)
until uo.Life < (uo.Str - 10)

ну а тут я собсно не понял что тебя удевило :). Он у меня раза 3-4 тыкает на улей и и потом лечится до тех пор пока uo.Life = uo.str

Да мне просто интересно как он у тебя 10 раз в секунду будет хуярить по улью... серв с ума не сходит??? :wink:

Posted: 2006-05-26 14:27:34
by Rijo
Ну ты сам потыкай мышкой по улью, ты не намного дольше будишь это делать. А вообще на пилоте такую же задержку ставишь, замыкаешь в цыкл и черз секунду у тебя мертвый чар, если в цыкле ничего не проверятеся :)

Posted: 2006-05-26 14:32:12
by DerMeister =)
Значит ты счастливый и на твоёт шарде нету проверки на скорость юзания обекта =)

Posted: 2006-05-26 14:37:06
by No More Lies
Ну почему сразу счастливый то.. :lol:

Posted: 2006-05-26 15:43:04
by Rijo
DerMeister =) wrote:Значит ты счастливый и на твоёт шарде нету проверки на скорость юзания обекта =)

У вас на шарде появляется какоето предупреждение, если ты используешь объект слишком часто? Или за это просто банан сразу лепят? :)