Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Парни помогите исправить скрипт на копку ), Помогите
autonom005
сообщение 21.1.2017, 22:26
Сообщение #1


**

Neophyte
Сообщений: 12
Регистрация: 11.3.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.740
Возраст: 18



Когда замаркаешь кординаты он начинает копать но когда переходит на другой он не капает а вылазит таргет



#@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
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
M0rBiT
сообщение 21.1.2017, 22:41
Сообщение #2


********

Группа: Пользователи
Наличность: 5995
Пользователь №: 11.468



Цитата(autonom005 @ 21.1.2017, 22:26) *

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

универсального скрипта нет. Под каждый шард свое..
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
autonom005
сообщение 21.1.2017, 22:51
Сообщение #3


**

Neophyte
Сообщений: 12
Регистрация: 11.3.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.740
Возраст: 18



Цитата(M0rBiT @ 21.1.2017, 22:41) *

универсального скрипта нет. Под каждый шард свое..



я переделаю если что вспомню может как делать у меня просто который был я его менял под шард играл на 3 так что на всех 3 работала только руда была разная я переделал и все .
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Mirage
сообщение 21.1.2017, 23:57
Сообщение #4


*******

Группа: Пользователи
Наличность: 0
Из: Иваново
Пользователь №: 13.089
Возраст: 35



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


--------------------
Изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
kklej
сообщение 22.1.2017, 2:04
Сообщение #5


******

Группа: Пользователи
Наличность: 14731
Пользователь №: 13.346



Мираж ты маг или некромант? У тебя свечка в руке.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
autonom005
сообщение 22.1.2017, 12:02
Сообщение #6


**

Neophyte
Сообщений: 12
Регистрация: 11.3.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.740
Возраст: 18



Цитата(M0rBiT @ 21.1.2017, 22:41) *

универсального скрипта нет. Под каждый шард свое..



Вот тебе и универсальный скрипт на мининг
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Mirage
сообщение 22.1.2017, 12:57
Сообщение #7


*******

Группа: Пользователи
Наличность: 0
Из: Иваново
Пользователь №: 13.089
Возраст: 35



Цитата(kklej @ 22.1.2017, 2:04) *
Мираж ты маг или некромант? У тебя свечка в руке.
Освещаю путь нуждающимся


--------------------
Изображение
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
M0rBiT
сообщение 22.1.2017, 12:57
Сообщение #8


********

Группа: Пользователи
Наличность: 5995
Пользователь №: 11.468



Цитата(autonom005 @ 22.1.2017, 12:02) *

Вот тебе и универсальный скрипт на мининг

Ты меня банально воспринял))
Я имел ввиду что нет такого который запустил и он везде работает.

Каждый надо редактировать под сервер где играешь..

В идеале смотри на форуме своего сервера, 100% есть скрипты.

Или же иди на Форум инжи и там то их тонны скриптов.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
autonom005
сообщение 22.1.2017, 13:00
Сообщение #9


**

Neophyte
Сообщений: 12
Регистрация: 11.3.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 14.740
Возраст: 18



Цитата(M0rBiT @ 22.1.2017, 12:57) *

Ты меня банально воспринял))
Я имел ввиду что нет такого который запустил и он везде работает.

Каждый надо редактировать под сервер где играешь..

В идеале смотри на форуме своего сервера, 100% есть скрипты.

Или же иди на Форум инжи и там то их тонны скриптов.



скрипт уже есть))) просто он не капает сам пока таргет не кинешь на себя ) вот что надо доделать) может есть кто знает
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 19.3.2024, 14:15
Designed by Nickostyle