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

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

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

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

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
  • 0
PR9INICHEK

Найти все пеньки на карте и их координаты

Всем привет 🙂

 

Прошу помочь с получением координат всех вот таких пеньков на карте Чернорусь

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

 

Пробовал найти с помощью функции 

GetCEApi().ExportProxyData()

Но она их не находит, так как в оригинале модели в ЛОДах нет информации:

class = house
map = building

Пробовали её туда добавить и подключить модом, но не сработало

 

Сама модель пенька находится в 

"\addons\structures_residential\misc\misc_woodblock.p3d"

 

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


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

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

  • 1

Скорее всего пеньки являются статическим объектом, поэтому можно сделать след образом. Попробовать определить статический класс пенька через мод @BuilderStatics и потом через скрипт в начале запуска миссии - сервера найти все объекты на карте GetGame().GetObjectsAtPosition3D() и найти объекты с классом пеньков.

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


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





  • 0

Даже вот я вам нашел имя класса через @BuilderStatics: Static_Misc_WoodBlock

 

Я даже

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

Изменено пользователем CoreySF (история изменений)

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


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

Таким посиком можно серв нафиг взвесить ))))

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


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

@BorizzK Можете предложить альтернативу?
Чисто для интереса, проверили,к сожалению не вешает ибо работает один раз в начале...Но и не ищет что нужно, а всё скопом.
Прошу вот помощи.
 

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


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

@BorizzK Можете предложить альтернативу?
Чисто для интереса, проверили,к сожалению не вешает ибо работает один раз в начале...Но и не ищет что нужно, а всё скопом.
Прошу вот помощи.
 

вешает это понятно, всю карту сканить, еще бы. Там и оперативка небось сожрала все что можно в момент поиска.
Насчет все скопом и прочее не понял, скрипт настроен получить все объекты и выбрать среди них те, которые нужны в поиске вам. Если он ничего не вывел- значит объекты не удалось найти с таким классом попросту.

А вообще для какой цели то так извращаемся?

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


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

@123new Вот именно что не отбирает а сканирует и выводит в лог просто позиции всех объектов
вот пример лога
 

SCRIPT       : [GetObjectInfo]: Pos of Object is <11905.998047, 89.534325, 13878.241211>
SCRIPT       : [GetObjectInfo]: Pos of Object is <11909.755859, 89.687576, 13876.421875>
SCRIPT       : [GetObjectInfo]: Pos of Object is <11939.830078, 90.745270, 13863.102539>
SCRIPT       : [GetObjectInfo]: Pos of Object is <11937.639648, 90.676811, 13864.147461>
SCRIPT       : [GetObjectInfo]: Pos of Object is <11916.733398, 90.553299, 13873.298828>
SCRIPT       : [GetObjectInfo]: Pos of Ammo_380 is <11912.752930, 90.404503, 13884.997070>
SCRIPT       : [GetObjectInfo]: Pos of WorkingBoots_Yellow is <11912.237305, 89.920784, 13897.766602>
SCRIPT       : [GetObjectInfo]: Pos of Cleaver is <11919.487305, 90.560486, 13885.613281>
SCRIPT       : [GetObjectInfo]: Pos of BurlapSack is <11881.249023, 88.858559, 13864.817383>
SCRIPT       : [GetObjectInfo]: Pos of CanvasPants_Beige is <11916.764648, 93.292061, 13885.225586>
SCRIPT       : [GetObjectInfo]: Pos of Hammer is <11931.562500, 90.196663, 13879.468750>
SCRIPT       : [GetObjectInfo]: Pos of Headtorch_Black is <11901.130859, 89.415558, 13886.564453>
SCRIPT       : [GetObjectInfo]: Pos of BushHard_b_crataegusLaevigata_2s is <11911.578125, 94.137619, 13955.536133>

Как видите он не видит более половины обьектов,
и в конце
 

SCRIPT       : [GetObjectInfo]: Pos of BushHard_t_PiceaAbies_1s is <15304.359375, 213.599640, 15262.648438>
SCRIPT       : [GetObjectInfo]: Pos of Object is <15319.015625, 211.747635, 15259.078125>
SCRIPT       : [GetObjectInfo]: Pos of BushHard_t_PiceaAbies_1s is <15302.343750, 213.431015, 15250.214844>
SCRIPT       : [GetObjectInfo]: Pos of BushHard_b_BetulaPendula_1f is <15314.938477, 212.537872, 15245.842773>
SCRIPT       : [GetObjectInfo]: Pos of BushHard_b_BetulaPendula_1f is <15316.808594, 212.537109, 15254.784180>
SCRIPT       : [GetObjectInfo]: Pos of BushSoft_b_PiceaAbies_1f is <15319.046875, 211.942566, 15247.794922>
SCRIPT       : [GetObjectInfo]: Pos of Object is <15309.484375, 212.244003, 15256.461914>
SCRIPT       : [Tools]: Found 0 Land_Wreck_Uaz Objects
SCRIPT       : [Tools]: Stop Search Objects Land_Wreck_C130J
SCRIPT       : Chernarus::Weather::Overcast:: ( 10.0007 )  overcast: 0.444026
SCRIPT       : Chernarus::Weather::Overcast::Rain:: ( 10.0007 ) 0
SCRIPT       : Chernarus::Weather::Fog:: ( 10.0007 ) 0.094264
SCRIPT       : Chernarus::Weather::Rain::ForceEnd:: ( 10.0172 ) 0 -> 0
SCRIPT       : ~DayZGame()

И ещё одна чудесатость....этот С130 (это самолёт,он один на карте)
SCRIPT       : [GetObjectInfo]: Pos of Building is <4042.328857, 344.212189, 10904.640625>
Почему???Он же Land_.....
 

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
6 часов назад, paranoyk сказал:

@123new Вот именно что не отбирает а сканирует и выводит в лог просто позиции всех объектов
вот пример лога
 

SCRIPT : [GetObjectInfo]: Pos of Object is <11905.998047, 89.534325, 13878.241211> SCRIPT : [GetObjectInfo]: Pos of Object is <11909.755859, 89.687576, 13876.421875> SCRIPT : [GetObjectInfo]: Pos of Object is <11939.830078, 90.745270, 13863.102539> SCRIPT : [GetObjectInfo]: Pos of Object is <11937.639648, 90.676811, 13864.147461> SCRIPT : [GetObjectInfo]: Pos of Object is <11916.733398, 90.553299, 13873.298828> SCRIPT : [GetObjectInfo]: Pos of Ammo_380 is <11912.752930, 90.404503, 13884.997070> SCRIPT : [GetObjectInfo]: Pos of WorkingBoots_Yellow is <11912.237305, 89.920784, 13897.766602> SCRIPT : [GetObjectInfo]: Pos of Cleaver is <11919.487305, 90.560486, 13885.613281> SCRIPT : [GetObjectInfo]: Pos of BurlapSack is <11881.249023, 88.858559, 13864.817383> SCRIPT : [GetObjectInfo]: Pos of CanvasPants_Beige is <11916.764648, 93.292061, 13885.225586> SCRIPT : [GetObjectInfo]: Pos of Hammer is <11931.562500, 90.196663, 13879.468750> SCRIPT : [GetObjectInfo]: Pos of Headtorch_Black is <11901.130859, 89.415558, 13886.564453> SCRIPT : [GetObjectInfo]: Pos of BushHard_b_crataegusLaevigata_2s is <11911.578125, 94.137619, 13955.536133>


SCRIPT       : [GetObjectInfo]: Pos of Object is <11905.998047, 89.534325, 13878.241211>
SCRIPT       : [GetObjectInfo]: Pos of Object is <11909.755859, 89.687576, 13876.421875>
SCRIPT       : [GetObjectInfo]: Pos of Object is <11939.830078, 90.745270, 13863.102539>
SCRIPT       : [GetObjectInfo]: Pos of Object is <11937.639648, 90.676811, 13864.147461>
SCRIPT       : [GetObjectInfo]: Pos of Object is <11916.733398, 90.553299, 13873.298828>
SCRIPT       : [GetObjectInfo]: Pos of Ammo_380 is <11912.752930, 90.404503, 13884.997070>
SCRIPT       : [GetObjectInfo]: Pos of WorkingBoots_Yellow is <11912.237305, 89.920784, 13897.766602>
SCRIPT       : [GetObjectInfo]: Pos of Cleaver is <11919.487305, 90.560486, 13885.613281>
SCRIPT       : [GetObjectInfo]: Pos of BurlapSack is <11881.249023, 88.858559, 13864.817383>
SCRIPT       : [GetObjectInfo]: Pos of CanvasPants_Beige is <11916.764648, 93.292061, 13885.225586>
SCRIPT       : [GetObjectInfo]: Pos of Hammer is <11931.562500, 90.196663, 13879.468750>
SCRIPT       : [GetObjectInfo]: Pos of Headtorch_Black is <11901.130859, 89.415558, 13886.564453>
SCRIPT       : [GetObjectInfo]: Pos of BushHard_b_crataegusLaevigata_2s is <11911.578125, 94.137619, 13955.536133>

Как видите он не видит более половины обьектов,
и в конце
 

SCRIPT : [GetObjectInfo]: Pos of BushHard_t_PiceaAbies_1s is <15304.359375, 213.599640, 15262.648438> SCRIPT : [GetObjectInfo]: Pos of Object is <15319.015625, 211.747635, 15259.078125> SCRIPT : [GetObjectInfo]: Pos of BushHard_t_PiceaAbies_1s is <15302.343750, 213.431015, 15250.214844> SCRIPT : [GetObjectInfo]: Pos of BushHard_b_BetulaPendula_1f is <15314.938477, 212.537872, 15245.842773> SCRIPT : [GetObjectInfo]: Pos of BushHard_b_BetulaPendula_1f is <15316.808594, 212.537109, 15254.784180> SCRIPT : [GetObjectInfo]: Pos of BushSoft_b_PiceaAbies_1f is <15319.046875, 211.942566, 15247.794922> SCRIPT : [GetObjectInfo]: Pos of Object is <15309.484375, 212.244003, 15256.461914> SCRIPT : [Tools]: Found 0 Land_Wreck_Uaz Objects SCRIPT : [Tools]: Stop Search Objects Land_Wreck_C130J SCRIPT : Chernarus::Weather::Overcast:: ( 10.0007 ) overcast: 0.444026 SCRIPT : Chernarus::Weather::Overcast::Rain:: ( 10.0007 ) 0 SCRIPT : Chernarus::Weather::Fog:: ( 10.0007 ) 0.094264 SCRIPT : Chernarus::Weather::Rain::ForceEnd:: ( 10.0172 ) 0 -> 0 SCRIPT : ~DayZGame()


SCRIPT       : [GetObjectInfo]: Pos of BushHard_t_PiceaAbies_1s is <15304.359375, 213.599640, 15262.648438>
SCRIPT       : [GetObjectInfo]: Pos of Object is <15319.015625, 211.747635, 15259.078125>
SCRIPT       : [GetObjectInfo]: Pos of BushHard_t_PiceaAbies_1s is <15302.343750, 213.431015, 15250.214844>
SCRIPT       : [GetObjectInfo]: Pos of BushHard_b_BetulaPendula_1f is <15314.938477, 212.537872, 15245.842773>
SCRIPT       : [GetObjectInfo]: Pos of BushHard_b_BetulaPendula_1f is <15316.808594, 212.537109, 15254.784180>
SCRIPT       : [GetObjectInfo]: Pos of BushSoft_b_PiceaAbies_1f is <15319.046875, 211.942566, 15247.794922>
SCRIPT       : [GetObjectInfo]: Pos of Object is <15309.484375, 212.244003, 15256.461914>
SCRIPT       : [Tools]: Found 0 Land_Wreck_Uaz Objects
SCRIPT       : [Tools]: Stop Search Objects Land_Wreck_C130J
SCRIPT       : Chernarus::Weather::Overcast:: ( 10.0007 )  overcast: 0.444026
SCRIPT       : Chernarus::Weather::Overcast::Rain:: ( 10.0007 ) 0
SCRIPT       : Chernarus::Weather::Fog:: ( 10.0007 ) 0.094264
SCRIPT       : Chernarus::Weather::Rain::ForceEnd:: ( 10.0172 ) 0 -> 0
SCRIPT       : ~DayZGame()

И ещё одна чудесатость....этот С130 (это самолёт,он один на карте)
SCRIPT       : [GetObjectInfo]: Pos of Building is <4042.328857, 344.212189, 10904.640625>
Почему???Он же Land_.....
 

а вы радиус скана от точки увеличьта в 10 кратном размере, он может не всю карту затрагивает. Ну и соответственно пропорционально нагрузка на сервер увеличится с отжором памяти

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


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

@123new Не в радиусе дело. Сканирование проходит. Но почему то обьект который во всех редакторах идёт как Land_Wreck_C130J для карты идёт как Building, другие как Object ,вот в чём прикол...

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


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

@123new Не в радиусе дело. Сканирование проходит. Но почему то обьект который во всех редакторах идёт как Land_Wreck_C130J для карты идёт как Building, другие как Object ,вот в чём прикол...

Возможно в методе поиска косяк. Я б например вот так искал

//static class to define object info
class GetObjectInfo
{
	static void GetObjects(vector StartPos, float radius, string classname)
	{
		array<Object> FoundObjects = new array<Object>;
	    GetGame().GetObjectsAtPosition3D( StartPos, radius, FoundObjects, null );
		
		foreach(Object object: FoundObjects)
		{
			if(object.GetType() == classname)
			{
				Print("[GetObjectInfo]: Classname '" + object.GetType() + "' is have position " + object.GetPosition().ToString();
			}
		}
	}
}

ибо мы ж ищем точное совпадение, а не поверхностное вхождение в название.

Ну а если надо, найденное и в массив отдельно можно внести.

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


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

Методом научного тыка и с помощью советов людей выяснил, что

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

 

 

Изменено пользователем PR9INICHEK (история изменений)

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
30.07.2021 в 15:34, CoreySF сказал:

Скорее всего пеньки являются статическим объектом, поэтому можно сделать след образом. Попробовать определить статический класс пенька через мод @BuilderStatics и потом через скрипт в начале запуска миссии - сервера найти все объекты на карте GetGame().GetObjectsAtPosition3D() и найти объекты с классом пеньков.

Ай спасибо дорогой 🙂

 

Сегодня ещё раз перечитал ответ и попробовал воспользоваться этим модом BuilderStatics, до этого пользовался BuilderItems и на его основе пытался найти пеньки

Оказывается определение таких статичных объектов работает вот так:

class CfgPatches
{
	class DZ_Structures_test
	{
		units[]={};
		weapons[]={};
		requiredVersion=0.1;
		requiredAddons[]=
		{
			"DZ_Data"
		};
	};
};

class CfgNonAIVehicles
{
	class StaticObject;
  class Static_Misc_WoodBlock: StaticObject
  {
    scope=1;
    model="\DZ\structures\Residential\Misc\Misc_WoodBlock.p3d";
  };
};

 

А я до этого пытался вот так:

class CfgPatches
{
	class DZ_Structures_Residential
	{
		units[]={};
		weapons[]={};
		requiredVersion=0.1;
		requiredAddons[]=
		{
			"DZ_Data"
		};
	};
};

class CfgVehicles
{
	class HouseNoDestruct;
  class Land_Misc_WoodBlock: HouseNoDestruct
  {
    scope=1;
    model="\DZ\structures\Residential\Misc\Misc_WoodBlock.p3d";
  };
};

 

И соответственно ничего не работало

 

Теперь всё заработало и разместив игрока в центре карты("7500 0 7500") я нашёл все пеньки

Их оказывается 376 штук в Чернаруси

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


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

Опубликовал мод со всеми изменениями, что необходимы для появления топорика на пеньках:

https://steamcommunity.com/sharedfiles/filedetails/?id=2571138211

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
15 часов назад, paranoyk сказал:

@PR9INICHEK А поподробней?

 

Через DayZ Editor с подключённым BuilderStatics находим нужный объект и его classname

Далее через Workbench и простой скрипт(используется в основе фунция GetGame().GetObjectsAtPosition("7500 0 7500", 20000, objects, NULL); с передачей в неё центра карты и радиуса поиска в 20 000 метров) ищем все эти объекты на карте и копируем данные в нужном виде для

mapgrouppos.xml

 

Скрипт по копированию данных скину чуть позже

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


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

Вручную я делал с помощью такого скрипта:

https://github.com/Arkensor/DayZCommunityOfflineMode/pull/301

 

Когда получилось найти объекты автоматически, то уже через Workbench и вот такой скрипт:

Print("Player Position: " + GetGame().GetPlayer().GetPosition());

array<Object> objects = new array<Object>;
// "7500 0 7500"
// 20000 - самый верный радиус
GetGame().GetObjectsAtPosition(GetGame().GetPlayer().GetPosition(), 3, objects, NULL);
Print("objects.Count(): " + objects.Count());
int count = 0;

for (int i = 0; i < objects.Count(); ++i)
{
  string objType = objects.Get(i).GetType();
	
	if (objType == "Static_Misc_WoodPile1")
	{
		count = count + 1;
		float yaw = objects.Get(i).GetOrientation()[0];
    float a;
    vector vOrientation = objects.Get(i).GetOrientation();

    if ( yaw <= -90 )
    {
      a = -yaw - 270;
    }
    else 
    {
      a = 90 - yaw;
    }
    
    // Print("a: " + a);
    
    // Print("vOrientation before: " + vOrientation);
    reversearray(vOrientation);
    // Print("vOrientation.ToString(false): " + vOrientation.ToString(false));

    Print( "<group name=\"" + objType + "\" " + "pos=\"" + objects.Get(i).GetPosition().ToString(false) + "\" " + "rpy=\"" + vOrientation.ToString(false) + "\" " + "a=\"" + a + "\" />" );
	}
	
	
	//Print("object[" + i +"].GetType(): " + objects.Get(i).GetType());
};

Print("count: " + count);

 

Данные как раз пишутся в script...log в нужном формате и далее их копирую уже в mapgrouppos.xml

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
10.08.2021 в 20:38, PR9INICHEK сказал:

то уже через Workbench и вот такой скрипт:

кто объяснит, как запустить этот поиск?

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


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

сделал вот так:
 

class GetObjectInfo
{
    void Init()
    {
        //GetGame().GetObjectsAtPosition("7500 0 7500", 20000, objects, NULL)
        Print("Player Position: " + GetGame().GetPlayer().GetPosition());

		array<Object> objects = new array<Object>;
		// "7500 0 7500"
		// 20000 - самый верный радиус
		GetGame().GetObjectsAtPosition("7500 0 7500", 20000, objects, NULL)
		Print("objects.Count(): " + objects.Count());
		int count = 0;

		for (int i = 0; i < objects.Count(); ++i)
		{
		  string objType = objects.Get(i).GetType();
			
			if (objType == "Land_Shed_W1")
			{
				count = count + 1;
				float yaw = objects.Get(i).GetOrientation()[0];
			float a;
			vector vOrientation = objects.Get(i).GetOrientation();

			if ( yaw <= -90 )
			{
			  a = -yaw - 270;
			}
			else 
			{
			  a = 90 - yaw;
			}
			
			// Print("a: " + a);
			
			// Print("vOrientation before: " + vOrientation);
			reversearray(vOrientation);
			// Print("vOrientation.ToString(false): " + vOrientation.ToString(false));

			Print( "<group name=\"" + objType + "\" " + "pos=\"" + objects.Get(i).GetPosition().ToString(false) + "\" " + "rpy=\"" + vOrientation.ToString(false) + "\" " + "a=\"" + a + "\" />" );
			}
			
			
			//Print("object[" + i +"].GetType(): " + objects.Get(i).GetType());
		};

		Print("count: " + count);
    }
}

ничего не ищет, что я делаю не так?
даже первую строку не принтует

Изменено пользователем FreddyCruger (история изменений)

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


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

А что ищешь то?

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

Изменено пользователем FreddyCruger (история изменений)

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


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

....аналогично пытался понять что и как.

 

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


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

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.