Yoko

All sides of Injection
It is currently 2025-10-29 18:27:59

All times are UTC+02:00




Post new topic  Reply to topic  [ 4 posts ] 
Author Message
PostPosted: 2008-08-24 10:54:58 
Offline
User avatar

Joined: 2008-08-24 10:40:48
Posts: 3
Location: Владивосток
Доброговсем времени суток! У меня возникла такая проблема, хотела прокачать резист и одновременно хилинг на шардфе forgotten world, нашла скрипт, который бы мне подошел, но он неправельно работает...

Я задаю координаты тайла куда нужно кастовать стенку (дом у меня стоит по оси z на 6 координате) но стенка кастуется почему под пол... Если я кастую ее на оси z=0 то все нормально... Но мне бы не хотелось переносить свой домик из-за какого скрипта... Тем более стенка все равно кастуется немного не туда...

Далее хилинг не хочет работать, после первого хела чар просто стоит и ничего не делает... Сначала я думала что это из-за месаг, я переписала их на те что у нас на шарде но эффект остался прежним...

Помогите доработать скрипт! Буду очень благодарна! :)

Code:
sub Resist() 
; (c) Destruction, v1.0
Var CastT = 1200 ; тип тайла на который кастуем
Var CastX = 1328 ; координата X тайла на который кастуем
Var CastY = 1055 ; координата Y тайла на который кастуем
Var CastZ = 6    ; координата Z тайла на который кастуем
Var StayX = 1328 ; место для отхила и каста по X
Var StayY = 1056 ; место для отхила и каста по Y
Var ManaCast = 11 ; нужно маны на спелл
Var Spell = "Fire Field" ; кастуемый спелл
Var GoType = "X" ; по какой координате ходить
Var GoDist = 2 ; как далеко ходить, от точки каста
Var Damage = 5 ; максимальный урон наносимый огненной стеной
Repeat
   MyGo(StayX,StayY)
   MyCheckReag()
   CheckMana(ManaCast)
   FullHeal()
   Medit()
   MyGroundCast(Spell, CastT, CastX, CastY, CastZ)
   MyRWalker(CastX,CastY,GoType,GoDist,Damage)
   MyGoFromField(CastX, CastY, GoType, StayX, StayY)
Until uo.SkillVal("Magic Resistance",1) > 999
End Sub

Sub MyGoFromField(x, y, t, sX, sY)
var GoX, GoY
If t == "x" || t == "X" Then
   If sY > y Then
      GoY = uo.GetY()+1
   Else
      GoY = uo.GetY()-1
   End If
   GoX = uo.GetX()
Else
   If sX > x Then
      GoX = uo.GetX()+1
   Else
      GoX = uo.GetX()-1
   End If
   GoY = uo.GetY()
End If
MyGo(GoX, GoY)
End Sub

Sub MyRWalker(x, y, t, d, dmg)
Var Field = "0x398C" ; тип огненной стены
Var Count = 7 ; Количество появляющихся огненных стен
var GoX = x, GoY = y, dist
MyGo(x, y)
While uo.GetHP() > 60 && uo.CountGround(Field) >= Count
   dist = Math.Round((uo.GetHP()-60)/dmg)
   If dist > d Then
      dist = d
   End If
   If t == "X" || t == "x" Then
      GoX = GoX - dist
      GoY = GoY
   Else
      GoX = GoX
      GoY = GoY - dist
   EndIf
   MyGo(GoX, GoY)
   If uo.GetHP() < 60 || uo.CountGround(Field) < Count Then
      return
   End If
   dist = Math.Round((uo.GetHP()-60)/dmg)
   If dist > d*2 Then
      dist = d*2
   End If
   If t == "X" || t == "x" Then
      GoX = GoX + dist
      GoY = GoY
   Else
      GoX = GoX
      GoY = GoY + dist
   EndIf
   MyGo(GoX, GoY)
   If uo.GetHP() < 60 || uo.CountGround(Field) < Count Then
      return
   End If
   dist = Math.Round((uo.GetHP()-60)/dmg)
   If dist > d Then
      dist = d
   End If
   If t == "X" || t == "x" Then
      GoX = GoX - dist
      GoY = GoY
   Else
      GoX = GoX
      GoY = GoY - dist
   EndIf
   MyGo(GoX, GoY)
WEnd
End Sub

Sub Math.Round(val)
var i=1
While Not Right(Left(str(val),i),1) == "."
   If i > StrLen(str(val)) Then
      Return val
   End If
   i = i + 1
WEnd
Return val(Left(str(val),i-1))
endsub

Sub MyCheckReag()
Var c, i, ReagCount = 4 ; количество типов реагентов
Var ReagCnt = "0x40021A29" ; ID сумки с реагентами
DIM Reagents[val(str(ReagCount))]
Reagents[0] = "0x0F8C" ; Sulfurous Ash
Reagents[1] = "0x0F7A" ; Black Pearls
Reagents[2] = "0x0F8D" ; Spider Silk
Reagents[3] = "0x0E21" ; Bandage
For i=0 To ReagCount-1
   uo.FindType(Reagents[i])
   If uo.FindCount() Then
      c = uo.GetQuantity("finditem")
   Else
      c = 0
   End If
   While c < 50
      uo.FindType(Reagents[i],"-1",ReagCnt)
      If Not uo.FindCount() Then
         uo.Print("Reagents Not Found!")
         uo.Exec("terminate all")
      End If
      uo.MoveItem("finditem",str(50-c),"backpack")
      checklag()
      uo.FindType(Reagents[i])
      If uo.FindCount() Then
         c = uo.GetQuantity("finditem")
      Else
         c = 0
      End If
   WEnd
Next
End Sub

Sub MyGroundCast(s, t, x, y, z)
Var Field = "0x398C" ; тип огненной стены
Var Count = 7 ; Количество появляющихся огненных стен
Var Mana
While uo.CountGround(Field) < Count
   Mana = uo.Mana
   uo.WaitTargetTile(t, x, y, z)
   uo.Cast(s)
   While Mana == uo.Mana
      Wait(100)
   WEnd
WEnd
End Sub

Sub FullHeal()
Var s = "You put the bloody bandage"
Var f = "You apply the badages"
Var w = "Do you wanna make a mummy?"
While uo.GetHP() < uo.GetMaxHP()
   deljournal(s+"|"+f+"|"+w)
   uo.WaitTargetObject('self')
   uo.UseType('bandage')
   Repeat
      Wait(100)
   Until uo.InJournal(s+"|"+f+"|"+w)
   If uo.InJournal(w) Then
      Wait(500)
   End If
WEnd
End Sub

Sub CheckMana(ManaCast)
While uo.Mana < ManaCast
   uo.UseSkill("Meditation")
   wait(100)
WEnd
End Sub

Sub MyGo(GoX, GoY)
Var CurX, CurY, Dir = MyGetDir(GoX, GoY)
DIM Dirs[10]
Dirs[1] = 35 ; End
Dirs[2] = 40 ; Down
Dirs[3] = 34 ; PgDown
Dirs[6] = 39 ; Right
Dirs[9] = 33 ; PgUp
Dirs[8] = 38 ; Up
Dirs[7] = 36 ; Home
Dirs[4] = 37 ; Left
DIM sDir[10]
sDir[3] = 2
sDir[2] = 3
sDir[1] = 6
sDir[0] = 9
sDir[7] = 8
sDir[6] = 7
sDir[5] = 4
sDir[4] = 1
While Dir
   CurX = uo.GetX()
   CurY = uo.GetY()
   If Not sDir[uo.GetDir()] == Dir Then
      uo.Press(Dirs[Dir],2)
   Else
      uo.Press(Dirs[Dir])
   End If
   While uo.GetX() == CurX && uo.GetY() == CurY
      wait(100)
   WEnd
   Dir = MyGetDir(GoX, GoY)
WEnd
endsub

Sub MyGetDir(x, y)
Var cx, cy
x = -(uo.GetX() - x)
y = -(uo.GetY() - y)
cx = x
cy = y 
If cx <= 0 Then
   cx = -cx
End If
If cy <= 0 Then
   cy = -cy
End If
If cx+cy Then
   If x>0 && y>0 && x==y  Then
      Return 2
   End If
   If x>0 && cx>cy Then
      Return 3
   End If
   If x>0 && y<0 && cx==cy Then
      Return 6
   End If
   If y<0 && cy>cx Then
      Return 9
   End If
   If x<0 && y<0 && x==y Then
      Return 8
   End If
   If x<0 && cx>cy Then
      Return 7
   End If
   If x<0 && y>0 && cx==cy Then
      Return 4
   End If
   If y>0 && cy>cx Then
      Return 1
   End If
Else
   Return False
End If
End Sub

Sub Medit()
While uo.Mana < uo.Int
   uo.UseSkill("Meditation")
   Wait(300)
WEnd
End Sub
[/code]


Top
   
 Post subject:
PostPosted: 2008-08-25 20:49:28 
Offline
User avatar

Joined: 2008-08-24 10:40:48
Posts: 3
Location: Владивосток
Ап! Люди что никто не знает в чем проблема?


Top
   
 Post subject:
PostPosted: 2008-08-25 23:37:55 
Offline
Junior Expert
User avatar

Joined: 2004-06-24 22:08:56
Posts: 3220
Var CastZ = 6 ; координата Z тайла на который кастуем

_________________
YokoInjection CodeSweeper
Function not found?
Possession of mathematics at the level of art - a gift that is only available for election.
Sorry for my clumsy English.
Skype: d119060


Top
   
 Post subject:
PostPosted: 2008-08-26 05:45:39 
Offline
User avatar

Joined: 2008-08-24 10:40:48
Posts: 3
Location: Владивосток
Конечно спасибо, но это вроде понятно. Только он все равно кастует в нулевую координату, хоть там 12 ставь...


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

All times are UTC+02:00


Who is online

Users browsing this forum: No registered users and 10 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:  
Powered by phpBB® Forum Software © phpBB Limited