Page 1 of 1

Скрипт на переплавку для соседнего раздела :)

Posted: 2004-09-01 23:38:41
by evil_Gremlin
Почему решил выложить, несмотря на то, что скрипт с таким предназначением уже имеется в разделе "Scripts!" ?
А потому, что мой скрипт работает гораздо быстрее и в плавке, и в збрасывании ингов на землю при перегрузе. Хоть и кода занимает немного больше, но для сравнения можете запсутить скрипт мой и EdReda (на компетеность которого я ни в коем случае не позарился :) ), и сравнить воочию.
В настройке практически не нуждается. Единственное что может быть стоит поменять - это формулу максимального веса.

Code: Select all

####################################
#############Smelting by evil_Gremlin, v 1.1
sub smelt_ground()
var r
var i,k=0
var max =((UO.Str*4)+30) #Calculating of max weight based on character strenght
DIM ore[4]
ore[1]=0x19B8
ore[2]=0x19B9
ore[3]=0x19BA
ore[4]=0x19B7
while k==0
r=0
If UO.Weight>=max-30 then
clean()
endif

for i=1 to 4
UO.FindType(ore[i],-1,'ground')
   If UO.FindCount()>0 then
      r=0
      UO.Exec('moveitem finditem 1')
            repeat
               wait(50)
          until Uo.ContainerOf('finditem')==UO.Getserial('backpack')
          UO.Useobject('finditem')
   else
   #UO.Print('Not Found')
   r=r+1
   endif
next
if r==4 then
k=1
Uo.Print('No ore to smelt')
endif
wend
endsub
#############Ingots dropping sub
sub Clean()
var i,t,l,col
DIM type[5]
type[1]=0x1BEF
type[2]=0x1BF5
type[3]=0x1BE3
type[4]=0x1BE9
UO.Print('Overload. Cleaning')
col=0
repeat
col=0
for t=1 to 4
Uo.FindType(type[t],'-1','backpack')
   If UO.FindCount()>0 then
   UO.Print('Found')
   l=0
      Uo.Exec('drophere finditem')
         repeat
         wait(100)
         until Uo.ContainerOf('finditem')<>Uo.GetSerial('backpack')
   else
   col=col+1
   endif
next
until col>=4
UO.Print('Cleaned....')
end sub

+
в версии 1.1 убрал ожидание мессаги в журнале, тем самым ускорив скрипт минимум на 50мс ;)

Posted: 2004-09-02 08:37:35
by BETEPAH
Сделал бы лучше сброс в сундучок.Просто на некоторых шардах быстро пропадает с пола вещи ........Да и удобнее проссто ))

Posted: 2004-09-03 01:36:57
by evil_Gremlin
ну переплавляют-то в доме скорее всего, если берут с пола :)
тем более, так же на многих шардах в контейнерах есть ограничение веса\итемов.

Posted: 2004-09-03 16:30:05
by Yoko
чем больше вариантов скриптов выложено, тем лучше.
чтото проще, а чтот сложнее, чтото надёжнее а чтото универсальнее..
у конечного пользователя появляется выбор и простор для мысли

Posted: 2004-09-03 17:22:54
by BETEPAH
Yoko wrote:чем больше вариантов скриптов выложено, тем лучше.
чтото проще, а чтот сложнее, чтото надёжнее а чтото универсальнее..
у конечного пользователя появляется выбор и простор для мысли


Неучел.........исправлюсь ))

Posted: 2005-01-28 12:10:29
by Arsys

Code: Select all

Uo.FindType(type[t],'-1','backpack') 


In my shard (UO Sphere 0.55i), you must specify color of ingots in order to find with findtype, works only with types in yours?

Also I don't know what's this for:

Code: Select all

Uo.ContainerOf('finditem')==UO.Getserial('backpack')
          UO.Useobject('finditem')

Posted: 2005-06-01 09:00:17
by Faberze
А у нас на Шарде, после 30.0 скилл в домах и на ГЗ растет на 50 процентов сложнее, и хотелось бы ложить инготи в сундук !

Posted: 2005-06-01 22:55:44
by Edred
Счас, где-то валяется ведь, я ведь когда-то переделал свой на сундук... 8)

Code: Select all

#####################################################################
; Training of Mining, ver 2.00b, (c) Edred
; 2.00b - добавляем сундук, откуда берется руда по 100 шт. и кидается
;         под ногм. Дальше как было. Заодно все правлю и переписываю
;         более правильно :)
sub Smelt()
   VAR Sunduk = '0x40437910'         ; Сериал сундука с рудой
   VAR Ruda1 = '0x19B9'            ; Тип руды
   VAR Ruda2 = '0x19B8'            ; Тип руды - 3 шт.
   VAR Ruda3 = '0x19BA'            ; Тип руды - 2 шт.
   VAR Ruda4 = '0x19B7'            ; Тип руды - 1 шт.
   VAR Ing1 = '0x1BEF'               ; Тип ингов металлов
   VAR Ing2 = '0x1BF2'               ; Тип ингов строймата
   VAR MaxVes = 200               ; Максимальный вес пака
   While UO.SkillVal( 'Mining' ) < 1000
      repeat   
         UO.Findtype( Ruda1, '-1', '1' )      ; Ищем руду на земле
         If UO.Findcount() == 0 Then
            UO.Findtype( Ruda2, '-1', '1' )
            If UO.Findcount() == 0 Then
               UO.Findtype( Ruda3, '-1', '1' )
               If UO.Findcount() == 0 Then
                  UO.Findtype( Ruda4, '-1', '1' )
                  If UO.Findcount() == 0 Then
                     If GetOre( Sunduk, Ruda1 ) == 0 Then
                        UO.Print( "No more ore for smelt..." )
                        Return
                     Endif
                  Endif
               Endif
            Endif
         Endif
      until UO.FindCount() > 0
      UO.Grab( '1', 'finditem' )
      Wait(500)
      CheckLag()
      UO.UseType( Ruda4 )            ; переплавляем
      Wait(500)
      CheckLag()
      If UO.Weight > MaxVes Then
         ; Максимальный вес пака превышен - разгружаемся
         UO.Findtype( Ing1 )
         If UO.Findcount() > 0 Then
            UO.MoveItem( 'finditem', '0', Sunduk )
            Wait(500)
            CheckLag()
         Endif
         UO.Findtype( Ing2 )
         If UO.Findcount() > 0 Then
            UO.MoveItem( 'finditem', '0', Sunduk )
            Wait(500)
            CheckLag()
         Endif
      Endif
   Wend
endsub

Sub GetOre( cont, typ )
   ; Взять из сундука 100 руды и бросить под ноги.
   ; Если руды нет - возвращаем 0, если есть 1
   UO.FindType( typ, '-1', cont )
   If UO.FindCount() == 0 Then
      return 0
   Else
      UO.Grab( '100', 'finditem' )
      wait(500)
      CheckLag()
      UO.FindType( typ )
      If UO.FindCount() == 0 Then
         UO.Print( 'Idiot! Your script is fuck!' )
      Else
         UO.Drophere( 'finditem' )
         wait(500)
         CheckLag()
      Endif
   Endif
   return 1
endsub