Page 1 of 1

Помогите с хылингом.

Posted: 2008-10-23 21:30:47
by t1m3

Code: Select all

sub main()
while not uo.dead()
uo.useobject("0x40573DCA")
wait(100)
uo.bandageself()
wait(3000)
else
if uo.stamina>50 then
uo.usetype("0x0f0b")
wait(100)
wend
endif
end sub


Вообщем, жмёт 2 раза на пчелы и хилетса, хилинг проходит и пищет что проблема в 16 строке, ну там такой нету....

Вообщем, мне надо чтоб он 2раза кликал на пчелы и сразу же похилил себя и так по кругу... Как стамина 50, так пьёт бутилку.

Posted: 2008-10-24 17:02:43
by Millerbeer
else убери из скрипта, а зачем пить бутылку, когда стама > 50, ты типа в полиморфе? И wend и endif местами поменяй.

Posted: 2008-10-24 21:13:46
by $!@m
Есть такая штука, называется табуляция. Помогает сделать скрипт с красивыми отступами. Если непонятно, как это делать, найди в приписке у Дестра (вроде).

Обьясню как отступаю я:

Code: Select all

repeat
   ****
until

while
   ****
wend

if
   ****
else
   ****
end if


Так вот. Кроме того, что скрипт становится нормальночитаемым, это позволяет выявлять незакрытые/неоткрытые цыклы/ифы. Попробуй проставить всвоем скрипте, сразу увидишь траблу.

Posted: 2008-10-24 21:50:49
by t1m3
$!@m wrote:Есть такая штука, называется табуляция. Помогает сделать скрипт с красивыми отступами. Если непонятно, как это делать, найди в приписке у Дестра (вроде).

Обьясню как отступаю я:

Code: Select all

repeat
   ****
until

while
   ****
wend

if
   ****
else
   ****
end if


Так вот. Кроме того, что скрипт становится нормальночитаемым, это позволяет выявлять незакрытые/неоткрытые цыклы/ифы. Попробуй проставить всвоем скрипте, сразу увидишь траблу.


Большое СПАСИБО.

Posted: 2008-10-24 22:16:04
by Destruction
Приписку смотреть ниже -)

Posted: 2008-10-28 23:17:55
by t1m3
Что-то у меня не так получилось :(

Code: Select all

sub main()
   while not uo.dead()
      uo.useobject("0x40573DCA")
      wait(100)
      uo.bandageself()
      wait(3000)
      if uo.stamina>50 then
         uo.usetype("0x0f0b")
         wait(100)
      wend
   endif
end sub



Он стаминку пьет не при стамине 50 а через каждый бынт.

Стаминку пьем потому, чтоб бистрее хилелся, это на оскоме, чем болще стамина, тем бистрее бинт проходет.

Posted: 2008-10-28 23:20:19
by Destruction
Надо будет как-нибудь выравнивалке добавить чуть-чуть интеллекта... Вообще оно для расставления отступов писалось, а не для дебага скриптов -)

Вы вообще считаете нормальным закрывать if - wend'ом, а while - endif'ом? ;-)

Posted: 2008-10-29 22:28:12
by t1m3
Destruction wrote:Надо будет как-нибудь выравнивалке добавить чуть-чуть интеллекта... Вообще оно для расставления отступов писалось, а не для дебага скриптов -)

Вы вообще считаете нормальным закрывать if - wend'ом, а while - endif'ом? ;-)



Я поменял их местами, ну всё же... та-же проблема, можем можете конкретнее помоч, что и как сделать, чтоб он пил бутилку, когда стамина 50?

Posted: 2008-10-29 23:39:30
by $!@m
Извините за вц, но сцук, неужели это так сложно проследить ход своих мыслей и выложить их в форме скрипта?

Достало, пишу чуть ли не учебник.

Code: Select all

sub STUPIDHealing()
end sub

Написали тело скрипта.

Цикл должен работать пока чар не умрет, добавим:

Code: Select all

sub STUPIDHealing()
repeat #повторять тело цикла
until UO.Dead(); # пока не подохнем
end sub


Теперь надо бы написать идеологию бинтования. Варианта 2: если стамина больше 50 то бинтуемся, а если нет, то пьем банку.

Code: Select all

sub STUPIDHealing()
repeat; #повторять тело цикла
   if UO.Stamina()>50 then #если стамы больше 50, то:
      *;бинтуемся, допишем потом, но отступ не забываем уже сейчас;
   else #ИНАЧЕ
      *;тут будет питье банок, отступ сделали;
   end if; #а это КОНЕЦ проверки;
until UO.Dead(); # пока не подохнем
end sub


И вписываем бинты и стамину, заодно ожидания:

Code: Select all

sub STUPIDHealing()
repeat #повторять тело цикла
   if UO.Stamina()>50 then #если стамы больше 50, то:
      UO.Bandageself();бинтуемся, отступ не забываем;
      wait(3000)
   else #ИНАЧЕ
      UO.UseType('0x0f0b');банки, отступ сделали;
      wait(100)
   end if; #а это КОНЕЦ проверки;
until UO.Dead(); # пока не подохнем
end sub


Вроде и пашет, да криво. Почему? да просто ожидание на бинты 3500, если в это время пройдет сейв, скрипт его не заметит, и будет пытаться что-то делать. Поправить надобно. Как человек различает время на бинт? Не по секундам, а смотрит пока не будет надписи на экране. Ну вот скажем скрипту смотреть журнал, туда это записывается.

Code: Select all

sub STUPIDHealing()
repeat #повторять тело цикла
   if UO.Stamina()>50 then #если стамы больше 50, то:
      UO.Bandageself();бинтуемся, отступ не забываем;
##################################### вот она, динамическая пауза бинтов
      UO.DeleteJournal('barely|bloody'); #удалим из журнала строки, в которых упоминаются слова barely и bloody. Чтоб потом отреагировать на их появление.
      repeat ##################повторяем
         wait(500);###############ожидание по 500 мс
      until UO.InJournal('barely|bloody');# до тех пор, пока в журнале не появятся пресловутые слова.
##################################### а вот ее конец
   else #ИНАЧЕ
      UO.UseType('0x0f0b');питье банок, отступ сделали;
      wait(100)
   end if; #а это КОНЕЦ проверки;
until UO.Dead(); # пока не подохнем
end sub


Вот оно, на палке в шоколаде:

Code: Select all

sub STUPIDHealing()
repeat
   if UO.Stamina()>50 then
      UO.Bandageself();
      UO.DeleteJournal('barely|bloody');
      repeat
         wait(500);
      until UO.InJournal('barely|bloody');
   else
      UO.UseType('0x0f0b');
      wait(100)
   end if;
until UO.Dead();
end sub

Posted: 2008-10-30 10:06:53
by Destruction
Ну, это далеко не шоколад ;-)
UO.DeleteJournal('barely|bloody');
http://yoko.com.ua/help/help.php?lang=r ... eteJournal
нема у этой функции аргументов, нема..

Кроме всего прочего - стоит скрипт разок запустить, то оно будет выпивать по 10 банок в секунду, пока персонаж не устанет или не окочурится.. А он от такого количества выпивки точно окочурится -)