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

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

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

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

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

Триггеры с газом[1.0][By NoNameUltima]

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

8 минут назад, Ewgen сказал:

зелено надо в другой файл пихать

я же говорю два инклуда надо делать

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

 

DamagZone это газ там и пиши координаты палово

DamagZoneR это радейка там и пиши координаты зелено

 

ну или возможно дальше условие задать если например ид зоны такой то делать это (хотя тут хз будет работать так или нет)


Спасибо, получится слишком много файлов

 

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


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

Подскажите как прикрутить звук счетчика гейгера при нахождении в зоне

что то у меня не получается

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


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

Знатоки, добрый день.

Подскажите, пожалуйста, как прикрутить оповещения к входу/выходу из зон на стороне сервера? Чтоб отображались только при входе и выходе, а не сплошной стеной текста каждые 5 секунд? Пытался сделать таким образом:

class Zone 
{
	int id;
	int type;
	vector pos;
	float radius;
}

enum ZoneType 
{
	SAFE,
	GAS,
	RAD,
	BIO
}

ref array<ref Zone> ga_zones = new array<ref Zone>;

ref ControllerZones ctrl_zones = new ControllerZones;

class ControllerZones 
{
	bool IsInZone = false;
	void ControllerZones() 
	{
		int id;
		vector pos;
		float radius;
		int type = 0;

		id = 0; // Тюрьма Алкатрас
		pos = "2719 0 1280"; 
		radius = 300;
		AddZone(id, pos, radius);
		
		id = 1; // Военка Тисы
		pos = "1655 0 14068"; 
		radius = 600;
		AddZone(id, pos, radius);
		
		id = 2; // Скалистый
		pos = "13806 0 2890"; 
		radius = 400;
		AddZone(id, pos, radius);
		
		id = 3; //  Троицкое
		pos = "7890 0 14697"; 
		radius = 300;
		AddZone(id, pos, radius);
		
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(CheckZones, 5000, true);
	}
	
	void ~ControllerZones() 
	{
	}
	
	void AddZone(int id, vector pos, float radius, int type = ZoneType.BIO) 
	{
		ref Zone zone = new ref Zone;
		
		zone.id = id;
		zone.pos = pos;
		zone.radius = radius;
		zone.type = type;

		ga_zones.Insert(zone);
	}
	
	bool InZone(PlayerBase player, ref Zone zone) 
	{
		vector player_position = player.GetPosition();
		player_position[1] = 0;
		if( (vector.Distance(player_position, zone.pos)) < zone.radius ) 
		{
			if (!IsInZone)
			{
				NotificationSystem.SendNotificationToPlayerIdentityExtended(player.GetIdentity(), 5, "ВНИМАНИЕ!", "Вы вошли в зону радиации Алькатраса!", "Predators_diseases/data/radiation.paa");
				IsInZone = true;
			}
			return true;
		}
		if (IsInZone)
		{
			NotificationSystem.SendNotificationToPlayerIdentityExtended(player.GetIdentity(), 5, "ВНИМАНИЕ!", "Вы покинули зону сильной радиации!", "Predators_diseases/data/radiation.paa");
			IsInZone = false;
			return false;		
		};
		return false;
	};

	
	void CheckZones() 
	{
		ref array<Man> players = new array<Man>;
		GetGame().GetPlayers( players );
		
		for ( int i = 0; i < players.Count(); i++ )
		{
			PlayerBase player;
			Class.CastTo(player, players.Get(i));
			
			for ( int j = 0; j < ga_zones.Count(); j++ ) 
			{
				if(InZone(player, ga_zones.Get(j))) 
				{
					break;
				}
			}
		}
	}
}

На первой зоне, прописанной в ControllerZones всё работает идеально, но в остальных зонах начинают одновременно выводиться сообщения "Вы вошли в зону" и "Вы вышли из зоны" всё время пребывания в радиусе зоны.

 

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

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


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

Существует ли возможно, сделать у разных зон градацию по наносимому урону и необходимой защите?

Например зона1 if ( biosafe > 1.0 ) ; зона2 if ( biosafe > 3.0 )

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


Ссылка на сообщение
Поделиться на других сайтах
19.09.2020 в 11:55, Ewgen сказал:

Подскажите как прикрутить звук счетчика гейгера при нахождении в зоне

что то у меня не получается

 

Я все еще мучаюсь, может кто сжалится и подскажет )))

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


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

вызывать звук на игрока если он в зоне

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


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

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

Скрытый текст

image.png.6c5af5159e66436c2888cf63a06ffbf6.png

в ините вот так:

#include "$CurrentDir:\\mpmissions\\Expansion.DeerIsle\\main.c"

вот код самого файла main.c

class Zone {
	int id;
	int type;
	vector pos;
	float radius;
}

enum RadZoneType {
	SAFE,
	GAS,
	RAD,
	BIO
}

ref array<ref Zone> ga_zones = new array<ref Zone>;

ref ControllerZones ctrl_zones = new ControllerZones;

class ControllerZones {
	void ControllerZones() {
		
		int id = 0;
		vector pos;
		float radius;
		int type = 0;

		id = 1; // Pavlovo
		pos = "3919 0 5871";
		radius = 200.0;
		AddZone(id, pos, radius);
		
		
		
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(CheckZones, 5000, true);
	}
	
	void ~ControllerZones() {
	}
	
	void AddZone(int id, vector pos, float radius, int type = RadZoneType.BIO) {
		ref Zone zone = new ref Zone;
		
		zone.id = id;
		zone.pos = pos;
		zone.radius = radius;
		zone.type = type;

		ga_zones.Insert(zone);
	}
	
	bool InZone(PlayerBase player, ref Zone zone) {
		vector player_position = player.GetPosition();
		player_position[1] = 0;

		if( (vector.Distance(player_position, zone.pos)) < zone.radius ) {
			
			EntityAI attachment;
			ItemBase item;
			string className;
			float biosafe = 0;
			
			attachment = player.FindAttachmentBySlotName("Mask");
			if ( attachment && attachment.IsItemBase() ) {
				item		=	Class.Cast(attachment);
				className	=	item.GetType();
				if ( className.Contains("GP5GasMask") ) {
					//return true; // TEMP FIX
					biosafe = biosafe + 1.0;
				}
			}
			
			attachment = player.FindAttachmentBySlotName("Mask");
			if ( attachment && attachment.IsItemBase() ) {
				item		=	Class.Cast(attachment);
				className	=	item.GetType();
				if ( className.Contains("GasMask") ) {
					//return true; // TEMP FIX
					biosafe = biosafe + 1.0;
				}
			

			
			
			if ( biosafe > 1.0 )
				return true;
			
			float damage_player;
			float damage_zone = 6.0;
			damage_player = player.GetHealth("GlobalHealth", "Health");
			player.SetHealth("GlobalHealth", "Health", damage_player - (damage_zone - ((damage_zone / 6) * biosafe)));
			
			player.GetSymptomManager().QueueUpPrimarySymptom(SymptomIDs.SYMPTOM_COUGH);
			
			Param1<string> m_MessageParam = new Param1<string>("Вам нужны комплект ОЗК! You need a set NBC!");
			GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_MessageParam, true, player.GetIdentity()); 
			
			return true;
		}
		
		return false;
	}
	
	void CheckZones() {
		ref array<Man> players = new array<Man>;
		GetGame().GetPlayers( players );
		
		for ( int i = 0; i < players.Count(); i++ )
		{
			PlayerBase player;
			Class.CastTo(player, players.Get(i));
			
			for ( int j = 0; j < ga_zones.Count(); j++ ) {
				if(InZone(player, ga_zones.Get(j))) {
					break;
				}
			}
		}
	}
}

как видно ошибки нет, но...она есть. Почему не получается его подключить?

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


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

вызывать звук на игрока если он в зоне

 

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

в PlayerBase.c

if (нахождение в зоне) { проигрывание звука}

по нахождение в зоне не наю как именно запросить

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

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


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

А как сделать что бы вместо хп температура понижалась или повышалась в скрипте который 123 показывал

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


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

2021-03-17_21-40-48.png.57c3f14d6e1f1f5181fabac51d7290f1.png2021-03-17_21-42-28.png.cd3e61a68d4bd5718a3f82c4135678bb.png2021-03-17_21-42-57.png.cf66e22c8f9c97bd310741e020b8152b.png2021-03-17_21-43-17.png.2917d8fd50eddc70e2561c27cf561f16.png2021-03-17_21-43-40.png.2c0e3be82e5a2d2b2bd74881bf38a885.png

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


Сделал вроде бы как все правильно но все равно не известная ошибка! Помогите пожалуйста

 

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


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

проверяем указываемое расположение на наличие файлов с указанным именем. Переводчик по тексту ошибки в помощь

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

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


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

2021-03-17_21-40-48.png.57c3f14d6e1f1f5181fabac51d7290f1.png2021-03-17_21-43-17.png.2917d8fd50eddc70e2561c27cf561f16.png
Сделал вроде бы как все правильно но все равно не известная ошибка! Помогите пожалуйста

 

 

Заметил что слеши в разные стороны.

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


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

 

Заметил что слеши в разные стороны.

текст в сообщении ошибки переведите))

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


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

 

Заметил что слеши в разные стороны.

Так это только в этом окошке

 

 

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


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

текст в сообщении ошибки переведите))

Написано что не найден файл

А как исправить это можно?

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


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

Написано что не найден файл

А как исправить это можно?

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

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


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

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

2021-03-18_13-56-19.png.34afdf00dd5a2e0f6aaff4844db181a4.png

 

Имеется данный файл у меня я выше все скриншоты приложил как в инструкции должно быть. Но все равно не работает

 

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


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

2021-03-18_13-56-19.png.34afdf00dd5a2e0f6aaff4844db181a4.png

 

Имеется данный файл у меня я выше все скриншоты приложил как в инструкции должно быть. Но все равно не работает

 

Возьми этот мод из мастерской и все.

https://steamcommunity.com/sharedfiles/filedetails/?id=1752669393

Автор скоро обновит его, там хорошая оптимизация будет.

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


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

Возьми этот мод из мастерской и все.

https://steamcommunity.com/sharedfiles/filedetails/?id=1752669393

Автор скоро обновит его, там хорошая оптимизация будет.

У меня сервер основан на скриптах, я бы давно уже добавил этот мод, но мне скриптом бы! Спасибо конечно за помощь!

 

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


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

Возьми этот мод из мастерской и все.

https://steamcommunity.com/sharedfiles/filedetails/?id=1752669393

Автор скоро обновит его, там хорошая оптимизация будет.

Я хочу полный скриптовый и ванильный сервер, без единого мода

 

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


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

Я хочу полный скриптовый и ванильный сервер, без единого мода

 

Это другой вопрос.

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


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

Разобрался, спасибо всем кто создал данный скрипт или помог!

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


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

Разобрался, спасибо всем кто создал данный скрипт или помог!

напиши остальным где косякнул, чтоб они потом знали куда смотреть, дабы не тупить))

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


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

напиши остальным где косякнул, чтоб они потом знали куда смотреть, дабы не тупить))

А зачем? Сюда обычно приходят просить что то, а вот помочь кому то это уже не царское дело ?

Единицы только хелпят)

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


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

Ошибка была в названии текстовых документах. Там где DamagedZone -это правильный вариант названия данного текста
DamagedZone.c - Это не правильный вариант выдает ошибку "не найден файл"  ( что - то подобное )
Глупая ошибка, но за то теперь это опыт какой, не какой!
  2021-03-18_15-21-03.png.771ad5ae358dfdb34c5327dc272150a3.png

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

    • Автор: 123new
      Автор скрипта: http://s-platoon.ru/profile/48-nonameultima/
      Все благодарности за этот скрипт непосредственно автору скрипта, не мне!
       
      В данной теме, расскажу как сделать зараженные газом области на карте.
      Автор: NoNameUltima
      1. Открываем на сервере файл: missionServer.c
      2. После строки:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.UpdatePlayersStats, 30000, true); Добавляем:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.GAS_ZONE_TRIGGER, 10000, true); *10000 - Время в мс(10 секунд). С такой частотой будет наноситься урон в данной области.
      После строки:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(this.UpdatePlayersStats); Добавляем:
      GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).Remove(this.GAS_ZONE_TRIGGER); Ищем строку:
      void UpdatePlayersStats() Вставляем ВЫШЕ нее, следующий код:
      void GAS_ZONE_TRIGGER() { /* GAS_ZONE_TRIGGER Автор: NoNameUltima skype: hf-trade */ // Зараженные зоны TVectorArray gas_points = {"13249 0 3962", "6389 0 2683", "6612 0 2561"}; // Массив намордников TStringArray gas_masks = {"GasMask", "GP5GasMask"}; // Радиус зон int radius = 350; // Наносимый урон 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, 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); } } } } } P.S.
      1. Так же можно изменить формат массива, и сделать зоны с разным радиусом
      2. Можно при желании добавить вывод оповещения, в зараженных зонах.
      *Скрипт предоставлен мной, в обрезанном виде намерено - остальное на Ваш вкус и цвет
      Изменено 4 октября пользователем NoNameUltima
       
      Добавлено от 123new:
      Файл missionServer.c располагается в {папка сервера}\scripts\5_Mission\MissionServer\missionServer.c
      Если у вас нет папки scripts в папке с сервером игры, откройте папку dta, распакуйте папку scripts из pbo-файла scripts.pbo и переместите в папку с сервером.
      Чтобы папка считывалась сервером, необходимо добавить параметр запуска сервера '-FilePatching'.
      P.S. Гайд не проверялся на актуальной версии серверной части игры со steam!
    • Автор: NotMeyson404
      Создал триггер в редакторе, что бы при заходе в область триггера играла музыка (Проверил в редакторе все работате на ура), сохранил как положено, закинул все файлы на сервер arma 3 epoch, и не работает ничего, пол дня провозился....подскажите как быть?
       
      class Item130
      {
      dataType="Trigger";
      position[]={7850.2622,17.753777,11198.521};
      angle=4.7678905;
      class Attributes
      {
      onActivation="1 fadeMusic 1; playMusic ""sidr11"";";
      onDeactivation="1 fadeMusic 0;";
      sizeA=3;
      sizeB=7;
      sizeC=4;
      repeatable=1;
      activationBy="ANY";
      isRectangle=1;
      isServerOnly=1;
      };
      id=40;
      type="EmptyDetectorArea10x10";
      atlOffset=-0.052999496;
      };
      class Item131
      {
      dataType="Trigger";
      position[]={7853.6118,17.391575,11197.52};
      angle=4.6931028;
      class Attributes
      {
      onActivation="playSound ""sidr22"";";
      onDeactivation="playSound ""sidr33"";";
      sizeA=2;
      sizeB=2;
      sizeC=4;
      repeatable=1;
      activationBy="ANY";
      isRectangle=1;
      isServerOnly=1;
      };
      id=41;
      type="EmptyDetectorArea10x10";
      atlOffset=0.1210022;
      };
    • Автор: exploadead
      Привет всем! Арма 1.58 Эпоч 0380 Пытаюсь перенести триггеры с 1.56 армы на 1.58....   Вот например такая конструкция по удалению ботов из зоны успешно работала на 1.56:   class Sensors { items=1; class Item0 { position[]={13325,0,14515}; a=200; b=200; activationBy="GUER"; repeating=1; interruptable=1; age="UNKNOWN"; expActiv="{deleteVehicle _x} forEach thisList;"; class Effects { }; }; };    
      Но в 1.58 появился новый общий для всего класс class Entities. Уже пробовал вот так:      
      class Entities { items=1; class Item1 { dataType="Trigger"; position[]={13325,0,14515}; class Attributes { name="delbot"; onActivation="{deleteVehicle _x} forEach thisList;"; sizeA=200; sizeB=200; repeatable=1; interruptable=1; activationBy="GUER"; }; id=210; type="EmptyDetector"; }; };    
      Но не сработало((... пробовал то же самое прямо в редакторе сделать... на 1.56 получалось... на 1.58 не пашет((
    • Автор: Mac2706
      Создал Триггер на определённых координатах, который должен вызывать скрипт, но когда захожу в триггер ничего не происходит.Триггер динамический :
       
       
      Я подозреваю, что это происходит, потому что скрипт исполняется только на стороне клиента и не передаёт данные на сервер Danger.Sqf
  • Наш выбор

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

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

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

Поддержка