Fishing - перс эррор

Anything and all.

Moderators: Murderator+, Murderator

Post Reply
stella
Posts: 8
Joined: 2008-08-12 14:31:52
Contact:

Fishing - перс эррор

Post by stella »

Есть скрипт на фишинг, но независимо от действий ( я так думаю ) он выдаёт ошибки парс эррор и скрипт перестаёт работать, могу только запустить - он сразу выдадит ошибку, может и попоже. Суть скрипта - ловит рыбу на лодке, пробивает точки где ловится и там потом ловит, если подлетает какаято нечесть одевает оружие и начинает колбасить. Рыбку складывает на лодочке под собой.

Code: Select all

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
stella
Posts: 8
Joined: 2008-08-12 14:31:52
Contact:

Post by stella »

ясно дело не в скрипте, теперь он просто выдаёт парс эрор без скрипта и ещё пару ошибок и выдаёт краш клиента... прикольно что на другом окне где вор качает хайд на той же лодке ничего не происходит...
Destruction
Junior Expert
Posts: 3221
Joined: 2004-06-24 22:08:56

Post by Destruction »

Как это не в скрипте, если он кривой ?

Не пробовали отступы расставить ?... У меня в подписи есть мега полезная ссылка...

Перенёс из "I need script!", вы бы хоть раздел подобрали.
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.
Telegram: @tatikom
stella
Posts: 8
Joined: 2008-08-12 14:31:52
Contact:

Post by stella »

Ок извините, проблема главная сейчас в том, что он спокойно ловит себе рыбку, подплывает морское чудовище, он снимает удочку и одевает лук, убивает лохнесское чудовище и не продолжает ловить рыбку,а одевает снимает лук , кидает на пол под себя со стрелами и потом опять поднимает одевает и так циклично, помогите разобраться

Code: Select all

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
stella
Posts: 8
Joined: 2008-08-12 14:31:52
Contact:

Post by stella »

парс эррор задрал капец( помогите...
stella
Posts: 8
Joined: 2008-08-12 14:31:52
Contact:

Post by stella »

Сначала выдаёт ошибку:
Unhandled exception in parser.
потом сразу
Yo client perfomed an unrecoverable invalid operation.
Terminate? yes/no
Post Reply