Page 1 of 1
Кол тайлов)
Posted: 2008-02-25 11:36:28
by BulldoZer
Добрый день ТОВАРИЩИ)))
Выручайте... начал играть магом, и никак немогу выкупить растояние между арчером) все время достают гады...
Вот такая идея... я много раз встречал кучу ходилок, догонялок на форуме... Как подсчитывать количество тайлов до противника???
Может это евозможно, но если есть вариант буду рад) (было бы круто если бы при изменении количества тайлов до противника он просто кричал цыфру) 11 и 12 самый жир) как говориться)

если уже был на форуме такой скриптец то сорри лучьше дайте ссылочку)
Posted: 2008-02-25 12:40:22
by Edred
Элементарно. Вычитаешь из координат чара координаты противника. Берешь модуль от разниц (координат X и координат Y, естественно). Сравниваешь между собой. Какой результат больше - это и есть расстояние до противника.
Posted: 2008-02-25 12:43:47
by Grin
uo.GetDistance

Posted: 2008-02-25 12:54:32
by Edred
Лучше так...
Code: Select all
sub DistFlooder()
var cur, new
cur = max(abs(GetX('laststatus')-uo.getx()),abs(GetY('laststatus')-uo.gety()))
UO.Say('Расстояние до ластстатуса ' + str(cur))
repeat
wait(100)
new = max(abs(GetX('laststatus')-uo.getx()),abs(GetY('laststatus')-uo.gety()))
if cur <> new then
UO.Say('Расстояние до ластстатуса ' + str(new))
new = cur
endif
until UO.Dead()
endsub
Sub abs(a)
Var b
If a<0 Then
b=-a
Else
b=a
endif
return b
endsub
Sub max(A,B)
Var C
If A>B Then
C=A
Else
C=B
EndIf
Return C
EndSub
Пробуй.
Posted: 2008-02-25 13:00:53
by Grin
function max not found:)
Posted: 2008-02-25 16:41:21
by Edred
ЗЫ: Добавил. Я уже забыл, что она не системная...
Posted: 2008-02-25 21:17:51
by BulldoZer
СПАСИБКИ за Ваше время))) но
---------------------------
Execute at 3
---------------------------
Line 3: Function not found - GETX
---------------------------
ОК
---------------------------
Таргет я бросаю в ,addobject h На чела может это поможет : )
Posted: 2008-02-25 21:42:36
by Grin
ну и справь;)
поставь uo.GetX(...)
uo.GetY(...)
Posted: 2008-02-25 22:55:50
by Edred
угу...

писалось прямо на форуме, а скриптов под инжект я не писал уже года так полтора...
Хочешь в
h - замени 'laststatus' на 'h'. Я вписал в скрипт определение расстояния до ластстатуса. Если не хочешь чтобы скрипт флудил - замени uo.say на uo.print...
Posted: 2008-02-26 00:24:05
by BulldoZer
Сорри я сам незаметил такой мелочи)
Такс есть но он несчитает чето... пишет просто как бы сказать координату 4 цыфры...
и ели по 1 паралели двигаться то цыфра неменяется... что то тут нетак...
У тайла есть личный адресс икс и игрик... если я х1у1 а противник х2у2 то растояние между нами х1-х2 в квадрат плюс у1-у2 тоже в квадрат и с этой суммы снять корень и округлить до целого... как у пифагора( НО как зделать на инже бы( ?
Posted: 2008-02-26 00:28:47
by Grin
у пифагора была декартова плоскость, а унас почти что гексогональная, только унас не гексы, а ромбы;) тут растояние по 8 направлениям равно 1, в декартовой нет...
по этому кратчайшее растояние это максимальная разность из координат.
Posted: 2008-02-26 00:45:35
by Edred
BulldoZer
Если не можешь осилить то, что написал Грин, советую сделать так: возьми лист из тетради в клеточку. Одну клетку заштрихуй - это ты. В другой поставь крестик - это враг. А теперь считай сколько клеток между вами. Как ни ставь крестик, как не считай - это будет либо расстояние между вами по горизонтали, либо по вертикали. Что больше - то и будет.
Хинт здесь в том, что считаем не в миллиметрах или еще чем-то, а в клетках. А как клетку ни считай, по стороне или по диагонали - это все равно одна клетка.
ЗЫ: Грин, гексогональность тут ни коим боком не завязана, я имею в виду в задаче вычисления дистанции...

Posted: 2008-02-26 01:23:01
by Grin
поросто гексогональная система куда понятней должна быть по тем же Героям.
а метематика простая тут...
за один ход равно ценно можно изменить как 1 кординату так и 2.
следовательно как не крути а число ходов из А в Б
есть
dx = x1-x2
dy = y1-y2
c = Min(dx, dy) //число ходов с изменением 2х координат
d = Max(dx, dy) - c //число ходов с изменением 1й координаты
отсюда R = d+c //минимальное число ходов
R = Max(dx, dy) //растояние
Posted: 2008-02-26 01:56:22
by Edred
Ты кому это рассказываешь?

Мне? Дык у меня за "плечами" мат-мех Ленинградского (тогда еще) универа, пусть и 20 с гаком лет назад... Бульдозеру? Ну-ну. Сходи на стройку ближайшую, попробуй бульдозеру что-нибудь такое объяснить...
Posted: 2008-02-26 09:10:35
by Grin
Да это просто так;) для себя;)))
Posted: 2008-02-26 09:56:21
by BulldoZer
Ну спасибо за теплые слова...
Хорошо на теории я понял как считаеться растояние...
Эд как поправить твой скрипт что бы при движениях по одной линии число изменялось? ну и было 2х значным а не 4х) в скриптах я несилен а в стройке нармально шарю... здмакс моя стройка

Posted: 2008-02-26 10:45:52
by Grin
Да это Эд дурачится;)
его скрипт не выводит 4-х значные числа, выходит столько разрядов сколько надо.
Просто ты не снял статус с игрока, ну и twi скорей всего не включен.