Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • OPG PROJECT

    Группа ВК

    По-настоящему хороший сервер с уникальным модом! 
     Заходи к нам,тебе тут понравится!
  • 0
PJIIOxa

Mod Trader конфликтует с Триггеры с газом[1.0][By NoNameUltima]

Установлен скрипт Триггеры с газом[1.0][By NoNameUltima], устанавливаю мод Trader и в игре выдает сообщение [Trader] Missing  trader data from server!!!

Подскажите есть ли какой способ исправить эту проблему???

 

Share this post


Link to post
Share on other sites

18 answers to this question

Recommended Posts




  • 0

ZigoFrend блин ну я видел на нескольких проектах что они оба работают, только вот я немогу понять почему у меня такая фигня.

Share this post


Link to post
Share on other sites
  • 0

[Trader] Missing  trader data from server выдает сообщение, убираю из Init все что связано с триггерами с газом работает мод Trader и зоны с контейнерами и торговцами появляются

Edited by PJIIOxa (see edit history)

Share this post


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

[Trader] Missing  trader data from server выдает сообщение, убираю из Init все что связано с триггерами с газом работает мод Trader и зоны с контейнерами и торговцами появляются

проверяйте как настроено все, тупым копипастом тут не получится

Share this post


Link to post
Share on other sites
  • 0

123new Вот мой init.c

#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\DamagedZone.c"
#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\PlayersMessagesCount.c"
#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\InfoMessages.c"
#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\plugins\\AirDrop.c"
#include "$CurrentDir:\\mpmissions\\dayzoffline.chernarusplus\\Scripts\myzone.c"
ref MyZone_PlugIn MyZone = new MyZone_PlugIn();
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.4, 0.6), 1, 0);
	weather.GetRain().Set( 0, 0, 1);
	weather.GetFog().Set( Math.RandomFloatInclusive(0.05, 0.1), 1, 0);
	
	GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(SendPlayersCount, TIME_InfoPlayers_Repeat, true);
    GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(CustomInformation, TIME_Information_Repeat, true);  
	
	//INIT ECONOMY--------------------------------------
	Hive ce = CreateHive();
	if ( ce )
		ce.InitOffline();

	//DATE RESET AFTER ECONOMY INIT-------------------------
	int year;
	int month;
	int day;
	int hour;
	int minute;

	GetGame().GetWorld().GetDate(year, month, day, hour, minute);

    if (((month <= 9) && (day < 20)) || ((month >= 10) && (day > 20)))
    {
        month = 9;
        day = 20;
		
		GetGame().GetWorld().SetDate(year, month, day, hour, minute);
	}
}

class CustomMission: MissionServer
{	
    void OnInit () 
	{
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(GAS_ZONE_TRIGGER, 10000, true);
	}

    override void OnPreloadEvent(PlayerIdentity identity, out bool useDB, out vector pos, out float yaw, out int queueTime)
	{
		//Читаем spqwn time из конфига сервера
        if (GetGame().ServerConfigGetInt("spawnTime") > 0)
		{
			queueTime = GetGame().ServerConfigGetInt("spawnTime");
		}

		if (GetHive())
		{
			// Preload data on client by character from database
			useDB = true;
		}
		else
		{
			// Preload data on client without database //Вот это я не понял зачем
			useDB = false;
			pos = "1189.3 0.0 5392.48";
			yaw = 0;
		}
	}
	
    bool Activate_MyZone_PlugIn = true;
	override void TickScheduler(float timeslice)
    {
        GetGame().GetWorld().GetPlayerList(m_Players);
        if( m_Players.Count() == 0 ) return;
        for(int i = 0; i < SCHEDULER_PLAYERS_PER_TICK; i++)
        {
            if(m_currentPlayer >= m_Players.Count() )
            {
                m_currentPlayer = 0;
            }

            PlayerBase currentPlayer = PlayerBase.Cast(m_Players.Get(m_currentPlayer));
            if (Activate_MyZone_PlugIn) { MyZone_PlugIn.CheckingPosition(currentPlayer); } //Check if player is near myzone
            currentPlayer.OnTick();
            m_currentPlayer++;
        }
    }
	
	ref AirDrop AirDropClass; // Class definition

    void CustomMission()
    {
	    AirDropClass = new AirDrop;		
    }

    float TimerSlice; // Timeslice
    override void OnUpdate( float timeslice )
    {
	    super.OnUpdate( timeslice );

	    // FPS Fix
	    TimerSlice += timeslice;
	    if (TimerSlice >= AirDropClass.TimesliceMultiplyier)
	    {
	      	AirDropClass.CreateAirDrop();
		    TimerSlice = 0;	
	    }
    }

	void SetRandomHealth(EntityAI itemEnt)
	{
		if ( itemEnt )
		{
			int rndHlt = Math.RandomInt(55,100);
			itemEnt.SetHealth("","",rndHlt);
		}
	}

	override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName)
	{
		Entity playerEnt;
		playerEnt = GetGame().CreatePlayer(identity, characterName, pos, 0, "NONE");//Creates random player
		Class.CastTo(m_player, playerEnt);
		
		GetGame().SelectPlayer(identity, m_player);
		
		return m_player;
	}
	
	override void StartingEquipSetup(PlayerBase player, bool clothesChosen)
	{
/*
		player.RemoveAllItems();

		EntityAI item = player.GetInventory().CreateInInventory(topsMissionArray.GetRandomElement());
		EntityAI item2 = player.GetInventory().CreateInInventory(pantsArray.GetRandomElement());
		EntityAI item3 = player.GetInventory().CreateInInventory(shoesArray.GetRandomElement());
*/
		EntityAI itemTop;
		EntityAI itemEnt;
		ItemBase itemBs;
		float rand;
		
		itemTop = player.FindAttachmentBySlotName("Body");
		
		if ( itemTop )
		{
			itemEnt = itemTop.GetInventory().CreateInInventory("RoadFlare");
			SetRandomHealth(itemEnt);
		
			itemEnt = itemTop.GetInventory().CreateInInventory("CanOpener");
			SetRandomHealth(itemEnt);
		}

		rand = Math.RandomFloatInclusive(0.0, 1.0);
		if ( rand < 0.25 )
			itemEnt = player.GetInventory().CreateInInventory("SodaCan_Cola");
		else if ( rand > 0.75 )
			itemEnt = player.GetInventory().CreateInInventory("SodaCan_Spite");
		else
			itemEnt = player.GetInventory().CreateInInventory("SodaCan_Pipsi");
		
		SetRandomHealth(itemEnt);

		rand = Math.RandomFloatInclusive(0.0, 1.0);
		if ( rand < 0.35 )
			itemEnt = player.GetInventory().CreateInInventory("SardinesCan");
		else if ( rand > 0.65 )
			itemEnt = player.GetInventory().CreateInInventory("SpaghettiCan");
		else
			itemEnt = player.GetInventory().CreateInInventory("TacticalBaconCan");
		
		SetRandomHealth(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("SantasHat");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetInventory().CreateInInventory("CourierBag");
		itemBs = ItemBase.Cast(itemEnt);
		
		itemEnt = player.GetHumanInventory().CreateInInventory("Rag");
		if ( Class.CastTo(itemBs, itemEnt ) )
		itemBs.SetQuantity(6);

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

А вот сам DamagedZone.c

vector CorrectToGroundPosY(vector pos)
{
	float pos_x = pos[0];
	float pos_z = pos[2];
	float pos_y = GetGame().SurfaceY(pos_x, pos_z);
	vector tmp_pos = Vector(pos_x, pos_y, pos_z);
	return tmp_pos;
}
void GAS_ZONE_TRIGGER()
{
	/*
		GAS_ZONE_TRIGGER
		Автор: NoNameUltima
		skype: hf-trade
	*/
	//	Зараженные зоны
	TVectorArray	gas_points		=	{"1632 0 14061"};
	//	Массив намордников
	TStringArray	gas_masks		=	{"GasMask", "GP5GasMask"};
	//	Радиус зон
	int 			radius			=	400;
	//	Наносимый урон
	float 			damage_value	=	10;

	ref array<Man> players 			=	new array<Man>;
	GetGame().GetPlayers( players );		
	PlayerBase	player;
	vector		position_player;		
	int			x;
	bool		isGasMask;
	int			attCount;
	int			attIdx;
	EntityAI	attachment;
	ItemBase	item;
	string		className;
	float		damage_player;
	
	for (int i = 0; i < players.Count(); i++)
		{
			Class.CastTo(player, players.Get(i));
			position_player	=	player.GetPosition();
			for (x	=	0; x < gas_points.Count(); x++)
				{
					if ( (vector.Distance(position_player, CorrectToGroundPosY(gas_points.Get(x)))) < radius )
						{
							isGasMask	=	false;	
							attCount	=	player.GetInventory().AttachmentCount();								
							for (attIdx	=	0; attIdx < attCount; attIdx++)
								{
									attachment	=	player.GetInventory().GetAttachmentFromIndex(attIdx);
									if ( attachment.IsItemBase() )
										{
											item		=	Class.Cast(attachment);
											className	=	item.GetType();									
											if ( gas_masks.Find(className) >= 0 )
												{
													//Print ("Намордник найден!");
													isGasMask	=	true;
													break;
												}												
										}
								}
							if (isGasMask == false)
								{
									//Print ("Намордник не найден!");
									damage_player	=	player.GetHealth("GlobalHealth", "Health");
									player.SetHealth("GlobalHealth", "Health", damage_player - damage_value);
								}
						}
				}
		}
}

И я вообще не понимаю почему они конфликтуют. тупо сейв зоны с торговцами нет на сервере и с лева внизу пишет сообщение [Trader] Missing trader data for server. Убираю из init строчки связанные со скриптом запускаю сервер все работает и сейв зона появляется с контейнерами и торговци.

Share this post


Link to post
Share on other sites
  • 0

PJIIOxa строка

[Trader] Missing trader data for server.

означает. что трейдер-конфиг не получен клиентом игры от сервера.
Чтобы все успешно работало, надо:

1. Подключить мод и на сервере и на клиенте игры

2. Убедиться, что в параметрах запуска и сервера и клиента всегго одна строка -mod= в наличии

3. Убедиться в наличии папки Trader в папке с директорией вашего Profiles сервера (эта папка в параметрах запуска сервера задается)

4. Убедитсья, что в папке Trader лежат родные конфиги от последнего обновления этого мода, а сами моды на клиенте и сервере игры идентичны

5. Убедиться, что в параметрах запуска сервера имеется -filepatching

И только тогда должно все работать именно как и должно.
ПРикладывайте script.log, crash.log, посмотрим что там у вас, а также неплохо бы параметры запуска сервера взглянуть и проверить наличие и сами указанные выше файлы в директории profiles

Share this post


Link to post
Share on other sites
  • 0

123new вот логи и параметры запуска сервера

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

Share this post


Link to post
Share on other sites
  • 0

PJIIOxa на сервере в папке [SM]ConFigServer лежит папка Trader с 3-мя файлами конфигурации от мода, которые лежат в самой папке мода? Если да, попробуй папку удалить и добавить заного.

И судя с

DESKTOP-0Q531K4, 06.02 2019 12:31:23
NULL pointer to instance
Class:      'CustomMission'
Function: 'OnUpdate'
Stack trace:
TM/Trader/scripts/5_Mission/mission\missionserver.c:178
JM/PermissionsFramework/Scripts/5_Mission/missionserver.c:36
JM/COT/Scripts/5_Mission/missionserver.c:68
$CurrentDir:mpmissions\dayzOffline.chernarusplus\init.c:101
scripts/3_Game/DayZGame.c:1665

в крашлоге и

SCRIPT    (E): NULL pointer to instance
Class:      'CustomMission'
Function: 'OnUpdate'
Stack trace:
TM/Trader/scripts/5_Mission/mission\missionserver.c:178
JM/PermissionsFramework/Scripts/5_Mission/missionserver.c:36
JM/COT/Scripts/5_Mission/missionserver.c:68
$CurrentDir:mpmissions\dayzOffline.chernarusplus\init.c:101
scripts/3_Game/DayZGame.c:1665

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

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites
  • 0

123new да лежит в том то и дело что удаляю из init все что связано с триггерами газа перезапускаю сервер и появляются тогда сейв зоны с трейдерами.

Share this post


Link to post
Share on other sites
  • 0

PJIIOxa я мог бы предположить что мод переписывает что-то из функций сервера, но также нет. т.к. у меня на сервере все работает нормально. Попробую сегодня вечером на чистом сервере. Если тоже все ок будет, боюсь, тут сервер пересобрать проще будет.

В логах script.log к слову я вообще не вижу инициализации трейдер мода у вас, и это весьма не нормально, насколько знаю.

Share this post


Link to post
Share on other sites
  • 0

123new дак уже пересобирал сервер с чистого сразу добавляю в Init скрипт на триггер с газом и запускаю сервер только с этим скриптом и плюсом с модом Trader один фиг ни торговцев ни торговых зон в игре нет только лишь сообщение Missing trader data for server.

Убираю из init триггер с газом запускаю сервер только с модом Trader все работает.

Edited by PJIIOxa (see edit history)

Share this post


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

123new дак уже пересобирал сервер с чистого сразу добавляю в Init скрипт на триггер с газом и запускаю сервер только с этим скриптом и плюсом с модом Trader один фиг ни торговцев ни торговых зон в игре нет только лишь сообщение Missing trader data for server.

Убираю из init триггер с газом запускаю сервер только с модом Trader все работает.

что-то у вас не так стоит явно. Когда мод активен и стоит без ошибок, пишется такое:

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

Это скрин, кстати, с сервера где есть и трейдер и зоны эти.

Таких строк в вашем scripts.log не наблюдаю. Т.е. априори сам мод на стороне сервера у вас не подключился. Советую проверить корректность имени папки мода в таком случае.

Share this post


Link to post
Share on other sites
  • 0

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

Share this post


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

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

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

Share this post


Link to post
Share on other sites
  • 0

123new вот запустил сервер, из init.c удалил вот это

#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\DamagedZone.c"

и вот это
 

void OnInit () 
	{
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(GAS_ZONE_TRIGGER, 10000, true);
	}

вот результат запуска сервера все работает нормально

 

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

Share this post


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

123new вот запустил сервер, из init.c удалил вот это


#include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\DamagedZone.c"

и вот это
 


void OnInit () 
	{
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(GAS_ZONE_TRIGGER, 10000, true);
	}

вот результат запуска сервера все работает нормально

 

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

нашел мини-ошибку. Очередной раз спасибо разрабам игры за отсутствие документации по новому языку в релизной версии игры.

Косяк в init.с в функции OnInit()

Правильное прописывание:

override void OnInit () 
	{
		super.OnInit();
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(GAS_ZONE_TRIGGER, 10000, true);
	}

Исправлю в шапке темы гайда код.

 

Edited by 123new (see edit history)

Share this post


Link to post
Share on other sites
  • 0

123new спасибо за прояснение вот и решилась моя проблема все заработало, и скрипты все которые стояли и мод Trader

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.