Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • Не хотите БАН?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок
  • Загляните на рынок

    Там вы можете продать или купить
    Всё что касается игровых серверов
  • 0
Parralex

Помогите с координатами.

Вопрос

Не могу понять выставление координат. Например:

[268,[8627.69,12631.1,0.002]]

Где тут что? И если не сложно, то поподробнее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения

  • 0

Что вычислить??? Для каких целей??? И при чем тут квадрат???

Бред какой то...

Самый простой способ узнать нужные координаты, - притащить персонажа в нужное место, и потом глянуть в БД.

Так же можно в редакторе поставить объект, и посмотреть в сохраненном файле его центр.

 

Можно накидать простецкий скрипт для админки, который будет показывать текущие координаты персонажа.(Можно даже в дебаг монитор это вынести).

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Забронировать это рекламное место


  • 0

Угол - вектор направления

Координата х - широта

координата у - долгота

координата з - высота

*Вернее было бы сказать - х,з,у т.е. высота в 3Д - у

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

Угол - вектор направления

Координата х - широта

координата у - долгота

координата з - высота

*Вернее было бы сказать - х,з,у т.е. высота в 3Д - у

Как все это вычислять? Где привычные координаты квадрата?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить на вопрос...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: fedotovyasha
      в messages есть такая возможность
      <messages> <!-- This is example message for automatic server termination --> <message> <!-- no delay --> <delay>0</delay> <!-- if the value is larger than 0, then flag Repeat is enabled --> <repeat>0</repeat> <!-- if the value is larger than 0, then flag Countdown is enabled, countdown reaches zero in 10 hours --> <deadline>600</deadline> <!-- disable On connect flag --> <onConnect>0</onConnect> <!-- enable Shutdown flag --> <shutdown>1</shutdown> <!-- message itself with placeholders --> <text>Hello, #name will shutdown in #tmin minutes.</text> </message> </messages> Что лучше и эффективнее будет. Писать свой рестартер с помощью Rcon или будет достаточно messages.xml?
    • Автор: BorizzK
      Вобщем тема такая
       
      1я задачка была такая
      Нужно получить координату на плоскости под углом на расстоянии от текущей координаты
      Задачку решил тут
      Код в итоге таков:
       
      например выведем в лог  координаты точки на плоскости на расстоянии 2м и под углом 90 град (справа) от игрока (вызвав функцию PrintCoords, передав ей в качестве параметра переменную содержащую ссылку на перса игрока)
       
      void PrintCoords(PlayerBase player) { float distance = 2; float anglerotation = 90; Print("Coordinates on the plane at distance " + distance + " and at an angle relative to the player: " + anglerotation + ": " + GetCoords(player, distance, anglerotation).ToString()); } vector GetGoords(PlayerBase player, float distance, float anglerotation) { return GetPosFromDistAndAngle(player.GetPosition(), distance, player.GetOrientation()[0] + anglerotation); } vector GetPosFromDistAndAngle(vector pos, float dist, float angle) { angle = Math.NormalizeAngle(angle) * Math.DEG2RAD; pos[0] = pos[0] + (double)(Math.Sin(angle) * dist); //offset X pos[2] = pos[2] + (double)(Math.Cos(angle) * dist); //offset Y return pos; }  
      Это была задачка 1 и она была решена!
       
      далее надо решить более сложную задачу - она будет номер 2
       
      Надо вычислить координату не на плоскости, а вообще в пространстве, взяв в качестве поправок значения pitch и roll (наклон по поперечной и продольной осям) которые получаются из функции  обьект.GetOrientation() - первое значение масива типа вектор которое возвращает функция - угол на плоскости, второе угол в поперечной оси, третье в продольной (вроде так)
       
      те если игрок, да не важно, просто обьект, имеет наклон в поперечной оси 45 градусов (от так как этот слэш /), то точка под углом на плоскости относительно игрока 90град и расстоянии 2м "справа для него будет 'ниже', чем слева"
       
      врбщем -  нам надо получить координату под улом 90град на плоскости, 45град по вертикали и расстоянии 2м от него слева
       
      воот
       
      и тут у меня мозг взорвался (и почему-то захотелось вискаря)
       
      я понимаю что в данном случае нужно отталкиваться от поперечной вертикальной плоскости... но чет не догоняю как........
       
       
    • Автор: BorizzK
      Грамотные мать'и'матеги или геодезисты есть?
       
      Есть целевые координаты и ориентация yaw
       
      Скажем X = 6000, Y = 5000
      И эталонная угловая ориентация 110, 0, 0
       
      Мне нужно получить смещенные в отрицательную сторону координаты, что бы прямая из этих координат с эталонной ориентацией пересекала целевую точку с координатами X и Y, смещение должно зависеть от некой рандомной величины, да не важно - например при по X/Y 500 - startX = 5500, startY = 4500 - но  это для эталонной угловой ориентации 45 градусов
       
      Понимаю что надо считать используя синус/косинус/радиан, но тк дааавно все, что связанно чистой математикой/геометрией из головы выветрилось напрочь, туплю аццке
      Возможно есть и встроенный в enscript вариант...
       
      Сижу чешу репу пялясь на гору цисок которые надо на след неделе вводить в эксплуатацию.... А так хочется доделать свой вариант самолетика перевозящего различные грузы по миру...
       
      сорри за сумбур
    • Автор: BorizzK
      Есть класс
       
      class LogClass { private FileHandle File; void LogClass() { Print("::: [LogClass] ::: Init :::"); } void ~LogClass() { Print("::: [LogClass] ::: UnInit :::"); } void Save(string FileName, string String) { private int year, month, day, hour, minute, second; Print("::: [LogClass]: Save: " + FileName); if (!FileExist(FileName)) { File = OpenFile(FileName,FileMode.WRITE); } else { File = OpenFile(FileName, FileMode.APPEND); } if ( File == 0 ) { Print("::: [LogClass]: Can not write FileName: " + FileName); Print("::: [LogClass]: May be disk error, file write protected, file busy or FileMode.WRITE disabled (need to specify option -scrAllowFileWrite in server run parameters for enable FileMode.WRITE."); return; } FPrintln(File, DataBase_GetDate() + "," + DataBase_GetTime() + " : " + String); CloseFile(File); } void Rotate(string FileName, int FileNum) { Print("::: [LogClass]: Rotate: " + FileName); if (!FileExist(FileName)) { Print("::: [LogClass]: Rotate: FileName not exists: " + FileName); return; } else { for ( int i = FileNum; i > 0; i-- ) { Print("::: [LogClass]: Rotate: FileName: " + FileName + "." + i); if (FileExist(FileName + "." + i)) { Print("::: [LogClass]: Rotate: DeleteFile: " + FileName + "." + i); DeleteFile(FileName + "." + i); } if (FileExist(FileName + "." + (i - 1))) { Print("::: [LogClass]: Rotate: CopyFile: " + FileName + "." + (i - 1) + " => " + FileName + "." + i); CopyFile(FileName + "." + (i - 1), FileName + "." + i); } } CopyFile(FileName, FileName + ".0"); DeleteFile(FileName); } } static string DataBase_GetDate() { int year, month, day; GetYearMonthDay(year, month, day); string date = day.ToStringLen(2) + "." + month.ToStringLen(2) + "." + year.ToStringLen(2); return date; } static string DataBase_GetTime() { int hour, minute, second; GetHourMinuteSecond(hour, minute, second); string time = hour.ToStringLen(2) + ":" + minute.ToStringLen(2) + ":" + second.ToStringLen(2); return time; } } Мне нужно им пользоваться функциями из него в нескольких местах
      в PlayerBase.c в функциях в классе PlayerBase
      в init.c в функция в классе миссии
      Вопрос как?
       
      В PlayerBase.c
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_MOD\\LogClass\\LogClass.c"
      Далее в классе
      ref LogClass Log = new LogClass();
      ну и в функциях
      Log.Save{"путь-имя", данные);
       
      Но после последнего обновления 0.63.149.525
      В init.c
      #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_MOD\\LogClass\\LogClass.c"
      приводит к ошибке - Multiple declaration of class "LogClass"
       
      Can't compile mission init script'!
      $CurrentDir://mpmissions//dayzOffline.chernarusplus//_MOD//LogClass//LogClass.c(1): Multiple declaration of class 'LogClass'
       
      До этого обновления все было норм
      Как быть?
       
       
×
×
  • Создать...