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
-
- Posts: 174
- Joined: 2008-12-13 00:00:15
у тебя там функции не хватает.
Добавь
Добавь
Code: Select all
sub ToHide()
while not uo.hidden()
uo.warmode (0)
uo.deleteJournal()
uo.useskill("Hiding")
repeat
wait(10)
until uo.InJournal("You have hidden yourself well") or uo.InJournal("You can't seem to hide here.") or uo.InJournal("You are preoccupied with thoughts of battle.")
wend
end sub