Доброговсем времени суток! У меня возникла такая проблема, хотела прокачать резист и одновременно хилинг на шардфе 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]
|