Var UseMagery = 0 ## 1 - Включить тренировку скилла Magery ## Необходимо наличие в рюкзаке реагента (Nightshade)
## Важно: все остальные скиллы, прокачка которых включена в ## переменных, будут качаться только после того, как в рюкзаке ## закончится реагент для прокачки магии
Var UsePeacemaking = 0 ## 1 - Включить тренировку скиллов Peacemaking и Musicianship ## Необходимо наличие в рюкзаке музыкального инструмента
Var UseEnticement = 0 ## 1 - Включить тренировку скилла Enticement ## Необходимо наличие в рюкзаке музыкального инструмента
Var UseHealMeditation = 1 ## 1 - Включить тренировку скиллов Healing и Meditaion ## Необходимо наличие в рюкзаке бинтов, тарелки с водой и проклятой вещи
Var UseVeterinary = 0 ## 1 - Включить тренировку скилла Veterinary ## Необходимо наличие в рюкзаке бинтов, тарелки с водой, проклятой вещи ## и реагентов для полиморфа (Blood Moss, Mandrake Root, Spider's Silk). ## Одновременная тренировка скилла Veterinary и скиллов Heal и Meditation ## невозможна!!!
Var UseSnooping = 0 ## 1 - Включить тренировку скилла Snooping. Рядом должен стоять чар, в рюкзак ## которого будем смотреть, и его окно должно быть открыто для выбора рюкзака.
Var UseStealing = 0 ## 1 - Включить тренировку скилла Stealing. Рядом должен стоять чар, из рюкзака ## которого будем таскать монеты, окно чара должно быть открыто для выбора рюкзака. ## Имеет два режима, режим задается переменной StealingMode
Var StealingMode = 0 ## Выбор режима используется только при включенной тренировке скилла Stealing. ## 1 - Использовать таскание предмета из рюкзака партнера, тем самым тренируя скилл ## Stealing. 0 - подбирать утащенные тренирующимся партнером предметы с земли.
Var StealingItem = 0 ## Выбор предмета используется только при включенной тренировке скилла Stealing ## и в режиме StealingMode = 1. ## StealingItem = 0 - таскать монеты. StealingItem = 1 - таскать пустые колбочки.
Var UseEating = 0 ## 1 - Включить поедание пищи раз в полчаса
Var GuardZone = 0 ## 1 - Территория, где происходит тренировка, охраняется. В этом случае чар ## будет звать охрану, если в результате нападения на него уменьшится его ## здоровье.
#####
Var UseReconnect = 0 ## 1 - Использовать переподсоединение к сфере в случае разрыва связи.
Var tim1, tim2 ## служебные переменные
############################################################################################ ### Код скрипта ### ###################
sub Train()
SetObjects()
if UseReconnect == 1 then uo.Exec('exec Reconnect') endif
if UseMagery == 1 then TrainMagery() endif
tim1=UO.Timer() tim2=UO.Timer()
Repeat
if ((UO.Timer()-tim1) > 18000) and (UseEating == 1) then Eat() tim1=UO.Timer() endif
if (UseHealMeditation == 0) and (UseVeterinary == 0) then if (UseAnatomy == 1) and (uo.SkillVal('Anatomy',1)<1000) then TrainAnatomy() endif
if (UseEvaluatingIntelligence == 1) and (uo.SkillVal('Evaluate Intelligence',1)<1000) then TrainEvaluatingIntelligence() endif
if (UO.Timer()-tim2>1200) and (UseSpiritSpeak == 1) and (uo.SkillVal('Spirit Speak',1)<1000) then TrainSpiritSpeak() endif
if (UseBegging == 1) and (uo.SkillVal('Begging',1)<1000) then TrainBegging() endif
if (UseTracking == 1) and (uo.SkillVal('Tracking',1)<1000) then TrainTracking() endif
if (UsePeacemaking == 1) and ((uo.SkillVal('Peacemaking',1)<1000) or (uo.SkillVal('Musicianship',1)<1000)) then TrainPeacemaking() endif
if (UseEnticement == 1) and (uo.SkillVal('Enticement',1)<1000) then TrainEnticement() endif
if (UseArmsLore == 1) and (uo.SkillVal('Arms Lore',1)<1000) then TrainArmsLore() endif
if (UseItemID == 1) and (uo.SkillVal('Item ID',1)<1000) then TrainItemID() endif
if (UseTasteID == 1) and (uo.SkillVal('Taste Identification',1)<1000) then TrainTasteID() endif
if (UseAnimalLore == 1) and (uo.SkillVal('Animal Lore',1)<1000) then TrainAnimalLore() endif
if (UseDetectHidden == 1) and (uo.SkillVal('Detect Hidden',1)<1000) then TrainDetectHidden() endif
if (UseSnooping == 1) and (uo.SkillVal('Snooping',1)<1000) then TrainSnooping() endif
if (UseStealing == 1) and (uo.SkillVal('Stealing',1)<1000) then TrainStealing(StealingMode) endif endif
if (UseHealMeditation == 1) and ((uo.SkillVal('Healing',1)<1000) or (uo.SkillVal('Meditation',1)<1000)) and (UseVeterinary == 0) then TrainHealMeditation() endif
if (UseVeterinary == 1) and (uo.SkillVal('Veterinary',1)<1000) and (UseHealMeditation == 0) then TrainVeterinary() endif
UO.DeleteJournal() Until UO.Dead()
endsub # Train
############################################################################################ ### Процедуры поддержки ### ###########################
sub SetObjects()
if (UseAnatomy == 1) or (UseEvaluatingIntelligence == 1) or (UseAnimalLore == 1) or (UseBegging == 1) then UO.Print('Выбери NPC: ') UO.Exec('addobject NPC') While UO.Targeting() Wait(100) Wend endif if (UseArmsLore == 1) or (UseItemID == 1) then UO.Print('Выбери предмет: ') UO.Exec('addobject Object') While UO.Targeting() Wait(100) Wend endif if (UseHealMeditation == 1) or (UseVeterinary == 1) then UO.Print('Выбери курсу: ') UO.Exec('addobject Curse') While UO.Targeting() Wait(100) Wend endif if (UseSnooping == 1) or ((UseStealing == 1) and (StealingMode == 1)) then UO.Print('Выбери чужой рюкзак: ') UO.Exec('addobject Backpack') While UO.Targeting() Wait(100) Wend endif if (UseTasteID == 1) or (UseEating ==1) then UO.Print('Выбери еду: ') UO.Exec('addobject Food') While UO.Targeting() Wait(100) Wend endif
endsub # SetObjects
##########
sub TrainMagery() var tim, k, flag
tim=UO.Timer() flag=false
While not flag UO.DeleteJournal() if ((UO.Timer()-tim) > 18000) and (UseEating == 1) then Eat() tim=UO.Timer() endif
While not ((UO.Mana<40) or flag) CheckLag() UO.Cast('Poison','self') MyWait(500) if UO.InJournal('lack') then CheckLag() UO.Cast('Poison','self') MyWait(500) if UO.InJournal('lack') then flag=true uo.Print("1") endif endif MyWait(2000) Wend
CheckLag()
While UO.Mana<UO.INT UO.UseSkill('Meditation') k=0 Repeat k=k+1 MyWait(100) Until UO.InJournal("You are") or UO.InJournal("You lose") or k>200 UO.DeleteJournal() MyWait(1000) Wend Wend
CheckLag() endsub # TrainMagery
##########
sub TrainHealMeditation() var Life, Mana, dLife, dMana, k
CheckLag() if UO.Waiting() then UO.CancelTarget() endif Life=uo.Str Mana=uo.Int uo.UseObject('0x1F04') repeat if (UseAnatomy == 1) and (uo.SkillVal('Anatomy',1)<1000) then TrainAnatomy() endif if (UseEvaluatingIntelligence == 1) and (uo.SkillVal('Evaluate Intelligence',1)<1000) then TrainEvaluatingIntelligence() endif if (UO.Timer()-tim2>1200) and (UseSpiritSpeak==1) and (uo.SkillVal('Spirit Speak',1)<1000) then TrainSpiritSpeak() endif if (UseBegging == 1) and (uo.SkillVal('Begging',1)<1000) then TrainBegging() endif if (UseTracking == 1) and (uo.SkillVal('Tracking',1)<1000) then TrainTracking() endif if (UsePeacemaking == 1) and ((uo.SkillVal('Peacemaking',1)<1000) or (uo.SkillVal('Musicianship',1)<1000)) then TrainPeacemaking() endif if (UseEnticement == 1) and (uo.SkillVal('Enticement',1)<1000) then TrainEnticement() endif if (UseArmsLore == 1) and (uo.SkillVal('Arms Lore',1)<1000) then TrainArmsLore() endif if (UseItemID == 1) and (uo.SkillVal('Item ID',1)<1000) then TrainItemID() endif if (UseTasteID == 1) and (uo.SkillVal('Taste Identification',1)<1000) then TrainTasteID() endif if (UseAnimalLore == 1) and (uo.SkillVal('Animal Lore',1)<1000) then TrainAnimalLore() endif if (UseDetectHidden == 1) and (uo.SkillVal('Detect Hidden',1)<1000) then TrainDetectHidden() endif if (UseSnooping == 1) and (uo.SkillVal('Snooping',1)<1000) then TrainSnooping() endif if (UseStealing == 1) and (uo.SkillVal('Stealing',1)<1000) then TrainStealing(StealingMode) endif MyWait(100) if (uo.SkillVal('Meditation',1)>=1000) and (uo.SkillVal('Healing',1)<1000) then dLife=1 dMana=0 else if (uo.SkillVal('Meditation',1)<1000) and (uo.SkillVal('Healing',1)>=1000) then dLife=0 dMana=1 else dLife=2 dMana=2 endif endif until ((Life-uo.Life)>=dLife) and ((Mana-uo.Mana)>=dMana) CheckLag() uo.SetReceivingContainer(uo.GetSerial('backpack')) uo.Grab('0','Curse') uo.UnSetReceivingContainer(uo.GetSerial('backpack')) MyWait(500)
while (UO.Mana<Mana) and (uo.SkillVal('Meditation',1)<1000) CheckLag() UO.UseSkill('Meditation') k=0 repeat Wait(100) k=k+1 until UO.InJournal("You are") or UO.InJournal("You lose") or k>200 UO.DeleteJournal() wend while (UO.Life<Life) and (uo.SkillVal('Healing',1)<1000) CheckLag() uo.BandageSelf() k=0 repeat Wait(100) k=k+1 until UO.InJournal("You put") or UO.InJournal("barely help") or UO.InJournal("don't need") or k>300 wend
UO.FindType('0x0E21','0x0000','backpack') if UO.GetQuantity('finditem')<50 Then UO.FindType('0x0E20','0x0000','backpack') UO.WaitTargetType('0x1008') UO.UseObject('finditem') MyWait(1000) endif endsub # TrainHealMeditation
##########
sub TrainVeterinary() var k, Life, dLife=1
if uo.Str<=200 then repeat Eat() CheckLag() uo.WaitMenu('What do you want to polymorph', 'Daemon') uo.Cast('Polymorph') MyWait(10000) if UO.InJournal('lack') then While UO.Mana<UO.INT UO.UseSkill('Meditation') k=0 Repeat k=k+1 MyWait(100) Until UO.InJournal("You are") or UO.InJournal("You lose") or k>200 UO.DeleteJournal() MyWait(1000) Wend endif until uo.Str>200 endif
CheckLag() if UO.Waiting() then UO.CancelTarget() endif Life=uo.Str
uo.UseObject('Curse') repeat if (UseAnatomy == 1) and (uo.SkillVal('Anatomy',1)<1000) then TrainAnatomy() endif if (UseEvaluatingIntelligence == 1) and (uo.SkillVal('Evaluate Intelligence',1)<1000) then TrainEvaluatingIntelligence() endif if (UO.Timer()-tim2>1200) and (UseSpiritSpeak==1) and (uo.SkillVal('Spirit Speak',1)<1000) then TrainSpiritSpeak() endif if (UseBegging==1) and (uo.SkillVal('Begging',1)<1000) then TrainBegging() endif if (UseTracking==1) and (uo.SkillVal('Tracking',1)<1000) then TrainTracking() endif if (UsePeacemaking == 1) and ((uo.SkillVal('Peacemaking',1)<1000) or (uo.SkillVal('Musicianship',1)<1000)) then TrainPeacemaking() endif if (UseEnticement == 1) and (uo.SkillVal('Enticement',1)<1000) then TrainEnticement() endif if (UseArmsLore == 1) and (uo.SkillVal('Arms Lore',1)<1000) then TrainArmsLore() endif if (UseItemID == 1) and (uo.SkillVal('Item ID',1)<1000) then TrainItemID() endif if (UseTasteID == 1) and (uo.SkillVal('Taste Identification',1)<1000) then TrainTasteID() endif if (UseAnimalLore == 1) and (uo.SkillVal('Animal Lore',1)<1000) then TrainAnimalLore() endif if (UseDetectHidden == 1) and (uo.SkillVal('Detect Hidden',1)<1000) then TrainDetectHidden() endif if (UseSnooping == 1) and (uo.SkillVal('Snooping',1)<1000) then TrainSnooping() endif if (UseStealing == 1) and (uo.SkillVal('Stealing',1)<1000) then TrainStealing(StealingMode) endif MyWait(100) until (Life-uo.Life)>=dLife CheckLag() uo.SetReceivingContainer(uo.GetSerial('backpack')) uo.Grab('0','Curse') uo.UnSetReceivingContainer(uo.GetSerial('backpack')) MyWait(500)
while (UO.Life<uo.Str) and (uo.SkillVal('Veterinary',1)<1000) CheckLag() uo.BandageSelf() k=0 repeat Wait(100) k=k+1 until UO.InJournal("You put") or UO.InJournal("barely help") or UO.InJournal("don't need") or k>300 wend
UO.FindType('0x0E21','0x0000','backpack') if UO.GetQuantity('finditem')<50 Then UO.FindType('0x0E20','0x0000','backpack') UO.WaitTargetType('0x1008') UO.UseObject('finditem') MyWait(1000) endif endsub # TrainVeterinary
##########
sub TrainBegging() if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() CheckLag() UO.WaitTargetObject("NPC") UO.UseSkill('Begging') MyWait(3000) endsub # TrainBegging
##########
sub TrainSnooping() var k
Repeat if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() CheckLag() UO.UseObject('Backpack') MyWait(300) k=0 Repeat MyWait(100) k=k+1 Until UO.InJournal("You fail") or UO.InJournal("You have lost") or k>30 Until not UO.InJournal("You fail")
endsub # TrainSnooping
########## sub TrainStealing(mode) var k
if mode == 1 then UO.DeleteJournal() CheckLag() if StealingItem == 0 then uo.FindType('0x0EED',0x0000,'Backpack') else uo.FindType('0x0F0E',0x0000,'Backpack') endif MyWait(200) if uo.GetQuantity('finditem')>0 then uo.UseSkill('Stealing','finditem') k=0 Repeat MyWait(500) if StealingItem == 0 then uo.FindType('0x0EED',0x0000,uo.GetSerial('backpack')) else uo.FindType('0x0F0E',0x0000,uo.GetSerial('backpack')) endif k=k+1 Until UO.InJournal("You fail") or UO.GetQuantity('finditem')>0 or k>7 MyWait(500) if UO.GetQuantity('finditem')>0 then uo.DropHere('finditem') MyWait(500) endif else if StealingItem == 0 then uo.FindType('0x0EED',0x0000,uo.GetSerial('backpack')) else uo.FindType('0x0F0E',0x0000,uo.GetSerial('backpack')) endif if UO.GetQuantity('finditem')>0 then uo.DropHere('finditem') MyWait(500) endif if UseSnooping == 1 then TrainSnooping() endif endif else UO.DeleteJournal() CheckLag() UO.findtype('0x0EED','0x0000','ground') MyWait(200) if uo.GetQuantity('finditem')>0 then UO.Grab('All','finditem') MyWait(500) endif CheckLag() UO.findtype('0x0F0E','0x0000','ground') MyWait(200) if uo.GetQuantity('finditem')>0 then UO.Grab('All','finditem') MyWait(500) endif endif
endsub # TrainStealing
##########
sub TrainTracking() if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() CheckLag() uo.WaitMenu('Tracking','Animals') UO.UseSkill('Tracking') MyWait(1000) uo.RClick(50,50) endsub # TrainBegging
##########
sub TrainDetectHidden() var k
CheckLag() if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() UO.UseSkill('Detect Hidden') MyWait(300) k=0 Repeat MyWait(100) k=k+1 Until UO.InJournal("You can see") or UO.InJournal("You see") or k>30 MyWait(3000) endsub # TrainDetectHidden
##########
sub TrainAnimalLore() var k
CheckLag() if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() UO.WaitTargetObject("NPC") MyWait(100) UO.UseSkill('Animal Lore') MyWait(300) If UO.InJournal("You can't see the target") Then if UO.Waiting() then UO.CancelTarget() endif UO.WaitTargetSelf() MyWait(100) UO.UseSkill('Animal Lore') Endif k=0 Repeat MyWait(100) k=k+1 Until UO.InJournal("You can't think") or UO.InJournal("own master") or k>30 MyWait(3000) endsub # TrainAnimalLore
##########
sub TrainTasteID() var k
CheckLag() if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() UO.WaitTargetObject("0x097B") MyWait(100) UO.UseSkill('Taste Identification') MyWait(300) k=0 Repeat MyWait(100) k=k+1 Until UO.InJournal("You cannot discern") or UO.InJournal("It tastes") or k>50 MyWait(3000) endsub # TrainTasteID
##########
sub TrainItemID() var k
CheckLag() if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() UO.WaitTargetObject("Object") MyWait(100) UO.UseSkill('Item Identification') MyWait(300) k=0 Repeat MyWait(100) k=k+1 Until UO.InJournal("You can't think") or UO.InJournal("You estimate") or k>50 MyWait(3000) endsub # TrainItemID
##########
sub TrainAnatomy() var k
CheckLag() if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() UO.WaitTargetObject("NPC") MyWait(100) UO.UseSkill('Anatomy') MyWait(300) if UO.InJournal("You can't see the target") Then if UO.Waiting() then UO.CancelTarget() endif UO.WaitTargetSelf() MyWait(100) UO.UseSkill('Anatomy') endif k=0 Repeat MyWait(100) k=k+1 Until UO.InJournal("You can't think") or UO.InJournal("looks") or k>30 MyWait(3000) endsub # TrainAnatomy
########## sub TrainPeacemaking() UO.DeleteJournal() if UO.Waiting() then UO.CancelTarget() endif CheckLag() UO.UseSkill('Peacemaking') MyWait(6000) endsub # TrainPeacemaking
##########
sub TrainEnticement() UO.DeleteJournal() if UO.Waiting() then UO.CancelTarget() endif CheckLag() UO.WaitTargetObject("NPC") MyWait(100) UO.UseSkill('Enticement') MyWait(5000) endsub # TrainPeacemaking
##########
sub TrainArmsLore() var k
CheckLag() if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() UO.WaitTargetObject("Object") MyWait(100) UO.UseSkill('Arms Lore') MyWait(300) k=0 Repeat MyWait(100) k=k+1 Until UO.InJournal("this item") or UO.InJournal("This item") or k>50 MyWait(3000) endsub # TrainArmsLore
##########
sub TrainEvaluatingIntelligence() var k
if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() CheckLag() UO.WaitTargetObject('NPC') UO.UseSkill('Evaluating Intelligence') MyWait(300) If UO.InJournal("You can't see the target") Then if UO.Waiting() then UO.CancelTarget() endif UO.WaitTargetSelf() CheckLag() UO.UseSkill('Evaluating Intelligence') Endif k=0 Repeat MyWait(100) k=k+1 Until UO.InJournal("You cannot seem") or UO.InJournal("looks") or UO.InJournal("unsure") or UO.InJournal("perform") or k>60 MyWait(4000) endsub # TrainEvaluatingIntelligence
##########
sub TrainSpiritSpeak() var k
if UO.Waiting() then UO.CancelTarget() endif UO.DeleteJournal() CheckLag() UO.UseSkill('Spirit Speak') MyWait(300) k=0 Repeat MyWait(100) k=k+1 Until UO.InJournal("You fail") or UO.InJournal("You establish") or k>30 MyWait(3000) tim2=UO.Timer() endsub # TrainSpiritSpeak
##########
sub CheckLag()
UO.DeleteJournal() UO.Click('backpack') Repeat Wait(500) Until UO.InJournal('backpack')
endsub # CheckLag
##########
sub Eat() var ttt, flag
CheckLag() ttt=UO.Timer() flag=false while not (UO.InJournal("You are stuffed!") or UO.InJournal("to eat any") or UO.InJournal("No item found.") or UO.InJournal("a way to use that") or flag) UO.Exec("useobject 'Food'") if (UO.Timer()-ttt>150) then flag=true endif Wait(500) wend
endsub # Eat
##########
sub MyWait(time) var i, i1, count
if (GuardZone == 1) then count = time/100 i1 = 1 for i = 1 to count if (i-i1)>=10 then i1 = i endif if (UO.life < UO.str) and ((i-i1) == 0) then UO.Say("Guards !!!") endif Wait(100) next else wait(time) endif endsub # MyWait
##########
sub Reconnect() var ReconnectTime, rFlag
ReconnectTime='0' rFlag=1
repeat while (uo.ObjAtLayer('Bpack')=='') if rFlag then ReconnectTime=Time() rFlag=0 endif wait(20000) uo.Say('') wait(3000) uo.Say('') wait(3000) uo.Say('') wait(3000) uo.LDblClick(357,164) uo.LClick(616,459) wait(3000) wend wait(3000) if (rFlag==0) and (ReconnectTime<>'0') then uo.TextOpen() uo.TextPrint(ReconnectTime+' | Потеря связи с сервером, повторное подсоединение') rFlag=1 ReconnectTime='0' endif until false endsub # Reconnect
##########
sub Time() var hh,mm,ss,hms,t=str(uo.Time())
if len(t)<=2 then hh="0" mm="0" ss=t endif
if len(t)==3 then hh="0" mm=left(t,len(t)-2) ss=right(t,len(t)-1) endif
if len(t)==4 then hh="0" mm=left(t,len(t)-2) ss=right(t,len(t)-2) endif
if len(t)==5 then hh=left(t,len(t)-4) hms=left(t,len(t)-2) mm=right(hms,len(hms)-1) ss=right(t,len(t)-3) endif
if len(t)==6 then hh=left(t,len(t)-4) hms=left(t,len(t)-2) mm=right(hms,len(hms)-2) ss=right(t,len(t)-4) endif