Yoko

All sides of Injection
It is currently 2017-11-18 14:15:31

All times are UTC+02:00




Post new topic  Reply to topic  [ 4 posts ] 
Author Message
PostPosted: 2017-01-22 14:21:02 
Offline

Joined: 2017-01-22 14:15:49
Posts: 3
парни есть скрипт на копку но 1 минус ) когда маркаю кординаты а потом запускаю он приходит по ним и вылазит таргет пока не нажму на себя не будет копать , потом пошел дальше и тоже самое пока не нажму таргет на себя он не будет копать ( что делать?


[code]

#@include equip.scl
#@include unload.scl
#@include walker1.scl

################################################################################

# НАСТРОЙКА И ИСПОЛЬЗОВАНИЕ
# 1) запустить функцию setup
# 2) в качестве первой точки указать точку выгрузки руды
# на расстоянии не более 3х клеток от этой точки должны быть
# прилоченны все виды выкапываемой руды
# 3) 2 и 3 точки - опорные для прохода в шахт
# 4) далее указать до 100 точек в которых надо копать
# 5) для окончания разметки, указать на себя
# 6) после разметки, настройка закончена
# 7) можно запускать функцию mining
#
# при разметке важно не подходить близко к указываемой точке
################################################################################



sub mining()
var points = 0
dim mineX[100]
dim mineY[100]

points = loadPointsXY(mineX, mineY, FileName())

uo.say('.macro on')
equipForMining()

Walker(mineX[1], mineY[1])
Walker(mineX[2], mineY[2])

var f = 3
var i
var ret

uo.deleteJournal()

repeat
uo.print('walk to point ' + str(f))
Walker(mineX[f], mineY[f])
#ret = MiningHere()
ret = MiningHereDumb()

#если атакуют или много веса - на разгрузку
if ((ret == 2) or (uo.weight > uo.str*3.2)) then
uo.print('walk to unload')
for i = f to 0 step -1
Walker(mineX[i], mineY[i])
next

unloadOres()

Walker(mineX[1], mineY[1])
Walker(mineX[2], mineY[2])
f = 3
else
f = f + 1
#возвращаемся в первую точку
if (f >= points) then
for i = f-1 to 3 step -1
Walker(mineX[i], mineY[i])
next
f =3
end if
#fix "already doing"?
wait(2000)
end if

until uo.life == 0

end sub


sub setup()
uo.AddType('pickaxe', '0x0E85')
uo.AddType('ore', '0x19B9')
uo.saveconfig()

equipForMining()

dim tileArr[100]
dim xArr[100]
dim yArr[100]
dim zArr[100]

var points = markPoints(tileArr, xArr, yArr, zArr)
savePointsXY(xArr, yArr, FileName(), points)
end sub

#нормальный мининг с проверкой сообщений, нападения, зависания, ...
sub MiningHere()
var msg1 = 'You place'
var msg2 = 'You fail to find'
var msg3 = 'You cannot prospect'

var msg4 = 'There is no ore here to mine'
var msg5 = 'You cannot mine that'
var msg6 = 'attacking you'

var done = 0
var counter = 0
var delay = 500
var lastLife = uo.Life
var pickaxe = uo.ObjAtLayer('Rhand')

uo.deletejournal()

uo.useObject(pickaxe)
wait (400)
uo.press(119)


repeat
if (uo.injournal(msg1) or uo.injournal(msg2) or uo.injournal(msg3)) then #процесс идет
counter = 0
end if

if (uo.injournal(msg4) or uo.injournal(msg5)) then #процесс не идет
done = 1
end if

if (uo.injournal(msg6) or (uo.Life < lastLife)) then #кто-то нас аттачит
uo.print('under attack!')
done = 2
uo.deleteJournal()
end if

if (uo.Life > lastLife) then
lastLife = uo.Life
end if

if (counter > 15000) then #процесс не идет, пробуем начать снова
CheckLag()
if (uo.targeting()) then
wait (400)
uo.press(119)
end if

uo.useObject(pickaxe)
wait (400)
uo.press(119)
counter = 0
end if

uo.deleteJournal()
wait(delay)
counter = counter + delay
until done or uo.Life == 0

return done
end sub

#тупой мининг - использовать 1 раз кирку и стоят 1 минуту
sub MiningHereDumb()
var counter = 0
var delay = 500
var pickaxe = uo.ObjAtLayer('Rhand')

uo.useObject(pickaxe)
wait (400)
uo.press(119)

repeat
wait(delay)
counter = counter + delay
until counter > 70000 or uo.Life == 0

return 0
end sub

#выгрузка руды
#если не сможет выгрузить хотя бы 1 тип руды -
#зависнет в вечной попытке его выгрузить
sub unloadOres()
var idx = 0
var type = ''
var color = ''

uo.findType('ore')
while uo.findCount()
type = uo.GetGraphic('finditem')
color = uo.GetColor('finditem')
unLoad(type, color, 3)
uo.findType('0x19B9')
wend

end sub


sub equipForMining()
UnEquip('Rhand')
UnEquip('Lhand')
EquipT('Rhand', 'pickaxe')
end sub


sub FileName()
return 'minePoints-' + UO.GetSerial('self') + '.txt'
end sub


sub markPoints(tileArr, xArr, yArr, zArr)
var count = 0
var done = 0

var tile, x, y, z
var hatchet = uo.ObjAtLayer('Rhand')

repeat
uo.UseObject(hatchet)
wait(1000)
while uo.targeting()
wait(500)
wend
tile = uo.LastTile(0)
x = uo.LastTile(1)
y = uo.LastTile(2)
z = uo.LastTile(3)

if (x == uo.GetX() and y == uo.GetY()) then
done = 1
else
tileArr[count] = tile
xArr[count] = x
yArr[count] = y
zArr[count] = z
count = count + 1
uo.print('Added point ' + STR(count) + ' (' + STR(x) +', ' + STR(y) + ')')
end if
until done

uo.print('Done. ' + STR(count) + ' points added')

return count
end sub


sub savePointsXY(xArr, yArr, name, cnt)
var fl = File(name)
fl.open()
fl.create()

safecall fl.writeln(STR(cnt))

for var f = 0 to cnt - 1
safecall fl.writeln(STR(xArr[f]) + ' ' + STR(yArr[f]))
next
uo.print(STR(cnt) + ' points saved')

fl.close()
end sub


sub loadPointsXY(xArr, yArr, name)
var fl = File(name)
fl.open()
var cnt = safecall fl.ReadNumber()
for var f = 0 to cnt - 1
xArr[f] = safecall fl.ReadNumber()
yArr[f] = safecall fl.ReadNumber()
next
fl.close()
uo.print(STR(cnt) + ' points loaded')

return cnt
end sub


#@autocode
#------------------------------------------------
# included file equip.scl
#------------------------------------------------

#@include checklag.scl

sub UnEquip(layer)
uo.unequip(layer)
CheckLag()
while uo.ObjAtLayer(layer) <> ''
uo.unequip(layer)
CheckLag()
wait(1000)
wend
end sub


sub EquipT(layer, type)
uo.equipt(layer, type)
CheckLag()
while uo.ObjAtLayer(layer) == ''
uo.equipt(layer, type)
CheckLag()
wait(1000)
wend
end sub

#------------------------------------------------
# included file unload.scl
#------------------------------------------------

#@include checklag.scl

#выкладныванме из бекпака итемов с типом type
#и цветом color на землю в прилоченную кучку
#находящуюся на расстояние не больше distance

sub unLoad(type, color, distance)
var inBackpack = ''
var onGround = ''
uo.Set('finddistance', distance)

uo.FindType(type, color, 'ground')
onGround = uo.GetSerial('finditem')

uo.FindType(type, color)
inBackpack = uo.GetSerial('finditem')

if (onGround <> '0x00000000' and inBackpack <> '0x00000000') then
var x, y, z
x = uo.GetX(onGround)
y = uo.GetY(onGround)
z = uo.GetZ(onGround)
uo.Click(inBackpack)
CheckLag()
uo.print(uo.GetName(inBackpack))
uo.MoveItem(inBackpack, 0, onGround, x, y, z)
wait(1500)
CheckLag()
end if

uo.Set('finddistance', 14)
end sub


#------------------------------------------------
# included file walker1.scl
#------------------------------------------------

#@include math.scl

var prec = 0

sub Walker(x,y)
var ld=0,ldc=0
var dx,dy
var mx,my
var ox,oy,mk,k
start:
mx=UO.GetX()
my=UO.GetY()
dx=abs(mx-x)
dy=abs(my-y)
if dy>dx then
dx=dy
end if
if dx<=prec then
return
end if
if dx<3 then
mk=70
else
mk=15
end if

ox=mx
oy=my
for k=1 to mk
mx=UO.GetX()
my=UO.GetY()
if mx<>ox or my<>oy then
goto sdidapl
end if
wait(10)
next
sdidapl:

mx=UO.GetX()
my=UO.GetY()
dx=abs(mx-x)
dy=abs(my-y)

if dy>dx then
dx=dy
end if

if dx<=prec then
return
end if

if ld==dx then
ldc=ldc+1
if ldc>100 then
uo.print("Can not reach location!")
return
end if
else
ld=dx
end if

if mx==x then
if my==y then
return
endif
if my>y then
UO.Press(33)
goto start
endif
UO.Press(35)
goto start
end if

if mx<x then
if my>y then
UO.Press(39)
goto start
endif
if my==y then
UO.Press(34)
goto start
endif
UO.Press(40)
goto start
end if
if my<y then
UO.Press(37)
goto start
endif
if my==y then
UO.Press(36)
goto start
endif
UO.Press(38)
goto start
end sub

#------------------------------------------------
# included file checklag.scl
#------------------------------------------------

#проверка на лаг. одиночный клик на backpack и ожидание в журнале
#слов "backpack"
sub CheckLag()
if (uo.Waiting() or uo.targeting()) then
uo.canceltarget()
end if

uo.DeleteJournal()
uo.Click('backpack')
repeat
wait(200)
until uo.InJournal('backpack')
uo.DeleteJournal()
end sub
#------------------------------------------------
# included file math.scl
#------------------------------------------------

#математические функции
#Abs - модуль числа
#Sign - знак числа (для отрицательтных чисел -1, для положительных +1)

Sub Abs(x)
if (x<0) then
x = -x
end if

return x
end sub

sub Sign(n)
if (n < 0) then
n = -1
end if

if (n > 0) then
n = 1
end if

return n
end sub


Last edited by shiga on 2017-01-23 17:07:18, edited 3 times in total.

Top
   
PostPosted: 2017-01-23 11:10:16 
Offline
User avatar

Joined: 2009-05-28 09:58:28
Posts: 2754
Location: Иваново
1) скрипты оформлять в теги
Code:
 [code] 

2) определиться каким скриптом ты будешь пользоваться:
Quote:
#нормальный мининг с проверкой сообщений, нападения, зависания, ...
#тупой мининг - использовать 1 раз кирку и стоят 1 минуту
в скрипте выбран "нормальный" само собой но:
3) у тебя в скрипте нет куска куда прицел должен тыкать. Просто вызов прицела и все.

По этому либо искать другой скрипт, либо переписывать этот добавляя в него указывалку на тайлы пола.

ЗЫ на сервере версия клиента какая используется?

_________________
Image
YokoInjection CodeSweeper
Ошибка "Unhandled exception in parser"


Top
   
PostPosted: 2017-01-23 17:05:05 
Offline

Joined: 2017-01-22 14:15:49
Posts: 3
Mirage wrote:
1) скрипты оформлять в теги
Code:
 [code] 

2) определиться каким скриптом ты будешь пользоваться:
Quote:
#нормальный мининг с проверкой сообщений, нападения, зависания, ...
#тупой мининг - использовать 1 раз кирку и стоят 1 минуту
в скрипте выбран "нормальный" само собой но:
3) у тебя в скрипте нет куска куда прицел должен тыкать. Просто вызов прицела и все.

По этому либо искать другой скрипт, либо переписывать этот добавляя в него указывалку на тайлы пола.

ЗЫ на сервере версия клиента какая используется?




Версия клиента 6.0.14.1 .
Копать хочу 2 нормальным ))) тот удалю просто если его удалю у меня не че не заглючит?) и как доделать скрипт а то он мне нравиться) раньше был такой же только нормальный но старый комп сломался и все пропала( если поможите кто нибудь буду очень благодарен :) заранее спасибо


Top
   
PostPosted: 2017-01-23 20:02:09 
Offline

Joined: 2017-01-22 14:15:49
Posts: 3
Да и мининг не нашел такой что бы копал и носил руду к дому и скидывал на пол руду :)


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 2 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