SkillUp.sc
Code:
#===================================================================#
# SkillUp, v.502.23 #
# Скрипты для прокачки скиллов #
#===================================================================#
# #
# 1. Прокачка крафтов #
# ------------------- #
# 1. Bowcraft. Крафтим шафты #
# 2. Bowcraft. Крафтим стрелы #
# 3. Poison #
# 4. Mining. Плавим руду #
# 5. Tailoring #
# 6. Tailoring2 #
# 7. Tinker #
# 8. TinkerWood #
# 9. Carpentry #
# 10. CarpentryD #
# 11. Cartograph #
# 12. Inscript. Крафтим скроллы стрелок #
# 13. Inscript. Крафтим скроллы реколлов #
# 14. Veterinary (для двух чаров) #
# 15. Veterinary (для одного чара) #
# #
# 2. Прокачка других скиллов #
# -------------------------- #
# 1. Magery #
# 2. Music #
# 3. Provocation #
# 4. Enticment #
# 5. Forensic #
# 6. Hiding #
# 7. Hiding & Stealth #
# 8. MaceFighting (на кукле) #
# 9. Fencing (на кукле) #
# 10. Swordsmanship (на кукле) #
# 11. Anatomy, Animal lore, Evalution Int #
# 12. Camping #
# 13. Cooking #
# 14. Spirit Speak #
# 15. Herding #
# 16. Lockpicking #
# 17. Begging #
# 18. Snooping #
# 19. Stealing #
# #
# 3. Процедуры #
# ------------ #
# #
#===================================================================#
#===================================================================#
#
# I. Прокачка Крафтов
#
#####################################################################
; Bowcraft. v.1.03b (c) Edred
;
; Чар берет из сундука логи, крафтит из них шафты
; и складывает эти шафты в этот же сундук.
; Если логи закончились - выход.
; Если даггер (или что вы там используете) сломался -
; скрипт найдет аналогичный по типу в бэкпаке и возьмет
; в руки.
;
; 1.03b: Проверка, если Kolvo = 1, то берем три и кладем обратно два
; лога.
;
sub bowcraft()
VAR Sunduk = '0x405210C8' ; Сериал сундука
VAR Logi = '0x1BDD' ; Тип логов
VAR Shafts = '0x1BD4' ; Тип шафтов
VAR Kolvo = 10 ; Брать логов для одного крафта
VAR k = 0, j, dagger
dagger = UO.ObjAtLayer( 'Rhand' )
UO.SetGlobal( 'instrtype', UO.GetGraphic( dagger ) )
While TRUE
UO.FindType( Logi, -1, Sunduk ) ; Ищем логи в сундуке
If UO.FindCount() == 0 Then
UO.Print("Logs not found, script terminated")
return
else
j = UO.GetQuantity( 'finditem' )
If j > Kolvo Then
UO.Print( 'I can use ' + str( j ) + ' logs' )
else
UO.Print( "I can't use " + str( j ) + " logs" )
return
Endif
Endif
If Kolvo == 1 Then
; v. 1.03
UO.Grab( '3', 'finditem' )
wait(500)
UO.FindType( Logi )
UO.MoveItem( 'finditem', '2', Sunduk )
wait(500)
Else
UO.Grab( Str( Kolvo ), 'finditem' )
wait(500)
Endif
; А это - динамическая пауза на мув
while UO.Count( Logi ) < Kolvo
wait(100)
wend
; проверка на то, что в руках по-прежнему даггер
If CheckInstr() == 0 Then
UO.Print("You don't have daggers!" )
return
Endif
UO.DeleteJournal()
UO.CancelMenu()
UO.WaitMenu ('What do you want to carve', 'shaft' )
UO.WaitTargetType( Logi )
UO.UseObject( dagger )
k = 0
while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 )
k = k + 1
wait(300)
wend
If UO.Count( Shafts ) > 0 then
UO.FindType( Shafts, -1, -1 )
UO.MoveItem( 'finditem', 0, Sunduk )
wait(500)
while UO.Count( Shafts ) > 0
wait(100)
wend
UO.Print( 'Shafts moved' )
Endif
Wend
end sub
#####################################################################
; Bowcraft2. v.1.04b (c) Edred
;
; Чар берет из сундука шафты и перья, крафтит из них стрелы и
; складывает эти стрелы в этот же сундук.
; Если шафты или перья закончились - выход.
;
sub bowcraft2()
VAR Sunduk = '0x405210C8' ; Сериал сундука
VAR Shafts = '0x1BD4' ; Тип шафтов
VAR Feather = '0x1BD1' ; Тип перьев
VAR Arrows = '0x0F3F' ; Тип стрел
VAR Kolvo = 1 ; Брать шафтов для одного крафта
VAR k = 0, j
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
UO.CancelMenu()
UO.AutoMenu ('Select arrow type', 'arrow' )
While TRUE
EatChar( Sunduk, 2, 1, 120 )
If UO.Count( Shafts ) == 0 Then
UO.FindType( Shafts, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print("Shafts not found, script terminated")
return
Endif
UO.Grab( Str( Kolvo ), 'finditem' )
wait(500)
while UO.Count( Shafts ) < Kolvo
wait(100)
wend
CheckLag()
Endif
If UO.Count( Feather ) == 0 Then
UO.FindType( Feather, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print("Feather not found, script terminated")
return
Endif
UO.Grab( Str( Kolvo ), 'finditem' )
wait(500)
while UO.Count( Feather ) < Kolvo
wait(100)
wend
CheckLag()
Endif
UO.DeleteJournal()
UO.UseType( Shafts )
k = 0
while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 )
k = k + 1
wait(300)
wend
If UO.Count( Arrows ) > 0 then
UO.FindType( Arrows, -1, -1 )
UO.MoveItem( 'finditem', 0, Sunduk )
wait(500)
while UO.Count( Arrows ) > 0
wait(100)
wend
UO.Print( 'Arrows moved' )
Endif
Wend
end sub
#####################################################################
sub poison()
; v. 1.02 (c) Edred
; Положите рядом с чаром на пол побольше меду и lesser poison,
; поставьте рядом сундук, занесите его сериал в переменную
; Sunduk (туда будут сбрасываться пустые бутылки и отравленный мед)
; Если что-то не берет - значит положили далеко от чара,
; поправьте цифру в команде set finddistance
;
VAR Sunduk = '0x404331B7'
VAR Med = '0x09EC'
VAR LesPois = '0x0F0A'
VAR EmpBot = '0x0F0E'
VAR MedSer, k
UO.Exec('set finddistance 2')
While TRUE
UO.FindType( Med, -1, 1 )
If UO.FindCount() == 0 Then
UO.Print("Jars not found, script terminated")
return
Endif
UO.Grab( '1', 'finditem' )
wait( 2000 )
UO.FindType( LesPois, -1, 1 )
If UO.FindCount() == 0 Then
UO.Print("Bottle of Poison not found, script terminated")
return
Endif
UO.Grab( '1', 'finditem' )
wait( 2000 )
UO.DeleteJournal()
UO.WaitTargetType( Med )
UO.UseObject( 'finditem' )
k = 0
while NOT UO.InJournal('You apply lesser poison') AND NOT UO.InJournal('You fail to apply lesser poison') AND ( k < 30 )
k = k + 1
wait(500)
wend
UO.Print( 'meda v pake ' + str( UO.Count( Med ) ) )
if UO.Count( Med ) > 0 then
UO.FindType( Med, -1, 'backpack' )
UO.MoveItem( 'finditem', 0, Sunduk )
wait( 2000 )
UO.Print( 'Jar dropped' )
end if
if UO.Count( EmpBot ) > 0 then
UO.FindType( EmpBot, -1, 'backpack' )
UO.MoveItem( 'finditem', 0, Sunduk )
wait( 2000 )
UO.Print( 'Empty bottle dropped' )
end if
Wend
end sub
#####################################################################
; 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
#####################################################################
; Tailoring. v.1.04b (c) Edred
;
; Два сундука: в одном много кожи и воска, а также лежит много пустых мешков.
; В другой чар будет класть мешки и наполнять их картами (по 200 штук в
; каждый).
;
; (1.04b) - переделываю. Все берется из одного сундука, и мат, и мешки.
; Переходим заодно на AutoMenu, вводим чеклаг и всякие доп проверки.
;
sub tailoring()
VAR Sunduk1 = '0x4043310C' ; Сериал сундука с пустыми мешками
VAR Sunduk2 = '0x40403350' ; Сериал пустого сундука
VAR Meshok = '0x0E76' ; Тип мешка
VAR Shkur = '0x1067' ; Тип шкур
VAR Vosk = '0x1423' ; Тип воска
VAR Kit = '0x0F9D' ; Тип инструмента тейлора
VAR Map = '0x14EB' ; Тип карты
VAR Kolvo = 200 ; Брать шкур и воска
VAR MeshSer, j, ShkurSer, k, i
VAR Med = '0x09EC' ; Тип меда
VAR success = 'You put'
VAR fizzle = 'fail'
UO.CancelMenu()
UO.AutoMenu( "Leather", "Blank's" )
UO.AutoMenu("Blank's", "blank map" )
While TRUE
# Перекладываем один мешок в сундук 2
UO.FindType( Meshok, '-1', Sunduk1 ) ; Ищем мешок в сундуке 1
MeshSer = UO.GetSerial( 'finditem' )
UO.MoveItem( MeshSer, '0', Sunduk2 )
wait(500)
CheckLag()
i = 0
repeat
If UO.Count( Shkur ) < 10 Then
If GetResource( Shkur, 200 - UO.Count( Shkur ), Sunduk1 ) == 0 Then
return
Endif
Endif
If UO.Count( Vosk ) < 10 Then
If GetResource( Vosk, 200 - UO.Count( Vosk ), Sunduk1 ) == 0 Then
return
Endif
Endif
UO.Print('Ostalos ' + Str( UO.Count( Shkur ) ) + ' shkur' )
DeleteJournal( success )
DeleteJournal( fizzle )
UO.FindType( Shkur )
UO.WaitTargetObject( 'finditem' )
UO.UseType( Kit )
k = 0
repeat
k = k + 1
wait(500)
until UO.InJournal( success ) OR UO.InJournal( fizzle ) OR ( k > 30 )
If UO.Count( Map ) > 0 Then
i = i + 1
UO.FindType( Map )
UO.MoveItem( 'finditem', '0', MeshSer )
wait(500)
CheckLag()
UO.Print( str(i) + ' maps moved' )
Endif
Until i > 199
Wend
endsub
#####################################################################
; Tailor2. v.1.05b (c) Edred
;
sub tailoring2()
VAR Sunduk = "0x4043310C"
VAR Kozha = "0x1067"
VAR Vosk = "0x1423"
VAR Kit = "0x0F9D"
VAR Scrol = "0x0E34"
VAR k
UO.CancelMenu()
wait(500)
UO.AutoMenu( "Leather", "Blank's" )
UO.AutoMenu( "Blank's", "blank scroll" )
While TRUE
If UO.Count( Kozha ) == 0 Then
UO.FindType( Kozha, '-1', Sunduk )
If UO.FindCount() == 0 Then
UO.Print("Leathers not found, script terminated")
return
Endif
UO.Grab( '1', 'finditem' )
wait(500)
while UO.Count( Kozha ) == 0
wait(100)
wend
Endif
If UO.Count( Vosk ) == 0 Then
UO.FindType( Vosk, '-1', Sunduk )
If UO.FindCount() == 0 Then
UO.Print("Beeswaxs not found, script terminated")
return
Endif
UO.Grab( '1', 'finditem' )
wait(500)
while UO.Count( Vosk ) == 0
wait(100)
wend
Endif
UO.DeleteJournal()
UO.WaitTargetType( Kozha )
UO.UseType( Kit )
k = 0
while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 50 )
k = k + 1
wait(300)
wend
if UO.Count( Scrol ) > 0 then
UO.FindType( Scrol )
UO.MoveItem( 'finditem', '0', Sunduk )
wait( 500 )
while UO.Count( Scrol ) > 0
wait(100)
wend
endif
Wend
UO.CancelMenu()
end sub
#####################################################################
; Tinker. v.1.03b (c) Edred
;
; Чар берет из сундука инготы, крафтит из них бутылки
; и складывает эти бутылки в этот же сундук.
; Если инги закончились - выход.
;
sub tinker()
VAR Sunduk = '0x4052561D' ; Сериал сундука
VAR Ingi = '0x1BEF' ; Тип ингов
VAR Instrum = '0x1EBC' ; Тип инструмента тинкера
VAR Bottle = '0x0F0E' ; Тип бутылки
VAR Kolvo = 200 ; Брать ингов
VAR k = 0
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
; Начало отсчета скрипта
While TRUE
EatChar( Sunduk, 2, 2, 60 )
UO.FindType( Ingi, -1, Sunduk ) ; Ищем инги в сундуке
If UO.FindCount() == 0 Then
UO.Print("Iron Ingots not found, script terminated")
return
Endif
UO.Grab( Str( Kolvo ), 'finditem' )
wait( 2000 )
While UO.Count( Ingi ) > 0
; Пока в паке есть инги
; UO.CancelMenu()
UO.Print('Ostalos ' + Str( UO.Count( Ingi ) ) + ' ingots' )
UO.DeleteJournal()
UO.WaitMenu ('Tinkering', 'Tools', 'Tools', 'empty bottle' )
UO.UseType( Instrum )
k = 0
while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
k = k + 1
wait(500)
wend
if UO.Count( Bottle ) > 0 then
UO.FindType( Bottle, -1, -1 )
UO.MoveItem( 'finditem', 0, Sunduk )
wait( 1000 )
UO.Print( 'Bottle moved' )
end if
Wend
Wend
end sub
#####################################################################
; TinkerWood. v.1.02b (c) Edred
;
; Чар берет с пола логи, крафтит из них игровые доски
; и скидывает их в трэш.
; Если логи на полу закончились - выход.
;
sub tinkerwood()
VAR MyTrash = '0x4042F38E' ; Сериал мусорки
VAR Logi = '0x1BDD' ; Тип логов (logs type)
VAR Instrum = '0x1EBC' ; Тип инструмента тинкера
VAR Chess = '0x0E1C' ; Тип игровой доски
VAR Kolvo = 300 ; Брать логов (Count of logs for a one grab)
VAR j, k
While TRUE
UO.FindType( Logi, -1, 1 ) ; Ищем логи на полу
UO.Grab( Str( Kolvo ), 'finditem' ) ; Кладем логи в пак
wait( 1000 )
If UO.FindCount() == 0 Then
UO.Print("Logs not found, script terminated")
return
Endif
While UO.Count( Logi ) > 4
; Пока в паке есть логи
UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logov' )
UO.DeleteJournal()
UO.CancelMenu()
UO.WaitMenu ('Tinkering', 'Tavern Types', 'Tavern Types', 'backgammon board' )
UO.UseType( Instrum )
k = 0
while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
k = k + 1
wait(500)
wend
; Wait( 14000 )
; Скрафтили доску
; Сразу переложим ее в трэш
while UO.Count( Chess ) > 0
UO.FindType( Chess )
UO.MoveItem( 'finditem', 0, MyTrash )
wait( 1000 )
UO.Print( 'Backgammon board trashed' )
wend
Wend
Wend
end sub
#####################################################################
; TinkerLockPick. v.1.00b (c) Edred
;
; Чар берет из сундука инготы, крафтит из них отмычки
; и складывает эти отмычки в этот же сундук.
; Если инги закончились - выход.
;
sub tinker()
VAR Sunduk = '0x4052561D' ; Сериал сундука
VAR Ingi = '0x1BEF' ; Тип ингов
VAR Instrum = '0x1EBC' ; Тип инструмента тинкера
VAR LPick = '0x14FB' ; Тип отмычки
VAR Kolvo = 200 ; Брать ингов
VAR k = 0
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
; Начало отсчета скрипта
While TRUE
EatChar( Sunduk, 2, 2, 60 )
UO.FindType( Ingi, -1, Sunduk ) ; Ищем инги в сундуке
If UO.FindCount() == 0 Then
UO.Print("Iron Ingots not found, script terminated")
return
Endif
UO.Grab( Str( Kolvo ), 'finditem' )
wait( 2000 )
While UO.Count( Ingi ) > 0
; Пока в паке есть инги
; UO.CancelMenu()
UO.Print('Ostalos ' + Str( UO.Count( Ingi ) ) + ' ingots' )
UO.DeleteJournal()
UO.WaitMenu ('Tinkering', 'Keys', 'Keys and Lockpicks', 'Iron lockpick' )
UO.UseType( Instrum )
k = 0
while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
k = k + 1
wait(500)
wend
if UO.Count( LPick ) > 0 then
UO.FindType( LPick, -1, -1 )
UO.MoveItem( 'finditem', 0, Sunduk )
wait( 1000 )
UO.Print( 'Lockpicks moved' )
end if
Wend
Wend
end sub
#####################################################################
; Carpentry. v.1.13b (c) Edred
;
; Чар берет из сундука 1 пустой мешок, кладет этот мешок в сундук 2,
; берет с пола логи, крафтит из них удочки и складывает эти удочки
; в этот мешок в сундуке 2. Если логи на полу или пустые мешки
; кончились - выход
;
sub carpentry()
VAR Sunduk1 = '0x4017439B' ; Сериал сундука с пустыми мешками
VAR Sunduk2 = '0x4000F46C' ; Сериал пустого сундука
VAR Meshok = '0x0E76' ; Тип мешка
VAR Logi = '0x1BDD' ; Тип логов
VAR Rubanok = '0x1031' ; Тип инструмента карпентера
VAR Udochka = '0xDBF' ; Тип удочки
VAR Kolvo = 460 ; Брать логов (2 лога = 1 удочка)
VAR MeshSer, j, k
While TRUE
UO.FindType( Logi, -1, 1 ) ; Ищем логи на полу
UO.Grab( Str( Kolvo ), 'finditem' ) ; Кладем логи в пак
wait( 2000 )
If UO.FindCount() == 0 Then
UO.Print("Logs not found, script terminated")
return
Endif
UO.FindType( Meshok, -1, Sunduk1 ) ; Ищем мешок в сундуке 1
MeshSer = UO.GetSerial( 'finditem' )
UO.Grab( '1', 'finditem' ) ; Кладем его в бэкпак
wait( 2000 )
UO.MoveItem( MeshSer, 0, Sunduk2 )
wait( 2000 )
While UO.Count( Logi ) > 0
; Пока в паке есть логи
UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logov' )
UO.DeleteJournal()
UO.CancelMenu()
UO.WaitMenu ('Carpentry', 'Fishing Poles', 'Fishing Poles', 'fishing pole' )
UO.UseType( Rubanok )
k = 0
while NOT UO.InJournal('You put') AND NOT UO.InJournal('fail') AND ( k < 30 )
k = k + 1
wait(500)
wend
; Wait( 14000 )
; Скрафтили удочку
; Сразу переложим ее в мешок
if UO.Count( Udochka ) > 0 then
UO.FindType( Udochka, -1, 'backpack' )
UO.MoveItem( 'finditem', 0, MeshSer )
wait( 2000 )
UO.Print( 'Udochka perelozhena' )
end if
Wend
Wend
end sub
#####################################################################
; Carpentry. v.1.14D (c) Edred
;
; Чар берет берет с пола логи, крафтит из них удочки и скидывает удочки
; в трэш. Если логи на полу кончились - выход.
; (Get logs from ground and craft fishing pole. Move fishing pole trash)
;
; v. 1.13D Special Edition (for Democratic)
; v. 1.14D Special Edition (for Chyzzzz): берем логи из сундука. Заодно
; немного причесываю скрипт и переходим на Automenu.
;
sub carpentryD()
VAR MyTrash = '0x4017439B' ; Сериал мусорки (ID of trash)
VAR Sunduk = '0x4017439B' ; Сериал сундука с логами
VAR Logi = '0x1BDD' ; Тип логов (logs type)
VAR Rubanok = '0x1031' ; Тип инструмента (carpentry tools type)
VAR Udochka = '0xDBF' ; Тип удочки (fishing pole type)
VAR Kolvo = 200 ; Брать логов (Count of logs for a one grab)
VAR j, k, sum = 0
UO.CancelMenu()
UO.AutoMenu ('Carpentry', 'Fishing Poles' )
UO.AutoMenu ('Fishing Poles', 'fishing pole' )
UO.UseObject( Sunduk )
wait(1000)
CheckLag()
While UO.SkillVal( 'Carpentry' ) < 1000
UO.FindType( Logi, '-1', Sunduk ) ; Ищем логи в сундуке
UO.Grab( Str( Kolvo ), 'finditem' ) ; Кладем логи в пак
wait( 1000 )
If UO.FindCount() == 0 Then
UO.Print("Logs not found, script terminated")
return
Endif
While UO.Count( Logi ) > 0
; Пока в паке есть логи
UO.Print('Ostalos ' + Str( UO.Count( Logi ) ) + ' logov' )
UO.DeleteJournal()
UO.UseType( Rubanok )
k = 0
repeat
k = k + 1
wait(500)
until UO.InJournal('You put') OR UO.InJournal('fail') OR ( k > 30 )
If UO.InJournal('You put') Then
sum = sum + 1
UO.Print( 'Crafted ' + str(sum) + ' fishing poles' )
Endif
while UO.Count( Udochka ) > 0
UO.FindType( Udochka )
UO.MoveItem( 'finditem', '0', MyTrash )
wait( 500 )
CheckLag()
Wend
Wend
Wend
endsub
#####################################################################
; Cartography. v.1.02b (c) Edred
;
; Ищем в сундуке 1 мешок с картами, берем по очереди из него карты,
; качаем на них картографию (с повторами в случае физлов), потом скидываем
; карты в трэш. Если мешки кончились - выход.
;
; 1.02 - добавил кормежку и прокачку спирит спика. Убрал заодно "ересь".
; По-хорошему, скрипт надо переписать, структура рыхлая, но лень
;
sub cartograph()
VAR Sunduk1 = '0x40403350' ; Сериал сундука с мешками с картами
VAR Trash = '0x403D6BCA' ; Сериал мусорного ведра
VAR Meshok = '0x0E76' ; Тип мешка
VAR Map = '0x14EB' ; Тип карты
VAR Fizzle = 'Thy trembling hand results'
VAR Success = 'You put the map in your pack'
VAR MeshSer, j, k, MapSer, flag
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
VAR SpiritTime = UO.Timer()
UO.CancelMenu()
UO.IgnoreReset()
UO.AutoMenu( 'What sort of map', 'Sea Chart' )
UO.FindType( Meshok, '-1', Sunduk1 )
While UO.FindCount() > 0
EatChar( Sunduk1, 2, 1, 120 )
MeshSer = UO.GetSerial( 'finditem' )
UO.UseObject( MeshSer )
wait(500)
CheckLag()
UO.FindType( Map, '-1', MeshSer )
While UO.FindCount() > 0
MapSer = UO.GetSerial( 'finditem' )
UO.Grab( '1', 'finditem' )
repeat
wait(100)
until UO.Count( Map ) == 1
flag = 0
While flag == 0
DeleteJournal( Fizzle )
DeleteJournal( Success )
UO.UseObject( MapSer )
k = 0
repeat
k = k + 1
wait(100)
until UO.InJournal( Fizzle ) OR UO.InJournal( Success ) OR k > 1200
If UO.InJournal( Success ) OR k > 1200 Then
flag = 1
Endif
Wend
UO.FindType( Map )
While UO.FindCount() > 0
UO.MoveItem( 'finditem', '0', Trash )
wait(1000)
CheckLag()
UO.FindType( Map )
Wend
If ( UO.Timer() - SpiritTime ) / 600 > 5 Then
; Прошло 5 минут с момента последней прокачки Spirit Speak
SpSpeak()
SpiritTime = UO.Timer()
Endif
UO.FindType( Map, '-1', MeshSer )
Wend
UO.Ignore( MeshSer )
UO.FindType( Meshok, '-1', Sunduk1 )
Wend
UO.IgnoreReset()
UO.CancelMenu()
endsub
#####################################################################
; Inscription. v.1.04b (c) Edred
;
; Берем из сундука blank scroll, nightshade, black pearl,
; крафтим из них скролл Magic Arrow (с повторами в случае физлов),
; потом скидываем готовый скролл в тот же сундук.
; Если что-либо кончилось - выход.
sub inscript1()
VAR Sunduk = '0x404CFAA3' ; Сериал сундука с бланкскроллами и регами
VAR Blank = '0x0E34' ; Тип бланк скролла
VAR Arrow = '0x1F5F' ; Тип скроллов Flame Strike
VAR Reg1 = '0x0F8C' ; SA
VAR Reg2 = '0x0F8D' ; SS
VAR Fizzle = 'You fail to inscribe the scroll'
VAR Success = 'You put the'
VAR k
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
VAR SpiritTime = UO.Timer()
UO.CancelMenu()
UO.AutoMenu( 'Spell Circles', 'Seventh Circle' )
UO.AutoMenu( 'Spell Circle 7', 'Flamestrike' )
UO.UseObject( Sunduk )
wait(1000)
While UO.SkillVal( 'Inscription' ) < 1000
; берем бланк скроллы
EatChar( Sunduk, 2, 1, 120 )
If UO.Count( Blank ) == 0 Then
UO.FindType( Blank, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print( 'Blank Scroll not found. Script terminated' )
return
Endif
If UO.GetQuantity( 'finditem' ) < 100 Then
UO.Grab( '0', 'finditem' )
repeat
wait(100)
until UO.Count( Blank ) > 0
CheckLag()
Else
UO.Grab( '100', 'finditem' )
repeat
wait(100)
until UO.Count( Blank ) == 100
CheckLag()
Endif
Endif
; берем найтшэд
If UO.Count( Reg1 ) == 0 Then
UO.FindType( Reg1, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print( 'Nightshade not found. Script terminated' )
return
Endif
If UO.GetQuantity( 'finditem' ) < 100 Then
UO.Grab( '0', 'finditem' )
repeat
wait(100)
until UO.Count( Reg1 ) > 0
CheckLag()
Else
UO.Grab( '100', 'finditem' )
repeat
wait(100)
until UO.Count( Reg1 ) == 100
CheckLag()
Endif
Endif
; берем блэкперл
If UO.Count( Reg2 ) == 0 Then
UO.FindType( Reg2, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print( 'Black Pearls not found. Script terminated' )
return
Endif
If UO.GetQuantity( 'finditem' ) < 100 Then
UO.Grab( '0', 'finditem' )
repeat
wait(100)
until UO.Count( Reg2 ) > 0
CheckLag()
Else
UO.Grab( '100', 'finditem' )
repeat
wait(100)
until UO.Count( Reg2 ) == 100
CheckLag()
Endif
Endif
repeat
DeleteJournal( Fizzle )
DeleteJournal( Success )
UO.UseType( Blank )
k = 0
repeat
k = k + 1
wait(100)
until UO.InJournal( Fizzle ) OR UO.InJournal( Success ) OR UO.Count( Blank ) == 0 OR UO.Count( Reg1 ) == 0 OR UO.Count( Reg2 ) == 0 OR k > 600
If UO.Mana < 50 Then
repeat
UO.UseSkill( 'Meditation' )
wait(2000)
until UO.Mana == UO.Int
Endif
If ( UO.Timer() - SpiritTime ) / 600 > 5 Then
; Прошло 5 минут с момента последней прокачки Spirit Speak
SpSpeak()
SpiritTime = UO.Timer()
Endif
Until UO.Count( Blank ) == 0 OR UO.Count( Reg1 ) == 0 OR UO.Count( Reg2 ) == 0
While UO.Count( Arrow ) > 0
UO.FindType( Arrow )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', 0, Sunduk )
wait(1000)
CheckLag()
Endif
Wend
Wend
UO.CancelMenu()
endsub
#####################################################################
; Inscription2. v.1.05b (c) Edred
;
; Берем из сундука blank scroll, blood pearl, black moss, mandrake root
; крафтим из них скролл Recall (с повторами в случае физлов),
; потом скидываем готовый скролл в тот же сундук.
; Если что-либо кончилось - выход.
sub inscript2()
VAR Sunduk = '0x40140DD1' ; Сериал сундука с бланкскроллами и регами
VAR Blank = '0x0E34' ; Тип бланк скролла
VAR Arrow = '0x1F4C' ; Тип скроллов Recall
VAR Reg1 = '0x0F86' ; mandrake root
VAR Reg2 = '0x0F7A' ; black pearl
VAR Reg3 = '0x0F7B' ; blood moss
VAR Fizzle = 'You fail to inscribe the scroll'
VAR Success = 'You put the'
VAR k
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
VAR SpiritTime = UO.Timer()
UO.CancelMenu()
UO.AutoMenu( 'Spell Circles', 'Fourth Circle' )
UO.AutoMenu( 'Spell Circle 4', 'Recall' )
UO.UseObject( Sunduk )
wait(1000)
While UO.SkillVal( 'Inscription' ) < 1000
; берем бланк скроллы
EatChar( Sunduk, 2, 1, 120 )
UO.Print( 'test2' )
If UO.Count( Blank ) == 0 Then
UO.FindType( Blank, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print( 'Blank Scroll not found. Script terminated' )
return
Endif
If UO.GetQuantity( 'finditem' ) < 100 Then
UO.Grab( '0', 'finditem' )
repeat
wait(100)
until UO.Count( Blank ) > 0
wait(100)
CheckLag()
Else
UO.Grab( '100', 'finditem' )
repeat
wait(100)
until UO.Count( Blank ) == 100
wait(100)
CheckLag()
Endif
Endif
; берем mandrake root
If UO.Count( Reg1 ) == 0 Then
UO.FindType( Reg1, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print( 'Mandrake Root not found. Script terminated' )
return
Endif
If UO.GetQuantity( 'finditem' ) < 100 Then
UO.Grab( '0', 'finditem' )
repeat
wait(100)
until UO.Count( Reg1 ) > 0
wait(100)
CheckLag()
Else
UO.Grab( '100', 'finditem' )
repeat
wait(100)
until UO.Count( Reg1 ) == 100
wait(100)
CheckLag()
Endif
Endif
; берем black pearl
If UO.Count( Reg2 ) == 0 Then
UO.FindType( Reg2, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print( 'Black Pearls not found. Script terminated' )
return
Endif
If UO.GetQuantity( 'finditem' ) < 100 Then
UO.Grab( '0', 'finditem' )
repeat
wait(100)
until UO.Count( Reg2 ) > 0
wait(100)
CheckLag()
Else
UO.Grab( '100', 'finditem' )
repeat
wait(100)
until UO.Count( Reg2 ) == 100
wait(100)
CheckLag()
Endif
Endif
; берем blood moss
If UO.Count( Reg3 ) == 0 Then
UO.FindType( Reg3, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print( 'Blood Moss not found. Script terminated' )
return
Endif
If UO.GetQuantity( 'finditem' ) < 100 Then
UO.Grab( '0', 'finditem' )
repeat
wait(100)
until UO.Count( Reg3 ) > 0
CheckLag()
Else
UO.Grab( '100', 'finditem' )
repeat
wait(100)
until UO.Count( Reg3 ) == 100
CheckLag()
Endif
Endif
repeat
; If ( UO.Timer() - SpiritTime ) / 600 > 5 Then
; ; Прошло 5 минут с момента последней прокачки Spirit Speak
; SpSpeak()
; SpiritTime = UO.Timer()
; Endif
DeleteJournal( Fizzle )
DeleteJournal( Success )
UO.UseType( Blank )
k = 0
repeat
k = k + 1
wait(100)
until UO.InJournal(Fizzle) OR UO.InJournal(Success) OR UO.Count(Blank)==0 OR UO.Count(Reg1)==0 OR UO.Count(Reg2)==0 OR UO.Count(Reg3)==0 OR k > 600
If UO.Mana < 10 Then
repeat
UO.UseSkill( 'Meditation' )
wait(2000)
until UO.Mana == UO.Int
Endif
Until UO.Count( Blank ) == 0 OR UO.Count( Reg1 ) == 0 OR UO.Count( Reg2 ) == 0 OR UO.Count( Reg3 ) == 0
UO.Print( 'test1' )
While UO.Count( Arrow ) > 0
UO.FindType( Arrow )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', 0, Sunduk )
wait(1000)
CheckLag()
Endif
Wend
Wend
UO.CancelMenu()
endsub
#####################################################################
; Veterinar. v.1.08 (c) Edred
;
; Ставим рядом двух чаров, у каждого по лошади. Рядом с чарами
; сундук. В сундук чистые бинты. Сериалы лошадей каждому в скрипт.
; Стравливаем лошадей (можно использовать скрипт provocat2.sc) и
; качаемся. Внимание! При низком скилле за работой скрипта надо
; следить (одним чаром, вытащив на экран статусы обоих лошадей) и
; периодически садиться на лошадь и отъезжать в сторону, слезать с нее
; и давать обоим чарам вылечить лошадей полностью. После 40-45 скилла
; нужда в этом отпадает (скилл растет быстро).
;
sub Veterinar()
VAR Sunduk = '0x4048E250' ; Сериал сундука с бинтами и медом
VAR Bandag = '0x0E21' ; Тип бинтов
VAR BlBandag = '0x0E20' ; Тип грязных бинтов
VAR Horse1 = '0x0040F759' ; Сериал лошади ЭТОГО чара
VAR fizzle = 'You apply bandages to a horse but fail'
VAR Success = 'You apply the bandages to a horse'
VAR mustwait = 'You must wait to use bandages again'
VAR k
UO.UseObject( Sunduk )
wait(1000)
While UO.SkillVal( 'Veterinary' ) < 1000
If UO.Count( Bandag ) < 10 Then
UO.FindType( Bandag, '-1', Sunduk )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', '200' )
wait(500)
CheckLag()
Else
UO.Print( 'Bandage not found! Script terminated!' )
return
Endif
UO.FindType( BlBandag )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', '0', sunduk )
wait(500)
CheckLag()
Endif
Endif
If UO.GetHP( Horse1 ) < UO.GetMaxHP( Horse1 ) Then
DeleteJournal( fizzle )
DeleteJournal( success )
DeleteJournal( mustwait )
UO.Print( 'Veterinary!' )
UO.WaitTargetObject( Horse1 )
UO.UseType( Bandag )
k = 0
repeat
wait(100)
k = k + 1
until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR UO.InJournal( mustwait ) OR k > 30
If UO.InJournal( success ) Then
wait(2500)
Endif
If UO.InJournal( mustwait ) Then
wait(500)
Endif
wait(1500)
Else
wait(500)
Endif
Wend
endsub
;
Sub Provocat2()
; Для провокации вам в паке необходим муз.инструмент!
;
VAR ser1, ser2
VAR Horse1 = '0x00C8', Horse2 = '0x00E2'
UO.Set( 'finddistance', '2' )
UO.FindType( Horse1, '-1', '1' )
If UO.FindCount() == 0 Then
UO.FindType( Horse2, '-1', '1' )
If UO.FindCount() == 0 Then
UO.Print( 'Horse 1 not found!' )
return
Endif
Endif
ser1 = UO.GetSerial( 'finditem' )
UO.Print( ser1 )
UO.Ignore( 'finditem' )
UO.FindType( Horse1, '-1', '1' )
If UO.FindCount() == 0 Then
UO.FindType( Horse2, '-1', '1' )
If UO.FindCount() == 0 Then
UO.Print( 'Horse 2 not found!' )
UO.IgnoreReset()
return
Endif
Endif
ser2 = UO.GetSerial( 'finditem' )
UO.Print( ser2 )
UO.IgnoreReset()
UO.WaitTargetObject( ser1, ser2 )
UO.UseSkill( 'Provocation' )
endsub
#####################################################################
; Veterinar2. v.1.03 (c) Edred
;
; Ставим две лошади напротив друг друга, кладем в сундук рядом с чаром
; чистые бинты, мед. Натравливаем при помощи провокации одну лошадь на
; другую и запускаем скрипт. Скрипт контролирует здоровье обеих лошадей
; и, если необходимо, подлечивает их с бинтов. Бинты он берет из сундука
; и туда же скидывает грязные. Скрипт с подкормкой чара и прокачкой
; спирит спик. Скрипт сам определяет сериалы лошадей и сам их провоцирует
; на атаку (если у вас не прокачан скилл Провокация, отключите этот блок -
; он отмечен в коде). Для провоцирования вы должны иметь муз. инструмент
; в паке.
;
sub veterinar2()
VAR Sunduk = '0x4048E250' ; Сериал сундука с бинтами и медом
VAR Bandag = '0x0E21' ; Тип бинтов
VAR BlBandag = '0x0E20' ; Тип грязных бинтов
VAR Horse1, Horse2, k
VAR HorTyp1 = '0x00C8', HorTyp2 = '0x00E4'
VAR fizzle = 'You apply bandages to a horse but fail'
VAR Success = 'You apply the bandages to a horse'
VAR mustwait = 'You must wait to use bandages again'
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
VAR SpiritTime = UO.Timer()
UO.UseObject( Sunduk )
wait(1000)
### Блок определения сериалов лошадей
UO.Set( 'finddistance', '3' )
UO.FindType( HorTyp1, '-1', '1' )
If UO.FindCount() == 0 Then
UO.FindType( HorTyp2, '-1', '1' )
If UO.FindCount() == 0 Then
UO.Print( 'Horse 1 not found!' )
return
Endif
Endif
Horse1 = UO.GetSerial( 'finditem' )
UO.Print( Horse1 )
UO.Ignore( 'finditem' )
UO.FindType( HorTyp1, '-1', '1' )
If UO.FindCount() == 0 Then
UO.FindType( HorTyp2, '-1', '1' )
If UO.FindCount() == 0 Then
UO.Print( 'Horse 2 not found!' )
UO.IgnoreReset()
return
Endif
Endif
Horse2 = UO.GetSerial( 'finditem' )
UO.Print( Horse2 )
UO.IgnoreReset()
### Блок провоцирования одной лошади на другую. Без ретрейнов - у меня ГМ.
UO.WaitTargetObject( Horse1, Horse2 )
UO.UseSkill( 'Provocation' )
wait(1000)
### Блок прокачки
While UO.SkillVal( 'Veterinary' ) < 1000
If UO.Count( Bandag ) < 10 Then
UO.FindType( Bandag, '-1', Sunduk )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', '200' )
wait(500)
CheckLag()
Else
UO.Print( 'Bandage not found! Script terminated!' )
return
Endif
UO.FindType( BlBandag )
If UO.FindCount() > 0 Then
UO.MoveItem( 'finditem', '0', sunduk )
wait(500)
CheckLag()
Endif
Endif
EatChar( Sunduk, 2, 1, 60 )
If ( UO.Timer() - SpiritTime ) / 600 > 5 Then
; Прошло 5 минут с момента последней прокачки Spirit Speak
SpSpeak()
SpiritTime = UO.Timer()
Endif
If ( UO.GetHP( Horse1 ) < UO.GetMaxHP( Horse1 ) ) OR ( UO.GetHP( Horse2 ) < UO.GetMaxHP( Horse2 ) ) Then
# Здесь я решил организовать так: чар лечит сначала ту лошадь, здоровья у которой меньше. Естественно,
# если одна из лошадей здорова - то у второй меньше здоровья, иначе бы мы в If не вошли.
If UO.GetHP( Horse1 ) < UO.GetHP( Horse2 ) Then
; лечим первую лошадь
DeleteJournal( fizzle )
DeleteJournal( success )
DeleteJournal( mustwait )
UO.Print( 'Veterinary!' )
UO.WaitTargetObject( Horse1 )
UO.UseType( Bandag )
k = 0
repeat
wait(100)
k = k + 1
until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR UO.InJournal( mustwait ) OR k > 30
If UO.InJournal( success ) Then
wait(2500)
Endif
If UO.InJournal( mustwait ) Then
wait(500)
Endif
wait(1500)
Else
wait(500)
Endif
If UO.GetHP( Horse1 ) > = UO.GetHP( Horse2 ) Then
; лечим вторую лошадь
DeleteJournal( fizzle )
DeleteJournal( success )
DeleteJournal( mustwait )
UO.Print( 'Veterinary!' )
UO.WaitTargetObject( Horse2 )
UO.UseType( Bandag )
k = 0
repeat
wait(100)
k = k + 1
until UO.InJournal( fizzle ) OR UO.InJournal( success ) OR UO.InJournal( mustwait ) OR k > 30
If UO.InJournal( success ) Then
wait(2500)
Endif
If UO.InJournal( mustwait ) Then
wait(500)
Endif
wait(1500)
Else
wait(500)
Endif
Else
wait(300)
Endif
Wend
endsub
#===================================================================#
#
# I. Прокачка других скиллов
#
#####################################################################
sub Magery()
; ver. 2.01 (c) Edred
;
; Вводим сундук (пак) с найтшэдом, вводим подкормку чара.
;
VAR sunduk = '0x40531245'
VAR targ = '0x4041C420'
VAR mir = 'You are at peace'
VAR NS = '0x0F88'
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
UO.UseObject( sunduk )
wait(1000)
CheckLag()
While UO.SkillVal( 'Magery' ) < 1000
If UO.Count( NS ) == 0 Then
UO.Findtype( NS, '-1', sunduk )
If UO.FindCount() == 0 Then
UO.Print( 'NightShade not found, script terminated' )
return
Endif
UO.MoveItem( 'finditem', '100' )
wait(500)
CheckLag()
Endif
If UO.Mana < 20 Then
DeleteJournal( mir )
repeat
UO.UseSkill( 'Meditation' )
wait(2000)
until UO.InJournal( mir )
EatChar( sunduk, 2, 1, 60 )
Endif
UO.WaitTargetObject( targ )
UO.Cast( 'Poison' )
wait(3000)
Wend
endsub
#####################################################################
sub music()
VAR Gitara = '0x0EB4' ; тип балалайки
repeat
UO.UseType( Gitara )
wait(2000)
until UO.Dead()
endsub
#####################################################################
sub provocat()
; Provocation
VAR Horse1 = '0x004033E5' ; лошадь 1
VAR Horse2 = '0x0040349F' ; лошадь 2
repeat
UO.WaitTargetObject( Horse1, Horse2 )
UO.UseSkill( 'Provocation' )
wait(2000)
until UO.Dead()
endsub
#####################################################################
sub entic()
; Enticement
VAR Horse1 = '0x004033E5' ; лошадь 1
repeat
UO.WaitTargetObject( Horse1 )
UO.UseSkill( 'Enticement' )
wait(1000)
until UO.Dead()
endsub
#####################################################################
; Forensic. v.1.00b (c) Edred
;
sub forensic()
UO.WarMode( 0 )
repeat
UO.DeleteJournal()
UO.WaitTargetObject( 'lastcorpse' )
UO.UseSkill( 'Forensic' )
repeat
wait(100)
until UO.InJournal( "This is the corpse" ) OR UO.InJournal( "This is Body" ) OR UO.InJournal( "You can tell nothing" ) OR UO.InJournal( "You can't see the target" )
until UO.InJournal( "You can't see the target" )
UO.WarMode( 1 )
endsub
#####################################################################
sub Hidonly()
while UO.SkillVal( 'Hiding' ) < 1000
UO.UseSkill('Hiding')
Wait(4000)
wend
endsub
#####################################################################
sub HidStealth()
; while UO.SkillVal( 'Hiding' ) < 1000 AND UO.SkillVal( 'Stealth' ) < 1000
while UO.DEX < 100
while (UO.GetX() <> 1852)
GoHide()
UO.Press( 36 )
wait(1000)
wend
while (UO.GetX() <> 1864)
GoHide()
UO.Press( 34 )
wait(1000)
wend
wend
endsub
#####################################################################
sub macef()
VAR Kukla = '0x40429852', flag = 1
VAR maul = '0x143A'
while UO.SkillVal( 'Mace Fighting' ) < 600
flag = GetDagger( maul )
If flag == 0 Then
UO.Print( 'Maul not found!' )
return
Endif
UO.UseObject( Kukla )
wait(4000)
If UO.Life < 100 Then
UO.SayU( 'Guards!' )
Endif
wend
endsub
#####################################################################
sub fencing()
VAR Kukla = '0x40429852', flag = 1
VAR Dagger = '0x0F51'
while UO.SkillVal( 'Fencing' ) < 600
flag = GetDagger( Dagger )
If flag == 0 Then
UO.Print( 'Dagger not found!' )
return
Endif
UO.UseObject( Kukla )
wait(4000)
If UO.Life < 50 Then
UO.SayU( 'Guards!' )
Endif
wend
endsub
#####################################################################
sub swordsman()
VAR Kukla = '0x40429852', flag = 1
VAR sword = '0x13FE'
while UO.SkillVal( 'Swordsmanship' ) < 600 OR UO.Str < 150
flag = GetDagger( sword )
If flag == 0 Then
UO.Print( 'Katana not found!' )
return
Endif
UO.UseObject( Kukla )
wait(4000)
If UO.Life < 50 Then
UO.SayU( 'Guards!' )
Endif
wend
endsub
#####################################################################
sub Intell()
VAR Anima = '0x005F631D'
VAR ms1 = "a horse looks superhumanly strong"
VAR ms2 = "think of anything"
VAR ms3 = "it is loyal"
VAR ms4 = "a horse looks dumb as a rock"
VAR ms5 = "You cannot seem to judge"
VAR k
while UO.SkillVal( 'Evaluating Intelligence' ) < 1000
DeleteJournal( ms1 )
DeleteJournal( ms2 )
UO.WaitTargetObject( Anima )
UO.UseSkill( 'Anatomy' )
CheckLag()
k = 0
repeat
wait(100)
k = k + 1
until UO.InJournal( ms1 ) OR UO.InJournal( ms2 ) OR k > 30
DeleteJournal( ms3 )
DeleteJournal( ms2 )
UO.WaitTargetObject( Anima )
UO.UseSkill( 'Animal Lore' )
CheckLag()
k = 0
repeat
wait(100)
k = k + 1
until UO.InJournal( ms3 ) OR UO.InJournal( ms2 ) OR k > 30
DeleteJournal( ms4 )
DeleteJournal( ms5 )
DeleteJournal( ms2 )
UO.WaitTargetObject( Anima )
UO.UseSkill( 'Evaluating Intelligence' )
CheckLag()
k = 0
repeat
wait(100)
k = k + 1
until UO.InJournal( ms4 ) OR UO.InJournal( ms5 ) OR UO.InJournal( ms2 ) OR k > 30
wend
endsub
#===================================================================#
# CAMPING #
#===================================================================#
# v.1.04b (с) Edred #
#===================================================================#
; Берем в пак 200 хвороста и реги, реколлимся по руне туда где можно
; жечь костры, врубаем медитацию, отделяем по 1 шт. хвороста, кладем их
; вокруг чара с трех сторон, дважды щелкаем по этим кучкам хвороста
; для их разжигания (с повторами в случае физлов). Отходим назад
; (направление на правый нижний угол - клавиша "3" на нумпаде).
; Повторям последнюю операцию пока чар не придет в точку FinalX.
; Реколлимся на базу, добираем из ящика хворост и реги. И по кругу.
;
; Разметьте руну где-нибудь в непосещаемом городе, прогуляйтесь шагов
; на 30-50 по диагонали по направлению цифры 3 на нумпаде, занесите
; координату X этой точки в FinalX (для надежности и защиты от лагов
; будет лучше если в этой точке чар упрется в стенку). На базе рядом
; с реколлкой поставьте сундук и в него положите много хвороста (можно
; одной "неподьъемной" кучкой и побольше регов для реколла.
; Занесите руну в этот город в ту же рунбуку, где и руна на базу.
;
sub camping()
DIM Regs[3]
Regs[0] = '0x0F7A' ; Black Pearl
Regs[1] = '0x0F7B' ; Bood Moss
Regs[2] = '0x0F86' ; Mandrake Root
VAR Hvorost = '0x0DE1'
VAR flag, myx, myy, myz, fin, i
VAR FinalX = 1350
VAR Sunduk = '0x40591B82'
VAR RuneToBase = '20'
VAR RuneToFire = '30'
;
; Стартуем стоя в начале пути.
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
UO.Exec( 'set finddistance 3' )
While UO.SkillVal( 'Camping' ) < 1000
fin = 0
UO.UseSkill( 'Meditation' )
UO.FindType ( Hvorost )
While ( UO.FindCount() > 0 ) AND ( fin == 0 )
myx = UO.GetX()
myy = UO.GetY()
myz = UO.GetZ()
UO.MoveItem('finditem', '1', 'ground', str(myx-1), str(myy), str(myz))
wait(1000)
CheckLag()
UO.FindType ( Hvorost )
UO.MoveItem('finditem', '1', 'ground', str(myx), str(myy+1), str(myz))
wait(1000)
CheckLag()
UO.FindType ( Hvorost )
UO.MoveItem('finditem', '1', 'ground', str(myx), str(myy-1), str(myz))
wait(1000)
CheckLag()
UO.Findtype( Hvorost, -1, 1 )
While UO.FindCount() > 0 AND NOT UO.InJournal( "You can't ignite several" )
repeat
flag = 1
DeleteJournal( "You fail to ignite" )
DeleteJournal( "You can't ignite several" )
DeleteJournal( "You must wait" )
UO.UseFromGround( Hvorost )
wait(1000)
CheckLag()
If UO.InJournal( "You must wait" ) OR UO.InJournal( "You fail to ignite" ) Then
flag = 0
wait(1000)
Endif
If UO.InJournal( "You can't ignite several" ) Then
UO.FindType( Hvorost, -1, 1 )
While UO.FindCount() > 0
If UO.GetQuantity( 'finditem' ) > 1 Then
UO.Grab( str( UO.GetQuantity( 'finditem' ) - 1 ), 'finditem' )
wait(1000)
CheckLag()
Endif
UO.Ignore( 'finditem' )
UO.FindType( Hvorost, -1, 1 )
Wend
UO.IgnoreReset()
Endif
until flag
UO.Findtype( Hvorost, -1, 1 )
Wend
While ( UO.GetX() < myx + 1 ) AND ( fin == 0 )
UO.Press( 34 )
wait(300)
CheckLag()
If UO.GetX() == FinalX Then
fin = 1
Endif
Wend
UO.FindType ( Hvorost )
Wend
; достигли конца маршрута или кончился хворост
Recalling( 'CommonRunbook', RuneToBase )
UO.UseObject( Sunduk )
wait(1000)
CheckLag()
for i = 0 To 2
If UO.Count( Regs[i] ) < 6 Then
; этого рега меньше 6
UO.FindType( Regs[i], '-1', Sunduk )
UO.Grab( str( 6 - UO.Count( Regs[i] ) ), 'finditem' )
Wait( 1000 )
CheckLag()
Endif
next
If UO.Count( Hvorost ) < 200 Then
; хвороста меньше 200
UO.FindType( Hvorost, '-1', Sunduk )
UO.Grab( str( 200 - UO.Count( Hvorost ) ), 'finditem' )
Wait( 1000 )
CheckLag()
Endif
EatChar( Sunduk, 2, 1, 60 )
Recalling( 'CommonRunbook', RuneToFire )
Wend
endsub
#===================================================================#
# COOKING #
#===================================================================#
# v.1.05b (с) Edred #
#===================================================================#
;
; Встаем рядом среколлкой на базе, рядом с чаром в АМЗ ставим сундук или
; ящик. В него раскладываем много кучек хвороста не больше чем по 500
; в кучке (иначе чар не сможет взять 1 шт.) и кладем несколько стопок стейков
; (можно по 10к в стопке). Можно туда же добавить меда - уберите комментарий
; с EatChar() и добавьте эту функцию.
; Берем из сундука 1 шт хвороста, кладем в координаты TX, TY и зажигаем ее.
; Потом берем 1 шт. стейков из этого же сундука и жарим
; на костре или углях. При этом перед жаркой проверяем, есть ли в
; вокруг чара огонь или угли. если есть жарим, иначе опять жгем костер.
; Готовый стейк скидывается в этот же сундук.
;
; Перед разжиганием костра проверяем, прошло ли 5 минут с момента последней
; попытки прокачать Spirit Speak, если прошло - качаем.
;
sub cooking()
VAR Sunduk = '0x40591B82'
VAR Hvorost = '0x0DE1'
VAR Koster = '0x0DE3'
VAR Ugli = '0x0DE9'
VAR Fish = '0x097A'
VAR FishGot = '0x097B'
VAR TX = 1873
VAR TY = 387
VAR i, flag
VAR SpiritTime = UO.Timer()
UO.CancelTarget()
UO.Exec( 'set finddistance 3' )
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
UO.UseObject( Sunduk )
While UO.SkillVal( 'Cooking' ) < 1000
; EatChar( Sunduk, 2, 1, 120 )
# ----------------------------------
# блок запуска прокачки Spirit Speak
If ( UO.Timer() - SpiritTime ) / 600 > 5 Then
; Прошло 5 минут с момента последней прокачки Spirit Speak
SpSpeak()
SpiritTime = UO.Timer()
Endif
# ----------------------------------
wait(1000)
UO.FindType( Hvorost, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print( 'No kindling found. Script terminated' )
return
Endif
UO.MoveItem( 'finditem', '1', 'ground', str(TX), str(TY), str(UO.GetZ()) )
wait(1000)
CheckLag()
UO.Findtype( Hvorost, -1, 1 )
; wait(1000)
If UO.FindCount() > 0 Then
repeat
UO.UseFromGround( Hvorost )
wait(1000)
UO.FindType( Koster, -1, 1 )
until UO.FindCount() > 0
; костер горит
flag = 1
repeat
; взять из сундука 1 стейк
If UO.Count( Fish ) == 0 Then
UO.FindType( Fish, -1, Sunduk )
If UO.FindCount() == 0 Then
UO.Print( 'No fish steaks found. Script terminated' )
return
Endif
UO.Grab( '1', 'finditem' )
; repeat
; wait(100)
; until UO.Count( Fish ) > 0
wait(1000)
CheckLag()
Endif
; теперь проверим не погас ли костер, не исчезли ли угли
UO.FindType( Koster, -1, 1 )
If UO.FindCount() <> 0 Then
; еще горит костер - жарим на нем стейк
If UseSteake( Fish, UO.GetSerial('finditem') ) Then
flag = 0
Endif
; стейк готов
Else
UO.FindType( Ugli, -1, 1 )
If UO.FindCount() <> 0 Then
; есть еще угли!
if UseSteake( Fish, UO.GetSerial('finditem') ) then
flag = 0
endif
Else
flag = 0
Endif
Endif
If UO.Count( FishGot ) > 0 Then
UO.FindType( FishGot )
UO.MoveItem( 'finditem', -1, Sunduk )
; repeat
; wait(100)
; until UO.Count( FishGot ) == 0
wait(1000)
CheckLag()
Endif
until flag == 0
Endif
Wend
endsub
Sub UseSteake( fish, koster )
VAR msg1 = 'You burn the food' ; физл
VAR msg2 = 'You put the fish steak' ; успех
VAR msg22 = 'You put the fish steaks' ; успех
VAR msg3 = 'You must wait' ; ждать
VAR msg4 = "You can't see the target"
repeat
DeleteJournal (msg1 )
DeleteJournal (msg2 )
DeleteJournal (msg22 )
DeleteJournal (msg3 )
DeleteJournal (msg4 )
UO.WaitTargetObject( 'finditem' )
UO.UseType( Fish )
repeat
wait(500)
until UO.InJournal(msg1) OR UO.InJournal(msg2) OR UO.InJournal(msg22) OR UO.InJournal(msg3) OR UO.InJournal(msg4)
if UO.InJournal(msg4) then
return 1
endif
if UO.InJournal(msg3) then
wait(500)
endif
until UO.InJournal(msg2) OR UO.InJournal(msg22)
return 0
endsub
sub NechegoDelat()
SpSpeak()
VAR SpiritTime = UO.Timer()
repeat
If ( UO.Timer() - SpiritTime ) / 600 > 5 Then
; Прошло 5 минут с момента последней прокачки Spirit Speak
SpSpeak()
SpiritTime = UO.Timer()
Else
wait(500)
Endif
until UO.Dead()
endsub
#####################################################################
; Herding v.1.02b (c) Edred
;
; Для прокачки потребуются две лошади (ламы или другие животные)
; и два щита (или какие-то другие объекты). Кладем щиты на пол в доме
; в паре шагов от чара (не стопкой, в соседние тайлы) и ставим обеих
; лошадей рядом с чаром. Чару в руку посох (одного посоха хватит на всю
; прокачку). Вносим серийники лошадей и щитов в соответствующие переменные.
; Поехали. Блоки, отвечающие за подкормку чара и прокачку
; Spirit Speak закомментарены.
;
sub Herding()
VAR Horse = '0x0040D2A1'
VAR Horse2 = '0x005AF4B1'
VAR Targ = '0x404215E8'
VAR Targ2 = '0x404214EF'
VAR Sunduk = '0x404E5494'
UO.SetGlobal( 'TimeProcess', str( UO.Timer() ) )
VAR success = "The animal goes where it is instructed"
VAR fizzle = "You don't seem"
VAR SpiritTime = UO.Timer()
UO.UseObject( Sunduk )
wait(1000)
CheckLag()
While UO.SkillVal( 'Herding' ) < 1000
EatChar( Sunduk, 2, 1, 120 )
If ( UO.Timer() - SpiritTime ) / 600 > 5 Then
; Прошло 5 минут с момента последней прокачки Spirit Speak
SpSpeak()
SpiritTime = UO.Timer()
Endif
DeleteJournal( success )
DeleteJournal( fizzle )
UO.WaitTargetObject( Horse, Targ )
UO.UseObject( UO.ObjAtLayer( 'Lhand' ) )
repeat
wait(100)
until UO.InJournal( fizzle ) OR UO.InJournal( success )
If UO.InJournal( success ) Then
; вторая животина
DeleteJournal( success )
UO.WaitTargetObject( Horse2, Targ2 )
UO.UseObject( UO.ObjAtLayer( 'Lhand' ) )
repeat
wait(100)
until UO.InJournal( fizzle ) OR UO.InJournal( success )
Endif
Wend
endsub