Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
SpiritWolf

Координаты краёв на Napf

В общем, поставил сборку с чернорашки, сменил карту на напф. Границы карты остались от черно, подскажите, как подрегулировать, а то на островах радиацией коцать начинает уже.

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0

16000 радиус напфа

 

//    Координаты центра карты
Ultima_Both_Array_Map_Center    =    (getMarkerPos "center");
//    т.к. карта квадратная, можно брать первую, или вторую координаты в качестве радиуса
Ultima_Both_Integer_Map_Radius    =    (Ultima_Both_Array_Map_Center select 0);

Для Напф данный радиус будет ~10000

Но это радиус!

 

А карта - квадрат(вернее - параллелограмм). => "углы" карты будут пустовать, при спавне. При чем, - достаточно "жирные" углы/

 

Для того, чтобы вычислить более верный  - "допустимый", для спавна радиус, можно пойти двумя путями -

 

1. Прибавить к радиусу, некую фиксированную величину

Ultima_Both_Integer_Map_Radius    =    Ultima_Both_Integer_Map_Radius + 4000;

 

2. Более точно, вычислить "допустимый радиус".

Для этого надо найти длину диагонали параллелограмма карты и поделить ее пополам.

 

Формула поиска длины диагонали -

D=корень(а*а + b*b - 2ab*cos(a));

т.к. косинус угла 90 градусов равен нулю, то результат действия 2ab*cos(a), будет равен нулю.

=> остается

корень(a*a + b*b)

 

т.е.

Ultima_Both_Integer_Map_Radius    =    (Ultima_Both_Integer_Map_Radius * Ultima_Both_Integer_Map_Radius * 2);

*Умножаем на 2, т.к. у нас точно квадрат.

 

Далее выносим из под корня:

 

Ultima_Both_Integer_Map_Radius    =    sqrt(Ultima_Both_Integer_Map_Radius);

*Для Напф получаем допустимый диаметр ~14142, и является длиной диагонали.

 

Делим пополам, для получения радиуса: (~7000).

 

Ultima_Both_Integer_Map_Radius    =    round(Ultima_Both_Integer_Map_Radius / 2);

 

Примечание:

Центры карт немного смещенные, и такое нахождение, верно лишь приблизительно.

Но как факт, можно не парится а накидать простенький скрипт, подходящий для любой карты:

 

_tmp        =    ((getMarkerPos "center") select 0);
dayz_maxpos    =    sqrt(_tmp * _tmp * 2); 

 

Или с глобальными переменными, для последующего их использования где либо:

Ultima_Both_Array_Map_Center    =    getMarkerPos "center";
Ultima_Both_Integer_Map_Radius    =    Ultima_Both_Array_Map_Center select 0;
dayz_maxpos                        =    sqrt(Ultima_Both_Integer_Map_Radius * Ultima_Both_Integer_Map_Radius * 2);

 

P.S. И не путайте радиус карты, с диаметром карты.

Edited by NoNameUltima (see edit history)

Share this post


Link to post
Share on other sites



  • 0

 

//    Координаты центра карты
Ultima_Both_Array_Map_Center    =    (getMarkerPos "center");
//    т.к. карта квадратная, можно брать первую, или вторую координаты в качестве радиуса
Ultima_Both_Integer_Map_Radius    =    (Ultima_Both_Array_Map_Center select 0);

Для Напф данный радиус будет ~10000

Но это радиус!

 

А карта - квадрат(вернее - параллелограмм). => "углы" карты будут пустовать, при спавне. При чем, - достаточно "жирные" углы/

 

Для того, чтобы вычислить более верный  - "допустимый", для спавна радиус, можно пойти двумя путями -

 

1. Прибавить к радиусу, некую фиксированную величину

Ultima_Both_Integer_Map_Radius    =    Ultima_Both_Integer_Map_Radius + 4000;

 

2. Более точно, вычислить "допустимый радиус".

Для этого надо найти длину диагонали параллелограмма карты и поделить ее пополам.

 

Формула поиска длины диагонали -

D=корень(а*а + b*b - 2ab*cos(a));

т.к. косинус угла 90 градусов равен нулю, то результат действия 2ab*cos(a), будет равен нулю.

=> остается

корень(a*a + b*b)

 

т.е.

Ultima_Both_Integer_Map_Radius    =    (Ultima_Both_Integer_Map_Radius * Ultima_Both_Integer_Map_Radius * 2);

*Умножаем на 2, т.к. у нас точно квадрат.

 

Далее выносим из под корня:

 

Ultima_Both_Integer_Map_Radius    =    sqrt(Ultima_Both_Integer_Map_Radius);

*Для Напф получаем допустимый диаметр ~14142, и является длиной диагонали.

 

Делим пополам, для получения радиуса: (~7000).

 

Ultima_Both_Integer_Map_Radius    =    round(Ultima_Both_Integer_Map_Radius / 2);

 

Примечание:

Центры карт немного смещенные, и такое нахождение, верно лишь приблизительно.

Но как факт, можно не парится а накидать простенький скрипт, подходящий для любой карты:

 

_tmp        =    ((getMarkerPos "center") select 0);
dayz_maxpos    =    sqrt(_tmp * _tmp * 2); 

 

Или с глобальными переменными, для последующего их использования где либо:

Ultima_Both_Array_Map_Center    =    getMarkerPos "center";
Ultima_Both_Integer_Map_Radius    =    Ultima_Both_Array_Map_Center select 0;
dayz_maxpos                        =    sqrt(Ultima_Both_Integer_Map_Radius * Ultima_Both_Integer_Map_Radius * 2);

 

P.S. И не путайте радиус карты, с диаметром карты.

О боже Ультима,да ты проще написать мог,не каждый шарит в том что ты сейчас написал  :biggrin:

Edited by sanek327 (see edit history)

Share this post


Link to post
Share on other sites
  • 0

В общем, поставил сборку с чернорашки, сменил карту на напф. Границы карты остались от черно, подскажите, как подрегулировать, а то на островах радиацией коцать начинает уже.

с папки DayZ_Epoch_24.Napf (которая идет в архиве серверных файлов) вытащить init.sqf .... dayz_MapArea = 18000; // Default = 10000

 
dayz_minpos = -1000; 
dayz_maxpos = 26000;
Edited by Grauft (see edit history)

Share this post


Link to post
Share on other sites
  • 0

dayz_MapArea   = 14000; // Площадь, возрождения транспорта, дропа и т.п.
dayz_maxpos     = 26000; 

Share this post


Link to post
Share on other sites
  • 0

О боже Ультима,да ты проще написать мог,не каждый шарит в том что ты сейчас написал  :biggrin:

Кому нужно было, тот понял. Не забудь себе репорт кинуть, мне не нравится твоё сообщение.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By 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м от него слева
       
      воот
       
      и тут у меня мозг взорвался (и почему-то захотелось вискаря)
       
      я понимаю что в данном случае нужно отталкиваться от поперечной вертикальной плоскости... но чет не догоняю как........
       
       
    • By BorizzK
      Грамотные мать'и'матеги или геодезисты есть?
       
      Есть целевые координаты и ориентация yaw
       
      Скажем X = 6000, Y = 5000
      И эталонная угловая ориентация 110, 0, 0
       
      Мне нужно получить смещенные в отрицательную сторону координаты, что бы прямая из этих координат с эталонной ориентацией пересекала целевую точку с координатами X и Y, смещение должно зависеть от некой рандомной величины, да не важно - например при по X/Y 500 - startX = 5500, startY = 4500 - но  это для эталонной угловой ориентации 45 градусов
       
      Понимаю что надо считать используя синус/косинус/радиан, но тк дааавно все, что связанно чистой математикой/геометрией из головы выветрилось напрочь, туплю аццке
      Возможно есть и встроенный в enscript вариант...
       
      Сижу чешу репу пялясь на гору цисок которые надо на след неделе вводить в эксплуатацию.... А так хочется доделать свой вариант самолетика перевозящего различные грузы по миру...
       
      сорри за сумбур
    • By volchara
      Как найти координаты в здании, для того чтобы прописать спавн лута ?
    • By Timofey
      Ребята подскажите пожалуйста как определить точные координаты места спавна игрока для вип 
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.