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

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
evil_Gremlin
Posts: 54
Joined: 2004-05-11 12:27:22
Contact:

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

Post 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мс ;)
Last edited by evil_Gremlin on 2004-09-03 01:41:13, edited 1 time in total.
Каждый манчкин в старости мечтает иметь кресло-качалку ;)
BETEPAH
Expert!
Posts: 838
Joined: 2004-05-31 09:31:51
Contact:

Post by BETEPAH »

Сделал бы лучше сброс в сундучок.Просто на некоторых шардах быстро пропадает с пола вещи ........Да и удобнее проссто ))
Все просто.
BETEPAH ™
evil_Gremlin
Posts: 54
Joined: 2004-05-11 12:27:22
Contact:

Post by evil_Gremlin »

ну переплавляют-то в доме скорее всего, если берут с пола :)
тем более, так же на многих шардах в контейнерах есть ограничение веса\итемов.
Каждый манчкин в старости мечтает иметь кресло-качалку ;)
Yoko
Site Admin
Posts: 1964
Joined: 2004-04-03 16:49:38
Contact:

Post by Yoko »

чем больше вариантов скриптов выложено, тем лучше.
чтото проще, а чтот сложнее, чтото надёжнее а чтото универсальнее..
у конечного пользователя появляется выбор и простор для мысли
BETEPAH
Expert!
Posts: 838
Joined: 2004-05-31 09:31:51
Contact:

Post by BETEPAH »

Yoko wrote:чем больше вариантов скриптов выложено, тем лучше.
чтото проще, а чтот сложнее, чтото надёжнее а чтото универсальнее..
у конечного пользователя появляется выбор и простор для мысли


Неучел.........исправлюсь ))
Все просто.
BETEPAH ™
Arsys
Posts: 30
Joined: 2004-11-21 21:45:20

Post 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')
Faberze
Posts: 1
Joined: 2005-01-20 02:46:13

Post by Faberze »

А у нас на Шарде, после 30.0 скилл в домах и на ГЗ растет на 50 процентов сложнее, и хотелось бы ложить инготи в сундук !
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post 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
Post Reply