Yoko

All sides of Injection
It is currently 2024-03-28 22:40:43

All times are UTC+02:00




Post new topic  Reply to topic  [ 1 post ] 
Author Message
PostPosted: 2006-10-07 11:09:47 
Offline

Joined: 2006-10-07 10:46:39
Posts: 22
Дело такого характера!!! Мне нужно дописать в скипте элемент продолжения работы по команде Go to work ! Тоесть Чар копает видет элементаля или ещё кого нибуть другого но при этом чтобы можно было вписать тех кого он не шугаеться, и он реколится на базу проводит операции с разгрузкой подкормкой пополнением регов и уходит так говорится в ожидании команды из журнала ! Чтобы я мог скажем прыгнуть туда другим чаром грохнуть элементаля прити на базу и датьь ему команду Go to Work и он возврашался к своим обязаностям!


##################
### Переменные ###
##################
var Reconnect=0 ## 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект.(не проверял работает или нет с этим скриптом)
###
var Food=1 ## - Кушать после сброса руды или нет? 1 - да, 0 - нет.
###
var Status=0 ## - Статус руды, показывает скока накопали (для опытных скриптёров) 1 - да, 0 - нет.
###
var Chest='0x40065d2e' ## - ID сундука куда будут выгружаться руду, где должны лежать реги и еда.
###
var TypeFood='0x0C77' ## - Type еды которую будем кушать.(сейчас фиштейки)
###
var CountReg=50 ## - Кол-во регов для подзарядки.
###
var OreQty=620 ## - Максимальный вес при котором домой с рудой
###
var maxjamp=3 ## - Для рекола (изменять не нужно)
var rune=1 ## - Для рекола (изменять не нужно)
################################################################################
###################
### Wait - Ждёт сообшения после замаха кирки, чтобы повторить. ##
### Fizzle - Если пришло такое сообшение, то переходим на след. клетку копать. ##
################################################################################
###################
var Wait1="You put"
var Wait2="heavy"
var Wait3="location"
var Wait4="no ore"
var Wait5="but fail"
var Wait6="far away"
var Wait7="in rock"
var Wait8="You can't"
var Wait9="You have found some"
###
var Fizzle1="There is no ore here to mine."
var Fizzle2="You can't use the"
var Fizzle3="Try mining elsewhere."
var Fizzle4="location"
var Fizzle5="nothing here"

#################
### Включалка ###
#################
sub Start()
If UO.GetGlobal('Maningcheck')=='on' Then
UO.SetGlobal('Maningcheck','off')
UO.Exec('Exec Terminate')
Else
UO.Exec('Exec Maning')
UO.SetGlobal('Maningcheck','on')
EndIf
End sub

###############
### Майнинг ###
###############
Sub Maning()
var Mine=1
UO.print('Select PICKAXE')
UO.exec('addobject Shovel')
while UO.targeting()
wait(100)
wend

wait(1000)
UO.print('SELECT RUNE TO HOME')
UO.exec('addobject Home')
while UO.targeting()
wait(100)
wend

wait(1000)
UO.print('SELECT RUNE TO MINE1')
UO.exec('addobject Mine1')
while UO.targeting()
wait(100)
wend

wait(1000)
UO.print('SELECT RUNE TO MINE2')
UO.exec('addobject Mine2')
while UO.targeting()
wait(100)
wend


If Reconnect==1 Then
UO.Exec('Exec Reconnect')
EndIf

##############################
### Копаем руду возле себя ###
##############################
If Mine==1 Then
REPEAT
JumpToRune()
GetOre()
wait(2000)
Until UO.Dead()
End sub

Sub GetOre()
var CheckTime
var mx, my, mz, i, j
mx = UO.GetX("self")
my = UO.GetY("self")
mz = UO.GetZ("self")
for i = mx-2 to mx+2
for j = my-2 to my+2
ToHide()
If UO.waiting() Then
UO.canceltarget()
EndIf
REPEAT
If UO.weight >= OreQty Then
ToRecall()
EndIf
ToHide()
UO.Waittargettile("1341",str(i),str(j),str(mz))
UO.Useobject("Shovel")
CheckTime=UO.Timer()
UO.DeleteJournal()
REPEAT
wait(100)
if uo.InJournal("Elemental") or uo.InJournal("is attacking you") then // Здесь он шугаеться пишет в мировой чат помощь и соскакивает!
UO.SayU ('.% HELP')
UO.DeleteJournal()
ToRecallE()
Endif
Until UO.InJournal(Wait1) or UO.InJournal(Wait2) or UO.InJournal(Wait3) or UO.InJournal(Wait4) or UO.InJournal(Wait5) or UO.InJournal(Wait6) or UO.InJournal(Wait7) or UO.InJournal(Wait8) or UO.InJournal(Wait9) or CheckTime+100<uo.Timer() or UO.Dead()
Until UO.InJournal(Fizzle1) or UO.InJournal(Fizzle2) or UO.InJournal(Fizzle3) or UO.InJournal(Fizzle4) or UO.InJournal(Fizzle5) or UO.Dead()
If UO.weight >= OreQty Then
ToRecall()
EndIf
Next
Next
End sub

###################
### Рекол домой ###
###################
Sub ToRecall()
RecallToHome()
ToHide()
DropOre()
CheckReg()
If Food==1 Then
ToEat()
EndIf
If Status==1 Then
InfoOre()
EndIf
BackToMine()
End sub

####################################
### Рекол домой Если Элементаль ###
####################################
Sub ToRecallE()
UO.Cast('Recall','Home')
UO.DeleteJournal()
wait(5000)
ToHide()
DropOre()
CheckReg()
If Food==1 Then
ToEat()
EndIf
If Status==1 Then
InfoOre()
Work() // переход в ожидание команды
EndIf
End sub

######################
## Ожидание Команды ##### // Здесь прошу помощи!!!!
#####################
Sub Work()
repeat
if uo.InJournal("go to work")or UO.Dead() then
UO.SayU ('Yes my Sir!')
UO.DeleteJournal()
BackToMine()
EndIf
end sub

########################################################
### Система реколов по рунам (с проверкой на прыжки) ###
########################################################
Sub JumpToRune()
var x=0
var mx, my
mx = UO.GetX("self")
my = UO.GetY("self")
dim runes[2]
runes[1]='Mine1'
runes[2]='Mine2'
RecallMana()
If rune==maxjamp Then
rune=1
EndIf
UO.Print("RETURT TO MINE: "+str(rune))
UO.Cast('Recall',runes[rune])
Wait(5000)
If UO.getx()==mx and UO.gety()==my Then
REPEAT
x=x+1
RecallMana()
UO.Cast('Recall',runes[rune])
Wait(5000)
Until UO.getx()<>mx and UO.gety()<>my or (x==2) or UO.Dead()
EndIf
CheckMark()
rune=rune+1
End sub

Sub BackToMine()
var x=0
var mx, my
mx = UO.GetX("self")
my = UO.GetY("self")
dim runes[2]
runes[1]='Mine1'
runes[2]='Mine2'
If rune==1 Then
rune=2
EndIf
rune=rune-1
RecallMana()
UO.Print("GO TO MINE"+str(rune))
UO.Cast('Recall',runes[rune])
Wait(5000)
If UO.getx()==mx and UO.gety()==my Then
REPEAT
x=x+1
RecallMana()
UO.Cast('Recall',runes[rune])
Wait(5000)
Until UO.getx()<>mx and UO.gety()<>my or (x==2) or UO.Dead()
EndIf
CheckMark()
rune=rune+1
End sub

Sub CheckMark()
dim runes[2]
runes[1]='Mine1'
runes[2]='Mine2'
If UO.InJournal('The recall rune is starting to fade') Then
UO.print("MARK RUNE "+str(rune))
REPEAT
UO.DeleteJournal()
MarkMana()
UO.Cast('Mark',runes[rune])
wait(5000)
Until NOT UO.InJournal('The spell fizzles') or UO.Dead()
UO.DeleteJournal()
EndIf
End sub

#######################################################
### Реколимся домой по рунам (с проверкой на прыжки) ##
#######################################################
Sub RecallToHome()
var x=0
var mx, my
mx = UO.GetX("self")
my = UO.GetY("self")
REPEAT
x=x+1
RecallMana()
UO.Print('GO TO HOME')
UO.Cast('Recall','Home')
wait(5000)
Until UO.getx()<>mx and UO.gety()<>my or (x==3) or UO.Dead()
If UO.InJournal('The recall rune is starting to fade') Then
UO.print("MARK RUNE")
REPEAT
UO.DeleteJournal()
MarkMana()
UO.Cast('Mark','Home')
wait(5000)
Until NOT UO.InJournal('The spell fizzles') or UO.Dead()
UO.DeleteJournal()
EndIf
End sub

####################################
### Выкладываем руду в контейнер ###
####################################
Sub DropOre()
If UO.waiting() Then
UO.canceltarget()
EndIf
VAR a,Exit
DIM Ore[5]
Ore[0]=0x19B9 ; 4 and more ore
Ore[1]=0x19B7 ; 1 ore
Ore[2]=0x19BA ; 2 ore
Ore[3]=0x19B8 ; 3 ore
UO.SetReceivingContainer(Chest)
wait(500)
For a=0 to 3
Exit=0
repeat
UO.FindType(Ore[a])
If UO.GetQuantity('finditem') > 0 Then
UO.Grab('0','finditem')
wait(1500)
Else
Exit=1
EndIf
Until Exit==1 or UO.Dead()
Next
UO.UnSetReceivingContainer()
End sub

#####################################
### Проверяем кол-во регов в паке ###
#####################################
Sub CheckReg()
If UO.MR <= 3 or UO.BM <= 3 or UO.BP <= 3 Then
UO.Print("DOWNLOADS REGS")
UO.SetReceivingContainer('backpack')
UO.UseObject(Chest)
wait(2000)
UO.FindType('0x0F86','-1',Chest) ; MR
UO.Grab(STR(CountReg-UO.MR),'finditem')
wait(2000)
UO.FindType('0x0F7B','-1',Chest) ; BM
UO.Grab(STR(CountReg-UO.BM),'finditem')
wait(5000)
UO.FindType('0x0F7A','-1',Chest) ; BP
UO.Grab(STR(CountReg-UO.BP),'finditem')
wait(2000)
UO.UnsetReceivingContainer()
UO.Print("DOWNLOADS DONE")
EndIf
End sub

##########################################
### Берём хавку из контейнера и кушаем ###
##########################################
Sub ToEat()
UO.UseObject(Chest)
wait(5000)
UO.FindType(TypeFood,'-1',Chest)
If UO.FindCount() > 0 Then
UO.SetReceivingContainer('backpack')
UO.Grab('25','finditem')
wait(2000)
REPEAT
UO.UseType(TypeFood)
wait(1000)
Until UO.InJournal('You are simply too full to eat any more!') or UO.Dead()
Else
UO.print("NOO FOOD")
EndIf
DropFood()
End sub

Sub DropFood()
var f,Exit
dim Food[1]
Food[0]=TypeFood
If UO.Waiting() Then
UO.CancelTarget()
EndIf
UO.SetReceivingContainer(Chest)
for f=0 to 0
Exit=0
repeat
UO.FindType(Food[f])
If UO.GetQuantity('finditem') > 0 Then
UO.Grab('0','finditem')
wait(1500)
Else
Exit=1
EndIf
Until Exit==1 or UO.Dead()
next
UO.UnsetReceivingContainer()
End sub

####################################
### Проверяем ману перед кастами ###
####################################
Sub RecallMana()
If UO.mana <= 11 Then
UO.print('Meditation')
UO.Exec('warmode 0')
wait(1000)
REPEAT
UO.UseSkill('Meditation')
wait(15000); 15 секунд медетируем.
Until UO.mana > 50 or UO.Dead()
EndIf
End sub

Sub MarkMana()
If UO.mana <= 17 Then
UO.print('Meditation')
UO.Exec('warmode 0')
wait(1000)
REPEAT
UO.UseSkill('Meditation')
wait(5000); 15 секунд медетируем.
Until UO.mana > 50 or UO.Dead()
EndIf
End sub

#######################
### Прячимся в хайд ###
#######################
Sub ToHide()
if uo.InJournal("Elemental") or uo.InJournal("is attacking you")then
UO.SayU('.% HELP')
ToRecallE()
UO.DeleteJournal()
endif
var CheckTime
while NOT UO.Hidden()
UO.Print('HIDING...')
UO.Exec("warmode 0")
wait(1000)
UO.UseSkill('Hiding')
CheckTime=UO.Timer()
REPEAT
wait(300)
Until UO.Hidden() or CheckTime+60<uo.Timer() or UO.Dead()
Wend
End sub

###################################
### Смотрим скока накопали руды ###
###################################
Sub InfoOre()
var LogsTime=PrintTime()
UO.FindType('0x1BDD','-1',Chest)
UO.TextOpen()
UO.TextPrint('#####################')
UO.TextPrint('## Время: '+LogsTime+' ##')
UO.TextPrint('#####################')
UO.TextPrint('Iron Ore: '+STR(GetAmount('0x19B9','0x0000',Chest)))
UO.TextPrint('Rose Ore: '+STR(GetAmount('0x19B9','0x0665',Chest)))
UO.TextPrint('Golden Ore: '+STR(GetAmount('0x19B9','0x084D',Chest)))
UO.TextPrint('Orion Ore: '+STR(GetAmount('0x19B9','0x048A',Chest)))
UO.TextPrint('Dwarf Ore: '+STR(GetAmount('0x19B9','0x0488',Chest)))
UO.TextPrint('Silver Ore: '+STR(GetAmount('0x19B9','0x0482',Chest)))
UO.TextPrint('Shadow Ore: '+STR(GetAmount('0x19B9','0x0770',Chest)))
UO.TextPrint('Valorite Ore: '+STR(GetAmount('0x19B9','0x0515',Chest)))
UO.TextPrint('Crystal Ore: '+STR(GetAmount('0x19B9','0x0487',Chest)))
UO.TextPrint('Magma Ore: '+STR(GetAmount('0x19B9','0x0486',Chest)))
UO.TextPrint('Obsidian Ore: '+STR(GetAmount('0x19B9','0x0485',Chest)))
UO.TextPrint('Mytheril Ore: '+STR(GetAmount('0x19B9','0x048D',Chest)))
UO.TextPrint('#####################')
End sub

Sub GetAmount(Type, Color, Cont)
Var item_amount = 0
UO.IgnoreReset()
Repeat
UO.FindType(Type, Color, Cont)
If UO.FindCount() > 0 Then
If UO.GetQuantity('finditem')==0 Then
item_amount = item_amount + 1
Else
item_amount = item_amount + UO.GetQuantity('finditem')
EndIf
UO.Ignore('finditem')
UO.FindType(Type, Color, Cont)
EndIf
Until UO.FindCount() < 1 or UO.Dead()
UO.IgnoreReset()
Return item_amount
End sub

Sub PrintTime()
Var HR = ''
Var MIN = ''
Var SEC = ''
Var CurrentTime = UO.Time()
If CurrentTime>99999 Then
HR = Mid(STR(CurrentTime),0,2)
MIN = Mid(STR(CurrentTime),2,2)
SEC = Mid(STR(CurrentTime),4,2)
Else
If CurrentTime > 9999 Then
HR = '0'+Mid(STR(CurrentTime),0,1)
MIN = Mid(STR(CurrentTime),1,2)
SEC = Mid(STR(CurrentTime),3,2)
Else
If CurrentTime > 999 Then
HR = '00'
MIN = Mid(STR(CurrentTime),0,2)
SEC = Mid(STR(CurrentTime),2,2)
Else
If CurrentTime > 99 Then
HR = '00'
MIN = '0'+Mid(STR(CurrentTime),0,1)
SEC = Mid(STR(CurrentTime),1,2)
Else
If CurrentTime > 9 Then
HR = '00'
MIN = '00'
SEC = STR(CurrentTime)
Else
HR = '00'
MIN = '00'
SEC = '0'+STR(CurrentTime)
EndIf
EndIf
EndIf
EndIf
EndIf
UO.TextPrint(STR(CurrentTime ))
Return (HR+':'+MIN+':'+SEC)
End sub

##################
### РЕКОНЕКТОР ###
##################
Sub Reconnect()
var ReconnectTime,rFlag
ReconnectTime='0'
rFlag=1
repeat
while (UO.ObjAtLayer('Bpack')=='')
If rFlag Then
ReconnectTime=MakeTime()
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('Disconnected & Reconnected @ '+ReconnectTime)
rFlag=1
ReconnectTime='0'
EndIf
Until false
End sub

Sub MakeTime()
var d,t,ret,i
ret=str(UO.Time())
t=""
for i=0 to Len(ret)
t=ret[Len(ret)-i]+t
If (i==2) or (i==4) Then
t=":"+t
EndIf
next
ret=str(UO.Date())
d=""
for i=0 to Len(ret)
d=ret[Len(ret)-i] + d
If (i==2) or (i==4) Then
d="."+d
EndIf
next
ret=t+" @ "+d
return ret
End sub

#############################
### Выключаем все скрипты ###
#############################
Sub Terminate()
UO.Print("SCRIPTS OFF")
UO.DeleteJournal()
UO.Exec('terminate all')
wait(100)
UO.Exec('terminate all')
wait(100)
UO.Exec('terminate all')
wait(100)
End sub


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 1 post ] 

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 18 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron
Powered by phpBB® Forum Software © phpBB Limited