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
paranoyk

Карта Ростов-спавн обьектов.

Имеем карту ростов...
Хочется спавнить объекты через подключаемый файл
Оригинальный инит
 

void main()
{
	//INIT WEATHER BEFORE ECONOMY INIT------------------------
	Weather weather = g_Game.GetWeather();

	weather.MissionWeather(false);    // false = use weather controller from Weather.c

	weather.GetOvercast().Set( Math.RandomFloatInclusive(0.02, 0.1), 1, 0);
	weather.GetRain().Set( 0, 1, 0);
	weather.GetFog().Set( 0, 1, 0);

	//INIT ECONOMY--------------------------------------
	Hive ce = CreateHive();
	if ( ce )
		ce.InitOffline();

	//DATE RESET AFTER ECONOMY INIT-------------------------
	int year, month, day, hour, minute;
	int reset_month = 8, reset_day = 10;
	GetGame().GetWorld().GetDate(year, month, day, hour, minute);

	if ((month == reset_month) && (day < reset_day))
	{
		GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
	}
	else
	{
		if ((month == reset_month + 1) && (day > reset_day))
		{
			GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
		}
		else
		{
			if ((month < reset_month) || (month > reset_month + 1))
			{
				GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
			}
		}
	}
}

class CustomMission: MissionServer
{
	void SetRandomHealth(EntityAI itemEnt)
	{
		if ( itemEnt )
		{
			float rndHlt = Math.RandomFloat( 0.25, 0.65 );
			itemEnt.SetHealth01( "", "", rndHlt );
		}
	}

	override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)
	{
		Entity playerEnt;
		playerEnt = GetGame().CreatePlayer( identity, characterName, pos, 0, "NONE" );
		Class.CastTo( m_player, playerEnt );

		GetGame().SelectPlayer( identity, m_player );

		return m_player;
	}

	override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{
		EntityAI itemClothing;
		EntityAI itemEnt;
		ItemBase itemBs;
		float rand;

		itemClothing = player.FindAttachmentBySlotName( "Body" );
		{
			itemEnt = player.GetInventory().CreateInInventory("Compass");

            itemEnt = player.GetInventory().CreateInInventory("SodaCan_Pipsi");
			
			itemEnt = player.GetInventory().CreateInInventory("SodaCan_Pipsi");

            itemEnt = player.GetInventory().CreateInInventory("BandageDressing");

            itemEnt = player.GetInventory().CreateInInventory("TunaCan");

            itemEnt = player.GetInventory().CreateInInventory("TunaCan");

            itemEnt = player.GetInventory().CreateInInventory("Apple");

            itemEnt = player.GetInventory().CreateInInventory("Pear");

            itemEnt = player.GetInventory().CreateInInventory("Plum");
			
			itemEnt = player.GetInventory().CreateInInventory("Chemlight_White");
			
			
		};
		if ( itemClothing )
		{
			SetRandomHealth( itemClothing );
			
			itemEnt = itemClothing.GetInventory().CreateInInventory( "TunaCan" );
						if ( Class.CastTo( itemBs, itemEnt ) )
				itemBs.SetQuantity( 4 );

			SetRandomHealth( itemEnt );

			string chemlightArray[] = { "Chemlight_White", "Chemlight_Yellow", "Chemlight_Green", "Chemlight_Red" };
			int rndIndex = Math.RandomInt( 0, 4 );
			itemEnt = itemClothing.GetInventory().CreateInInventory( chemlightArray[rndIndex] );
			SetRandomHealth( itemEnt );
		}
		
		itemClothing = player.FindAttachmentBySlotName( "Legs" );
		if ( itemClothing )
			SetRandomHealth( itemClothing );
		
		itemClothing = player.FindAttachmentBySlotName( "Feet" );
		if ( itemClothing )
			SetRandomHealth( itemClothing );
	}
};

Mission CreateCustomMission(string path)
{
	return new CustomMission();
}

Вставляю...
 

#include "$CurrentDir:\\mpmissions\\dayzoffline.chernarusplus\\@Mod\\SpawnBuilding\\Billding.c"
void main()
{
	//INIT WEATHER BEFORE ECONOMY INIT------------------------
	Weather weather = g_Game.GetWeather();

	weather.MissionWeather(false);    // false = use weather controller from Weather.c

	weather.GetOvercast().Set( Math.RandomFloatInclusive(0.02, 0.1), 1, 0);
	weather.GetRain().Set( 0, 1, 0);
	weather.GetFog().Set( 0, 1, 0);

	//INIT ECONOMY--------------------------------------
	Hive ce = CreateHive();
	if ( ce )
		ce.InitOffline();

	//DATE RESET AFTER ECONOMY INIT-------------------------
	int year, month, day, hour, minute;
	int reset_month = 8, reset_day = 10;
	GetGame().GetWorld().GetDate(year, month, day, hour, minute);

	if ((month == reset_month) && (day < reset_day))
	{
		GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
	}
	else
	{
		
		if ((month == reset_month + 1) && (day > reset_day))
		{
			GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
		}
		else
		{
			if ((month < reset_month) || (month > reset_month + 1))
			{
				GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
			}
		}
	}	
SpawnBillding();
}

class CustomMission: MissionServer
{
	void SetRandomHealth(EntityAI itemEnt)
	{
		if ( itemEnt )
		{
			float rndHlt = Math.RandomFloat( 0.25, 0.65 );
			itemEnt.SetHealth01( "", "", rndHlt );
		}
	}

	override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)
	{
		Entity playerEnt;
		playerEnt = GetGame().CreatePlayer( identity, characterName, pos, 0, "NONE" );
		Class.CastTo( m_player, playerEnt );

		GetGame().SelectPlayer( identity, m_player );

		m_player.SetHealth("GlobalHealth", "Health", 100);
		m_player.SetHealth("GlobalHealth", "Blood", 5000);
		m_player.GetStatEnergy().Set(2500);
		m_player.GetStatWater().Set(2500);
		
		return m_player;
	}

	override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{
		EntityAI itemClothing;
		EntityAI itemEnt;
		ItemBase itemBs;
		float rand;

		itemClothing = player.FindAttachmentBySlotName( "Body" );
		{
			itemEnt = player.GetInventory().CreateInInventory("Compass");

            itemEnt = player.GetInventory().CreateInInventory("SodaCan_Pipsi");
			
			itemEnt = player.GetInventory().CreateInInventory("SodaCan_Pipsi");

            itemEnt = player.GetInventory().CreateInInventory("BandageDressing");

            itemEnt = player.GetInventory().CreateInInventory("TunaCan");

            itemEnt = player.GetInventory().CreateInInventory("TunaCan");

            itemEnt = player.GetInventory().CreateInInventory("Apple");

            itemEnt = player.GetInventory().CreateInInventory("Pear");

            itemEnt = player.GetInventory().CreateInInventory("Plum");
			
			itemEnt = player.GetInventory().CreateInInventory("Chemlight_White");
			
			itemEnt = player.GetInventory().CreateInInventory("ChernarusMap");
			
			
		};
		if ( itemClothing )
		{
			SetRandomHealth( itemClothing );
			
			itemEnt = itemClothing.GetInventory().CreateInInventory( "TunaCan" );
						if ( Class.CastTo( itemBs, itemEnt ) )
				itemBs.SetQuantity( 4 );

			SetRandomHealth( itemEnt );

			string chemlightArray[] = { "Chemlight_White", "Chemlight_Yellow", "Chemlight_Green", "Chemlight_Red" };
			int rndIndex = Math.RandomInt( 0, 4 );
			itemEnt = itemClothing.GetInventory().CreateInInventory( chemlightArray[rndIndex] );
			SetRandomHealth( itemEnt );
		}
		
		itemClothing = player.FindAttachmentBySlotName( "Legs" );
		if ( itemClothing )
			SetRandomHealth( itemClothing );
		
		itemClothing = player.FindAttachmentBySlotName( "Feet" );
		if ( itemClothing )
			SetRandomHealth( itemClothing );
	}
};

Mission CreateCustomMission(string path)
{
	return new CustomMission();
}

В файле по стандарту
 

void SpawnObject( string type, vector position, vector orientation )
{
    auto obj = GetGame().CreateObject( type, position );
    obj.SetPosition( position );
    obj.SetOrientation( orientation );
    obj.SetOrientation( obj.GetOrientation() ); //Collision fix
    obj.Update();
    obj.SetAffectPathgraph( true, false );
    if( obj.CanAffectPathgraph() ) GetGame().GetCallQueue( CALL_CATEGORY_SYSTEM ).CallLater( GetGame().UpdatePathgraphRegionByObject, 100, false, obj );
}
void SpawnBillding()
{
//Южная военка
SpawnObject( "Land_cype_rls_chp75b_up", "7307.250000 107.082001 670.230835", "-102.000137 0.000000 0.000000" );
SpawnObject( "Land_cype_rls_chp75b", "7306.899902 103.290344 671.881775", "0.000000 0.000000 0.000000" );
SpawnObject( "Land_cype_rls_chp75b", "7076.377930 97.449661 304.293518", "-3.000004 0.000000 0.000000" );
SpawnObject( "Land_cype_rls_chp75b_up", "7076.793457 101.237999 305.878448", "109.999985 0.000000 0.000000" );
//Водяные колонки
SpawnObject( "Land_Misc_Well_Pump_Yellow", "1148.006958 163.584290 12802.907227", "0.000000 0.000000 0.000000" );
SpawnObject( "Land_Misc_Well_Pump_Blue", "1095.430298 151.472595 12697.146484", "0.000000 0.000000 0.000000" );
SpawnObject( "Land_Misc_Well_Pump_Yellow", "1281.207031 161.120956 12690.176758", "0.000000 0.000000 0.000000" );
SpawnObject( "Land_Misc_Well_Pump_Yellow", "1252.983154 154.313049 12325.052734", "0.000000 0.000000 0.000000" );
SpawnObject( "Land_Misc_Well_Pump_Yellow", "1161.082397 147.922531 12561.540039", "0.000000 0.000000 0.000000" );
}

Запуск.....и сервер вроде запускается,но...доходит до спавна и всё, ресет.
Самое интресно,если прописать в сам инит-всё работает.

Share this post


Link to post
Share on other sites

Recommended Posts

  • 0

А файл то сам где лежит?

Просто думается мне у карты Ростов миссия сервера своя, и никак не dayzoffline.chernarusplus

Т.е. в строке

#include "$CurrentDir:\\mpmissions\\dayzoffline.chernarusplus\\@Mod\\SpawnBuilding\\Billding.c"

надо dayzoffline.chernarusplus как минимум на свою миссию изменить. ну и проверить расположение указанных файлов, что они по указанному относительному пути от папки сервера действительно лежат и точно в таком имени.

Share this post


Link to post
Share on other sites



  • 0
6 минут назад, paranoyk сказал:

Самое интресно,если прописать в сам инит-всё работает.

Помнится, я несколько месяцев назад, обращался с той же самой проблемой, только карта DeerIsle. Решить так и не удалось, в итоге спавню объекты через инит.

Share this post


Link to post
Share on other sites
  • 0

@123new Ору в ГОЛОС!!!!Боже, вот я тупооой...блин, ну очевидно же, но так лохануться, это полный атас. ПОЛНЫЙ!!!! Для намальска сделал же, а тут-седалищный нерв  зажат был наверно.

@FreddyCruger Проверьте путь, возможно не сработало из-за этого...:)))

Share this post


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

Проверьте путь, возможно не сработало из-за этого...:)))

если бы), сейчас покажу ошибку, где то скрин был

 

Share this post


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

А весь файл (без обьектов конечно) не приведёте?

почему же, легко: 
 

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));
}

void SpawnBuildings()
        {//Your custom spawned objects
			SpawnObject( "bldr_rds_grav_10_75", "3629.044922 10.612840 5486.519531", "-68.999977 -1.000000 -2.000000" );
			
}

 

Share this post


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

@paranoyk 
image.png.7fa9555eb1e5067639bf6791014f1d02.png

вот, и что бы я не делал, победить это невозможно

кодировки файла смотрите, игра понимает разве что вот эти, на этой версии нотпада. На новых хз, но примерно такие же.

1428579961_.png.f7bfafbcdea7161491b384f1581684b3.png

Share this post


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

image.png.8727c720286074236343b97e9dc3d18c.png

дуругю utf-8 попробуй или ansi

Share this post


Link to post
Share on other sites
  • 0

@FreddyCruger А другие не пробовали варианты типа
 

void SpawnObject( string type, vector position, vector orientation )
{
    auto obj = GetGame().CreateObject( type, position );
    obj.SetPosition( position );
    obj.SetOrientation( orientation );
    obj.SetOrientation( obj.GetOrientation() ); //Collision fix
    obj.Update();
    obj.SetAffectPathgraph( true, false );
    if( obj.CanAffectPathgraph() ) GetGame().GetCallQueue( CALL_CATEGORY_SYSTEM ).CallLater( GetGame().UpdatePathgraphRegionByObject, 100, false, obj );
}
void SpawnBuildings()
{//Your custom spawned objects
			SpawnObject( "bldr_rds_grav_10_75", "3629.044922 10.612840 5486.519531", "-68.999977 -1.000000 -2.000000" );
			
}

 

Share this post


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

или ansi

то же самое

 

7 минут назад, paranoyk сказал:

А другие не пробовали варианты типа

аналогичная ошибка

 

я же говорю, каким то удивительным образом, просто отказывается работать

Share this post


Link to post
Share on other sites
  • 0
#include "$CurrentDir:\mpmissions\empty.deerisle\spawn_buildings.c"
#include "$CurrentDir:\\mpmissions\\empty.deerisle\\main1.c"
#include "$CurrentDir:\mpmissions\empty.deerisle\CustomSpawnPlayerConfig\init_mod.c"

//BBP Cement Mixers -Begin Part1-
/* void SpawnObject( string type, vector position, vector orientation )
{
    auto obj = GetGame().CreateObject( type, position );
    obj.SetPosition( position );
    obj.SetOrientation( orientation );
    //Force collision update
    vector roll = obj.GetOrientation();
    roll [ 2 ] = roll [ 2 ] - 1;
    obj.SetOrientation( roll );
    roll [ 2 ] = roll [ 2 ] + 1;
    obj.SetOrientation( roll );
} */
void main()
{

	//INIT WEATHER BEFORE ECONOMY INIT------------------------
    Weather weather = g_Game.GetWeather();
    weather.MissionWeather(false);    // false = использовать погодный контроллер из Weather.c

    weather.GetOvercast().SetLimits( 0.3 , 1.0 ); // Пасмурная погода. Задать пределы
    weather.GetRain().SetLimits(0.0, 0.5); // Дождь. Задать пределы
    weather.GetFog().SetLimits(0.1, 0.28); // Туман. Задать пределы

    weather.GetOvercast().SetForecastChangeLimits(1.0, 1.0); // Пасмурная погода. Установить пределы изменения прогноза
    weather.GetRain().SetForecastChangeLimits(0.0, 0.06); // Дождь. Установить пределы изменения прогноза
    weather.GetFog().SetForecastChangeLimits(0.10, 0.30); // Туман. Установить пределы изменения прогноза

    weather.GetOvercast().SetForecastTimeLimits(1800, 1800); // Пасмурная погода. Установить пределы времени прогноза
    weather.GetRain().SetForecastTimeLimits(250, 500); // Дождь. Установить пределы времени прогноза
    weather.GetFog().SetForecastTimeLimits(1800, 1800); // Туман. Установить пределы времени прогноза

    weather.GetOvercast().Set(Math.RandomFloatInclusive(0.3, 0.4), 0, 0); // Пасмурная погода. Установить математическое случайное число с плавающей запятой
    weather.GetRain().Set(Math.RandomFloatInclusive(0.0, 0.2), 0, 0); // Дождь. Установить математическое случайное число с плавающей запятой
    weather.GetFog().Set(Math.RandomFloatInclusive(0, 1), 0, 0); // Туман. Установить математическое случайное число с плавающей запятой

    weather.SetWindMaximumSpeed(60); // Установить максимальную скорость ветра
    weather.SetWindFunctionParams(0.1, 1.0, 50); // Установить параметры функции ветра

	//INIT ECONOMY--------------------------------------
	Hive ce = CreateHive();
	if ( ce )
		ce.InitOffline();

	//DATE RESET AFTER ECONOMY INIT-------------------------
	int year, month, day, hour, minute;
	int reset_month = 6, reset_day = 10;
	GetGame().GetWorld().GetDate(year, month, day, hour, minute);

	if ((month == reset_month) && (day < reset_day))
	{
		GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
	}
	else
	{
		if ((month == reset_month + 1) && (day > reset_day))
		{
			GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
		}
		else
		{
			if ((month < reset_month) || (month > reset_month + 1))
			{
				GetGame().GetWorld().SetDate(year, reset_month, reset_day, hour, minute);
			}
		}
	}
	SpawnBillding();
 //GetCEApi().ExportProxyData( "7500 0 7500" , 10000 ); // 
 //CEApi TestHive = GetCEApi();
 //TestHive.ExportProxyProto();
 //TestHive.ExportProxyData( "8096 0 8096", 16384 );
 //TestHive.ExportClusterData() ;
}

вот часть инита с функцией

Share this post


Link to post
Share on other sites
  • 0

Хм, да вроде всё верно...бред какой то. К сожалению не юзал "оленей", а не может быть что именно глюк карты?

 

Share this post


Link to post
Share on other sites
  • 0

А через инит, все тоже самое работает нормально, вот что странно

Share this post


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

Хм, да вроде всё верно...бред какой то. К сожалению не юзал "оленей", а не может быть что именно глюк карты?

 

не может, игра не работает таким образом))

14 минут назад, FreddyCruger сказал:

А через инит, все тоже самое работает нормально, вот что странно

 

29 минут назад, FreddyCruger сказал:

то же самое

 

аналогичная ошибка

 

я же говорю, каким то удивительным образом, просто отказывается работать

ну хочешь по тимвиеверу погляжу этот момент, у тебя где-то косяк или в коде файла/прописи строки, или в кодировке

Share this post


Link to post
Share on other sites
  • 0
34 минуты назад, 123new сказал:

по тимвиеверу погляжу этот момент

могу просто все два файла скинуть)

 

Share this post


Link to post
Share on other sites
  • 0

Только что загрузил скрипт на чернорусскую карту-всё сработало...Если как говорит Фреди на оленьем не работает-то это кот Шрёдингера в исполнении бегемотов.

 

Share this post


Link to post
Share on other sites
  • 0

вот

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

Share this post


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

загрузил скрипт

в смысле мой? ну так я говорю же, если вставляю код из файла spawnbuilding.c в инит, он работает, то есть он рабочий, но не работает через подключение файла

Share this post


Link to post
Share on other sites
  • 0

@FreddyCruger Я загрузил его отдельным файлом. Всё сработало на карте черноруссии.
Подумал об одно хрени,но тут пишет что "нет знака закрытия"...бред какой то.

 

Share this post


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

вот

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

потому как прописывать надо правильно. замени

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

Share this post


Link to post
Share on other sites
  • 0
3 часа назад, 123new сказал:

потому как прописывать надо правильно. замени

чуда не произошло (
image.png.4d49cb1e89ca2cd8c9252ab22a84ab94.png

Share this post


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

чуда не произошло (
image.png.4d49cb1e89ca2cd8c9252ab22a84ab94.png

в таком случае ищите что вы правили после моих правок, так как то что я выше скинул работает 100% (да да, я делал ради этого локальный сервер на deerisle и проверял специально, правда этого никто не заметит). Вот вся миссия 

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

работающая ну прям 100%, рабочей уж некуда, тока весь сервер вам скинуть

Share this post


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

правда этого никто не заметит)

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

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.