Скрипт ла ламбер
Moderators: Murderator+, Murderator
-
- Posts: 11
- Joined: 2004-06-25 10:23:52
Скрипт ла ламбер
Плиз нужен скрипт на рубку деревьев с 2-х сторон
Если есть у кого скинти
Если есть у кого скинти
-
- Posts: 11
- Joined: 2004-06-25 10:23:52
Re: Скрипт ла ламбер
oper of Ocllo wrote:Плиз нужен скрипт на рубку деревьев с 2-х сторон
Если есть у кого скинти
Мне на рубку в кастле нужно
на форуме скриптоф на лумбер навалом бля на подавис так же как и все осталние которие не знают што такое сеарч
Code: Select all
#При работе должна быть "отжата" кнопка NumLock
Var Hatchet1='0x0F43' # Типы
Var Hatchet2='0x0F44' # топоров
Var MoveDelay=200 # Промежуток между шагами
Var MoveNumber=2 # Количество шагов при смене дислокации
Var Ep=0.172 # Значение ширины угла хождения при определении направления. Если на пути встречаются сложные и широкие препятствия - увеличить. 0.172 - сбаланчированный.
Var RecEps=6 # Проверочное значение на реколл
Var UseRecSpell=1 # Реколлится по спеллу
Var RecScrl='0x1F4C' # Свиток реколла
Var RecMand='0x0F86' # Реагенты
Var RecBlck='0x0F7A' # для
Var RecBlod='0x0F7B' # реколла
Var SafeRune='0x400DE872' # Руна в банк
Var HomeRune='0x4007BADC' # Руна дома в банке
Var FileName='C:\nortforest.dat' # В каждой строке файла тайл дерева
Sub Main()
UO.DeleteJournal()
UO.Exec('exec Lumb')
EndSub
Sub Lumb()
Var Tl,T,X,Y,Z
UO.SetGlobal('process','yes')
UO.Exec('exec BeAware')
Var F=File(FileName)
F.Open()
Beg:
DeleteJournal('no logs')
DeleteJournal('immune to your')
Tl=safecall F.Readln()
Tl=Trim(Tl)
If Tl=='File read error' Then
GoTo Ext
EndIf
T=GetNumb(Tl,0)
X=GetNumb(Tl,1)
Y=GetNumb(Tl,2)
Z=GetNumb(Tl,3)
UO.Print('Chop hext tree')
UO.Print('Tile '+Tl)
GoToTile(X,Y,1,False)
Repeat
Hide()
DeleteJournal('logs in your pack')
DeleteJournal('fail to produce')
EquipHatchet()
UO.WaitTargetTile(Str(T),Str(X),Str(Y),Str(Z))
UO.UseObject(UO.ObjAtLayer('Lhand'))
While not (UO.InJournal('logs in your pack') or UO.InJournal('fail to produce') or UO.InJournal('no logs') or UO.InJournal('heavy') or UO.InJournal('immune to your') or UO.InJournal('foliage yields'))
Wait(100)
Wend
UO.Print('There are '+Str(UO.Count('0x1BDD'))+' logs in the pack')
Until UO.InJournal('no logs') or UO.InJournal('heavy') or UO.InJournal('immune to your') or UO.InJournal('foliage yields')
If UO.InJournal('no logs') or UO.InJournal('immune to your') or UO.InJournal('foliage yields') Then
UO.Print('There are no logs here to chop')
GoTo Beg
EndIf
Ext:
F.Close()
UO.SetGlobal('process','no')
EndSub
Sub GetNumb(C,I)
var J,T,K
J=0
K=1
While K>0
J=J+1
If (Mid(C,J,1)==' ') Or (J>=Len(C)-1) Then
If I==0 Then
T=Val(Left(C,J))
Else
T=GetNumb(Right(C,Len(C)-J-1),I-1)
EndIf
K=0
EndIf
wend
UO.Print(T)
return T
endsub
Sub EquipHatchet()
Var E=UO.ObjAtLayer('Lhand')
E=UO.GetGraphic(E)
Var J=True
If (E<>Hatchet1) and (E<>Hatchet2) Then
If UO.Count(Hatchet1)>0 Then
UO.FindType(Hatchet1,'-1','backpack')
Else
If UO.Count(Hatchet2)>0 Then
UO.FindType(Hatchet2,'-1','backpack')
Else
UO.SetGlobal('process','no')
J=False
EndIf
EndIf
UO.UseObject('finditem')
EndIf
Wait(3200)
RETURN J
EndSub
Sub BeAware()
UO.SetGlobal('enemy','0x0')
Var I
Var MaxVal=2
Dim Wares[2]
Wares[1]='Reaper'
Wares[2]='attacking you*'
While (not UO.Dead()) and (UO.GetGlobal('enemy')=='0x0') and (UO.GetGlobal('process')=='yes')
Wait(100)
For I=1 to MaxVal
UO.SetGlobal('enemy',GetSerial(Wares[I],UO.GetGlobal('enemy')))
Next
Wend
If UO.GetGlobal('enemy')<>'0x0' Then
UO.Exec('exec GoFrom')
EndIf
If (UO.GetGlobal('process')=='yes') Then
UO.Exec('terminate Lumb')
EndIf
Recall(SafeRune)
UO.Exec('terminate GoFrom')
Wait(3000)
UO.ServerPrint('bank')
Wait(3000)
Recall(HomeRune)
EndSub
Sub GoFrom()
Var En=UO.GetGlobal('enemy')
While (not UO.Dead())
MoveOnce(GetDir(UO.GetX(En),UO.GetY(En),UO.GetX(),UO.GetY()),MoveDelay/3,False)
Wend
EndSub
Sub RecType()
Var J
If UseRecSpell==0 Then
If UO.Count(RecScrl)==0 Then
J=0
Else
J=1
EndIf
Else
If (UO.Count(RecMand)==0) or (UO.Count(RecBlck)==0) or (UO.Count(RecBlod)==0) Then
J=0
Else
J=2
EndIf
EndIf
RETURN J
EndSub
Sub GetSerial(What,Last)
Var J=Last
Var T
If UO.InJournal(What) Then
T=UO.InJournal(What)
J=Str(UO.JournalSerial(T))
EndIf
RETURN J
EndSub
Sub Perp(Dir)
Var D
D=Dir
If Dir==1 Then
D=3
EndIf
If Dir==2 Then
D=4
EndIf
If Dir==3 Then
D=-1
EndIf
If Dir==4 Then
D=-2
EndIf
If Dir==-1 Then
D=-3
EndIf
If Dir==-2 Then
D=-4
EndIf
If Dir==-3 Then
D=1
EndIf
If Dir==-4 Then
D=2
EndIf
RETURN D
EndSub
Sub MoveOnce(Dir,Del,Rev)
Var Num
If Rev Then
Num=MoveNumber+1
Else
Num=MoveNumber
EndIf
If (Num>0) and (Dir<>0) Then
If Dir==1 Then
UO.Press(38,Num,Del)
EndIf
If Dir==2 Then
UO.Press(33,Num,Del)
EndIf
If Dir==3 Then
UO.Press(39,Num,Del)
EndIf
If Dir==4 Then
UO.Press(34,Num,Del)
EndIf
If Dir==-1 Then
UO.Press(40,Num-1,Del)
EndIf
If Dir==-2 Then
UO.Press(35,Num,Del)
EndIf
If Dir==-3 Then
UO.Press(37,Num,Del)
EndIf
If Dir==-4 Then
UO.Press(36,Num,Del)
EndIf
If Rev Then
If Dir<>-1 Then
UO.Press(40,1,Del)
EndIf
EndIf
EndIf
EndSub
Sub GetQDir(x,y)
Var J=0
If X==0 Then
J=1
Else
If (Y/X)<ep Then
J=3
Else
If (X/Y)<ep Then
J=1
Else
J=2
EndIf
EndIf
EndIf
RETURN J
EndSub
sub GetDir(myx,myy,ox,oy)
Var I,J
J=0
Var X=ox-myx
Var Y=oy-myy
I=GetQDir(Abs(X),Abs(Y))
If X>=0 Then
If Y>=0 Then
If I==1 Then
J=-2
Else
If I==2 Then
J=-1
Else
If I==3 Then
J=4
EndIf
EndIf
EndIf
Else
If I==1 Then
J=2
Else
If I==2 Then
J=3
Else
If I==3 Then
J=4
EndIf
EndIf
EndIf
EndIf
Else
If Y>=0 Then
If I==1 Then
J=-2
Else
If I==2 Then
J=-3
Else
If I==3 Then
J=-4
EndIf
EndIf
EndIf
Else
If I==1 Then
J=2
Else
If I==2 Then
J=1
Else
If I==3 Then
J=-4
EndIf
EndIf
EndIf
EndIf
EndIf
RETURN J
endsub
sub abs(a)
Var b
If a<0 Then
b=-a
Else
b=a
endif
return b
endsub
Sub PermResend()
Var Mn=9
Repeat
UO.Resend()
Wait(MoveDelay*Mn)
Until (1>2)
EndSub
sub max(A,B)
Var C
If A>B Then
C=A
Else
C=B
EndIf
Return C
EndSub
sub GetDistance(X,Y)
return max(abs(X-uo.getx()),abs(Y-uo.gety()))
endsub
sub GoToTile(OX,OY,N,S)
var myx, myy, MD, J
var Lx1 ,Ly1
var Lx2 ,Ly2
var Sx ,Sy
var T
var Des=N
J=1
MD=MoveDelay*1.5
myx=uo.getx()
myy=uo.gety()
MoveOnce(GetDir(uo.getx(),uo.gety(),ox,oy),MD,False)
Sx=0
Sy=0
Lx1=uo.getx()/2
Ly1=uo.gety()/2
Lx2=Lx1/2
Ly2=Ly1/2
T=UO.Timer()
If (GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N) Then
UO.Exec('exec PermResend')
EndIf
While ((GetDistance(ox,oy)<>N) or ((not S) and GetDistance(ox,oy)>N)) and (OX>=0) and (OY>=0)
If ((UO.Timer()-T)*15>MoveDelay) Then
T=UO.Timer()
# UO.Print(Str(uo.getx())+' '+Str(uo.gety())+' '+Str(ox)+' '+Str(oy)+' '+Str(GetDir(uo.getx(),uo.gety(),ox,oy))+' '+Str(T))
Lx2=Lx1
Ly2=Ly1
Lx1=myx
Ly1=myy
myx=uo.getx()
myy=uo.gety()
endIf
MD=MoveDelay
If ((OX-uo.getx())*(OX-uo.getx())+(OY-uo.gety())*(OY-uo.gety())>0) Then
MD=MD*3/GetDistance(ox,oy)
EndIf
wait(MD)
If GetDistance(OX,OY)>Des Then
MoveOnce(GetDir(uo.GetX(),uo.GetY(),ox,oy),MD,False)
Else
If S Then
If GetDistance(OX,OY)<Des Then
If GetDistance(OX,OY)<>0 Then
MoveOnce(GetDir(ox,oy,uo.GetX(),uo.GetY()),MD,False)
Else
MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False)
EndIf
EndIf
EndIf
EndIf
If GetDistance(OX,OY)<>Des Then
If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then
If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then
J=1
EndIf
J=J+1
UO.Resend()
Sx = uo.getx()
Sy = uo.gety()
Stun(ox,oy,J)
EndIf
EndIf
Wend
UO.Exec('terminate PermResend')
endsub
Sub Stun(X,Y,N)
Var I
Var myx
Var myy
myx = uo.getx()
myy = uo.gety()
For I=1 to N
MoveOnce(perp(GetDir(myx,myy,x,y)),MoveDelay,False)
Next
Wait(MoveDelay)
UO.Resend()
If (myx==uo.getx()) and (myy==uo.gety()) Then
For I=1 to N
MoveOnce(-perp(GetDir(myx,myy,x,y)),MoveDelay,False)
Next
Wait(MoveDelay)
UO.Resend()
EndIf
If (myx==uo.getx()) and (myy==uo.gety()) Then
For I=1 to N
MoveOnce(-GetDir(myx,myy,x,y),MoveDelay,False)
Next
Wait(MoveDelay)
Stun(x,y,N)
EndIf
EndSub
sub NearTile(Obj,Des)
var ox, oy, myx, myy, MD, J
var Lx1 ,Ly1
var Lx2 ,Ly2
var Sx ,Sy
var T
UO.Click(Obj)
MD=MoveDelay*1.5
ox=uo.GetX(Obj)
oy=uo.GetY(Obj)
J=1
myx = uo.getx()
myy = uo.gety()
Sx=0
Sy=0
Lx1=myx/2
Ly1=myy/2
Lx2=Lx1/2
Ly2=Ly1/2
T=UO.Timer()
If not (UO.GetDistance(Obj)==Des) Then
UO.Exec('exec PermResend')
EndIf
While not (UO.GetDistance(Obj)==Des)
ox=uo.GetX(Obj)
oy=uo.GetY(Obj)
If ((UO.Timer()-T)*15>MoveDelay) Then
T=UO.Timer()
# UO.Print('Go to '+Str(Des)+' to '+UO.GetName(Obj))
# UO.Print(Str(UO.GetDistance(Obj)))
# UO.Print(Str(uo.GetX())+' '+Str(uo.GetY())+' '+Str(uo.GetX(Obj))+' '+Str(uo.GetY(Obj))+' '+Str(GetDir(uo.GetX(),uo.GetY(),uo.GetX(Obj),uo.GetY(Obj)))+' '+Str(T))
Lx2=Lx1
Ly2=Ly1
Lx1=myx
Ly1=myy
myx=uo.getx()
myy=uo.gety()
endIf
MD=MoveDelay*1.5
If (UO.GetDistance(Obj)>0) Then
MD=MD/UO.GetDistance(Obj)
EndIf
wait(MD)
If UO.GetDistance(Obj)>Des Then
MoveOnce(GetDir(uo.GetX(),uo.GetY(),uo.GetX(Obj),uo.GetY(Obj)),MD,False)
Else
If UO.GetDistance(Obj)<Des Then
If UO.GetDistance(Obj)<>0 Then
MoveOnce(GetDir(uo.GetX(obj),uo.GetY(obj),uo.GetX(),uo.GetY()),MD,False)
Else
MoveOnce(GetDir(uo.GetX(),uo.GetY(),Lx2,Ly2),MD,False)
EndIf
EndIf
EndIf
If UO.GetDistance(Obj)<>Des Then
If (Lx2==uo.getx()) and (Ly2==uo.gety()) Then
If (Sx<>uo.getx()) or (Sy<>uo.gety()) Then
J=1
EndIf
J=J+1
UO.Resend()
Sx = uo.getx()
Sy = uo.gety()
Stun(uo.GetX(Obj),uo.GetY(Obj),J)
EndIf
EndIf
Wend
UO.Exec('terminate PermResend')
endsub
Sub Recall(ThisRune)
Var X,Y,Z
X=UO.GetX()
Y=UO.GetY()
Z=UO.GetZ()
If RecType()>0 Then
If RecType()==1 Then
Repeat
DeleteJournal('Kal Ort Por')
DeleteJournal('You lack')
DeleteJournal('fizzle')
UO.WaitTargetObject(ThisRune)
Wait(500)
UO.UseType(RecScrl)
While (not UO.InJournal('Kal Ort Por')) and (not UO.InJournal('You lack')) and (not UO.InJournal('fizzle'))
Wait(250)
Wend
If UO.InJournal('Kal Ort Por') Then
Wait(3000)
EndIf
If (X-UO.GetX())*(X-UO.GetX())<RecEps*RecEps Then
EndIf
Until ((X-UO.GetX())*(X-UO.GetX())>=RecEps*RecEps) or ((Y-UO.GetY())*(Y-UO.GetY())>=RecEps*RecEps) or ((Z-UO.GetZ())*(Z-UO.GetZ())>=RecEps*RecEps) or (RecType()==0)
Else
Repeat
DeleteJournal('Kal Ort Por')
DeleteJournal('You lack')
DeleteJournal('fizzle')
UO.Cast('Recall',ThisRune)
While (not UO.InJournal('Kal Ort Por')) and (not UO.InJournal('You lack')) and (not UO.InJournal('fizzle'))
Wait(250)
Wend
If UO.InJournal('Kal Ort Por') Then
Wait(3000)
EndIf
Until ((X-UO.GetX())*(X-UO.GetX())>=RecEps*RecEps) or ((Y-UO.GetY())*(Y-UO.GetY())>=RecEps*RecEps) or ((Z-UO.GetZ())*(Z-UO.GetZ())>=RecEps*RecEps) or UO.InJournal('You lack') or UO.InJournal('beyond')
EndIf
EndIf
EndSub
Sub DeleteJournal(What)
Var T,J
J=False
If UO.InJournal(What) Then
J=True
UO.DeleteJournal()
EndIf
RETURN J
EndSub
Sub Hide()
EndSub
-
- Posts: 11
- Joined: 2004-06-25 10:23:52
oper of Ocllo wrote:Kazoo wrote:нужно нужно нужно нужно сам зделай если так нужно а мне скрипт на невбс килинг в около нужен ! есть ? не ленис пробуц сам писать и кстате ты как дурак написал в кастле ему нужен в каком ешо нах кастле !
На ZHR можно рубить в кастле
И чего, у вас можно дерево с двух сторон рубить? То есть сначала рубим с одной стороны, все вырубаем с дерева, обходим дерево и рубим с другой стороны? Обалдеть...
-
- Posts: 11
- Joined: 2004-06-25 10:23:52
Edred wrote:oper of Ocllo wrote:Kazoo wrote:нужно нужно нужно нужно сам зделай если так нужно а мне скрипт на невбс килинг в около нужен ! есть ? не ленис пробуц сам писать и кстате ты как дурак написал в кастле ему нужен в каком ешо нах кастле !
На ZHR можно рубить в кастле
И чего, у вас можно дерево с двух сторон рубить? То есть сначала рубим с одной стороны, все вырубаем с дерева, обходим дерево и рубим с другой стороны? Обалдеть...
ЛОЛ
в 2-а ряда деревья стоят
а между ними идет чар и рубит то с одного ряда дерево
а потом с другого ряда
ПОНЯТНО??????????
oper of Ocllo wrote:ЛОЛ
в 2-а ряда деревья стоят
а между ними идет чар и рубит то с одного ряда дерево
а потом с другого ряда
ПОНЯТНО??????????
ЛОЛ
Теперь ты понял как надо объяснять задачу того, на что тебе нужен скрипт?
ПОНЯТНО??????????
ЗЫ: Возьми любой скрипт на рубку по массиву (тут их как минимум несколько штук есть) и пользуй. Один раз разметишь все деревья в нужном порядке в массив и ходи-руби.
-
- Posts: 11
- Joined: 2004-06-25 10:23:52
Edred wrote:oper of Ocllo wrote:ЛОЛ
в 2-а ряда деревья стоят
а между ними идет чар и рубит то с одного ряда дерево
а потом с другого ряда
ПОНЯТНО??????????
ЛОЛ
Теперь ты понял как надо объяснять задачу того, на что тебе нужен скрипт?
ПОНЯТНО??????????
ЗЫ: Возьми любой скрипт на рубку по массиву (тут их как минимум несколько штук есть) и пользуй. Один раз разметишь все деревья в нужном порядке в массив и ходи-руби.
просто при использывании скриптов (которые тут несколько штук)
UO пишет что нельзя рубить в кастле
мне нужен грубо говоря чтоб чар сам искал дерево по графики
и при нахождении рубил его +делал шаг в перед и тоже самое действие
-
- Posts: 11
- Joined: 2004-06-25 10:23:52
Мне надо типа вот етого но чтоб рубило
sub main()
uo.DeleteJournal()
var a,b,y,coords,place,where_x,where_y
var tool='0x0F49', logs='0x1BDD', map='0x14ED'
while true
uo.press(34)
for a = 1 to 14
for y = 2 to 4
where_x=uo.getx(1)
where_y=uo.gety(1)
coords="waittargettile "+" 1339 "+str(where_x)+" "+str(where_y+y)+" 5" #cave
uo.exec(coords)
uo.usetype(tool)
repeat
wait(100)
until uo.InJournal("stop") or uo.InJournal("can't")
uo.DeleteJournal()
next
wait(500)
place=uo.getx()
uo.press(34)
while uo.getx()==place
wait(500)
wend
next
uo.press(36)
for b = 1 to 14
for y = 1 to 2
where_x=uo.getx()
where_y=uo.gety()
coords="waittargettile "+" 1339 "+str(where_x)+" "+str(where_y-y)+" 2" #cave
uo.exec(coords)
uo.usetype(tool)
repeat
wait(100)
until uo.InJournal("stop") or uo.InJournal("can't")
uo.DeleteJournal()
next
wait(500)
place=uo.getx()
uo.press(36)
while uo.getx()==place
wait(500)
wend
next
repeat
if uo.count(map)>100 then
repeat
uo.waittargettype(map)
uo.exec("drop 1")
wait(200)
until uo.count('map')<85
end if
wend
end sub
sub main()
uo.DeleteJournal()
var a,b,y,coords,place,where_x,where_y
var tool='0x0F49', logs='0x1BDD', map='0x14ED'
while true
uo.press(34)
for a = 1 to 14
for y = 2 to 4
where_x=uo.getx(1)
where_y=uo.gety(1)
coords="waittargettile "+" 1339 "+str(where_x)+" "+str(where_y+y)+" 5" #cave
uo.exec(coords)
uo.usetype(tool)
repeat
wait(100)
until uo.InJournal("stop") or uo.InJournal("can't")
uo.DeleteJournal()
next
wait(500)
place=uo.getx()
uo.press(34)
while uo.getx()==place
wait(500)
wend
next
uo.press(36)
for b = 1 to 14
for y = 1 to 2
where_x=uo.getx()
where_y=uo.gety()
coords="waittargettile "+" 1339 "+str(where_x)+" "+str(where_y-y)+" 2" #cave
uo.exec(coords)
uo.usetype(tool)
repeat
wait(100)
until uo.InJournal("stop") or uo.InJournal("can't")
uo.DeleteJournal()
next
wait(500)
place=uo.getx()
uo.press(36)
while uo.getx()==place
wait(500)
wend
next
repeat
if uo.count(map)>100 then
repeat
uo.waittargettype(map)
uo.exec("drop 1")
wait(200)
until uo.count('map')<85
end if
wend
end sub
-
- Posts: 54
- Joined: 2004-05-11 12:27:22
- Contact: