Десять уроков скриптинга (урок 4)

Materials, references, tutorials

Moderators: Murderator+, Murderator

L@wbre@K
Posts: 15
Joined: 2005-03-17 02:25:11
Contact:

Post by L@wbre@K »

Так тоже не получится... Координаты будут менятся...
L@wbre@K
Posts: 15
Joined: 2005-03-17 02:25:11
Contact:

Post by L@wbre@K »

А есть команда:
uo.counttile ? )
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

Code: Select all

sub F_Mining_ORE() 
; ****************************************
   var MaxRange = 2 ; <--
; ****************************************
   var X, Y, mX, mY, mZ, TrW, TrWeight, TrT, TrTime, Tiles
   UO.Resend()
   wait(2000)
   mX = UO.GetX('self')
   mY = UO.GetY('self')
   mZ = UO.GetZ('self')
   for Y = MaxRange - ( MaxRange * 2 ) to MaxRange
      for X = MaxRange - ( MaxRange * 2 ) to MaxRange
         Tiles = F_HarvestTiles(mX+X, mY+Y)
         if Tiles then
            repeat
               UO.DeleteJournal()
; **************** STOP *****************
               if not UO.Count(0x0E86) || UO.Weight >= UO.STR*3.8 || UO.Dead() then ; <-- Pickaxe
                  UO.Print('STOP!!! Max Weight or NO Pickaxe or Dead')
                  return 0
               endif
; ***************************************
               TrTime = UO.Timer()
               TrWeight = UO.Weight
               UO.WaitTargetTile(Tiles, mX+X, mY+Y, mZ)
               UO.UseType(0x0E86) ; <-- Pickaxe
               repeat
                  wait(200)
                  TrW = TrWeight<>UO.Weight
                  TrT = UO.Timer()>TrTime+120
               until UO.InJournal("0xAD00|0xAD02|0xAD01|0xA2DE|0xAD03|0x6B31|0xEE46|0xA866|0xA867") || TrW || TrT
            until UO.InJournal("0xAD00|0xAD02|0xAD01|0xA2DE|0xA866|0xA867") || TrT
         endif
      next
   next
   return 1
end sub 

sub F_HarvestTiles(X,Y)
   if UO.PrivateGetTile(X, Y, -1, 1339, 1370) then
      for var i=1339 to 1370
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   return 0
end sub
L@wbre@K
Posts: 15
Joined: 2005-03-17 02:25:11
Contact:

Post by L@wbre@K »

Спасибо, но вот разбератся в этом трудно )
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

это мининг для RunUO
ищи знакомые по этому уроку команды и все поймешь...
L@wbre@K
Posts: 15
Joined: 2005-03-17 02:25:11
Contact:

Post by L@wbre@K »

Да я тк приблизительно понял, но что-то мутно )
Хотя уже есть прояснения в голове )
omi4
Posts: 457
Joined: 2005-07-10 21:53:05

Post by omi4 »

а так..

Code: Select all

sub F_Mining_ORE() 
; ****************************************
   var MaxRange = 2 ; <--
; ****************************************
   var X, Y, mX, mY, mZ, TrW, TrWeight, TrT, TrTime, Tiles
;выбрать тайл для копки
   mX = UO.GetX('self')
   mY = UO.GetY('self')
   mZ = UO.GetZ('self')
   for Y = MaxRange - ( MaxRange * 2 ) to MaxRange
      for X = MaxRange - ( MaxRange * 2 ) to MaxRange
;проверим тайл на возможность копки
         Tiles = F_HarvestTiles(mX+X, mY+Y)
;если ноль, то руды там нет... пропускаем
         if Tiles then
            repeat
               UO.DeleteJournal()

               UO.WaitTargetTile(Tiles, mX+X, mY+Y, mZ)
               UO.UseType(0x0E86) ; <-- Pickaxe
               repeat
                  wait(200)
                           ; Cliloc
               until UO.InJournal("0xAD00|0xAD02|0xAD01|0xA2DE|0xAD03|0x6B31|0xEE46|0xA866|0xA867")
            until UO.InJournal("0xAD00|0xAD02|0xAD01|0xA2DE|0xA866|0xA867")
         endif

      next
   next
   return 1
end sub 

; функция проверки, копать можно только от 1339 до 1370
sub F_HarvestTiles(X,Y)
   if UO.PrivateGetTile(X, Y, -1, 1339, 1370) then
      for var i=1339 to 1370
         if UO.PrivateGetTile(X, Y, -1, i, i) then
            return i
         end if
      next
   end if
   return 0
end sub
L@wbre@K
Posts: 15
Joined: 2005-03-17 02:25:11
Contact:

Post by L@wbre@K »

Code: Select all

UO.InJournal("0xAD00|0xAD02|0xAD01|0xA2DE|0xAD03|0x6B31|0xEE46|0xA866|0xA867")
            until UO.InJournal("0xAD00|0xAD02|0xAD01|0xA2DE|0xA866|0xA867")
         endif

      next
   next
   return 1
end sub 


Меня больше это смущало )
L@wbre@K
Posts: 15
Joined: 2005-03-17 02:25:11
Contact:

Post by L@wbre@K »

Уже не смущает ) Сенкс. 4 банки и 2 плюшки способны заставить мозг работать )
Gosser
Posts: 8
Joined: 2006-02-25 17:01:49

Post by Gosser »

Люди подскажите с таргетом... У менявообщем проблема мне нада чтоб я запустил команду он юзанул прицел на лошадь после этого появляеться воторой прицел и он тоже должен идти на лошадь но я незнаю как это сделать...
Плиз хелп :)
Заранее спасибо..!
slonopotam
Posts: 270
Joined: 2006-08-05 14:09:06
Contact:

Post by slonopotam »

Задаем прицел

Code: Select all

uo.exec('addobject Animal')


Ждем ответа

Code: Select all

while uo.targeting() 


Ловушку на животное

Code: Select all

UO.WaitTargetObject('Animal')



Пример:


Code: Select all

var mod=1
##
sub main()
uo.exec('addobject Animal')
while uo.targeting()
wait(100)
wend
wait(1000)
while NOT UO.Dead()
UO.DeleteJournal()
UO.WaitTargetObject('Animal')
UO.Useskill('Animal Taming')
repeat
wait(1000)
until UO.InJournal('You fail') OR UO.InJournal('The') OR UO.InJournal('It seems ')
If Uo.InJournal('The') OR UO.InJournal('It seems ') Then
If mod==0 Then
UO.Say('all release')
Endif
If mod==1 Then
UO.useobject('Animal')
Endif
Endif
wend
end sub
ДРВ
Spoiler
_________________
Антарес
Spoiler|Gostrabaiter|Umhra|Slog
Miha*
Posts: 14
Joined: 2006-10-23 14:18:19

Post by Miha* »

А как быть например когда качаеш хердинг, там же два таргета, как это всё обустроить, во туже пол часа мучуюсь, никак не магу сделать, помагите пожалуйсто, дайте хотябы какиенить наброски с двумя таргеатми от использования одного итема..
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Post by Mirage »

есть замечательный раздел сайта:
http://yoko.com.ua/help/
там написано что
Описание: waittargetobject •

Синтакс: ,waittargetobject object [object2]
none uo.waittargetobject(object,[object2])
Тема: Прицелы Ключевые слова: command, uoscript, objhandling, waitsystem

Устанавливает на обьект object ловушку прицела.
Следующий прицел, который будет запрошен сервером, будет направлен на этот обьект.
Если задан второй обьект, object2, то после срабатывания ловушки будет установлена ловушка на обьект object2.
См. так же waittargettype, waittargetground, poison, waittargettile, findtype.


А пример скрипта

Code: Select all

sub Herding() 
var posoh = "0x0E81"
uo.print('Укажите животное - ')
uo.addobject('Animal')
while uo.targeting()
wait(100)
wend
repeat
uo.waittargetobject('Animal','self')
uo.usetype(posoh)
Uo.DeleteJournal()
repeat
wait(500)
until uo.injournal('You can|You don|не получилось|animal')
until uo.dead()
endsub


хотя имхо такие вопросы не здесь лучше задавать
Nmy
Expert!
Posts: 2152
Joined: 2005-09-14 15:31:58
Location: Latvia

Post by Nmy »

Miha* wrote:А как быть например когда качаеш хердинг, там же два таргета, как это всё обустроить, во туже пол часа мучуюсь, никак не магу сделать, помагите пожалуйсто, дайте хотябы какиенить наброски с двумя таргеатми от использования одного итема..

Code: Select all

Синтакс: ,waittargetobject object [object2]
none uo.waittargetobject(object,[object2])
Miha*
Posts: 14
Joined: 2006-10-23 14:18:19

Post by Miha* »

даже не ожидал на такой скорый ответ, спасибо всем за инфо и за скрипт
Post Reply