tink

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
ligeon
Posts: 3
Joined: 2005-07-11 00:42:39

tink

Post by ligeon »

всем привет, я играю на сервере fof.od.ua, попытался написать скрипт на тинк, однако вышла небольшая запорка...

Code: Select all

   VAR Ingi = '0x1BF2'         
   VAR Instrum = '0x1EB9'         
   VAR izdelie = '0x14FB'         
   VAR Kolvo = 500         
   VAR k
   VAR o

sub main()
   start:
   k = 0
   o = 0
   While TRUE
      UO.FindType( Ingi, 0x0602, 1)   ; Ищем инги
       UO.Grab( Str( Kolvo ), 'finditem' )
      wait( 2000 )
      While UO.Count( Ingi ) > 0
         ; Пока в паке есть инги
         UO.Print('Ostalos ' + Str( UO.Count( Ingi ) ) + ' ingots' )
         UO.UseType( Instrum )
         UO.waittargettype( ingi )
         wait ( 2500 )
         UO.Lclick ( 76 , 389 )
         if UO.InJournal("You create the item and place it in your pack.") then
         o=o+1
         endif
         if o>300 then
         goto drop()
         endif       
         if UO.InJournal("You create the item and place it in your pack.") or UO.InJournal("You destroy some material.") then
         k=k+1
         endif
         if k==10 then
         goto start:
            endif
            end sub
sub drop()
         UO.Exec ("waittargettype '0x14FB'")
         UO.Exec ("drop")
         Wend
   Wend
end sub


моя идея заключалась в том, чтобы скрипт доходил до журнала, делал паузу выжидая, пока k=10, затем пускалась заново.... может я что-то ужасное намутил конечно =) прошу вобщем помощи =)

[Не путаем теги [cоde][/cоde] и [quоte][/quоte]. Leo]
Dron D.
Posts: 190
Joined: 2004-12-13 01:27:00

Post by Dron D. »

Я пока сам учусь писать скрипты....
Зачем тебе это условие к=10, былоб проще сделать условие, когда в паке етих айтемов больше 10, тогда перекидывать... а в начале просто поставть repeat, чтоб сркипт повторялся...
Beyonder
Expert!
Posts: 388
Joined: 2005-04-23 10:19:43
Contact:

Post by Beyonder »

Очень рад что есть люди которые учаться а не требуют скрипты. Раскладываю по порядку.
1) Сначала устанавливаеться ловушка на прицел, а только после этого вызываеться сам прицел. Можно и наоборот, но не совсем правильно.
Я об этом:

Code: Select all

UO.UseType( Instrum ) 
UO.waittargettype( ingi )


2) Лучше забыть про goto и писать через while 1 ... wend.
3) Для вызова своей функции не нужно писать goto function() достаточно просто function()

Code: Select all

...
goto drop()
...

4) В строке с проверкой наличия инготов нужно указывать не пока больше 0, а пока достаточно для итема. Тоесть если для крафта итема нужно 5 ингов, а останеться 4, то итем не скрафтиться а цикл будет бесконечно крутиться. Тоесть нужно ставить while UO.Count(...)>n-1 где n нужное количество ресурса.

5)

Code: Select all

UO.Exec ("waittargettype '0x14FB'") 
UO.Exec ("drop")

Это можно более понятными коммандами:

Code: Select all

UO.WaitTargetType('0x14FB')
UO.Drop()


6) У тебя есть начало цикла "While UO.Count( Ingi ) > 0 ", но нигде нету конца wend. Зато есть никому не нужное:

Code: Select all

if k==10 then 
goto start:
endif

Вместо всей этой части кода напиши wend и все заработает даже лучше.

7) Как я понял "UO.Lclick ( 76 , 389 ) " это для выбора пункта в меню. Для этого есть специальная функция WaitMenu, или если меню не стандартное а гамповое, то есть комманда ongump. Чтобы узнать что вводить в эту команду нужно с новейшей версией инжекта, скрафтить 1 вещь вручную и ввести комманду ,showjournal. Там будет написано какой выбор сделан в какого типа гампе. Сам ongump - это ловушка прицела на кнопку. Как его использовать, можно прочитать введя ,ongump без параметров.
Post Reply