Page 1 of 1

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

Posted: 2011-06-21 16:54:14
by volhram
Всем привет.
Может кто видел готовую функцию, для преобразования координат?
читаю гамп, там текст "100°43'N,166°21'E"
как бы его скриптом преобразовать в "3689 478"

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

Posted: 2011-06-21 19:36:16
by ZeroDX
А есть ещё примеры?

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

Posted: 2011-06-21 21:53:49
by Mirage

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

Posted: 2011-06-22 05:15:04
by Sirocco

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

Posted: 2011-06-22 07:22:39
by volhram
Sirocco wrote:http://uo.stratics.com/uoam/geo.shtml

спасибо, что то интересное...поковыряюсь)
а кто знает точный размер мира в тайлах на АОСе, по карте посмотрел...получилось 5120 на 4095, но боюсь это не точно...

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

Posted: 2011-06-22 07:23:24
by volhram
ZeroDX wrote:А есть ещё примеры?

74°58'S,86°41'E 2556 2477
158°54'N,174°47'W 3958 3913

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

Posted: 2011-06-25 08:38:28
by volhram
ну вот....написал перевод градусов в мировые координаты, если кому интересно выложу..

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

Posted: 2011-06-25 09:22:00
by Mirage
volhram wrote:ну вот....написал перевод градусов в мировые координаты, если кому интересно выложу..

Не нафиг, никому не интересно. Мы тут так просто тусуемся :mrgreen:
Выкладывай конечно.

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

Posted: 2011-06-25 11:52:19
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

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

Posted: 2011-06-25 13:15:39
by Scripts Writer
volhram wrote:ну мало ли, я вот играю лет 12 в ультиму, только сейчас меня кольнуло, вдруг понадобилось...

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


:)

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

Posted: 2011-06-25 13:42:30
by volhram
Scripts Writer wrote:
volhram wrote:ну мало ли, я вот играю лет 12 в ультиму, только сейчас меня кольнуло, вдруг понадобилось...

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


:)

не, я знакомился с ультимой с фри оскома...там ещё ренесанса не было..
хорошая ссылка, сейчас что нить найду, поиграю)

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

Posted: 2011-06-25 15:55:15
by volhram
у меня ещё вопрос...
не нашёл способ достать свойства итема
например:
123.JPG
123.JPG (13.52 KiB) Viewed 5636 times

если использовать uo.click, то в журнале пишется You see:имя, без всех тех свойсв, которые на рисунке....
getname ничего не даёт...
свойства появляются только при наведении курсора, как бы их скриптом прочитать?

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

Posted: 2011-06-25 15:57:58
by Mirage
всего скорее скиллом идентификацией или lorom попробуй

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

Posted: 2020-04-09 02:48:13
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)