Карта положения онлайн-игрока в игре?

  • Автор темы Автор темы klikker
  • Дата начала Дата начала
А как это будет работать в контексте привязки этих координат с setting.txt к самой карте?
Не очень понял вопрос. я делал чтобы просто посмотреть визуально на карте где точки респавна и рестарта и все =)

1738247808361.webp
 

ну ничего не мешает вызов какой нибудь api прикрутить и рисовать игроков =)
Или всех боссов с плашкой таймера до респауна, но кэшировано и с задержкой или кто сделает на opencv парсер и бота, будут 24/7 фармить:pandaredlol:
 
Или всех боссов с плашкой таймера до респауна, но кэшировано и с задержкой или кто сделает на opencv парсер и бота, будут 24/7 фармить :pandaredlol:
да что угодно, на что фантазии хватит
 
Баловался парсингом setting.txt (файл брал it advext) саму карту можете тут скомуниздить в принципе =)
п.с. пользуясь случаем нет ниукого карты радара больше чем 6000*6400 ?...

странно, без впн ниоткрываеццо...


это из ООГ бота вроде )

Размер больше и без названий на карте

найс) но походу обработанно нейросеткой
 
Или всех боссов с плашкой таймера до респауна
А чем это будет отличаться от того что в статистике на сервере показывают живой или мертвый бос и время до респа?
Координаты их и так все знают +-

найс) но походу обработанно нейросеткой
руками (обеими) рисовал!!!
 
  • Ха-ха-ха
Реакции: Nixy
А чем это будет отличаться от того что в статистике на сервере показывают живой или мертвый бос и время до респа?
Координаты их и так все знают +-
Та просто кому как удобнее.😉
С другой стороны, это действительно не нужно когда можно прям внутри получить информацию о спавне и статус рб.
 
Делал у себя на вебе подобную карту
Формула для скейлинга координат в контейнере

JavaScript:
const x = Math.round((116 + (char.locX + 107823) / 200));
const y = Math.round((2580 + (char.locY - 255420) / 200));

Для контейнера width: 1808px; height: 2616px;

Если честно почему именно такие цифры я уже не помню, где-то записывал себе это и про*бал


1738252641994.webp
 
Делал у себя на вебе подобную карту
Формула для скейлинга координат в контейнере

JavaScript:
const x = Math.round((116 + (char.locX + 107823) / 200));
const y = Math.round((2580 + (char.locY - 255420) / 200));

Для контейнера width: 1808px; height: 2616px;

Если честно почему именно такие цифры я уже не помню, где-то записывал себе это и про*бал


Посмотреть вложение 83846
Было бы здорово, если бы вы могли нанести на него аналогичное наложение на свою карту. Очень хорошая работа!
 
Делал у себя на вебе подобную карту
Формула для скейлинга координат в контейнере

JavaScript:
const x = Math.round((116 + (char.locX + 107823) / 200));
const y = Math.round((2580 + (char.locY - 255420) / 200));

Для контейнера width: 1808px; height: 2616px;

Если честно почему именно такие цифры я уже не помню, где-то записывал себе это и про*бал


Посмотреть вложение 83846

скорее всего цифры из коэффицента размера мира через делитель 200 к размеру картинки карты + смещение начала координат
 
Оверпостинг
Для контейнера width: 1808px; height: 2616px;
Если карта (размер изображения) больше, тогда надо и скейлинг менять. Ок, понял.

Размер больше и без названий на карте
Если брать это изображение, 7908х10480
А так же за основу (считаем его рабочим)
const x = Math.round((116 + (char.locX + 107823) / 200)); const y = Math.round((2580 + (char.locY - 255420) / 200)); Для контейнера width: 1808px; height: 2616px;
И заюзать читкод на бессмертие, что бы не расчитывать самому

JavaScript:
const scaleX = 7908 / 1808;
const scaleY = 10480 / 2616;

const x = Math.round((116 * scaleX) + ((char.locX + 107823) / 200) * scaleX);
const y = Math.round((2580 * scaleY) + ((char.locY - 255420) / 200) * scaleY);
Возможно такой финт ушами и пройдет :)
 
Последнее редактирование:
ну для картинки 7908х10480
у меня вышло примерно так

659 это длина стороны квадарата (7908 / 12 квадратов), offset_x offset_y по сути смещение где находиться 0, 0 карты на картинке.
5 кол-во квадратов по x до 0
8 кол-во квадратов по y до 0

JavaScript:
var mult = 659;
var offset_x = mult * 5;
var offset_y = mult * 8;

function Round(n){
    return Math.round(Math.round(n * 10) / 10)
}

function transformCoords_tol2(e) {
    var x = (e.latlng.lng - offset_x) * (32768 / mult); // Преобразование по оси X
    var y = (e.latlng.lat - offset_y) * (32768 / mult) * -1;  // Преобразование по оси Y
    return [Round(x), Round(y)];
}

function transformCoords_toMap(latlng) {
    var x = (latlng[0]) / (32768 / mult) + offset_x; // Преобразование по оси X
    var y = ((latlng[1]) / (32768 / mult) * -1) + offset_y;  // Преобразование по оси Y
    return [Math.round(x), Math.round(y)];
}

1738316984128.webp
 
Последнее редактирование:
по y правда неверно немного судя по всему.. картинка чутка не пропорциональная
 
Смотреть там на эту тему в основном файлы __base__/scripts/func.map.php и __base__/templates/func.map.tpl
А там все верно?
А то есть момент
Код:
POS_X=>round(($chars[$x]["xloc"]+131072)/(32768*11/1024)-2),
POS_Y=>round(($chars[$x]["yloc"]+262144)/(32768*11/1024)-2),
Но сама картинка не 1024х1024, а
Код:
images/map.jpg); background-repeat: no-repeat; width: 1024px; height: 1483px
 
Насколько помню да - это же просто вычисление отношения размера изображения и размера мира в игре, т.е. условно говоря сколько примерно игровых единиц расстояния влазит в один пиксель картинки мапы.
и можно высчитать как по ширине, так и по высоте картинки - отношение в любом случае будет примерно одно и то же.
 
Очень хорошая идея где нибудь на проекте С1-С3 х1, желательно С1, просто сидишь и наблюдаешь за передвижениями, смотришь зоны фарма, где больше скапливается людей и т.д.
ага а если затянет ? Будут сидеть смотреть всей семьей 😂 как игру в кальмара... А время от времени можно из катапульты шмальнуть рандомно по карте как в морском бое🤷‍♂️и в игре прилетает метеорит в то место по которому шмальнул на карте при ударе ресаются мобы начинается лютый замес с красивым Dropp в чате печатается аннонс об лютом замесе с предложением сразу тпшнутся на эту опасную землю.. Ну и все продолжение следует😢
 
  • Попкорн
Реакции: Nixy
Назад
Сверху