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
PR9INICHEK

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

Всем привет 🙂

 

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

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

 

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

GetCEApi().ExportProxyData()

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

class = house
map = building

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

 

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

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

 

Share this post


Link to post
Share on other sites

21 answers to this question

Recommended Posts

  • 1

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

Share this post


Link to post
Share on other sites



  • 0

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

 

Я даже

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

Edited by CoreySF (see edit history)

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 0
48 минут назад, paranoyk сказал:

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

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

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

Share this post


Link to post
Share on other sites
  • 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_.....
 

Share this post


Link to post
Share on other sites
  • 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 кратном размере, он может не всю карту затрагивает. Ну и соответственно пропорционально нагрузка на сервер увеличится с отжором памяти

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


Link to post
Share on other sites
  • 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();
			}
		}
	}
}

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

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

Share this post


Link to post
Share on other sites
  • 0

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

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

 

 

Edited by PR9INICHEK (see edit history)

Share this post


Link to post
Share on other sites
  • 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 штук в Чернаруси

Share this post


Link to post
Share on other sites
  • 0
15 часов назад, paranoyk сказал:

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

 

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

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

mapgrouppos.xml

 

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

Share this post


Link to post
Share on other sites
  • 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

Share this post


Link to post
Share on other sites
  • 0
10.08.2021 в 20:38, PR9INICHEK сказал:

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

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

Share this post


Link to post
Share on other sites
  • 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);
    }
}

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

Edited by FreddyCruger (see edit history)

Share this post


Link to post
Share on other sites
  • 0
1 час назад, paranoyk сказал:

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

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

Edited by FreddyCruger (see edit history)

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

×
×
  • 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.