PJIIOxa

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

Вопрос

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

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

 

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


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

18 ответов на этот вопрос

Забронировать это рекламное место


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

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


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

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

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

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


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

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

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

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


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

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 строчки связанные со скриптом запускаю сервер все работает и сейв зона появляется с контейнерами и торговци.

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


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

PJIIOxa строка

[Trader] Missing trader data for server.

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

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

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

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

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

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

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

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


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

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

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

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


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

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

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

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

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


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

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

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


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

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

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

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


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

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

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

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

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


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

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

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

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

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

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

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

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


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

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

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


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

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

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

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


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

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

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

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

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


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

Войти

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


Войти сейчас