Ок извините, проблема главная сейчас в том, что он спокойно ловит себе рыбку, подплывает морское чудовище, он снимает удочку и одевает лук, убивает лохнесское чудовище и не продолжает ловить рыбку,а одевает снимает лук , кидает на пол под себя со стрелами и потом опять поднимает одевает и так циклично, помогите разобраться
Code: var RandomFlag = 0 var UpOrFish = 1 var GZExist = 0 var GZTimer = 0 var NextDot = 0 var bandages = "0x02e1" var meal = "0x097b" var SOSBP = "ground" var MapBP = "ground" var Enemy = "self" var WType = "0x0F51" var fPole = "0x0dbf" var fTime = 3500 var fPoleSize = 0 var GlobalFileMap = 'fpoint.map' var FishLagTimer = 0
sub main() Init() var EnemyExists, EatTimer, fPoint DIM FishingMap[121] DIM FishingStuff[6] FishingStuff[0] = "0x09CC" # Grey Fish FishingStuff[1] = "0x09CD" # Green Fish FishingStuff[2] = "0x09CE" # Blue Fish FishingStuff[3] = "0x09CF" # Yellow Fish FishingStuff[4] = "0x099F" # SOS bottle FishingStuff[5] = "0x14ED" # old tattered map if CheckFExist(GlobalFileMap) then ReadFile(GlobalFileMap, FishingMap) else fPoleSize = CreateMap(FishingMap) SToFile(FishingMap, fPoleSize, GlobalFileMap) endif FishLagTimer = UO.Timer() SetFishTime(FishingMap[0]) fPoint = 0 repeat CheckSave() If ((UO.Timer() - EatTimer) > 3000) then EatCheck() EatTimer = UO.Timer() EndIf While CheckDanger() TryToRes(1) UO.DeleteJournal() WEnd CheckEq(fPole) If UpOrFish Then if NextDot Then fPoint = fPoint + 1 NextDot = 0 else fPoint = fPoint endif if (fPoint == fPoleSize) then fPoint = 0 endif Else # UpOrFish if RandomFlag then fPoint = UO.Random(fPoleSize) else # RandomFlag fPoint = fPoint + 1 if (fPoint == fPoleSize) then fPoint = 0 endif # fPoint == fPoleSize endif # RandomFlag EndIf # UpOrFish If ((UO.Timer() - FishLagTimer) > 9000) then SetFishTime(FishingMap[fPoint]) FishLagTimer = UO.Timer() EndIf Fish(FishingMap[fPoint]) If (UO.Weight > 370) Then DropIt(FishingStuff) EndIf until false end sub
sub GZCheck() var GZE = 0 CheckSave() UO.ServerPrint('.guards') Wait(5000) if CheckMsg('This area is not watched','System') then UO.Print('No guards') else GZE = 1 UO.Print('Guard Zone!') endif return GZE end sub
sub Init() UO.TextOpen() UO.TextPrint('Скрипт стартовал: '+MakeTime()) UO.Exec('terminate Reconnector') UO.Exec('exec Reconnector') Wait(2000) UO.Print('An exceptional fishing script v1.0 Release [crafted by totus]') Wait(2000) GZTimer = UO.Timer() GZExist = GZCheck() UO.Set('norbcheck','1') UO.Set('norbcalc','1') UO.Set('finddistance','3') UO.Set('distance','2') end sub
sub CreateMap(mapArray) DIM tileArray[7] tileArray[0] = '0' tileArray[1] = '6039' tileArray[2] = '6040' tileArray[3] = '6041' tileArray[4] = '6042' tileArray[5] = '6043' tileArray[6] = '6044' DIM FishMsg[6] FishMsg[0] = 'You catch' FishMsg[1] = 'You find' FishMsg[2] = 'That location' FishMsg[3] = 'That is too far' FishMsg[4] = 'There does' FishMsg[5] = 'You can' var mX, mY, mZ, StopFuckingSearch, nTileNum, cDelta, dX, dY cDelta = 5 mX = UO.GetX() mY = UO.GetY() mZ = '251' var mSize = 0 nTileNum = 0 for dX = -cDelta to cDelta for dY = -cDelta to cDelta StopFuckingSearch = 0 nTileNum = 0 repeat CheckSave() CheckEq(fPole) UO.Print('Fishing @: '+tileArray[nTileNum]+' '+STR(mX+dX)+' '+STR(mY+dY)+' '+mZ) Fish(tileArray[nTileNum]+' '+STR(mX+dX)+' '+STR(mY+dY)+' '+mZ) if (CheckMsg(FishMsg[0],'System') or CheckMsg(FishMsg[1],'System')) Then mapArray[mSize] = tileArray[nTileNum]+' '+STR(mX+dX)+' '+STR(mY+dY)+' '+mZ mSize = mSize + 1 StopFuckingSearch = 1 else if CheckMsg(FishMsg[2],'System') then StopFuckingSearch = 1 endif endif UO.DeleteJournal() nTileNum = nTileNum + 1 if (nTileNum == 7) then StopFuckingSearch = 1 endif until StopFuckingSearch next next Return mSize end sub
sub CheckMsg(cMsg, mAuthor) var ij ij = UO.InJournal(cMsg) if ij Then if (UO.JournalSerial(ij+1) == mAuthor) then return ij+1 else if (mAuthor == 'System') and (UO.JournalSerial(ij+1) == '0x01010101') then return ij+1 endif endif else return 0 endif end sub
sub CheckFExist(fName) var FileResult = 0 var xx = file(fName) FileResult = safe call xx.Open() Return FileResult end sub
sub SToFile(wtSave, wtsSize, fName) var wtsLNum var f=file(fName) f.Create() f.Open() f.WriteLn(STR(wtsSize)) for wtsLNum = 0 to (wtsSize - 1) f.WriteLn(wtSave[wtsLNum]) next f.Close() end sub
sub ReadFile(fName, Pole) var tFile = file(fName) var LLLine, lNum, lSize tFile.Open() lSize = safe call tFile.ReadNumber() fPoleSize = lSize safe call tFile.ReadLn() if ((lSize > 0) and IsNumber(lSize)) then for lNum = 0 to fPoleSize - 1 LLLine = safe call tFile.ReadLn() Pole[lNum] = Left(LLLine,LEN(LLLine)-1) next else Message('Файл пуст') UO.Exec("terminate all") endif UO.TextPrint('Количество точек вылова:'+STR(lSize)) tFile.Close() end sub
sub AutoLootSelf() var CorpseType, CorpseID, SelfID SelfID = UO.GetSerial() UO.Click(SelfID) UO.IgnoreReSet() If (UO.GetGraphic(UO.GetSerial()) == '0x0190') Then CorpseType = '0x2006' Else CorpseType = '0x2006' EndIf UO.FindType(CorpseType,'-1','ground') If (UO.FindCount() > 0) then repeat UO.FindType(CorpseType,'-1','ground') CorpseID = UO.GetSerial('finditem') UO.Click(CorpseID) if (Right(UO.GetName(CorpseID),Len(UO.GetName(SelfID))) == UO.GetName(SelfID)) Then UO.Emptycontainer('50',CorpseID) Wait(500) UO.Emptycontainer('50',CorpseID) Wait(500) endif UO.Ignore(CorpseID) UO.FindType(CorpseType,'-1','ground') until (UO.FindCount() == 0) endif end sub
sub CheckSpells() VAR Si, nStop, Result, JPos JPos = 0 Si = 0 nStop = 1 Result = 0 DIM BadSpells[20] BadSpells[0] = "In Por Ylem" BadSpells[1] = "An Mani" BadSpells[2] = "Vas Flam" BadSpells[3] = "In Nox" BadSpells[4] = "Des Sanct" BadSpells[5] = "In Flam Grav" BadSpells[6] = "Ort Grav" BadSpells[7] = "In Jux Hur Ylem" BadSpells[8] = "Por Corp Wis" BadSpells[9] = "An Ex Por" BadSpells[10] = "Corp Por" BadSpells[11] = "Vas Ort Flam" BadSpells[12] = "In Ex Grav" BadSpells[13] = "Vas Flam" BadSpells[14] = "Kal Vas Xen" BadSpells[15] = "attacking you*" BadSpells[16] = "Ort Rel" BadSpells[17] = "Ort Sanct" BadSpells[18] = "Flam Kal Des Ylem" BadSpells[19] = "In Vas Por" While nStop JPos = UO.InJournal(BadSpells[Si]) If JPos Then UO.TextPrint("Чар '"+UO.GetName(UO.JournalSerial(JPos-1))+"' - зафиксирована атака..") UO.ServerPrint(UO.GetName(UO.JournalSerial(JPos-1))+" ne kill pliz ya nub na macrose!!!") Result = 1 EndIf Si = Si + 1 If ((Si == 20) or (Result == 1)) Then nStop = 0 EndIf WEnd Return Result end sub
sub IsDanger(dcNum) VAR Danger_cnt, Cycle_cnt, EmergencyFlag EmergencyFlag = 0 UO.IgnoreReset() UO.Set('finddistance','10') if (dcNum == 0) Then UO.IgnoreReSet() UO.FindType('0x0010','-1','ground') Danger_cnt = UO.FindCount() If Danger_cnt > 0 Then For Cycle_cnt = 0 To Danger_cnt - 1 UO.FindType('0x0010','-1','ground') If ((UO.GetNotoriety('finditem') >= 3) and (UO.GetSerial('finditem') <> UO.GetSerial())) Then UO.Click(UO.GetSerial('finditem')) UO.TextPrint('Найден потенциальный враг, имя чара: '+UO.GetName(UO.GetSerial('finditem'))) EmergencyFlag = 1 Enemy = UO.GetSerial('finditem') EndIf UO.Ignore('finditem') Next EndIf EndIf if (dcNum == 1) Then UO.IgnoreReSet() UO.FindType('0x0096','-1','ground') Danger_cnt = UO.FindCount() If Danger_cnt > 0 Then For Cycle_cnt = 0 To Danger_cnt - 1 UO.FindType('0x0096','-1','ground') If ((UO.GetNotoriety('finditem') >= 3) and (UO.GetSerial('finditem') <> UO.GetSerial())) Then UO.Click(UO.GetSerial('finditem')) UO.TextPrint('Найден потенциальный враг, имя чара: '+UO.GetName(UO.GetSerial('finditem'))) EmergencyFlag = 1 Enemy = UO.GetSerial('finditem') EndIf UO.Ignore('finditem') Next EndIf EndIf if (dcNum == 2) Then UO.IgnoreReSet() UO.FindType('0x0191','-1','ground') Danger_cnt = UO.FindCount() If Danger_cnt > 0 Then For Cycle_cnt = 0 To Danger_cnt - 1 UO.FindType('0x0191','-1','ground') If ((UO.GetNotoriety('finditem') >= 3) and (UO.GetSerial('finditem') <> UO.GetSerial())) Then UO.Click(UO.GetSerial('finditem')) UO.TextPrint('Найден потенциальный враг, имя чара: '+UO.GetName(UO.GetSerial('finditem'))) EmergencyFlag = 1 Enemy = UO.GetSerial('finditem') Wait(2000) EndIf UO.Ignore('finditem') Next EndIf EndIf if (dcNum == 3) Then UO.IgnoreReSet() UO.FindType('0x0190','-1','ground') Danger_cnt = UO.FindCount() If Danger_cnt > 0 Then For Cycle_cnt = 0 To Danger_cnt - 1 UO.FindType('0x0190','-1','ground') If ((UO.GetNotoriety('finditem') >= 3) and (UO.GetSerial('finditem') <> UO.GetSerial())) Then UO.Click(UO.GetSerial('finditem')) UO.TextPrint('Найден потенциальный враг, имя чара: '+UO.GetName(UO.GetSerial('finditem'))) EmergencyFlag = 1 Enemy = UO.GetSerial('finditem') EndIf UO.Ignore('finditem') Next EndIf EndIf If (dcNum == 4) Then EmergencyFlag = CheckSpells() EndIf Return EmergencyFlag end sub
sub TryToRes(HealFlag) var ResFlag = 0 If UO.Dead() Then Repeat UO.Recall('self','1') Wait(6000) Until (NOT UO.Dead()) AutoLootSelf() ResFlag = 1 EndIf if HealFlag Then if ResFlag then AutoLootSelf() DropRangerStuff() endif Heal() endif end sub
sub DropRangerStuff() var iX DIM RangerTool[3] RangerTool[0] = "0x13B2" RangerTool[1] = "0x0F4F" RangerTool[2] = "0x13FD"
DIM RangerArr[3] RangerArr[0] = "0x0F3F" RangerArr[1] = "0x1BFB" RangerArr[2] = "0x1BFB" For iX = 0 to 2 UO.FindType(RangerTool[iX],'-1','my') UO.Drophere(UO.GetSerial('finditem')) Wait(500) Stack(RangerArr[iX]) Wait(500) Next end sub
sub GetRangerStuff() var iX = 0, StopMe = 0 DIM RangerTool[3] RangerTool[0] = "0x13B2" RangerTool[1] = "0x0F4F" RangerTool[2] = "0x13FD"
DIM RangerArr[3] RangerArr[0] = "0x0F3F" RangerArr[1] = "0x1BFB" RangerArr[2] = "0x1BFB" repeat UO.FindType(RangerTool[iX],'-1','ground') If (UO.FindCount() and (not StopMe)) Then WType = RangerTool[iX] UO.Grab('0',UO.GetSerial('finditem')) Wait(500) UO.FindType(RangerArr[ix],'-1','ground') if UO.FindCount() Then UO.Grab('100',UO.GetSerial('finditem')) Wait(500) endif StopMe = 1 endif iX = iX + 1 until (StopMe or (iX == 3)) Return WType end sub
sub Guards() if ((UO.Timer() - GZTimer) >= 100) then UO.ServerPrint('.guards') Wait(500) UO.ServerPrint('.guards') GZTimer = UO.Timer() endif end sub
sub TryToKill() var TTKi,TTKStop, TTKUse, TTKGrabN, WTWeap TTKi = 0 TTKStop = 0 TTKGrabN = 0 If (GZExist and (UO.GetNotoriety() < 3)) then Guards() Else DropRangerStuff() Wait(500) GetRangerStuff() If (UO.GetGraphic(UO.ObjAtLayer('Rhand')) <> WType) Then UO.Disarm() Wait(500) EndIf Wait(200) UO.EquipT('Rhand',WType) Wait(500) Repeat UO.WarMode(1) UO.Attack(Enemy) Wait(3000) Heal() Until ((UO.GetHP(Enemy) == 0) or UO.Dead(Enemy) or UO.Dead() or (UO.GetDistance(Enemy) > 12)) DropRangerStuff() EndIf end sub
sub CheckDanger() Var dX, DangerFactor, DangerResult dX = 0 DangerFactor = 0 DangerResult = 0 dX = 0 Repeat DangerResult = IsDanger(dX) If (DangerResult > 0) Then If (dX < 4) Then TryToKill() Else UO.ServerPrint('.guards') EndIf DangerFactor = 1 EndIf dX = dX + 1 Until (dX == 5) or (DangerResult) Return DangerFactor end sub
sub EatCheck() var GHS, Hung_i, Meal GHS = 0 Meal = '0x097b' GHS = GetHungryStatus() UO.TextPrint('GHS = '+STR(GHS)) If (GHS > 1) then For Hung_i = 0 To (GHS - 2) Eat(Meal) Wait(350) Next EndIf end sub
sub Eat(wtEat) If UO.Count(wtEat) then UO.UseType(wtEat) else If UO.CountGround(wtEat) then UO.UseFromGround(wtEat) else UO.Print('No meal found.') endif endif end sub
sub GetHungryStatus() VAR Ret_i, Cycle_i, LastStr DIM HArr[11] HArr[0] = "You are absolutely stuffed!" HArr[1] = "You are stuffed" HArr[2] = "You aren't hungry at all" HArr[3] = "You are a little hungry" HArr[4] = "You are somewhat hungry" HArr[5] = "You are REALLY hungry" HArr[6] = "Your stomash hurts" HArr[7] = "Your stomash hurts and you feel dizzy" HArr[8] = "You are starving" HArr[9] = "You are almost dying of hunger" HArr[10] = "You are DYING of hunger..." UO.DeleteJournal() UO.ServerPrint(".hungry") Ret_i = 0 Cycle_i = 0 Wait(400) For Cycle_i = 0 To 10 If CheckMsg(HArr[Cycle_i],'System') Then Ret_i = Cycle_i EndIf Next RETURN Ret_i end sub
sub Stack(StackType) var GroundItem, PackItem PackItem = '' GroundItem = '' if UO.Count(StackType) then PackItem = '^'+StackType endif if UO.CountGround(StackType) then GroundItem = '~'+StackType endif if ((PackItem <> '') and (GroundItem <> '')) then UO.MoveItem(PackItem,STR(UO.GetQuantity(PackItem)),GroundItem,'0','0','0') else UO.DropHere('^'+StackType) Endif end sub
sub Heal() If UO.Poisoned() Then if (UO.SkillVal('Healing') > 730) then Repeat UO.WaitTargetObject(UO.GetSerial('self')) UO.UseFromGround('0x0E21') Wait(5000) Until ((Not UO.Poisoned()) or UO.Dead()) else Repeat UO.ServerPrint("Cure") UO.UseFromGround('0x0F07') Wait(4000) Until ((Not UO.Poisoned()) or UO.Dead()) endif EndIf If ((UO.GetHP() < UO.GetMaxHP()) and UO.Life) Then if (UO.SkillVal('Healing') > 0) then Repeat UO.WaitTargetObject(UO.GetSerial('self')) UO.UseFromGround('0x0E21') Wait(5000) Until ((UO.GetHP() == UO.GetMaxHP()) or UO.Dead()) else Repeat UO.ServerPrint("Heal") UO.UseFromGround('0x0F0C') Wait(4000) Until ((UO.GetHP() == UO.GetMaxHP()) or UO.Dead()) endif EndIf end sub
sub CheckEq(cType) if (UO.Hex2Int(UO.GetGraphic(UO.ObjAtLayer('Lhand'))) <> UO.Hex2Int(cType)) Then UO.Unequip('Lhand') UO.Unequip('Rhand') Wait(1000) if UO.Count(cType) then UO.UseType(cType) Wait(400) else UO.FindType(cType,'-1','ground') if UO.FindCount() Then UO.Grab('1',UO.GetSerial('finditem')) Wait(1000) UO.UseType(cType) Else if (UO.Count(cType)+UO.CountGround(cType) == 0) then UO.ServerPrint('Vaxa, u menya kon4ilis udochki!!!') UO.Exec('terminate all') UO.CloseUO() endif EndIf EndIf EndIf end sub
sub CheckSave() If CheckMsg("Saving World State",'System') Then UO.Print("WorldSave: "+MakeTime()) UO.DeleteJournal() Wait(25000) EndIf end sub
sub MakeTime() VAR D, T, Ret, i Ret = STR(UO.Time()) T = "" For i = 0 To Len(Ret) T = Ret[Len(Ret)-i] + T If (I == 2) OR (I == 4) Then T = ":" + T EndIf Next Ret = STR(UO.Date()) D = "" For i = 0 To Len(Ret) D = Ret[Len(Ret)-i] + D If (I == 2) OR (I == 4) Then D = "." + D EndIf Next Ret = T + " @ " + D RETURN Ret end sub
sub DropIt(WTF) var DropCnt For DropCnt = 0 to 3 if UO.Count(WTF[DropCnt]) Then Stack(WTF[DropCnt]) EndIf Next While (UO.Count(WTF[4]) > 0) UO.MoveItem('^'+WTF[4],'1',SOSBP) Wait(400) WEnd While (UO.Count(WTF[5]) > 0) UO.MoveItem('^'+WTF[5],'1',MapBP) Wait(400) WEnd end sub
sub Fish(tPoint) UO.WarMode(0) CheckSave() UO.Exec('waittargettile '+tPoint) UO.UseObject(UO.ObjAtLayer('Lhand')) Wait(fTime) If CheckMsg('There does','System') then NextDot = 1 EndIf end sub
sub SetFishTime(fTile) var fRes = 0 var fTmp CheckEq(fPole) fTime = 0 Fish(fTile) fTmp = UO.Timer() repeat Wait(50) until (CheckMsg('You catch','System') or CheckMsg('They','System') or CheckMsg('Your tool','System') or CheckMsg('There does','System') or CheckMsg('You find','System') or UO.Dead() or CheckMsg('I am already','System')) fRes = UO.Timer() - fTmp fTime = fRes * 100 if ((fTime < 3400) or (fTime > 6000)) Then fTime = 3400 endif end sub
sub Reconnector() var ReconnectTime, RFlag ReconnectTime = '0' RFlag = 1 Repeat While (UO.ObjAtLayer('Bpack') == '') if RFlag Then ReconnectTime = MakeTime() RFlag = 0 endif Wait(20000) # WorldSave Protection UO.Say('') Wait(3000) UO.Say('') Wait(3000) UO.Say('') Wait(3000) UO.LDblClick(357,164) UO.LClick(616,459) Wait(3000) WEnd Wait(3000) if (RFlag == 0) and (ReconnectTime <> '0') Then UO.Exec('terminate main') UO.Exec('exec main') UO.TextOpen() UO.TextPrint('Disconnected & Reconnected @ '+ReconnectTime) RFlag = 1 ReconnectTime = '0' endif Until false end sub
|