Перейти к содержимому


Фотография

Вопрос по триггеру и сообщению из него ...


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 15

#1 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 сообщений
  • Откуда:Кривой Рог

Отправлено 21 August 2014 - 16:12

Есть триггера ( иного ) при входе в которые любого из игроков ( МП )  выдается сообщение о том что он покидает зону проведения операции.

 

Проблема в том что это сообщение выдается ВСЕМ игрокам, хотя зашел в триггер только один.

 

Вопрос: Как сделать что бы сообщение выдавалось только тому кто зашел в один из таких триггеров ?


  • 0

#2 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 21 August 2014 - 16:26

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


Сообщение отредактировал vlad333000: 21 August 2014 - 16:27

  • 0

#3 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 сообщений
  • Откуда:Кривой Рог

Отправлено 21 August 2014 - 16:52

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

 

Сразу вопросы:

 

Локально это как ?

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

Ну и последний самый глупый - СМС ?


  • 0

#4 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 21 August 2014 - 17:40

valka1000, 2. Координаты тебе нахрена даны? 3. Я просто так люблю называть когда, что то выводится на экран наподобии сообщения. 1. Ну как тебе объяснит - это когда ты запускаешь что-то, что имеет эффект только на одном ПК, а другие могут даже и не подозревать что он выполнился (иногда из-за вот такой локальности случаются фейлы типа у одного человека стоит дом, а у напарника его нет :) )

Сообщение отредактировал vlad333000: 21 August 2014 - 17:45

  • 0

#5 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 21 August 2014 - 18:12

/*
	Не лучше ли задать радиус зоны проведения операции, и проверять находится ли тело в радиусе зоны, чем лепить кучки триггеров
	Или я что то не так понял!?
	
	Инициализировать этот код, когда тело будет находиться в пределах зоны
*/

_unit			= _this;
_centerPosZone 	= [0,0,0]; 	// Центр зоны
_radiusZone		= 500; 		// В метрах

while {alive _unit} do {

	if (_centerPosZone distance (getPos _unit) > _radiusZone) then {
	
		systemChat "За дезертирство с поля боя, по законам военного времени, 5 лет расстрела!";		// Ваш, вероятно более гуманный, месидж
		
	};
	
	sleep 1;
};

  • 0

#6 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 сообщений
  • Откуда:Кривой Рог

Отправлено 21 August 2014 - 18:17

valka1000, 2. Координаты тебе нахрена даны? 3. Я просто так люблю называть когда, что то выводится на экран наподобии сообщения. 1. Ну как тебе объяснит - это когда ты запускаешь что-то, что имеет эффект только на одном ПК, а другие могут даже и не подозревать что он выполнился (иногда из-за вот такой локальности случаются фейлы типа у одного человека стоит дом, а у напарника его нет :) )

 

Координаты чего ? Триггер определяет зону, если его нет как мне определить зону в которую игроку заходить нельзя ?

 

Что такое локально на одном ПК я понимаю,  например hint написано что то же выполняется на одном ПК - а вот ФИГ ! :( Тут как раз вопрос ГДЕ, и самое главное КАК вызвать или запустить скрипт так что бы он выполнялся на ПК игрока и все что он делает выполнялось, и все результаты выводились только на ПК конкретного игрока?


/*
	Не лучше ли задать радиус зоны проведения операции, и проверять находится ли тело в радиусе зоны, чем лепить кучки триггеров
	Или я что то не так понял!?
	
	Инициализировать этот код, когда тело будет находиться в пределах зоны
*/

_unit			= _this;
_centerPosZone 	= [0,0,0]; 	// Центр зоны
_radiusZone		= 500; 		// В метрах

while {alive _unit} do {

	if (_centerPosZone distance (getPos _unit) > _radiusZone) then {
	
		systemChat "За дезертирство с поля боя, по законам военного времени, 5 лет расстрела!";		// Ваш, вероятно более гуманный, месидж
		
	};
	
	sleep 1;
};

 

Этот вариант меня не устраивает так как зона сложной конфигурации и например в центре она уже чем  по краям :(


  • 0

#7 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 21 August 2014 - 18:27

 

valka1000, 2. Координаты тебе нахрена даны? 3. Я просто так люблю называть когда, что то выводится на экран наподобии сообщения. 1. Ну как тебе объяснит - это когда ты запускаешь что-то, что имеет эффект только на одном ПК, а другие могут даже и не подозревать что он выполнился (иногда из-за вот такой локальности случаются фейлы типа у одного человека стоит дом, а у напарника его нет :) )

 

Координаты чего ? Триггер определяет зону, если его нет как мне определить зону в которую игроку заходить нельзя ?

 

Что такое локально на одном ПК я понимаю,  например hint написано что то же выполняется на одном ПК - а вот ФИГ ! :( Тут как раз вопрос ГДЕ, и самое главное КАК вызвать или запустить скрипт так что бы он выполнялся на ПК игрока и все что он делает выполнялось, и все результаты выводились только на ПК конкретного игрока?


/*
	Не лучше ли задать радиус зоны проведения операции, и проверять находится ли тело в радиусе зоны, чем лепить кучки триггеров
	Или я что то не так понял!?
	
	Инициализировать этот код, когда тело будет находиться в пределах зоны
*/

_unit			= _this;
_centerPosZone 	= [0,0,0]; 	// Центр зоны
_radiusZone		= 500; 		// В метрах

while {alive _unit} do {

	if (_centerPosZone distance (getPos _unit) > _radiusZone) then {
	
		systemChat "За дезертирство с поля боя, по законам военного времени, 5 лет расстрела!";		// Ваш, вероятно более гуманный, месидж
		
	};
	
	sleep 1;
};

 

Этот вариант меня не устраивает так как зона сложной конфигурации и например в центре она уже чем  по краям :(

 

Не важно, просто вам придётся действовать подобным описанным способом, только код ваш.


  • 0

#8 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 21 August 2014 - 18:44

Попробуйте в активации триггера это

if ((count thisList) > 0) then {
	[{hint "Hello World!";},"BIS_fnc_spawn",thisList,false] call BIS_fnc_MP;
};

  • 0

#9 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 21 August 2014 - 18:49

Координаты чего ? Триггер определяет зону, если его нет как мне определить зону в которую игроку заходить нельзя ?

Что такое локально на одном ПК я понимаю, например hint написано что то же выполняется на одном ПК - а вот ФИГ ! Тут как раз вопрос ГДЕ, и самое главное КАК вызвать или запустить скрипт так что бы он выполнялся на ПК игрока и все что он делает выполнялось, и все результаты выводились только на ПК конкретного игрока?

Координаты объекта и границ зоны по осям x, y, z.
Легко водишь мышкой в редакторе и смотришь какие координаты
Скажу так - триггер сработает у всех :) поэтому и выведет у всех СМС, для того что бы обойтись без тригера можно создать скрипт с проверкой в зоне ли в формате .sqf и при помощи еще одного файла init.sqf запустить первый скрипт на каждом ПК и в итоге они будут как бы независимы друг от друга. Собери свою доступную зону из примитивов (из квадратов/прямоугольников легче) затем выведи общее условие для територи не попавшей в зону и вот тебе условие на выход, затем его зацикливаешь и все готово :)

Сообщение отредактировал vlad333000: 21 August 2014 - 18:50

  • 0

#10 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 21 August 2014 - 18:51

И собственно вот здесь, есть весьма познавательно про триггеры

http://arma3.ru/foru...kriptopisaniiu/


  • 0

#11 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 сообщений
  • Откуда:Кривой Рог

Отправлено 21 August 2014 - 18:51

 

 

valka1000, 2. Координаты тебе нахрена даны? 3. Я просто так люблю называть когда, что то выводится на экран наподобии сообщения. 1. Ну как тебе объяснит - это когда ты запускаешь что-то, что имеет эффект только на одном ПК, а другие могут даже и не подозревать что он выполнился (иногда из-за вот такой локальности случаются фейлы типа у одного человека стоит дом, а у напарника его нет :) )

 

Координаты чего ? Триггер определяет зону, если его нет как мне определить зону в которую игроку заходить нельзя ?

 

Что такое локально на одном ПК я понимаю,  например hint написано что то же выполняется на одном ПК - а вот ФИГ ! :( Тут как раз вопрос ГДЕ, и самое главное КАК вызвать или запустить скрипт так что бы он выполнялся на ПК игрока и все что он делает выполнялось, и все результаты выводились только на ПК конкретного игрока?


/*
	Не лучше ли задать радиус зоны проведения операции, и проверять находится ли тело в радиусе зоны, чем лепить кучки триггеров
	Или я что то не так понял!?
	
	Инициализировать этот код, когда тело будет находиться в пределах зоны
*/

_unit			= _this;
_centerPosZone 	= [0,0,0]; 	// Центр зоны
_radiusZone		= 500; 		// В метрах

while {alive _unit} do {

	if (_centerPosZone distance (getPos _unit) > _radiusZone) then {
	
		systemChat "За дезертирство с поля боя, по законам военного времени, 5 лет расстрела!";		// Ваш, вероятно более гуманный, месидж
		
	};
	
	sleep 1;
};

 

Этот вариант меня не устраивает так как зона сложной конфигурации и например в центре она уже чем  по краям :(

 

Не важно, просто вам придётся действовать подобным описанным способом, только код ваш.

 

Плохо ! :( А можно определить зону не "круг" а прямоугольник из скрипта ?


  • 0

#12 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 21 August 2014 - 18:55

 

 

Скажу так - триггер сработает у всех  :) поэтому и выведет у всех СМС,

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

if ((count thisList) > 0 && isServer) then {
	[{hint "Hello World!";},"BIS_fnc_spawn",thisList,false] call BIS_fnc_MP;
};

  • 0

#13 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 21 August 2014 - 18:55

А вопрос: для чего ограничение по зоне?
  • 0

#14 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 21 August 2014 - 18:58

Опаньки! А на сервере триггер сработает!?


  • 0

#15 OFFLINE   valka1000

valka1000

    Ефрейтор

  • Пользователи
  • 33 сообщений
  • Откуда:Кривой Рог

Отправлено 21 August 2014 - 23:39

 

 

 

Скажу так - триггер сработает у всех  :) поэтому и выведет у всех СМС,

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

if ((count thisList) > 0 && isServer) then {
	[{hint "Hello World!";},"BIS_fnc_spawn",thisList,false] call BIS_fnc_MP;
};

Это писать в ините триггера ?


  • 0

#16 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 22 August 2014 - 00:47

 

 

 

 

Скажу так - триггер сработает у всех  :) поэтому и выведет у всех СМС,

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

if ((count thisList) > 0 && isServer) then {
	[{hint "Hello World!";},"BIS_fnc_spawn",thisList,false] call BIS_fnc_MP;
};

Это писать в ините триггера ?

 

В активацию


  • 0




Яндекс.Метрика