Скрипт ла ламбер

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
oper of Ocllo
Posts: 11
Joined: 2004-06-25 10:23:52

Скрипт ла ламбер

Post by oper of Ocllo »

Плиз нужен скрипт на рубку деревьев с 2-х сторон
Если есть у кого скинти
oper of Ocllo
Posts: 11
Joined: 2004-06-25 10:23:52

Re: Скрипт ла ламбер

Post by oper of Ocllo »

oper of Ocllo wrote:Плиз нужен скрипт на рубку деревьев с 2-х сторон
Если есть у кого скинти

Мне на рубку в кастле нужно
Kazoo
Posts: 173
Joined: 2004-04-03 18:39:28
Contact:

Post by Kazoo »

нужно нужно нужно нужно сам зделай если так нужно а мне скрипт на невбс килинг в около нужен ! есть ? не ленис пробуц сам писать и кстате ты как дурак написал в кастле ему нужен в каком ешо нах кастле !
Kazoo
Posts: 173
Joined: 2004-04-03 18:39:28
Contact:

Post by Kazoo »

на форуме скриптоф на лумбер навалом бля на подавис так же как и все осталние которие не знают што такое сеарч


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
oper of Ocllo
Posts: 11
Joined: 2004-06-25 10:23:52

Post by oper of Ocllo »

Kazoo wrote:нужно нужно нужно нужно сам зделай если так нужно а мне скрипт на невбс килинг в около нужен ! есть ? не ленис пробуц сам писать и кстате ты как дурак написал в кастле ему нужен в каком ешо нах кастле !

На ZHR можно рубить в кастле :)
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

oper of Ocllo wrote:
Kazoo wrote:нужно нужно нужно нужно сам зделай если так нужно а мне скрипт на невбс килинг в около нужен ! есть ? не ленис пробуц сам писать и кстате ты как дурак написал в кастле ему нужен в каком ешо нах кастле !

На ZHR можно рубить в кастле :)


И чего, у вас можно дерево с двух сторон рубить? То есть сначала рубим с одной стороны, все вырубаем с дерева, обходим дерево и рубим с другой стороны? Обалдеть...
Kazoo
Posts: 173
Joined: 2004-04-03 18:39:28
Contact:

Post by Kazoo »

у нас нет +) ета у них
oper of Ocllo
Posts: 11
Joined: 2004-06-25 10:23:52

Post by oper of Ocllo »

Edred wrote:
oper of Ocllo wrote:
Kazoo wrote:нужно нужно нужно нужно сам зделай если так нужно а мне скрипт на невбс килинг в около нужен ! есть ? не ленис пробуц сам писать и кстате ты как дурак написал в кастле ему нужен в каком ешо нах кастле !

На ZHR можно рубить в кастле :)


И чего, у вас можно дерево с двух сторон рубить? То есть сначала рубим с одной стороны, все вырубаем с дерева, обходим дерево и рубим с другой стороны? Обалдеть...

ЛОЛ
в 2-а ряда деревья стоят
а между ними идет чар и рубит то с одного ряда дерево
а потом с другого ряда
ПОНЯТНО??????????
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

oper of Ocllo wrote:ЛОЛ
в 2-а ряда деревья стоят
а между ними идет чар и рубит то с одного ряда дерево
а потом с другого ряда
ПОНЯТНО??????????


ЛОЛ
Теперь ты понял как надо объяснять задачу того, на что тебе нужен скрипт?
ПОНЯТНО??????????

ЗЫ: Возьми любой скрипт на рубку по массиву (тут их как минимум несколько штук есть) и пользуй. Один раз разметишь все деревья в нужном порядке в массив и ходи-руби.
Kazoo
Posts: 173
Joined: 2004-04-03 18:39:28
Contact:

Post by Kazoo »

Edred немог бы ты мне стукнкть в асю плиз 2422750
oper of Ocllo
Posts: 11
Joined: 2004-06-25 10:23:52

Post by oper of Ocllo »

Edred wrote:
oper of Ocllo wrote:ЛОЛ
в 2-а ряда деревья стоят
а между ними идет чар и рубит то с одного ряда дерево
а потом с другого ряда
ПОНЯТНО??????????


ЛОЛ
Теперь ты понял как надо объяснять задачу того, на что тебе нужен скрипт?
ПОНЯТНО??????????

ЗЫ: Возьми любой скрипт на рубку по массиву (тут их как минимум несколько штук есть) и пользуй. Один раз разметишь все деревья в нужном порядке в массив и ходи-руби.



просто при использывании скриптов (которые тут несколько штук)
UO пишет что нельзя рубить в кастле
мне нужен грубо говоря чтоб чар сам искал дерево по графики
и при нахождении рубил его +делал шаг в перед и тоже самое действие
oper of Ocllo
Posts: 11
Joined: 2004-06-25 10:23:52

Post by oper of Ocllo »

Мне надо типа вот етого но чтоб рубило

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
evil_Gremlin
Posts: 54
Joined: 2004-05-11 12:27:22
Contact:

Post by evil_Gremlin »

написать скрипт на поиск по форуму и динамическое человеческое мышление? ;)
Каждый манчкин в старости мечтает иметь кресло-качалку ;)
Post Reply