Yoko

All sides of Injection
It is currently 2026-01-18 14:54:25

All times are UTC+02:00




Post new topic  Reply to topic  [ 2 posts ] 
Author Message
PostPosted: 2005-04-20 23:27:29 
Offline
User avatar

Joined: 2005-01-16 17:25:54
Posts: 35
Кратко о проблеме:
1. Какда запускаю скрипт и чар идет к следующему Дереву и возникает торможения чара - тоесть скрипт плохо передвигает чара к координатам. чара просто кидает в разние сторони по пути к координатам.
2. Как исправить ето.
----вот кусок скрипта -- ходилки
3. Тайли берет с файла---- сделаного = ,infotiles
4. если передвегать чара МИШЮ - движения - получаютса ПЛАВНИЕ --- а скриптом НЕТ - как ето ИСПРАВИТЬ?
Code:
   Var Hatchet1='0x0F47' 
                        Var Hatchet2='0x0F47'
                        Var MoveDelay=400
                        Var MoveNumber=1
                       
                        Var Ep=0.172
                      var i
              ..... .... .  .. . .. . ... .
                        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
                     
 if UO.Weight > 1000 then

UO.Exec('exec main')


end if



                        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*2.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 DeleteJournal(What)
                        Var T,J
                        J=False
                        If UO.InJournal(What) Then
                         J=True
                         UO.DeleteJournal()
                        EndIf
                        Wait(MoveDelay)
                        RETURN J
                        EndSub

[А для кого теги придумали?]


Top
   
PostPosted: 2005-04-21 07:48:41 
Offline
Expert!
User avatar

Joined: 2004-07-04 00:14:58
Posts: 1284
Vija [ XAOC ] wrote:
Кратко о проблеме:
1. Какда запускаю скрипт и чар идет к следующему Дереву и возникает торможения чара - тоесть скрипт плохо передвигает чара к координатам. чара просто кидает в разние сторони по пути к координатам.
2. Как исправить ето.
----вот кусок скрипта -- ходилки
3. Тайли берет с файла---- сделаного = ,infotiles
4. если передвегать чара МИШЮ - движения - получаютса ПЛАВНИЕ --- а скриптом НЕТ - как ето ИСПРАВИТЬ?
взять другую ходилку, повторять это до получения положительного результата, при отсутствии оного - написать самому.


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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 4 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