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
SIR2100

Метка на карте только с GPS

Привет. Подскажите пожалуйста, как разрешить делать метки на карте, до которых будет отображаться расстояние, только имея GPS в в инветаре?

systemchat ("Дебажка: Скрипт gpslocate запущен");
while (1 == 1) do
{
	if("ItemGPS" in items player) then 
	{
		hudWp=1;
	}
	else
	{
		hudWp=0;
	};
	sleep 1;
}; 

Такая штука работать не хочет. В чем я ошибся?

Запуск файла в самом низу init.sqf. В игре выводится надпись "Дебажка: Скрипт gpslocate запущен", единожды, при входе.

Edited by SIR2100 (see edit history)

Share this post


Link to post
Share on other sites

16 answers to this question

Recommended Posts

  • 0

 

GPS рассчитывать расстояние до точки

 

GPS ничего не рассчитывает.

А прикинуть расстояние до точки, имея карту, и зная свое местоположение сможет любой инвалид.

 

Если ты делаешь сервер наплевав на хоть какое то вменяемое отношение к реалу, то можешь и из игроков даунов сделать.

На таком сервере, вполне себе возможно из фляги с водой + кусок стекла скрафтить СУВ. А почему бы и нет?

 

Это к вопросу, о бредовости.

 

По вопросу можно или нет -

Можно. Переделай событие онклик для карты.

Share this post


Link to post
Share on other sites



  • 0

Привет. Подскажите пожалуйста, как разрешить делать метки на карте, только имея GPS в в инветаре?

systemchat ("Дебажка: Скрипт gpslocate запущен");
while (1 == 1) do
{
	if("ItemGPS" in items player) then 
	{
		hudWp=1;
	}
	else
	{
		hudWp=0;
	};
	sleep 1;
}; 

Такая штука работать не хочет. В чем я ошибся?

Запуск файла в самом низу init.sqf. В игре выводится надпись "Дебажка: Скрипт gpslocate запущен", единожды, при входе.

а что RPT пишет? 

Share this post


Link to post
Share on other sites
  • 0

а что RPT пишет? 

Забыл его удалить, весит 1гб+, через часа 1.5 гляну что пишет, и дам знать. Было предположение, что кто-то с этим сталкивался уже, и знает решение.

Share this post


Link to post
Share on other sites
  • 0

Забыл его удалить, весит 1гб+, через часа 1.5 гляну что пишет, и дам знать. Было предположение, что кто-то с этим сталкивался уже, и знает решение.

скорее всего синтаксис, где то не хватает чего то типа ; и т.д.

 

  1.     if("ItemGPS" in items player) then
  2.     {
  3.         hudWp=1;
  4.     } \\ Вот тут ; не хватает
Edited by Linux (see edit history)

Share this post


Link to post
Share on other sites
  • 0

 

скорее всего синтаксис, где то не хватает чего то типа ; и т.д.

 

  1.     if("ItemGPS" in items player) then
  2.     {
  3.         hudWp=1;
  4.     } \\ Вот тут ; не хватает

Перед else не ставится ";".

 

gps - weapon

 

В fn_SelfActions.sqf есть такой код: 

_itemsPlayer = items player;
....
//Allow owners to delete modulars
if(_isModular and (dayz_characterID == _ownerID)) then {
    if(_hasToolbox and "ItemCrowbar" in _itemsPlayer) then {
         _player_deleteBuild = true;
    };
}; 

 

В нем же ItemCrowbar принадлежит пространству items player, а ItemGPS тоже имеет префикс Item, потому так же принадлежит items player. Разве не так?

 

Upd. В серверном RPT ничего нет об этом скрипте. Сейчас гляну в клиентском.

Edited by SIR2100 (see edit history)

Share this post


Link to post
Share on other sites
  • 0


if (isNil "DZE_SELF_MARKER_TOGGLE") then {

DZE_SELF_MARKER_TOGGLE = false;

};

DZE_SELF_MARKER_TOGGLE = !DZE_SELF_MARKER_TOGGLE;

 

if(DZE_SELF_MARKER_TOGGLE) then {

DZE_SELF_MARKER_SCRIPT_HANDLE = [] spawn {

while {DZE_SELF_MARKER_TOGGLE} do {

private["_marker"];

deleteMarkerLocal "MarkerPlayer";

if("ItemMap" in (weapons player) || "ItemGPS" in (weapons player)) then {

_marker = createMarkerLocal["MarkerPlayer",(position player)];

_marker setMarkerShapeLocal "ICON";

_marker setMarkerTypeLocal "mil_dot";

_marker setMarkerTextLocal "me";

_marker setMarkerColorLocal "ColorGreen";

} else {

DZE_SELF_MARKER_TOGGLE = false;

};

sleep 2;

};

};

} else {

terminate DZE_SELF_MARKER_SCRIPT_HANDLE;

deleteMarkerLocal "MarkerPlayer";

};

cutText[format["Self Map Marker: %1",str DZE_SELF_MARKER_TOGGLE],"PLAIN DOWN"];

Share this post


Link to post
Share on other sites
  • 0

 

if (isNil "DZE_SELF_MARKER_TOGGLE") then {
    DZE_SELF_MARKER_TOGGLE = false;
};
DZE_SELF_MARKER_TOGGLE = !DZE_SELF_MARKER_TOGGLE;

if(DZE_SELF_MARKER_TOGGLE) then {
    DZE_SELF_MARKER_SCRIPT_HANDLE = [] spawn {
        while {DZE_SELF_MARKER_TOGGLE} do {
            private["_marker"];
            deleteMarkerLocal "MarkerPlayer";
            if("ItemMap" in (weapons player) || "ItemGPS" in (weapons player)) then {
                _marker = createMarkerLocal["MarkerPlayer",(position player)];
                _marker setMarkerShapeLocal "ICON";
                _marker setMarkerTypeLocal "mil_dot";
                _marker setMarkerTextLocal "me";
                _marker setMarkerColorLocal "ColorGreen";
            } else {
                DZE_SELF_MARKER_TOGGLE = false;
            };
            sleep 2;
        };
    };
} else {
    terminate DZE_SELF_MARKER_SCRIPT_HANDLE;
    deleteMarkerLocal "MarkerPlayer";
};
cutText[format["Self Map Marker: %1",str DZE_SELF_MARKER_TOGGLE],"PLAIN DOWN"];

Не сработало. Наверное, руки у меня кривые(

Share this post


Link to post
Share on other sites
  • 0

Не сработало. Наверное, руки у меня кривые(

 

    class ItemGPS {
        class metkaf {
            text = "Metka";
            script = "execVM 'custom\скрипт.sqf'";
    };
Edited by DimitriPokki
Добавлен в код (see edit history)

Share this post


Link to post
Share on other sites
  • 0

 

 

    class ItemGPS {
        class metkaf {
            text = "Metka";
            script = "execVM 'custom\скрипт.sqf'";
    };

Да, круто, заработало. Но я хотел немного другое. Чтобы расстояние до точки показывалось только тогда, когда есть GPS.

Share this post


Link to post
Share on other sites
  • 0

Как то глупо..

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

Share this post


Link to post
Share on other sites
  • 0

Как то глупо..

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

Суть в том, что я хочу дать возможность ставить метки только тем игрокам, у кого есть GPS. Это типа фишка такая.

Share this post


Link to post
Share on other sites
  • 0

Суть в том, что я хочу дать возможность ставить метки только тем игрокам, у кого есть GPS. Это типа фишка такая.

 

Так ты определись -

"Да, круто, заработало. Но я хотел немного другое. Чтобы расстояние до точки показывалось только тогда, когда есть GPS."

Так ты все таки метки хочешь запретить при отсутствии GPS, или отображение расстояния?

 

Если второе -

 

Я конечно все понимаю, но имхо, фишка, это -

крафт

банки

особенные миссии

..

отображение на карте меток друзей, при наличии GPS(ну раз уж GPS надо куда то пристроить).

т.е. логичное использование предметов, взаимодействия игроков с предметами и т.п.

 

А это имхо не фишка, это какой то бред простите)

Edited by NoNameUltima (see edit history)

Share this post


Link to post
Share on other sites
  • 0

Так ты определись -

"Да, круто, заработало. Но я хотел немного другое. Чтобы расстояние до точки показывалось только тогда, когда есть GPS."

Так ты все таки метки хочешь запретить при отсутствии GPS, или отображение расстояния?

 

Если второе -

 

Я конечно все понимаю, но имхо, фишка, это -

крафт

банки

особенные миссии

..

отображение на карте меток друзей, при наличии GPS(ну раз уж GPS надо куда то пристроить).

т.е. логичное использование предметов, взаимодействия игроков с предметами и т.п.

 

А это имхо не фишка, это какой то бред простите)

Полностью согласен с тобой) 

Share this post


Link to post
Share on other sites
  • 0

Ок, поясните, что именно бредового в том, что человеку будет только GPS рассчитывать расстояние до точки? Раз уж на то пошло.

И можно ли это сделать несколькими строчками кода?

Share this post


Link to post
Share on other sites
  • 0

GPS ничего не рассчитывает.

А прикинуть расстояние до точки, имея карту, и зная свое местоположение сможет любой инвалид.

 

Если ты делаешь сервер наплевав на хоть какое то вменяемое отношение к реалу, то можешь и из игроков даунов сделать.

На таком сервере, вполне себе возможно из фляги с водой + кусок стекла скрафтить СУВ. А почему бы и нет?

 

Это к вопросу, о бредовости.

 

По вопросу можно или нет -

Можно. Переделай событие онклик для карты.

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

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 123new
      Много вопросов на данную тему наблюдаю от новичков, попробую прояснить немного сей вопрос.
       
      Предположим. что вы уже знаете на каких координатах вам надо спавнить определенное здание или объект\животное\бота, с каким углом поворота. И так. эта тема для вас.
       
      Сразу делаю пометку, метод, который добавили нам разработчики игры в патче 1.15, очень хорошо описал наш товарищ в сообщении форума:
      Рекоммендую вам использовать именно его!
      Ниже опубликованы старые методы.
       
      Если вы с расставили их с модифицированной версии Offline (Offline by Arksenor это называется), то вы получили и нашли код вида:
      GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13260.040039 0.0 3670.984131").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13262.756836 0.0 3645.180176").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13265.441406 0.0 3619.531982").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13268.124023 0.0 3593.995361").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13270.844727 0.0 3568.186523").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13273.514648 0.0 3542.561279").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13276.195313 0.0 3517.048828").SetOrientation("-96.000000 0.000000 0.000000"); GetGame().CreateObject("Land_CementWorks_ExpeditionB", "13278.399414 0.0 3496.097900").SetOrientation("-96.000000 0.000000 0.000000"); Здесь (по примеру первой строки) 1 значение в скобках - id постройки/объекта, 2 значение - координаты в формате X Y Z, разделенные пробелом, 3 - значение поворота примерно в том же формате.
      Как это делать в Offline - статья от автора Offine:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Add-custom-objects-to-your-server-or-mission
       
      И так, инструкция:
      1. Добавляем в начало init.c файла в вашей mpmissions следующий код:
      #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\spawn_buildings.c" 2. Создаем в папке вашей активной mpmissions файлик spawn_buildings.c и заполняем его следующей информацией.
      void SpawnObject( string type, vector position, vector orientation ) { private string NameBlockLog = "[CreateObject] "; private string InfoLog = ""; if(type != "") { auto obj = GetGame().CreateObject( type, "0 0 0" ); if(obj) { if ((position[0] != 0) && (position[1] != 0) && (position[2] != 0)) { obj.SetPosition( position ); obj.SetOrientation( orientation ); obj.Update(); if (obj.CanAffectPathgraph()) { obj.SetAffectPathgraph(true, false); GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GetGame().UpdatePathgraphRegionByObject, 100, false, obj); } InfoLog = "[Type: '" + obj.GetType() + "' Position: '" + obj.GetPosition().ToString() + "' Orientation: '" + obj.GetOrientation().ToString() + "']"; Write_Log(NameBlockLog + " Object has been created successfully! Info " + InfoLog); } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Incorrect writed position. Info " + InfoLog); } } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Info " + InfoLog); } } else { InfoLog = "[Type: '" + type + "' Position: '" + position + "' Orientation: '" + orientation + "']"; Write_Log(NameBlockLog + " Object can't be created! Incorrect writed type. Info " + InfoLog); } } void Write_Log(string message) { Print(String(message)); } 3. Открываем созданный нами файл,  и в конце файла дописываем следующее:
      void SpawnAirfeeldBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } void SpawnKrasnoBuildings() { SpawnObject( "Land_CementWorks_ExpeditionB", "13251.875000 0.0 3748.525879", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13254.599609 0.0 3722.703613", "-96.000000 0.000000 0.000000"); SpawnObject( "Land_CementWorks_ExpeditionB", "13257.344727 0.0 3696.718750", "-96.000000 0.000000 0.000000"); } Где после void - название функции идет, а между открытыми скобками вызов спавна самих зданий на указанных координатах.
      На примере 1 строки:
      Land_CementWorks_ExpeditionB - id постройки (type)
      13251.875000 0.0 3748.525879 - координаты в формате X Y Z
      -96.000000 0.000000 0.000000 - значение поворота в формате X Y Z
      Внимание: id постройки и координаты в примере указаны не верные и требуют подключения дополнительной модификации для корректной работы!!! Координаты не соответствуют названию функции!!!
      4. открываем в MpMissions в папке с вашей активной миссией init.c и перед ЗАКРЫВАЮЩЕЙ скобкой '}' дописываем нужную нам функцию (это будет активация спавна на карте):
      SpawnAirfeeldBuildings(); 5. Готово, Запускайте сервер, и в scripts.log вы увидите процедуру спавна ваших зданий и увидите, спавнятся ли они на карте или нет.
      Можно написать конечно и более готовую, универсальную систему спавна на карте со считыванием конфигурации из файла, но я считаю это лишним.
       
      Как заполнить добавленные здания лутом на карте:
      вариант 1:
      https://github.com/Arkensor/DayZCommunityOfflineMode/wiki/Enable-loot-for-custom-placed-objects
      вариант 2: вручную заполнить xml-файл  mapgrouppos.xml в mpmssions данными о местоположении зданий, где rpy - значение поворота здания в формате Z Y X
       
      С помощью данной статьи вы можете разместить любой элемент игры(постройку, животное, зомби, бота), доступный к спавну через любую модификацию-админ. панель. Очень полезный мод в этом смысле BuilderItems, с его помощью можно творить поистину интересные локации!
    • By BorizzK
      Палатки пофикшены
      Ну разве что не ставятся на крест на церкви, ставятся чуть ниже
      Все чисто серверное
       
      Выложу завтра днем после небольшой доработки - что бы красиво было
       
      Вот резалт
       
       

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By BorizzK
      //Функция создания зданий/обьектов BORIZZ.K //Не поставит здание/обьект там где оно уже есть в радиусе 10м!!! //параметры вызова //НазваниеКласса, координаты, коррекция высоты (добавляется к высоте если > 0 - можно поставить здание на здание/поверхность выше земли или повесить в воздухе), Ориентация, Направление. int SpawnBuilding(string m_Building_Class, vector spawn_Point, float alt_Correct, vector spawn_Orient, vector spawn_Dir) //Спавн { Print("::: SpawnBuilding ::: SpawnBuilding(m_Building_Class = " + m_Building_Class + ", spawn_Point = " + spawn_Point.ToString() + ", alt_Correct = " + alt_Correct + ", spawn_Orient = " + spawn_Orient + ", spawn_Dir = " + spawn_Dir + ") :::"); array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; string className; Object object; float radius = 10; Object m_Building; int n_Building_Count = 0; spawn_Point[1] = GetGame().SurfaceY( spawn_Point[0], spawn_Point[2] ); if (alt_Correct > 0) { spawn_Point[1] = spawn_Point[1] + alt_Correct; } GetGame().GetObjectsAtPosition(spawn_Point, radius, nearest_objects, proxy_cargos); Print("::: SpawnBuilding ::: Radius: " + radius.ToString() + ", all nearest_objects: " + nearest_objects.Count().ToString() + " :::"); for ( int i = 0; i < nearest_objects.Count(); i++ ) { object = nearest_objects.Get(i); className = object.GetType(); if ( className == m_Building_Class ) { Print("::: SpawnBuilding ::: Found object: " + object.ToString() + ", className: " + className + ", Position: " + object.GetPosition() + " : Spawn " + m_Building_Class + " cancelled. ::: "); return 0; } } m_Building = GetGame().CreateObject( m_Building_Class, spawn_Point, false, true ); //m_Building.PlaceOnSurface(); if ( spawn_Orient[0] == 0 && spawn_Orient[1] == 0 && spawn_Orient[2] == 0) { m_Building.SetOrientation(m_Building.GetOrientation()); } else { m_Building.SetOrientation(spawn_Orient); } if ( spawn_Dir[0] == 0 && spawn_Dir[1] == 0 && spawn_Dir[2] == 0) { m_Building.SetDirection(m_Building.GetDirection()); } else { m_Building.SetDirection(spawn_Dir); } if (m_Building) { Print("::: SpawnBuilding ::: Result: Object: " + m_Building.ToString() + ", spawn_Point = " + m_Building.GetPosition().ToString() + ", alt_Correct = " + alt_Correct + ", spawn_Orient = " + m_Building.GetOrientation().ToString() + ", spawn_Dir = " + m_Building.GetDirection().ToString() + ") :::"); return 1; } else { Print("::: SpawnBuilding ::: Result: create object error. :::"); } return 0; } void SpawnBuildings() { int Buildings_Count; // пример Buildings_Count = SpawnBuilding("Land_City_FireStation", "6275 0 8013" , 0, "0 0 0", "0 0 40"); // Buildings_Count будет = 0 если здание не поставлено, 1 если поставлено } Простой способ установки
      Вставить в init.c (ВНЕ КЛАССА!)

      Вызывать в конце main()
      вот так
      SpawnBuildings();
       
      в функции SpawnBuildings() по примеру (там есть) прописываем какие здания куда, какая ориентация/и или направление
       
       
    • By Gromillla
      Подскажите скрипт вывода на карту сейфов с паролем 0000, для всех игроков.
    • By Razdor092
      Вся техника которая спавнится сама не уничтожается пока в нее не сядешь, помогите исправить пожалуйста. А так же подскажите как уменьшить количество машин которые спавнятся
  • 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.