Очень бы хотелось попросить вас о написании скрипта для Мининга.
Суть скрипта :Копание происходит в главное шахте города Минок,чтобы чар окапывал всю шахту,постоянно был в хайде(то есть копал из хайда) и выкидывал из пака руду железа....
Заранее благодарен.
ЗЫ:Вы уж простите я вообще в скриптовании не соображаю ни капельки.....
Помогите написать скрипт на мининг...
Moderators: Murderator+, Murderator
Данный скрипт зделан под Миноук шахту.
;Исправленый скрипт Каматоза.
;Были исправлены все баги.
;Исправлен баг с переносом руды в кол-ве (1,2,3)
;Не упустите айди сундука внизу.
;
;Чар бегает по точкам и обкапывает их с нормальной задержкой.
;Сброс в сундук будет доделан в следующей версии.
;Также будет добавлено киляние голема. (300-хп) 5к. простой побег.
sub mine()
VAR DigDistance, TileNum
VAR LastTimer
DIM BaseX[7], BaseY[7]
VAR BaseZ, WayPoint, WayPoints
VAR MaxWeight,MaxDistance
VAR i,j,TileY,TileX,DirX,DirY
VAR Delta,BeginX,EndX,BeginY,EndY
;Сам скрипт
var Reconnect=1 ; 1 - Включить реконнект на сервер если выкинет, 0 - отключить реконнект.
var Status=0 ; 1 - Показывать статус руды, 0 - нет.
var Detect=1 ; 1 - Перед началом копки детектим окресности, 0 - нет.
MaxWeight=550 ; Максимальный вес
WayPoints=7 ; Указываем количество точек копания.
BaseX[0]=2559 ; Здесь указываем координаты точек копания. Нужно встать на
BaseY[0]=496 ; позицию и посмотреть координаты в инжекте. Их и нужно
BaseZ=0 ; подставить вместо моих. Чара ставьте на 2 клетки от стен.
BaseX[1]=2562
BaseY[1]=488
BaseX[2]=2569
BaseY[2]=486
BaseX[3]=2565
BaseY[3]=482
BaseX[4]=2569
BaseY[4]=491
BaseX[5]=2565
BaseY[5]=486
BaseX[6]=2567
BaseY[6]=480
BaseX[7]=2571
BaseY[7]=480
If Reconnect==1 Then
UO.Exec('Exec Reconnect')
EndIf
If Detect==1 Then
UO.DeleteJournal()
UO.UseSkill("Detect Hidden")
UO.Print("ПОИСК ВРАГОВ.....")
wait(3200)
EndIf
;Начало скрипта
UO.Print ("Script: Mining. Jericho Server v.2.01 edit by Strike")
UO.Print ("Autor: KamaTozz.")
UO.Print ("Editor: Strike")
uo.print('!!Выбери Кирку!! ')
uo.exec('addobject Pickaxe')
while uo.targeting()
wait(100)
sub tohide()
wend
While NOT UO.Dead()
For WayPoint=0 to WayPoints-1
walkn(BaseX[WayPoint],BaseY[WayPoint],"")
digitstay(MaxWeight,BaseX[WayPoint],BaseY[WayPoint])
Next
wend
end sub
;Копка
sub digitstay(MaxWeight,BaseX,BaseY)
VAR x,y,z='0',TileNum='1339'
VAR Last=0,LastTimer, ContFlag=1
VAR MaxTimer=100
var mx, my, mz, i, j, Detect
mx = UO.GetX("self")
my = UO.GetY("self")
mz = UO.GetZ("self")
for i = mx-1 to mx+1 ; Расстояние копки
for j = my -1 to my+1 ; Расстояние копки
UO.Print("Копаем в координатах: "+str(mx-i)+" "+str(my-j))
Repeat
CheckLag() ;
UO.Waittargettile("1339", str(i), str(j), str(mz))
UO.Useobject("Pickaxe")
LastTimer=UO.Timer()
Repeat
wait(100)
until UO.InJournal("Вы положили") OR UO.InJournal("You cannot mine so close to yourself")OR UO.InJournal("You loosen")OR UO.InJournal("That is too far away") OR UO.InJournal("") OR UO.InJournal("") OR UO.InJournal("") OR LastTimer+50<UO.Timer()
If NOT UO.InJournal('There is nothing here to mine for')OR UO.InJournal("That is too far away") then
Endif
If UO.InJournal('You loosen') then
repeat
wait(500)
until UO.InJournal("You put the") OR LastTimer+MaxTimer<UO.Timer()
Endif
walkn(BaseX,BaseY,"")
Else
Endif
Endif
If UO.Weight>=MaxWeight then
stop()
Endif
Until UO.InJournal("There is no") OR UO.InJournal("You cannot mine so close to yourself") OR UO.InJournal("Нет тут больше ничего") OR UO.InJournal("Далеко") OR UO.InJournal("Здесь невозможно копать") OR ContFlag==0
Next
Next
end sub
;Shared Subs {Не используеться хайд) Ф-ция убрана как таковая.Можно вписат ьесли есть кирка +5.
sub tohide()
while not UO.Hidden()
UO.Warmode("0") # снимаем war режим
uo.print("Прячемся...")
UO.UseSkill("Hiding")
wait(4000)
wend
end sub
;==============================================================
; CheckLag()
;--------------------------------------------------------------
sub CheckLag()
UO.DeleteJournal()
UO.Click('backpack')
repeat
wait(500)
until UO.InJournal('backpack')
end sub
;---------------- Ходилка -----------------------
;(Поправлена ходилка)
sub GoW()
VAR walkwait=300
VAR x,y,dir=6
VAR key=36 ; Home key
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetX()+1==x Then
return -1
Else
return 1
Endif
end sub
sub GoN()
VAR walkwait=300
VAR x,y,dir=0
VAR key=33 ; PgUp
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetY()+1==y Then
return -1
Else
return 1
Endif
end sub
sub GoE()
VAR walkwait=300
VAR x,y,dir=2
VAR key=34 ; PgDown
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetX()-1==x Then
return -1
Else
return 1
Endif
end sub
sub GoS()
VAR walkwait=300
VAR x,y,dir=4
VAR key=35 ; End
x=UO.GetX()
y=UO.GetY()
while UO.GetDir()<>dir
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
wend
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetY()-1==y Then
return -1
Else
return 1
Endif
end sub
sub GoWN()
VAR walkwait=300
VAR x,y,dir=7
VAR key=38 ; UpArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
sub GoNE()
VAR walkwait=300
VAR x,y,dir=1
VAR key=39 ; RightArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
sub GoSE()
VAR walkwait=300
VAR x,y,dir=3
VAR key=40 ; DownArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
sub GoSW()
VAR walkwait=300
VAR x,y,dir=5
VAR key=37 ; LeftArrow
x=UO.GetX()
y=UO.GetY()
If UO.GetDir()<>dir Then
UO.Press(key)
wait(walkwait)
If UO.GetDir()<>dir Then
CheckLag()
Endif
Endif
If UO.GetDir()==dir Then
UO.Press(key)
wait(walkwait)
If x==UO.GetX() AND y==UO.GetY() Then
CheckLag()
Endif
If UO.GetDir()==dir Then
return -1
Else
return UO.GetDir()
Endif
Else
return UO.GetDir()
Endif
end sub
#==============================================================
# WalkN(X,Y,Serial) - char is walking by dX and dY step
# sub using Home, End, PgUp, PgDown keys
# d'not rebind this key from default action!
# walkwait - delay after keypress
#--------------------------------------------------------------
sub WalkN(x,y,Target)
VAR i
VAR dx,dy,Exit=0
While Exit<>1
If Target<>"" Then
dx=UO.GetX(Target)-UO.GetX()
dy=UO.GetY(Target)-UO.GetY()
; UO.Print("Target locked!")
If UO.GetDistance(Target)<2 Then
Exit=1
Endif
Else
dx=x-UO.GetX()
dy=y-UO.GetY()
If dx==0 AND dy==0 Then
Exit=1
Endif
Endif
If dx<>0 AND dy<>0 Then
If dx>0 AND dy>0 Then
GoSE()
Endif
If dx>0 AND dy<0 Then
GoNE()
Endif
If dx<0 AND dy>0 Then
GoSW()
Endif
If dx<0 AND dy<0 Then
GoWN()
Endif
Endif
If dx<>0 AND dy==0 Then
If dx>0 Then
GoE()
Endif
If dx<0 Then
GoW()
Endif
Endif
If dx==0 AND dy<>0 Then
If dy>0 Then
GoS()
Endif
If dy<0 Then
GoN()
Endif
Endif
Wend
end sub
sub stop()
uo.print("Цикл копки завершён, скрипт остановлен...")
ToHide()
InfoOre()
UO.DeleteJournal()
UO.Exec('terminate all')
wait(100)
UO.Exec('terminate all')
wait(100)
UO.Exec('terminate all')
wait(100)
end sub
sub InfoOre()
var Chest='0x4000B241' ;---------------(Сундук)---------------куда складываем накопанное (ID)
var LogsTime=PrintTime()
UO.FindType('0x19B9','-1','Chest')
UO.FindType('0x19B7','-1','Chest')
UO.FindType('0x19BA','-1','Chest')
UO.FindType('0x19B8','-1','Chest')
UO.TextOpen()
UO.TextPrint('#####################')
UO.TextPrint('## Время: '+LogsTime+' ##')
UO.TextPrint('#####################')
UO.TextPrint('Aluminiy Ore: '+STR(GetAmount('0x19B9','0x0964',Chest)))
UO.TextPrint('Stone Ore: '+STR(GetAmount('0x19B9','0x0774',Chest)))
UO.TextPrint('Copper Ore: '+STR(GetAmount('0x19B9','0x0655',Chest)))
UO.TextPrint('Bronze Ore: '+STR(GetAmount('0x19B9','0x06D0',Chest)))
UO.TextPrint('Iron Ore: '+STR(GetAmount('0x19B9','0x0000',Chest)))
UO.TextPrint('Steel Ore: '+STR(GetAmount('0x19B9','0x0B7F',Chest)))
UO.TextPrint('Gold Ore: '+STR(GetAmount('0x19B9','0x0B7A',Chest)))
UO.TextPrint('Silver Ore: '+STR(GetAmount('0x19B9','0x0835',Chest)))
UO.TextPrint('Adamantin Ore: '+STR(GetAmount('0x19B9','0x0845',Chest)))
UO.TextPrint('Crystal Ore: '+STR(GetAmount('0x19B9','0x0B89',Chest)))
UO.TextPrint('Meteor Ore: '+STR(GetAmount('0x19B9','0x0AE7',Chest)))
UO.TextPrint('Mytheril Ore: '+STR(GetAmount('0x19B9','0x084A',Chest)))
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
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
;Будет зделана ходилка в банк.
;Ходилка в дома и полная розгрузка чара.
;В новой версии будет дописана ф-ция битвы с элементалем ( 300-хп)
;Ожидайте.Исправил Strike.
ну исправь что-то связанное с переменной вейпоинтс
**Выставляем отступы в скриптах*** ©Destruction
Feel the Power of Dark Side
Feel the Power of Dark Side