sub superkopka()
#################### Установка переменных ####################################
VAR Kirka = '0x0E85' ; Тип Кирки
VAR Hid = 0
VAR Recalling = 0 ; 0 - остановиться в конце, 1 - реколлиться
VAR Dlin = 20 ; Максимальное число шагов в одном направлении
VAR Napr = 0 ; В какую сторону: 0 - справа-налево, 1 - слева-направо
VAR MaxVes = 550 ; Максимальный вес, подымаемый чаром минус 10-15 стоунов
VAR Sdvig = 0 ; Куда сдвигаться при развороте: 0 - вниз, 1 - вверх
VAR Propusk = 1 ; 1 - пропускать младшие руды, 0 - ненужных руд не бывает
VAR Work = 1 ; пока 1 - работаем, 0 - прекращаем
VAR i, j, CurX, CurY, k
VAR TileNum = '1339' ; Тайл пола пещеры (наиболее распространенный тип)
##############################################################################
; Начальный блок
If Hid == 1 Then
ToHide()
Endif
; Основная процедура
i = 1
While Work == 1
While i < Dlin
CurX = UO.GetX()
CurY = UO.GetY()
UO.Print( "Test: Begin in these coords..." )
k = Kopaem( MaxVes, TileNum, Kirka, Hid )
If k == 1 Then
UO.Print( "Test: Overweight!" )
; копаем вокруг себя
; Вернули 1 - Вес превышен
Work = 0
i = Dlin + 1
Endif
If UO.Weight > MaxVes Then
UO.Print( "Test: Overweight!" )
; Вес превышен!
Work = 0
i = Dlin + 1
Endif
If i < Dlin Then
IdemHor(Napr) ; сдвигаемся
UO.Print( "Test: Go to next coords..." )
Endif
i = i + 1
If ( CurX == UO.GetX() ) AND ( CurY == UO.GetY() ) AND ( k == 0 ) Then
; положение чара не изменилось
Razvorot(Sdvig)
i = Dlin + 1
Endif
Wend
If Work == 1 Then
If Napr == 0 Then
Napr = 1
Else
Napr = 0
Endif
Endif
Wend
; Сюда мы приходим при превышении веса (пока только так)
for k = 1 to 2
UO.Exec( "playwav phone.wav" )
next
; Это уже конец скрипта Superkopka!
end sub
; Процедура вскапывания 25 клеток вокруг чара
sub Kopaem(MaxVes, TileNum, Kirka, HidFlag)
# -------------------------------------------------------------------------------------------------------
# Получаем MaxVes - Максимальный вес чара (минус 10-15 стоунов),
# TileNum - сериал тайла в котором копать,
# HidFlag - проверяться на хайд или нет
# -------------------------------------------------------------------------------------------------------
# Возвращаем: 0 - нормальное завершение цикла копки
# 1 - Перевес, 2 - кто-то пришел, 3 - выкопан элементаль,
# 4 - нас атакует ПК!
# -------------------------------------------------------------------------------------------------------
VAR x, y, t
VAR MaxTime = 100 ; измеряется в 1/10 сек.
VAR hms = "You have been revealed"
VAR ms1 = "There is"
VAR ms2 = "You can't use"
VAR ms3 = "You put"
VAR ms4 = "You loosen"
VAR ms5 = "You put"
VAR ms6 = "Try mining"
VAR UnloadCont = '0x4001F19A'
If HidFlag == 1 Then
hms = "GRDWQIHL28501VLZ" ; Такое сообщение точно никогда не получим
Endif
for y=-2 to 2
for x=-2 to 2
; UO.Print( "Test: Try to point..." )
repeat
UO.DeleteJournal()
t = UO.Timer()
; UO.Print( "Test: Start in koords" )
UO.WaitTargetTile( TileNum, STR( UO.GetX() + x ), STR( UO.GetY() + y ), 0)
UO.UseType( Kirka )
; UO.Print( "Test: waiting" )
repeat
wait(300)
until UO.InJournal(ms1) OR UO.InJournal(ms2) OR UO.InJournal(ms3) OR UO.InJournal(ms4) OR UO.InJournal(ms5) OR UO.InJournal(ms6) OR UO.InJournal(hms) OR ((t + MaxTime)<UO.Timer())
; UO.Print( "Test: End of waiting" )
ToHide()
#wait (700)
UO.FindType('0x19B7')
if uo.GetQuantity('finditem')>0 then
UO.SetReceivingContainer(UnloadCont)
UO.Grab('0','finditem')
UO.UnSetReceivingContainer()
endif
UO.FindType('0x19B9')
if UO.GetColor('finditem')=='0x0000' then
UO.DropHere('finditem')
wait(1000)
endif
If UO.Weight > MaxVes Then
; Вес превышен!
return 1
Endif
If UO.InJournal(hms) Then
If HidFlag == 1 Then
ToHide()
Endif
Endif
until ( NOT UO.InJournal(ms4) AND NOT UO.InJournal(ms3) )
next
next
; UO.Print( "Test: Normal return" )
return 0
end sub
; Сдвигаем чара горизонтально на шаг
sub IdemHor(Napr)
VAR k
if Napr == 0 Then
; направление - 5
; клавиша Left - 37
If UO.GetDir() <> 5 Then
UO.Press( 37 )
wait( 300 )
UO.Press( 37 )
wait( 300 )
UO.Press( 37 )
wait( 300 )
Endif
; for k=1 to 2
UO.Press( 37 )
wait( 300 )
; next
Else
; направление - 1
; клавиша Right - 39
If UO.GetDir() <> 1 Then
UO.Press( 39 )
wait( 300 )
Endif
; for k=1 to 2
UO.Press( 39 )
wait( 300 )
; next
Endif
return
end sub
; Процедура сдвига чара по вертикали при развороте на шаг
sub Razvorot(Sdvig)
VAR k
if Sdvig == 0 Then
; направление - 3
; клавиша Down - 40
If UO.GetDir() <> 3 Then
UO.Press( 40 )
wait( 300 )
Endif
; for k=1 to 2
UO.Press( 40 )
wait( 300 )
; next
Else
; направление - 7
; клавиша Up - 38
If UO.GetDir() <> 7 Then
UO.Press( 38 )
wait( 300 )
Endif
; for k=1 to 2
UO.Press( 38 )
wait( 300 )
; next
Endif
return
end sub
короче вылетает: Line 103 Function not found -TOHIDE что надо сделать? или подделайте.скопируйте весь скрипт и укажите где переделали.=) (Оском)
Господа помогите.Подскажите или подправте....
Moderators: Murderator+, Murderator