Небольшое изменение в mining

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
Fraerok
Posts: 18
Joined: 2006-02-12 16:22:44

Небольшое изменение в mining

Post by Fraerok »

Всем привет! У меня небольшая проблемка! Надо изменить в скрипте, а точнее добавить чтобы когда чара ктото атачит (пк, элемка и т.п.), чар бежал по моим координатом домой, и после того как прибегал банил того кто атачил, тобеш последнего по таргету, ну а после этого через 1 минуту шёл по моим координатом к шахте и продолжал опять копать!

Вот выкладываю скрипт, чей он я без понятия, ктото кинул давно уже, много раз видимо переделывался, да и я там поковырялся немного...

P.S.> Если не сложно то удалите что лишние там ещё... хилинг там, чтобы чар убивал элемок и ну ещё чтото не нужное вроде там есть...
Зарание спасибо!

Code: Select all

#При работе должна быть "отжата" кнопка NumLock
Var MoveDelay=300 # Промежуток между шагами
Var MoveNumber=1 # Количество шагов при смене дислокации
Var Ep=0.172 # Значение ширины угла хождения при определении направления. Если на пути встречаются сложные и широкие препятствия - увеличить. 0.172 - сбалансированный.
Var FileName='C:\TILE3.txt' # В каждой строке файла тайл точки с рудой.

Sub Main()
UO.DeleteJournal()
UO.Exec('exec Lumb')
EndSub

Sub Lumb()
Var Tl,T,X,Y,Z
UO.SetGlobal('process','yes')
Var F=File(FileName)
F.Open()
GoToTile(1921,374,0,False) #Точки от сундука к шахте
GoToTile(1913,374,0,False) #Точки от сундука к шахте
GoToTile(1908,368,0,False) #Точки от сундука к шахте
GoToTile(1901,367,0,False) #Точки от сундука к шахте
wait(6000)
Beg:
presledovanie()
if uo.weight>410 then
GoTo Konec
EndIf
DeleteJournal('0xAD00')
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('NEXT IRON!')
UO.Print('Tile '+Tl)
GoToTile(X,Y,1,False)
UO.Exec("useskill Hiding")
uo.deletejournal()
while not (UO.InJournal('cliloc# 0xA867') or UO.InJournal('cliloc# 0xA2DE') or UO.InJournal('cliloc# 0xA20D') or UO.InJournal('cliloc# 0xAD00') or UO.InJournal('cliloc# 0xAD01'))
uo.deletejournal()
UO.WaitTargetTile(Str(t),Str(x),Str(y),Str(z))
wait(700)
UO.Usetype('0x0E86')
Wait(500)

presledovanie()
wend
If UO.InJournal('0xAD00') Then
UO.Print('NO IRON!')
endif
GoTo Beg
Ext:
F.Close()
UO.SetGlobal('process','no')
GoTo Nachalo
Konec:
GoToTile(1921,374,0,False) #Точки от шахты к сундуку
GoToTile(1937,374,0,False) #Точки от шахты к сундуку
GoToTile(1941,376,0,False) #Точки от шахты к сундуку
GoToTile(1943,376,0,False) #Точки от шахты к сундуку
wait(6000)
uo.findtype(0x19B9)
uo.print(uo.FindCount())
while uo.FindCount() > 0
uo.MoveItem("finditem","-1","0x402A1670") #ID'шник сундука куда будет складываться вся руда
wait(2000)
uo.findtype(0x19B9)
wend
dobor()
GoToTile(1921,374,0,False) #Точки от сундука к шахте
GoToTile(1913,374,0,False) #Точки от сундука к шахте
GoToTile(1908,368,0,False) #Точки от сундука к шахте
GoToTile(1901,367,0,False) #Точки от сундука к шахте
wait(6000)
GoTo Beg
Nachalo:
UO.Print('THE END')
uo.say(",exec Main")
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 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()
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 DeleteJournal(What)
Var T,J
J=False
If UO.InJournal(What) Then
J=True
UO.DeleteJournal()
EndIf
RETURN J
EndSub

sub presledovanie()
uo.exec("set finddistance 1")
uo.findtype("0x006C",-1,"ground")
while uo.FindCount()>0
Uo.Exec("waittargetobject finditem")
uo.useobject('Wep') # Wep должен быть обозначен в обжектах как оружее, которым будем мочить крыс и элемов.
uo.deletejournal()
uo.attack('finditem')
wait(6000)
uo.findtype("0x006C",-1,"ground")

while uo.life<100
UO.exec("waittargetself")
UO.exec("usetype bandage")
wait(1000)
UO.exec("useobject Shield") # Тоже самое что с Wep, но тока это щит. (Показать надо через Object)
wait(1000)
UO.exec("waittargetself")
UO.exec("useobject Wep")
wait(1500)
wend

uo.findtype("0x006C",-1,"ground")
wend

uo.findtype("0x00D7",-1,"ground")
while uo.FindCount()>0
Uo.Exec("waittargetobject finditem")
uo.useobject('Wep')
uo.deletejournal()
uo.attack('finditem')
wait(6000)
uo.findtype("0x006C",-1,"ground")

while uo.life<100 # После скольких жизний будем хелиться бинтами.
UO.exec("waittargetself")
UO.exec("usetype bandage")
wait(1000)
UO.exec("useobject Shield")
wait(1000)
UO.exec("waittargetself")
UO.exec("useobject Wep")
wait(1500)
wend

uo.findtype("0x00D7",-1,"ground")
wend
end sub

sub dobor() # Добор кирок из сундука.
while uo.count("0x0E86")<4
uo.print("kirka")
uo.useobject("0x4012ADAC") # ID'шник сундука в котором кирки.
wait(1000)
uo.findtype("0x0E86",-1,"0x4012ADAC") # ID'шник сундука в котором кирки.
wait(700)
uo.moveitem('finditem','4')
wait(700)
wend

end sub
Toolmate
Posts: 104
Joined: 2005-08-18 09:09:18
Location: RUSSIA

Post by Toolmate »

Насколько я помню, это макр Джаста :)
Fraerok
Posts: 18
Joined: 2006-02-12 16:22:44

Post by Fraerok »

Мож быть мож быть %) Кто кинул не помню...
Fraerok
Posts: 18
Joined: 2006-02-12 16:22:44

Post by Fraerok »

Ап!!

P.S.> Неужели не кто не может? Или времени нету? :cry:
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Re: Небольшое изменение в mining

Post by Edred »

Fraerok wrote:и после того как прибегал банил того кто атачил, тобеш последнего по таргету


Если ты ГМ, то включи неуязвимость, по фиг кто тебя атачить будет, а если не ГМ, то как ты банить врага собрался?
GeR
Posts: 21
Joined: 2006-03-23 12:42:01

Re: Небольшое изменение в mining

Post by GeR »

Edred wrote:
Fraerok wrote:и после того как прибегал банил того кто атачил, тобеш последнего по таргету


Если ты ГМ, то включи неуязвимость, по фиг кто тебя атачить будет, а если не ГМ, то как ты банить врага собрался?


на некоторых серверах в табличке дома есть закладка сделать врагом
примерно также как сделать другом =))

если делать человека врагом для дома то он не может даже зайти в зону дома
его отбрасывает за сейф зону дома.
Fraerok
Posts: 18
Joined: 2006-02-12 16:22:44

Post by Fraerok »

Гы! Видимо не кто на нове не играл %) Банил чтобы он так:

Прибегает в дом, произносит фразу "i ban thee" и прицелом по последниму таргету банит... Короче это элемка, крыса, пк или рипер, без разницы! Главное кто атачит!

P.S.> На нове не так, там когда баниш человека он не может войти в дом и его отбрасывает под табличку дома, а я огорожу табличку дома забором! Тобеш если это элементаль то он просто напросто из-за забора не сможет выйти )))

(Главное чтобы чар начинал убегать от нападавшего когда тот 1 раз ударит, а то просто получится так что когда элемка стоит за забором, она же до сих пор будет атачить, так вот чар наверно и будет бегать из дома в дом... хотя не знаю как это всё происходит т.к. в скриптах почти нечего не понимаю.)
Fraerok
Posts: 18
Joined: 2006-02-12 16:22:44

Post by Fraerok »

И ещё кстати вот у меня выдаёт ошибку: Unhandled exception in parser. Что это значит? И когда такая ошибка виснит клиет и инжа говарит типа закрыть клиет или нет, если нажать чтобы не закрылся, то выдаёт заного. :roll: :(
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Fraerok wrote:И ещё кстати вот у меня выдаёт ошибку: Unhandled exception in parser. Что это значит? И когда такая ошибка виснит клиет и инжа говарит типа закрыть клиет или нет, если нажать чтобы не закрылся, то выдаёт заного. :roll: :(


Скрипт кривой, это она тебе говорит. Без указания места кривости. Так что втыкай по всему скрипту тестовые принты, а дальше лови место и на каком цикле это происходит
Fraerok
Posts: 18
Joined: 2006-02-12 16:22:44

Post by Fraerok »

Ты знаеш, я бы с радостью, но только не умею я скрипты для инжи шпилить :) После 2 уроков по скриптингу на инже, у меня крыша начинает ехать. Если тебе не сложно то плиз поправь и допиши. Буду очень благодарен! :oops:
Edred
Expert!
Posts: 2544
Joined: 2004-04-03 17:36:29
Location: Saint-Petersburg

Post by Edred »

Я лично не правлю чужие скрипты длиннее 20-30 строк кода. Просто лень разбираться.
Fraerok
Posts: 18
Joined: 2006-02-12 16:22:44

Post by Fraerok »

Ясно. Ну лана... может кто найдётся что поправит :roll: :(
Fraerok
Posts: 18
Joined: 2006-02-12 16:22:44

Post by Fraerok »

Вроде всеми усилиями я сделал чтобы чар при атаке убегал в дом и банил, но появилась встречаная проблема. Чар не открывает дверь в дом! Ставлю задержку в 1 секунду окало двери и дописываю uo.opendoor(), но чар 0 эмоций! Как сделать чтобы он дверь открывал? :roll:
Post Reply