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

Animal Lore / Анимал Лоре (шард: Короли Махаона / uolife.ru)

Only working scripts
pickwill
Neophyte
Neophyte
Posts: 15
Joined: 21.12.2009 9:41
Location: http://uolife.ru
Contact:

Animal Lore / Анимал Лоре (шард: Короли Махаона / uolife.ru)

Post by pickwill »

При использовании скила Animal Lore / Анимал Лоре, выскакивает гамп информации о животном без каких либо кнопок. Закрывается который либо кликом правой кнопкой мыши, либо в нашем случае CloseSimpleGump'ом.

Code: Select all

Program AnimalLore; 
 
var
b : TStringList;
i : Integer;

Begin

 b := TStringList.Create; 

while true do
begin

   UseSkill('Animal Lore');
   WaitTargetObject($00079662); //ID любой рядом стоящей живности
   wait(2000);    

   for  i := 0 to GetGumpsCount - 1 do
      begin
        CloseSimpleGump(i);
      end;

end;
End.
Zeppelin
Neophyte
Neophyte
Posts: 25
Joined: 15.02.2010 22:47

Post by Zeppelin »

СтрингЛист не нужен, и wait(2000) - не очень, нужно ждать появляния гампа, или строки журнала. fail
Last edited by Zeppelin on 27.04.2010 20:18, edited 1 time in total.
Zeppelin
Neophyte
Neophyte
Posts: 25
Joined: 15.02.2010 22:47

Re: Animal Lore / Анимал Лоре (шард: Короли Махаона / uolife

Post by Zeppelin »

Вот так:

Code: Select all

DELETED
Last edited by Zeppelin on 27.04.2010 20:12, edited 1 time in total.
pickwill
Neophyte
Neophyte
Posts: 15
Joined: 21.12.2009 9:41
Location: http://uolife.ru
Contact:

Post by pickwill »

Изящно конечно, но не работает.

Code: Select all

while GetGumpsCount > 0 do CloseSimpleGump;
потому что у CloseSimpleGump есть ещё параметр GumpIndex

и ждать, если открыт гамп, в качестве паузы между юзами скила, тоже не годиться, т.к. гамп сразу закрывается, а пауза до следующего гампа 2 секунды:

Code: Select all

repeat
   wait(50);
until (InJournal(WaitLine)<>-1) or (IsGump)
но с учётом небольших исправлений имеем следующий вид:


Code: Select all

Program AnimalLore; 
{$Include 'all.inc'}
var
i :integer;

const
      Animal = $00079662; //ID животного
begin
   while GetSkillValue('Animal Lore') < 100 do
   begin
      UseSkill('Animal Lore');
      WaitTargetObject(Animal); 
      for  i := 0 to GetGumpsCount - 1 do
      begin
        CloseSimpleGump(i);
      end;
      wait(1000);
   end;
end. 
User avatar
Vizit0r
Developer
Developer
Posts: 3958
Joined: 24.03.2005 17:05
Contact:

Post by Vizit0r »

зачем закрывать(точнее, пытаться закрыть) каждый раз ВСЕ гампы?

просто и удобно:

Code: Select all

a := GetGumpsCount;
while a = GetGumpsCount do wait(50);
CloseSimpleGump(a+1);
это чисто демонстрационный образец, допиливания на таймауты ожидания гампа и прочее - обязательны
"Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете". (с) Макконнелл, "Совершенный код".
Zeppelin
Neophyte
Neophyte
Posts: 25
Joined: 15.02.2010 22:47

Post by Zeppelin »

Насчет паузы, видимо специфика шарда (именно!), а у КлоузГампов забыл про параметр, на скорую руку набрасал. На тех шардах, где я играл, выходит (можно как Visitor написал, но по сути, в большинстве случаев безразлично):

Code: Select all

DELETED
pickwill, а почему с задержкой проблемы? Такой вариант всегда был наилучшим. То есть, после появления гампа нужно еще две секунды ждать, а потом только заново применять скилл? Я просто не очень понял в чем там проблема =)
Last edited by Zeppelin on 27.04.2010 20:25, edited 2 times in total.
pickwill
Neophyte
Neophyte
Posts: 15
Joined: 21.12.2009 9:41
Location: http://uolife.ru
Contact:

Post by pickwill »

Проблема в гампе, когда он открыт - скил повторно не юзается, т.е. нужно принудительно его закрыть сперва для продолжения нормальной работы скрипта.

Code: Select all

      repeat
         wait(50);
      until (InJournal(WaitLine)<>-1) or (IsGump)
Гамп появился, мы его закрыли, дальше у нас стоит проверка с паузой на предмет есть ли гамп или нет, а т.к. гампа уже нет, то блок с repeat/until проскакивает сразу с первого-же прохода и пытается дальше использовать скил, но у скила то интервал использования две секунды...
Zeppelin
Neophyte
Neophyte
Posts: 25
Joined: 15.02.2010 22:47

Post by Zeppelin »

Нет, как же так, смотри в моем примере - сначала закрываются все гампы, потом юзается скилл, и соответственно, ждем появления гампа, и сначала.. На момент применения скила все гампы закрыты, и вообще блок должен ждать появления гампа, а не проскакивать, если его нет =)
Last edited by Zeppelin on 27.04.2010 17:05, edited 1 time in total.
Zeppelin
Neophyte
Neophyte
Posts: 25
Joined: 15.02.2010 22:47

Post by Zeppelin »

А, забыл ClearJournal. Видимо он все и путал.

Code: Select all

DELETED
Last edited by Zeppelin on 27.04.2010 20:13, edited 1 time in total.
Gauhar
Novice
Novice
Posts: 87
Joined: 08.07.2008 17:40

Post by Gauhar »

Господа, в первом посте не было вопроса. Это же рабочий скрипт для шарда Махаон, такая там специфика.
П.С. Моя затычка на такие гампы:

Code: Select all

Procedure CloseGumps;
   var k : Integer;
   begin
      if IsGump then
      begin
         for k:=(GetGumpsCount-1) downto 0 do
         begin
            CloseSimpleGump(k);
         end;
      end;
   end;
Алгоритм использования подобных навыков простой:
используем навык
пауза
закрываем гамп, если есть.
И никаких хитростей.
Zeppelin
Neophyte
Neophyte
Posts: 25
Joined: 15.02.2010 22:47

Post by Zeppelin »

Мы обсуждаем, пытаемся улучшить. =)
Вот, я откопал наконец свои скрипты - там было такое решение для закрытия всех гампов без переменных: =))
Вот это будет полезно:

Code: Select all

while (GetGumpsCount > 0) do CloseSimpleGump(0);
Соответственно получается:

Code: Select all

DELETED
Last edited by Zeppelin on 27.04.2010 20:25, edited 3 times in total.
pickwill
Neophyte
Neophyte
Posts: 15
Joined: 21.12.2009 9:41
Location: http://uolife.ru
Contact:

Post by pickwill »

Получается - мы закрыли гамп, использовали скил инициировав т.о. появление нового гампа, и... зависли в ожидании когда гамп исчезнет.
Zeppelin
Neophyte
Neophyte
Posts: 25
Joined: 15.02.2010 22:47

Post by Zeppelin »

pickwill wrote:Получается - мы закрыли гамп, использовали скил инициировав т.о. появление нового гампа, и... зависли в ожидании когда гамп исчезнет.
Нет, он выходит из цикла, когда появляется гамп (IsGump).
pickwill
Neophyte
Neophyte
Posts: 15
Joined: 21.12.2009 9:41
Location: http://uolife.ru
Contact:

Post by pickwill »

Тогда, он выходит из цикла когда появляется гамп, т.е. ровно через Wait(50)?
Zeppelin
Neophyte
Neophyte
Posts: 25
Joined: 15.02.2010 22:47

Post by Zeppelin »

Ну если гамп появляется сразу после применения скила, то да. У вас он там сразу появляется?) Обычно как происходит:
1. Юзается скилл
2. Проходит время (2-3 секунды) (которые как раз ждет тот цикл, с высокой точностью).
3. Появляется гамп или сообщение о неудаче.
4. Тот цикл это видит и выходит из ожидания.

Я не понимаю, в чем проблема =)
Post Reply