перевод градусев в мировые координаты...

Ask for help

Moderators: Murderator+, Murderator

Post Reply
volhram
Posts: 95
Joined: 2004-10-19 16:25:45

перевод градусев в мировые координаты...

Post by volhram »

Всем привет.
Может кто видел готовую функцию, для преобразования координат?
читаю гамп, там текст "100°43'N,166°21'E"
как бы его скриптом преобразовать в "3689 478"
ZeroDX
Posts: 718
Joined: 2006-12-08 10:51:50
Location: Москва
Contact:

Re: перевод градусев в мировые координаты...

Post by ZeroDX »

А есть ещё примеры?
volhram
Posts: 95
Joined: 2004-10-19 16:25:45

Re: перевод градусев в мировые координаты...

Post by volhram »

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.
volhram
Posts: 95
Joined: 2004-10-19 16:25:45

Re: перевод градусев в мировые координаты...

Post by volhram »

ZeroDX wrote:А есть ещё примеры?

74°58'S,86°41'E 2556 2477
158°54'N,174°47'W 3958 3913
volhram
Posts: 95
Joined: 2004-10-19 16:25:45

Re: перевод градусев в мировые координаты...

Post by volhram »

ну вот....написал перевод градусов в мировые координаты, если кому интересно выложу..
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: перевод градусев в мировые координаты...

Post by Mirage »

volhram wrote:ну вот....написал перевод градусов в мировые координаты, если кому интересно выложу..

Не нафиг, никому не интересно. Мы тут так просто тусуемся :mrgreen:
Выкладывай конечно.
volhram
Posts: 95
Joined: 2004-10-19 16:25:45

Re: перевод градусев в мировые координаты...

Post by volhram »

ну мало ли, я вот играю лет 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
Scripts Writer
Posts: 2259
Joined: 2005-04-19 18:00:29
Location: Московская область
Contact:

Re: перевод градусев в мировые координаты...

Post by Scripts Writer »

volhram wrote:ну мало ли, я вот играю лет 12 в ультиму, только сейчас меня кольнуло, вдруг понадобилось...

http://ru.wikipedia.org/wiki/Ultima
Ultima Online: Renaissance (3 апреля 2000)


:)
volhram
Posts: 95
Joined: 2004-10-19 16:25:45

Re: перевод градусев в мировые координаты...

Post by volhram »

Scripts Writer wrote:
volhram wrote:ну мало ли, я вот играю лет 12 в ультиму, только сейчас меня кольнуло, вдруг понадобилось...

http://ru.wikipedia.org/wiki/Ultima
Ultima Online: Renaissance (3 апреля 2000)


:)

не, я знакомился с ультимой с фри оскома...там ещё ренесанса не было..
хорошая ссылка, сейчас что нить найду, поиграю)
volhram
Posts: 95
Joined: 2004-10-19 16:25:45

Re: перевод градусев в мировые координаты...

Post by volhram »

у меня ещё вопрос...
не нашёл способ достать свойства итема
например:
123.JPG
123.JPG (13.52 KiB) Viewed 5625 times

если использовать uo.click, то в журнале пишется You see:имя, без всех тех свойсв, которые на рисунке....
getname ничего не даёт...
свойства появляются только при наведении курсора, как бы их скриптом прочитать?
Mirage
Posts: 2802
Joined: 2009-05-28 09:58:28
Location: Иваново
Contact:

Re: перевод градусев в мировые координаты...

Post by Mirage »

всего скорее скиллом идентификацией или lorom попробуй
danielxd
Posts: 3
Joined: 2018-10-16 22:57:01

Re: перевод градусев в мировые координаты...

Post by danielxd »

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)
Post Reply