Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Памажите с бланками :)

тут можно задать вопрос по скриптингу
Vladislav
Posts: 4
Joined: 18.11.2006 2:04

Памажите с бланками :)

Post by Vladislav »

сабж такого рода
есть скрипт на бланки

Code: Select all

sub main()
var tintools='0x1ebc',log='0x1bdd',where_x,where_y,timer
uo.getx()
uo.gety()
where_x=uo.getx()
where_y=uo.gety()
while uo.count(log)>10 and uo.getx()==where_x and uo.gety()==where_y
uo.deletejournal()
uo.exec("waitmenu 'like to make' 'Paper items' 'like to make' 'Blank Scroll'")
uo.waittargettype(log)
uo.usetype(tintools)
timer=0
repeat
wait(500)
timer=timer+1
if timer>16 then
#okay - uo.lclick(56,85)
#cancel - uo.lclick(131,85)
uo.lclick(131,85)
wait(100)
endif
until uo.injournal('finished') or uo.injournal('stop')
wend
uo.exec('terminate bs')
uo.say(' sub bs terminated')
end sub
Такого рода :) можно ли его переделать под стелс? шард - зулуотель :) Облегченный какой-нибудь вариант чтоли.. что б он, пока есть логи в паке калбасил бланки в нужный контейнер (ибо не стакуются в основном при крафте).

Заранее спасибо, Владислав.
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

http://stealth.od.ua/forum/viewtopic.php?t=691

Скрипт номер 2, приспособь под свой шард и все.
Vladislav
Posts: 4
Joined: 18.11.2006 2:04

Post by Vladislav »

Edred wrote:http://stealth.od.ua/forum/viewtopic.php?t=691

Скрипт номер 2, приспособь под свой шард и все.
Видел. Спасибо за помощь. В программинге я 0. Из 20 строчек, может быть, смог бы ещё поправить чего. Из 12к, извените. Полный лох.

Всё равно, спасибо. Хоть за ответ.
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Vladislav wrote:Видел. Спасибо за помощь. В программинге я 0. Из 20 строчек, может быть, смог бы ещё поправить чего. Из 12к, извените.
Каких-таких 12к? :shock: Там весь скрипт меньше сотни строк, а главная процедура, которую тебе и надо (а может и не надо вообще) править под себя - вообще строк 20. Те самые, которые ты умеешь править. Функции-то зачем править? Они отвечают за взятие ресурсов и сбрасывание скрафченного, тут все просто и ничего править вообще нет необходимости.
SLAK
Novice
Novice
Posts: 65
Joined: 15.01.2006 3:20

Post by SLAK »

Edred wrote: которую тебе и надо (а может и не надо вообще)
Чел играет на ZHI, названия крафт-меню одинаковы на нескольких вложениях... (Миралакс там случаем не добавил как в инже : waitmenu('1','1','2','1')? и так далее)... сам он врядле переделает!
Я обхожу это подобным корявым способом:

Code: Select all

procedure Tink;
begin
waitconnection(5000);
 while count(pickaxe)=0 do begin
       CancelMenu;
       WaitTargetType(ingots);
       usetype(TinkTools,$ffff);
       WaitMenu('What','(first)');
       wait(5000);
       WaitMenu('What','Shovel');
       wait(10000);
 end;
end;
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

SLAK wrote:Чел играет на ZHI, названия крафт-меню одинаковы на нескольких вложениях... (Миралакс там случаем не добавил как в инже : waitmenu('1','1','2','1')? и так далее)...
Нельзя быть таким ленивым. В этом же разделе, прилепленная тема, там все перечислено.

Конечно же, уже есть такая возможность. И в вайтменю, и в аутоменю. Причем даже больше возможностей чем в инжекте.
Работа с меню:

WaitMenu (Promt, Choice : String) - Установка ловушки на меню с названием Promt и выбор позиции Choice.
AutoMenu (Promt, Choice : String) - Тоже что и WaitMenu, только ловушка многоразовая.
CancelMenu - Отменяет все установленные ловушки.

Choice может быть задано одним из специальных указателей:
'(номер)' - Выбрать Choice с указанным номером.
'(first)' - Выбрать первый Choice.
'(last)' - Выбрать последний Choice.
'(random)' - Случайный выбор Choice.
'(cancel)' - Отмена меню.

Prompt может быть специальным указателем:
'(any)' - Ловушка будет срабатывать на любое меню, в случае, если Choice подходит по критериям.

В отличии от обычных MENU-ловушек, специальные указатели выбора не чувствительны к регистру.
SLAK
Novice
Novice
Posts: 65
Joined: 15.01.2006 3:20

Post by SLAK »

[quote="Edred"][/quote]
Дык я об нескольких вложениях, А не о замене стринга его порядковым номером :wink:
Тоесть название меню всегда : what ...?
В инже было бы так, например:

Code: Select all

uo.waitmenu('What','(1)','What','(5)')
Стелс на аналогичное матюкается :wink:
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

В стелсе только одна пара в команде меню. Я понял проблему, но, имхо, она пока на стелсе нерешаема. По крайней мере, в той формулировке, как ее описал ты. А если смотреть на приведенный выше скрипт, то:

uo.exec("waitmenu 'like to make' 'Paper items' 'like to make' 'Blank Scroll'")

Прекрасно можно трансформировать в:

Code: Select all

WaitMenu( '(any)', 'Paper items');
WaitMenu( '(any)', 'Blank Scroll');
Miralex
Developer
Developer
Posts: 656
Joined: 11.03.2005 19:12
Contact:

Post by Miralex »

Если вызвать 2 такие строчки подряд, то вторая ловушка автоматически заменит первую (Prompt у них одинаковый).
Наверняка перед выскакиванием менюшки - сервер пишет что-то типа Select трали вали. Вот по журналу можно определять что он именно хочет и вешать соответствующую ловушку.
SLAK
Novice
Novice
Posts: 65
Joined: 15.01.2006 3:20

Post by SLAK »

Miralex wrote:Если вызвать 2 такие строчки подряд, то вторая ловушка автоматически заменит первую (Prompt у них одинаковый).
Наверняка перед выскакиванием менюшки - сервер пишет что-то типа Select трали вали. Вот по журналу можно определять что он именно хочет и вешать соответствующую ловушку.
В своем первом посте этого топика - я уже указал как я это обхожу.. Знаю способ связанный с месагами как на этом конкретном шарде зделать с проверкой на месагу... Но проблема актуальна (играл на шарде где никаких намёков на журнал нету) и я помню , что тебя не первый раз просят сделать как в инжекте... Посему и я прошу это учесть в разработке новых версий :wink:
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

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

То есть нужны две новые команды: MenuPresent, TargetToMenu. Действие аналогично TargetPresent и TargetToObject.
SLAK
Novice
Novice
Posts: 65
Joined: 15.01.2006 3:20

Post by SLAK »

[quote="Edred"][/quote]
Тоже неплохой вариант, но реализовывать Миралексу. Так что: поживём - увидим.
DerMeister
Novice
Novice
Posts: 54
Joined: 19.11.2006 17:35

Post by DerMeister »

Ситуация такая: исходное меню и подменю называются одинаково: What would you like to make
А мне нужно пролезть на второй уровень меню, тоесть в инжекте это выглядело бы так: uo.waitmenu('make','Armors','make','Breastplate')

Могу ли я на стелсе, сделав разный Promt, ухитриться так, чтобы при появлении меню What would you like to make срабатывала тока одна ловушка, при том что оба Promt'а содержутся в названии меню?

Code: Select all

WaitMenu( 'What', 'Armors'); 
WaitMenu( 'make', 'Breastplate');
ПС: Вобщем, сколько ловышек и в каком порядке они сработают, если у них Promt'ы разные, но все они содержатся в названии меню???
DerMeister
Novice
Novice
Posts: 54
Joined: 19.11.2006 17:35

Post by DerMeister »

Тока что тестанул - РАБОТАЕТ!

ПС: Всё гениальное просто, я, кстати, запотентовал свой метод, так что ссылка на автора (тоесть на меня) теперь обязательна! ггг. Какой я умный, я сам тащусь. =_)**

ВооТ пример:

Code: Select all

procedure make_brazer; 
 begin
  CancelMenu;
  WaitMenu('What', 'Miscellaneous'); 
  WaitMenu('make', 'Brazier'); 
  WaitTargetType(Iron);
  usetype(TT,$ffff);
  wait(1000);
(c) DerMeister,31/12/2006! =_)***
 end;
Last edited by DerMeister on 30.12.2006 23:54, edited 2 times in total.
DerMeister
Novice
Novice
Posts: 54
Joined: 19.11.2006 17:35

Post by DerMeister »

SLAK wrote:
Edred wrote: которую тебе и надо (а может и не надо вообще)
Чел играет на ZHI, названия крафт-меню одинаковы на нескольких вложениях... (Миралакс там случаем не добавил как в инже : waitmenu('1','1','2','1')? и так далее)... сам он врядле переделает!
Я обхожу это подобным корявым способом:

Code: Select all

procedure Tink;
begin
waitconnection(5000);
 while count(pickaxe)=0 do begin
       CancelMenu;
       WaitTargetType(ingots);
       usetype(TinkTools,$ffff);
       WaitMenu('What','(first)');
       wait(5000);
       WaitMenu('What','Shovel');
       wait(10000);
 end;
end;
Способ реал корявый... =_) читай выше ;)
Post Reply