перевод градусев в мировые координаты...
Moderators: Murderator+, Murderator
перевод градусев в мировые координаты...
Всем привет.
Может кто видел готовую функцию, для преобразования координат?
читаю гамп, там текст "100°43'N,166°21'E"
как бы его скриптом преобразовать в "3689 478"
Может кто видел готовую функцию, для преобразования координат?
читаю гамп, там текст "100°43'N,166°21'E"
как бы его скриптом преобразовать в "3689 478"
Re: перевод градусев в мировые координаты...
А есть ещё примеры?
Re: перевод градусев в мировые координаты...
Sirocco wrote:http://uo.stratics.com/uoam/geo.shtml
спасибо, что то интересное...поковыряюсь)
а кто знает точный размер мира в тайлах на АОСе, по карте посмотрел...получилось 5120 на 4095, но боюсь это не точно...
Last edited by volhram on 2011-06-22 12:13:00, edited 1 time in total.
Re: перевод градусев в мировые координаты...
ZeroDX wrote:А есть ещё примеры?
74°58'S,86°41'E 2556 2477
158°54'N,174°47'W 3958 3913
Re: перевод градусев в мировые координаты...
ну вот....написал перевод градусов в мировые координаты, если кому интересно выложу..
Re: перевод градусев в мировые координаты...
volhram wrote:ну вот....написал перевод градусов в мировые координаты, если кому интересно выложу..
Не нафиг, никому не интересно. Мы тут так просто тусуемся

Выкладывай конечно.
Re: перевод градусев в мировые координаты...
ну мало ли, я вот играю лет 12 в ультиму, только сейчас меня кольнуло, вдруг понадобилось...
в общем в функцию передаётся строка формата "98°42'S,64°32'W"
возвращает строку "xxxx:yyyy"
использую для расшифровки координат в записках из бутылок...
может где то можно и координаты кладов так расшифровать, у нас на сервере не катит...
это если хотите автоматизировать процесс копания кладов)
иногда ошибается на один тайл, причину пока не понял, но для ловли по мессагам и для копки кладов это не существенно...
в общем в функцию передаётся строка формата "98°42'S,64°32'W"
возвращает строку "xxxx:yyyy"
использую для расшифровки координат в записках из бутылок...
может где то можно и координаты кладов так расшифровать, у нас на сервере не катит...
это если хотите автоматизировать процесс копания кладов)
иногда ошибается на один тайл, причину пока не понял, но для ловли по мессагам и для копки кладов это не существенно...
Code: Select all
sub ReadMessage(gradus)
var GradX, GradY, MinX, MinY, znakX, znakY, NSWE='', i
var X=0,Y=0, xy
for i=0 to Len(gradus)
if mid(gradus,i,1) == 'N' then
NSWE=NSWE+'N'
end if
if mid(gradus,i,1) == 'S' then
NSWE=NSWE+'S'
end if
if mid(gradus,i,1) == 'W' then
NSWE=NSWE+'W'
end if
if mid(gradus,i,1) == 'E' then
NSWE=NSWE+'E'
end if
next
if NSWE == 'NW' then
znakX=-1
znakY=-1
end if
if NSWE == 'SW' then
znakX=-1
znakY=1
end if
if NSWE == 'NE' then
znakX=1
znakY=-1
end if
if NSWE == 'SE' then
znakX=1
znakY=1
end if
for i=0 to Len(gradus)
if mid(gradus,i,1) == '°' then
GradY=val(mid(gradus,0,i))
MinY=val(mid(gradus,i+1,i+3))
end if
if mid(gradus,i,1) == ',' then
gradus=mid(gradus,i+1,Len(gradus))
end if
next
for i=0 to Len(gradus)
if mid(gradus,i,1) == '°' then
GradX=val(mid(gradus,0,i))
MinX=val(mid(gradus,i+1,i+3))
end if
next
GradX=MinX/60+GradX
GradY=MinY/60+GradY
if ((NSWE=='NW') || (NSWE=='SW')) && GradX > 93.016666 then
X = str((1237-(GradX-93.016666)*1280/90+3884), 0)
end if
if ((NSWE=='NW') || (NSWE=='NE')) && GradY > 142.733333 then
Y = str((424-(GradY-142.733333)*1024/90+3673), 0)
end if
if X==0 then
X = str(((GradX*5120)/360*znakX+1323), 0)
end if
if Y==0 then
Y = str(((GradY*4095)/360*znakY+1624), 0)
end if
xy=X+':'+Y
return xy
end sub
-
- Posts: 2259
- Joined: 2005-04-19 18:00:29
- Location: Московская область
- Contact:
Re: перевод градусев в мировые координаты...
volhram wrote:ну мало ли, я вот играю лет 12 в ультиму, только сейчас меня кольнуло, вдруг понадобилось...
http://ru.wikipedia.org/wiki/Ultima
Ultima Online: Renaissance (3 апреля 2000)

Re: перевод градусев в мировые координаты...
Scripts Writer wrote:volhram wrote:ну мало ли, я вот играю лет 12 в ультиму, только сейчас меня кольнуло, вдруг понадобилось...
http://ru.wikipedia.org/wiki/UltimaUltima Online: Renaissance (3 апреля 2000)
не, я знакомился с ультимой с фри оскома...там ещё ренесанса не было..
хорошая ссылка, сейчас что нить найду, поиграю)
Re: перевод градусев в мировые координаты...
у меня ещё вопрос...
не нашёл способ достать свойства итема
например:
если использовать uo.click, то в журнале пишется You see:имя, без всех тех свойсв, которые на рисунке....
getname ничего не даёт...
свойства появляются только при наведении курсора, как бы их скриптом прочитать?
не нашёл способ достать свойства итема
например:
если использовать uo.click, то в журнале пишется You see:имя, без всех тех свойсв, которые на рисунке....
getname ничего не даёт...
свойства появляются только при наведении курсора, как бы их скриптом прочитать?
Re: перевод градусев в мировые координаты...
всего скорее скиллом идентификацией или lorom попробуй
Re: перевод градусев в мировые координаты...
volhram wrote:ну мало ли, я вот играю лет 12 в ультиму, только сейчас меня кольнуло, вдруг понадобилось...
в общем в функцию передаётся строка формата "98°42'S,64°32'W"
возвращает строку "xxxx:yyyy"
использую для расшифровки координат в записках из бутылок...
может где то можно и координаты кладов так расшифровать, у нас на сервере не катит...
это если хотите автоматизировать процесс копания кладов)
иногда ошибается на один тайл, причину пока не понял, но для ловли по мессагам и для копки кладов это не существенно...Code: Select all
sub ReadMessage(gradus)
var GradX, GradY, MinX, MinY, znakX, znakY, NSWE='', i
var X=0,Y=0, xy
for i=0 to Len(gradus)
if mid(gradus,i,1) == 'N' then
NSWE=NSWE+'N'
end if
if mid(gradus,i,1) == 'S' then
NSWE=NSWE+'S'
end if
if mid(gradus,i,1) == 'W' then
NSWE=NSWE+'W'
end if
if mid(gradus,i,1) == 'E' then
NSWE=NSWE+'E'
end if
next
if NSWE == 'NW' then
znakX=-1
znakY=-1
end if
if NSWE == 'SW' then
znakX=-1
znakY=1
end if
if NSWE == 'NE' then
znakX=1
znakY=-1
end if
if NSWE == 'SE' then
znakX=1
znakY=1
end if
for i=0 to Len(gradus)
if mid(gradus,i,1) == '°' then
GradY=val(mid(gradus,0,i))
MinY=val(mid(gradus,i+1,i+3))
end if
if mid(gradus,i,1) == ',' then
gradus=mid(gradus,i+1,Len(gradus))
end if
next
for i=0 to Len(gradus)
if mid(gradus,i,1) == '°' then
GradX=val(mid(gradus,0,i))
MinX=val(mid(gradus,i+1,i+3))
end if
next
GradX=MinX/60+GradX
GradY=MinY/60+GradY
if ((NSWE=='NW') || (NSWE=='SW')) && GradX > 93.016666 then
X = str((1237-(GradX-93.016666)*1280/90+3884), 0)
end if
if ((NSWE=='NW') || (NSWE=='NE')) && GradY > 142.733333 then
Y = str((424-(GradY-142.733333)*1024/90+3673), 0)
end if
if X==0 then
X = str(((GradX*5120)/360*znakX+1323), 0)
end if
if Y==0 then
Y = str(((GradY*4095)/360*znakY+1624), 0)
end if
xy=X+':'+Y
return xy
end sub
Я не смог запустить этот код, на линии произошла ошибка
Runtime Error:
GradX = MinX / 60 + GradX
(google translate)