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

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

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

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

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

DAYZ enScript (вопросы, ответы)

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

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

 

И ещё, если не сложно, дай инфу, где эти самые симптомы и агенты - хочу посмотреть, что оно такое, как к нему обращаться и т.п. Есть у меня кое-какие планы на этот счёт.

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


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



VIRrusR 

По симптомам кури класс SymptomIDs

Ну поищи SymptomIDs.SYMPTOM_COUGH

SYMPTOM_COUGH это константа в классе

 

А по агентам

class AgentBase

 

 CHOLERA   = 1;
 INFLUENZA   = 2;
 SALMONELLA  = 4;
 BRAIN    = 8; //Это ржач от пожирания человечены
 

ну и примеры некоторые рабоы с ними в

class PlayerAgentPool и тп

 

я еще не рыл ничего кроме симптомов, но тут не сложно имхо

 

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


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

Где их искать то, классы эти? Мне с моим компом, да ещё по Инету, чтоб пяток файлов открыть - до вечера...

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

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


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

123new ,да, это я понял, спасибо!:smile:

Я просто про 0 уточнить хочу - это значение, с которого начинается отсчёт элементов или это что-то иное?

0 выдаст только если найдет искомое в первом элементе массива

 

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


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

Ребят, кто знает как сделать так, чтобы в логах отображались действия игроков с GardenPlot(-ами)? Подозреваю что делается это в файле PluginAdminLog.c, а как - не знаю

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

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


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

BorizzK Как собственно, человеку ничего в этом не понимающем поставить сей чудо на сервер? Можно инструкцию для умственно отсталых?)

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


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

BorizzK ну более подробный гайд как поставить на сервер. Вроде поста с триггером

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


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

Да просто

КОд в файл с расширением .c

главное что бы кодировка была UTF-8

и через #include подключить

оно само и взлетит

 

Как файл подключить - ну тут на форме 1000 примеров есть

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


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

Может хотя бы здесь, кто-нибудь сможет помочь с респавном техники, которая была заспавнена скриптом? Мне в init.c нужно добавить что-то вроде параметра "<restock>30</restock>". В файлах игры нашёл вот такую инфу:

class CEItemProfile
{
proto native int GetNominal(); // nominal - how many items should be aproximately in map
proto native int GetMin(); // min - minimal count should be available in map
proto native float GetLifetime(); // lifetime in (seconds) - what is the idle before item abandoned at ground gets deleted
proto native float GetRestock(); // restock is oposite of lifetime - idle before item is allowed to respawn when required
};

интересует конечно же, прежде всего - GetRestock(); но как это правильно использовать в моём коде, ума не приложу.

 

Мой скрипт для спавна техники на сервере:

void spawnVehicle(string type, vector position)
{
    EntityAI car = GetGame().CreateObject(type, position);
    car.SetPosition(position);
        autoptr array<string> m_Attachments = {
        "HeadlightH7","HeadlightH7","SparkPlug","CarBattery","CarRadiator","EngineBelt",
        "CivSedanDoors_Driver","CivSedanDoors_CoDriver","CivSedanDoors_BackLeft","CivSedanDoors_BackRight","CivSedanHood","CivSedanTrunk",
        "CivSedanWheel","CivSedanWheel","CivSedanWheel","CivSedanWheel"};
        if (car)        
            foreach (string att : m_Attachments)
            car.GetInventory().CreateAttachment(att);
        auto carfluids = Car.Cast( car );
        carfluids.Fill( CarFluid.FUEL, 100 );
        carfluids.Fill( CarFluid.OIL, 1000 );
        carfluids.Fill( CarFluid.BRAKE, 1000 );
        carfluids.Fill( CarFluid.COOLANT, 1000 );
}



void main()
{
    //VEHICLE
spawnVehicle( "CivilianSedan", "8742.036133 8.230740 2331.631104");
spawnVehicle( "CivilianSedan", "8877.351563 9.299133 2257.636230");
}

Я бы использовал спавн техники по средствам "cfgspawnabletypes.xml" и без всяких скриптов, но я не знаю как без скрипта, заспавнить уже заправленную топливом технику.

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


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

nymphoz тебе надо, что бы заспавленная скриптом авта переспавнилась через определенное время?

Нет ничего проще

 

Запускаете через calllater каждые 5 мин функцию где проверяете есть обьект машины или нет и если нет вызываете функцию ее спавна

 

GetRestock касается ток центральной экономики и к заспавленному "вручную" отношения не имеет

 

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

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


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

BorizzK звучит конечно хорошо, а можно пожалуйста пример сделать на моём скрипте спавна, который я указал выше?

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

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


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

nymphoz Набросал по бырому

Не проверял

 

ЛУчше конечно через отдельный класс сделать

 

ref array<EntityAI> m_SpawnedCars;
ref array<vector> m_SpawnedCarsPositions;

void spawnVehicle(string type, vector position)
{
    EntityAI car = GetGame().CreateObject(type, position);
    car.SetPosition(position);
	
        autoptr array<string> m_Attachments = {
        "HeadlightH7","HeadlightH7","SparkPlug","CarBattery","CarRadiator","EngineBelt",
        "CivSedanDoors_Driver","CivSedanDoors_CoDriver","CivSedanDoors_BackLeft","CivSedanDoors_BackRight","CivSedanHood","CivSedanTrunk",
        "CivSedanWheel","CivSedanWheel","CivSedanWheel","CivSedanWheel"};
    
		if (car)
		{
            foreach (string att : m_Attachments)
			{
				car.GetInventory().CreateAttachment(att);
			}
			Car f_Car = Car.Cast(car); 
			f_Car.Fill(CarFluid.FUEL, 1000);
			f_Car.Fill(CarFluid.COOLANT, 1000);
			f_Car.Fill(CarFluid.OIL, 1000);
			f_Car.Fill(CarFluid.BRAKE, 1000);
			m_SpawnedCars.Insert(car);
			m_SpawnedCarsPositions.Insert(position);
		}
}


void SpawnVehicles()
{
	spawnVehicle( "CivilianSedan", "8742.036133 8.230740 2331.631104");
	spawnVehicle( "CivilianSedan", "8877.351563 9.299133 2257.636230");
	GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(CheckRespawnVehicles, 300000, true);
}

void CheckRespawnVehicles()
{
	for (i = 0; i < m_SpawnedCars.Count(); i++)
	{
		if (!m_SpawnedCars[i])
		{
			vector pos = m_SpawnedCarsPositions[i];
			m_SpawnedCars.Remove(i);
			m_SpawnedCarsPositions.Remove(i);
			spawnVehicle("CivilianSedan", pos);
		}
	}
}


void main()
{
    //VEHICLE
	m_SpawnedCars = new array<EntityAI>;
	m_SpawnedCarsPositions = new array<vector>;
	SpawnVehicles();
}

 

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


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

BorizzK СПАСИБО тебе огромное, чувак, всё заработало. Единственно, в коде был небольшой косяк, в функции "void CheckRespawnVehicles()" пришлось добавить "int i". И ещё один вопрос, если я захочу заспавнить не только волгу, но и другие машины, то мне просто нужно будет добавить в функцию

        if (!m_SpawnedCars[i])
        {
            vector pos = m_SpawnedCarsPositions[i];
            m_SpawnedCars.Remove(i);
            m_SpawnedCarsPositions.Remove(i);
            spawnVehicle("CivilianSedan", pos);
        }
    }

к примеру spawnVehicle("OffroadHatchback", pos); и всё будет работать?

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


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

nymphoz ну ч быстро набросал

Про ниву

Ща до компа дойду усовершентсвую

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


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

BorizzK Ну ты просто машина))) а числовое значение в этой строке это миллисекунды или что? GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(CheckRespawnVehicles, 300000, true);

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


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

nymphoz 300000 миллисекунд - те 5 минут

можно и чаще проверять

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


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

BorizzK ок, с этим понятно, а <lifetime> как я понял, просто выставляется в CE и будет работать на созданные вручную тачки, вот только интересно с какого момента начинается отсчёт параметра <lifetime> сразу после взаимодействия с объектом или с момента отдаления от объекта на какое-то расстояние?

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


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

nymphoz liftime на любой обьект появившийся на карте - да

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

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


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

nymphoz 


ref array<EntityAI> m_SpawnedCars;
ref array<vector> m_SpawnedCarsPositions;
ref array<string> m_SpawnedCarsClassNames;

void spawnVehicle(string type, vector position, array<string> m_Attachments)
{
	if (NearbyCars(position, 5)) return; //если в радиусе 5м есть автомобили - прерываем
	
    EntityAI car = GetGame().CreateObject(type, position);
    car.SetPosition(position);
	
 		if (car)
		{
            foreach (string att : m_Attachments)
			{
				car.GetInventory().CreateAttachment(att);
			}
			Car f_Car = Car.Cast(car); 
			f_Car.Fill(CarFluid.FUEL, 1000);
			f_Car.Fill(CarFluid.COOLANT, 1000);
			f_Car.Fill(CarFluid.OIL, 1000);
			f_Car.Fill(CarFluid.BRAKE, 1000);
			
			m_SpawnedCars.Insert(car);
			m_SpawnedCarsPositions.Insert(position);
			m_SpawnedCarsClassNames.Insert(type);
		}
}

void CheckRespawnVehicles()
{
	for (int i = 0; i < m_SpawnedCars.Count(); i++)
	{
		if (!m_SpawnedCars[i])
		{
			vector pos = m_SpawnedCarsPositions[i];
			string classname = m_SpawnedCarsClassNames[i];
			m_SpawnedCars.Remove(i);
			m_SpawnedCarsPositions.Remove(i);
			m_SpawnedCarsClassNames.Remove(i);
			spawnVehicle(classname, pos);
		}
	}
}

bool NearbyCars(vector pos, int radius) //Проверка машин по координатам в радиусе
{
	array<Object> nearest_objects = new array<Object>;
	array<CargoBase> proxy_cargos = new array<CargoBase>;
	pos[1] = GetGame().SurfaceY( pos[0], pos[2] );
	GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, proxy_cargos); 
	for ( int i = 0; i < nearest_objects.Count(); i++ )
	{
		if (nearest_objects.Get(i).IsTransport()) return true; //Обьект машина
	}
	return false; //Машин не обнаружено
}	

void SpawnVehicles()
{
    autoptr array<string> m_CivSedanAttachments = {
		"HeadlightH7","HeadlightH7","SparkPlug","CarBattery","CarRadiator","EngineBelt",
		"CivSedanDoors_Driver","CivSedanDoors_CoDriver","CivSedanDoors_BackLeft","CivSedanDoors_BackRight","CivSedanHood","CivSedanTrunk",
		"CivSedanWheel","CivSedanWheel","CivSedanWheel","CivSedanWheel"
	};
    
    autoptr array<string> m_OffHatchAttachments = {
		"HeadlightH7","HeadlightH7","SparkPlug","CarBattery","CarRadiator","EngineBelt",
		"HatchbackDoors_Driver","HatchbackDoors_CoDriver","HatchbackHood","HatchbackTrunk",
		"HatchbackWheel","HatchbackWheel","HatchbackWheel","HatchbackWheel"
	};

	spawnVehicle("CivilianSedan", "8742.036133 8.230740 2331.631104",m_CivSedanAttachments);

	spawnVehicle("OffroadHatchback", "8877.351563 9.299133 2257.636230",m_OffHatchAttachments);
	
	GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(CheckRespawnVehicles, 300000, true);
}

void main()
{
    //VEHICLE
	m_SpawnedCars = new array<EntityAI>;
	m_SpawnedCarsPositions = new array<vector>;
	m_SpawnedCarsClassNames = new array<string>;
	SpawnVehicles();
}

Надо проверить

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

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


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

BorizzK ну это прям вообще серьёзно выглядит, через минут 15-20 проверю на работоспособность.

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


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

BorizzK В общем, сначала не проходило компиляцию

void CheckRespawnVehicles()
{
    for (int i = 0; i < m_SpawnedCars.Count(); i++)
    {
        if (!m_SpawnedCars[i])
        {
            vector pos = m_SpawnedCarsPositions[i];
            string classname = m_SpawnedCarsClassNames[i];
            m_SpawnedCars.Remove(i);
            m_SpawnedCarsPositions.Remove(i);
            m_SpawnedCarsClassNames.Remove(i);
            spawnVehicle(classname, pos);
        }
    }
}

ругалось на последнюю строку, мол недостаточно параметров в функции "SpawnVehicle" ну очевидно что не хватает массива после параметра "pos", я пытался его поставить, у меня в любом случае компиляцию не проходит, мб я что-то не то ставил, когда я написал третьим параметром "null" то сервак стартанул успешно, но по факту заспавнилась только нива, я решил проверить как респавнится она, в общем она зареспавнилась, но абсолютно без атачментов. Такие дела. ну атачментов по всей видимости нету из-за параметра "null" а почему волги нет, это уже вопрос.

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

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


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

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

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

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

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

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

Войти

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

Войти сейчас

  • Похожие публикации

    • Автор: RedWoodGamer
      Ищу мододела который напишет мод на поиск предметов в ванильной фурнитуре с возможностью конфигурации лутабельных объектов и лута внутри них, а так-же КД на лутаемый объект (Простыми словами чтобы нельзя было лутать один и тот же объект двум игрокам одновременно, если один залутал, включается определённый таймер и второй игрок может залутать его через прошедшее время, либо же завязать это время на рестарт сервера.)
      Бюджет есть, оценивайте свою работу и предлагайте цену, кто не хочет в комментариях вот Discord : RedWood#6323
    • Автор: CubeIn
      Приветствую друзья, возникла неприятная ошибка.
      Подписал все ключи через DS Utils, вставил ключ в северную часть, но все равно при заходе на сервер пишет данную ошибку.
      Client contains PBO which is not part of server data
       
    • Автор: CubeIn
      Есть ли у кого ни будь шаблон или инструкция как создать свой шеврон?
      Нашел видео от Фидова, но ссылка на шаблон не действительна

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

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

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

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