Code: Select all
# Версия YokoInjection: 505.18 VeNdOr
# Sphere Server : v0.55i
# Версия клиента: 2.0.3
# Автор: GAUHAR
#########################################################################
# НАСТРОЙКИ ПЕРЕМЕННЫХ #
#-----------------------------------------------------------------------#
# ПЕРЕМЕННЫЕ для TINKERING
VAR t_ingots = '0x1BEF' # Тип слитков металла.
VAR c_ingots = '0x0000' # Цвет металла.
VAR Max_Weight = UO.STR*4 # Максимальный вес загрузки. Должен быть
# меньше, чем в формуле UO.Str*42/10
VAR tnk_instrum = '0x1EBC' # Тип инструмента (tinker's tools).
VAR tnk_product = '0x0F0E' # Тип того, что будем делать (bottles).
VAR ingots_tnk = 2 # Количество металла на одно изделие.
#-----------------------------------------------------------------------#
VAR EDA = '0x097b' # Это рыбные стейки
VAR LastTimerDinner = UO.Timer() # Время приема пищи
VAR FrequencyDinner = 3600 # как часто (раз в 6 минут)
VAR LastTimerSpiritism = UO.Timer() # Время спиритизма
VAR FrequencySpiritism = 3000 # как часто (раз в 5 минут)
VAR SpiritismYorN = 1 # 1 - качать спирит спик, 0 - нет
#-----------------------------------------------------------------------#
#########################################################################
#########################################################################
# Качаем скилл тинкеринг. #
# Делаем бутылки, когда вес превысит максимум, перекладываем их в #
# контейнер из которого берем металл. #
# До запуска скрипта в один контейнер (сундук) складываем металл и еду. #
# В рюкзаке персонажа инструментов механика. #
#-----------------------------------------------------------------------#
sub TINKERING()
VAR CountIngots
Presentation("* TINKERING *")
PrintInColor("Выберите сундук с материалом",'0x003F')
UO.AddObject('CONTAINER_sender')
while UO.Targeting()
wait(200)
wend
OpenContainer('CONTAINER_sender')
UO.UnSetReceivingContainer()
repeat
UO.FindType(t_ingots,c_ingots,'CONTAINER_sender')
CountIngots = UO.FindCount()
CRAFT_tinkering_product()
PEREBROS(0,tnk_product,'-1','backpack','CONTAINER_sender')
until CountIngots == 0
PrintInColor("Закончился металл",'0x0026')
PrintInColor("РАБОТА ЗАВЕРШЕНА",'0x003F')
endsub
SUB CRAFT_tinkering_product()
VAR k
UO.FindType(t_ingots,c_ingots,'CONTAINER_sender')
while UO.FindCount() <> 0 and UO.Weight < Max_Weight
k = 0
UO.FindType(t_ingots,c_ingots,'my')
if UO.GetQuantity('finditem') < ingots_tnk then
UO.FindType(t_ingots,c_ingots,'CONTAINER_sender')
PEREBROS(ingots_tnk,t_ingots,c_ingots,'CONTAINER_sender','backpack')
endif
if UO.FindCount() <> 0 then
UO.DeleteJournal()
CheckLag()
RemoveTargetingOrWaiting()
UO.WaitMenu('Tinkering','Tools','Tools','empty bottle')
UO.UseType(tnk_instrum)
while not UO.InJournal("Tinkering failed|You put") and not k == 30
k = k + 1
wait(200)
wend
wait(2000)
endif
DINNER()
if SpiritismYorN == 1 then
Spiritism()
endif
wend
endsub
#-----------------------------------------------------------------------#
#########################################################################
#########################################################################
#-----------------------------------------------------------------------#
SUB DINNER()
VAR k
if UO.Timer() > LastTimerDinner+FrequencyDinner then
if UO.Count(EDA) < 5 then
PEREBROS(10,EDA,'-1','CONTAINER_sender','backpack')
endif
repeat
k = 0
UO.UseType(EDA)
wait(1000)
repeat
wait(100)
k = k + 1
until (UO.InJournal("the food") or UO.InJournal("You are stuffed") or UO.InJournal("You are simply too full") or k==30)
DelJournal("the food")
until (UO.InJournal("You are stuffed") or UO.InJournal("You are simply too full") or k==30)
if k <> 30 then
PrintInColor("НАЕЛСЯ",'0x0053')
else
PrintInColor("Ты не можешь есть то, чего у тебя нет",'0x0053')
PrintInColor("Пополни запас еды, или выбери другой тип",'0x0053')
endif
LastTimerDinner = UO.Timer()
endif
endsub
SUB Spiritism()
VAR ispir, k
if UO.Timer() > LastTimerSpiritism+FrequencySpiritism then
PrintInColor("Разговор с духами",'0x0053')
for ispir=1 to 3
k = 0
UO.UseSkill('Spirit Speak')
while not (UO.InJournal("You fail your attempt") or UO.InJournal("You establish a connection") or k == 100)
wait(100)
k = k + 1
wend
DelJournal("You fail your attempt")
DelJournal("You establish a connection")
next
LastTimerSpiritism = UO.Timer()
endif
endsub
#-----------------------------------------------------------------------#
#########################################################################
SUB PEREBROS(kolvo,typ,tsvet,konteiner_sklad,konteiner_priemnik)
# PEREBROSKA_v1(1,'0x0000','0x0000','0x00000000','0x00000000')
# PEREBROSKA_v1(Количество,Тип,Цвет,ОткудаБерем,КудаКладем)
VAR iX = UO.GetX()+1, iY = UO.GetY()+1, iZ = UO.GetZ()
VAR k
VAR changekolvo
VAR NewWeight = 0, ChangeWeight = 0, InitialWeight = UO.Weight
VAR MaxWeight = UO.Str*42/10
VAR TotalQuantityInContainer = 0
VAR QuantityForLargeHeaps = 100 # По сколько предметов перебрасываем
# неподъемные кучи, если перебрасываем
# в ранец персонажа, то лучше выставит
# значение равное 10.
if konteiner_sklad == UO.GetSerial('backpack') then
MaxWeight = UO.Weight + 1
endif
UO.Set('grabdelay','200')
UO.FindType(typ,tsvet,konteiner_sklad)
while UO.FindCount() <> 0
TotalQuantityInContainer = TotalQuantityInContainer + UO.GetQuantity('finditem')
UO.Ignore('finditem')
UO.FindType(typ,tsvet,konteiner_sklad)
wend
UO.Exec('ignorereset')
PrintInColor("Найдено: " + str(TotalQuantityInContainer),'0x0053')
wait(2000)
if TotalQuantityInContainer == 0 then
return
else
if TotalQuantityInContainer < kolvo or kolvo == 0 then
kolvo = TotalQuantityInContainer
endif
endif
UO.FindType(typ,tsvet,konteiner_sklad)
if UO.FindCount() == TotalQuantityInContainer then
while UO.FindCount() <> 0 and kolvo > 0 and MaxWeight > UO.Weight
PrintInColor("Осталось перебросить: " + str(kolvo),'0x0053')
CheckLag()
if UO.GetSerial(konteiner_priemnik) <> '0x00000001' then
UO.MoveItem('finditem','1',konteiner_priemnik)
else
UO.MoveItem('finditem','1','ground',iX,iY,iZ)
endif
CheckLag()
UO.FindType(typ,tsvet,konteiner_sklad)
kolvo = kolvo - 1
wend
else
UO.DeleteJournal()
changekolvo = kolvo
while UO.FindCount() <> 0 and changekolvo > 0 and MaxWeight > UO.Weight
PrintInColor("Перебрасываем: " + str(kolvo),'0x0053')
CheckLag()
if UO.GetSerial(konteiner_priemnik) <> '0x00000001' then
UO.MoveItem('finditem',changekolvo,konteiner_priemnik)
else
UO.MoveItem('finditem',changekolvo,'ground',iX,iY,iZ)
endif
CheckLag()
changekolvo = changekolvo - UO.GetQuantity('finditem')
UO.FindType(typ,tsvet,konteiner_sklad)
wait(1000)
if UO.InJournal("That is too heavy") then
UO.FindType(typ,tsvet,konteiner_sklad)
k = 0
while UO.FindCount() <> 0 and kolvo > 0 and MaxWeight > NewWeight
if kolvo == 1 then
PrintInColor("Перебрасываем: " + str(kolvo),'0x0053')
if UO.GetSerial(konteiner_sklad) <> '0x00000001' then
OpenContainer(konteiner_sklad) # Используется как UO.Resend(), но только для контейнера
else
UO.Resend()
endif
CheckLag()
if UO.GetSerial(konteiner_priemnik) <> '0x00000001' then
UO.MoveItem('finditem',2,konteiner_priemnik)
else
UO.MoveItem('finditem',2,'ground',iX,iY,iZ)
endif
CheckLag()
UO.FindType(typ,tsvet,konteiner_priemnik)
if UO.GetSerial(konteiner_sklad) <> '0x00000001' then
UO.MoveItem('finditem',1,konteiner_sklad)
else
UO.MoveItem('finditem',1,'ground',iX,iY,iZ)
endif
CheckLag()
return
endif
CheckLag()
if UO.GetSerial(konteiner_priemnik) <> '0x00000001' then
UO.MoveItem('finditem',QuantityForLargeHeaps,konteiner_priemnik)
else
UO.MoveItem('finditem',QuantityForLargeHeaps,'ground',iX,iY,iZ)
endif
CheckLag()
UO.FindType(typ,tsvet,konteiner_sklad)
kolvo = kolvo - QuantityForLargeHeaps
if kolvo < QuantityForLargeHeaps then
QuantityForLargeHeaps = kolvo
endif
k = k + 1
ChangeWeight = (UO.Weight - InitialWeight) / k
NewWeight = UO.Weight + ChangeWeight
PrintInColor("Осталось перебросить: " + str(kolvo),'0x0053')
wend
endif
wend
endif
endsub
SUB Presentation(TXT)
PrintInColor("**************************",'0x0035')
PrintInColor(TXT,'0x0035')
PrintInColor("* Made by GAUHAR *",'0x0035')
PrintInColor("**************************",'0x0035')
wait(3000)
endsub
SUB PrintInColor(text,color)
# PrintInColor("здесь текст",'цвет')
UO.ConColor(color)
UO.Print(text)
UO.ConColor('1088')
endsub
SUB OpenContainer(cntnr)
DelJournal('Contains')
DelJournal('items')
DelJournal('Bank Box')
UO.UseObject(cntnr)
UO.Click(cntnr)
repeat
wait(300)
until UO.InJournal('Contains') or UO.InJournal('items') or UO.InJournal('Bank Box')
endsub
SUB RemoveTargetingOrWaiting()
if UO.Waiting() then
UO.CancelMenu()
endif
if UO.Targeting() then
UO.CancelTarget()
endif
endsub
SUB DelJournal(string1)
VAR nom = UO.InJournal(string1)
if nom > 0 Then
UO.SetJournalLine(Nom - 1, 'string replaced')
DelJournal(string1)
endif
endsub
SUB CheckLag()
DelJournal('backpack')
UO.Click('backpack')
repeat
wait(100)
until UO.InJournal('backpack')
endsub