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


Фотография

Вопросы по МП.


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

#21 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 сообщений

Отправлено 01 June 2015 - 19:23

Я вообще запутался что-то.

Тут через BIS_fnc_MP советуют, в другом месте через триггер. 

 

 

 

Собственно на этом форуме таких как вы не мало), и всем приходится разгадывать шарады транслятора.

 

да потому что гайдов на русс яз подробных нет

 

А те, что есть, либо устарели, либо глубины не охватывают. 


Сообщение отредактировал TankiSD: 01 June 2015 - 19:25

  • 0

#22 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 June 2015 - 19:37

 

Я вообще запутался что-то.

Тут через BIS_fnc_MP советуют, в другом месте через триггер. 

 

 

 

Собственно на этом форуме таких как вы не мало), и всем приходится разгадывать шарады транслятора.

 

да потому что гайдов на русс яз подробных нет

 

А те, что есть, либо устарели, либо глубины не охватывают. 

 

Вообще, реализация чего либо, почти всегда, возможно многими способами, выдираете по вкусу).

 

По поводу русскоговорящих, нас в Арме, по сути не так много на всю массу. Да и не малая часть, мультиязычных, предпочитает общаться не на Русском, да и флаг им в руки).


  • 0

#23 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 сообщений

Отправлено 01 June 2015 - 19:40

Так я понимаю, что вариантов может быть много.

 

Но хотелось бы уметь делать наиболее эффективно, а не через костыли, для которых нужны ещё костыли. 

 

==================

 

Касательно действий игрока.

 

Это каждое "особенное" действие, типо "притянуть другого игрока к себе", "прыгнуть высоко", "активировать бессмертие" и т.д. и т.п. можно прописать через функцию и затем уже, по нажатию допустим кнопки, активировать эти функции? 


Сообщение отредактировал TankiSD: 01 June 2015 - 19:41

  • 0

#24 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 01 June 2015 - 19:41

TankiSD,  вся арма - это один большой костыль, так что не вы первые :)


  • 0

#25 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 сообщений

Отправлено 01 June 2015 - 19:46

TankiSD,  вся арма - это один большой костыль, так что не вы первые :)

да вот это и проблема АрмА)

 

Из неё можно сделать всё, что угодно, поэтому это больше конструктор, нежели игра. 


  • 0

#26 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 June 2015 - 19:56

 

Это каждое "особенное" действие, типо "притянуть другого игрока к себе", "прыгнуть высоко", "активировать бессмертие" и т.д. и т.п. можно прописать через функцию и затем уже, по нажатию допустим кнопки, активировать эти функции? 

Всё это должно настраиваться при инициализации персонажа, а также вызываться при респавне.

 

Далее, триггеры. Если использовать треггеры в мультике, вам всё равно придётся писать код, который будет настраивать триггер на клиентах. У AVI, в урока про триггеры об этом вполне доходчиво. Триггер это то что живет у всех, а вот настройки одного и того же триггера у каждого могут быть свои, или одинаковые. Но однозначно придётся настраивать на сервере и на каждом клиенте.


 

поэтому это больше конструктор, нежели игра. 

Именно этим мне это и нравится, а не тем что это Арма)


ЗЫ

Кстати, а эта реплика действительна применительно к триггеру поставленному в редакторе миссий?

 

Далее, триггеры. Если использовать треггеры в мультике, вам всё равно придётся писать код, который будет настраивать триггер на клиентах.


ЗЫ_2

Вероятно действительна, триггер то отспавнит сервер, и сам себе , в одну харю настроится)


  • 0

#27 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 сообщений

Отправлено 01 June 2015 - 20:00

Именно этим мне это и нравится, а не тем что это Арма)

 

с выходом А3 я как-то наигрался в редакторе)

 

ну а к кодам, скриптам, у меня мягко говоря, не лежит душа.

 

==============================================

 

т.е. триггер сработает только у сервера?

 

триггеры это ведь по сути циклы с условиями и активацией. 

по сути он ведь должен будет у каждого игрока запускаться.

 

В моём случае думаю с триггерами не получится всё сделать.

 

Всё это должно настраиваться при инициализации персонажа, а также вызываться при респавне.

 

это получается, что в ините нужна постоянная проверка игрока на принадлежность его к какой-либо стороне, т.е. что-то типо такого *напишу без команд*.

 

while {true} then (если игрок принадлежит синим) то {выход} иначе {запустить скрипт такой-то, такой-то и т.д. и т.п.};

 

???


Сообщение отредактировал TankiSD: 01 June 2015 - 20:07

  • 0

#28 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 June 2015 - 20:03

т.е. триггер сработает только у сервера?

 

триггеры это ведь по сути циклы с условиями и активацией. 

по сути он ведь должен будет у каждого игрока запускаться.

 

В моём случае думаю с триггерами не получится всё сделать.

Ну, суть выяснения такого положения вещей свелась к тому что это правильно, один триггер для всех, с возможностью персональной настройки.


 

т.е. триггер сработает только у сервера?

Полно сценариев где этого вполне достаточно.


  • 0

#29 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 June 2015 - 20:08

ЗЫ

Кстати мои аномалии в AFTERMATHе активирует сервер или безголовый клиент, и инициализирует действо.

Далее при активации, триггеру даётся публичная переменная

_trg setVariable ["activated", true, true];

Это даст понять проверочному коду в условии триггера на клиенте, что что то активировало триггер, и исполнит то что положено клиенту.


Сообщение отредактировал SteelRat: 01 June 2015 - 20:10

  • 0

#30 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 сообщений

Отправлено 01 June 2015 - 20:11

Только хотел насчёт этого спросить, т.е. как проверить без игрока. 


Сообщение отредактировал TankiSD: 01 June 2015 - 20:16

  • 0

#31 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 сообщений

Отправлено 01 June 2015 - 20:27

т.к. я вообще не понял bis_fnc_mp, я сделал по другому, по триггерам, как подсказали.

 

в init.sqf

 

cursorName = ""; 

 

в addaction 

 

if (cursorTarget isKindOf "man") then { 
cursorName = name cursorTarget; 
publicVariable "cursorName"; 
}; 

 

условие в триггере 

cursorName == name Player 

 

активация 

call {[] execvm "script.sqf};

 

И тут у меня два вопроса.

 

Будет ли это работать с JIP.

И не надо ли делать так в активации

call {[this] execvm "script.sqf};

 

и например в скрипте уже плясать от

if (_man distance thething < 15) then
{
_Man = _this select 0; // кого притянули 
_Man setdir getDir thething;
_Man setvelocity [sin(getdir thething)*-20,cos(getdir thething)*-20,3];
sleep 1;
addCamShake [8, 5, 8];
_Man switchMove "GetOutPara";
_Man setdamage 0;
thething switchMove "AinvPknlMstpSnonWnonDnon_medicUp0"; // к кому притянули
};                                                                         

и вот интересно, я правильно думаю, или мне стоит ещё подумать? 


Сообщение отредактировал TankiSD: 01 June 2015 - 20:27

  • 0

#32 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 June 2015 - 21:01

Я уже вам писал, и не я это придумал.

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


  • 0

#33 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 сообщений

Отправлено 01 June 2015 - 21:02

каждый раз триггер создавать чтоль? 


  • 0

#34 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 June 2015 - 21:13

каждый раз триггер создавать чтоль? 

Триггер создаётся один раз на сервере, а настраивается на каждом клиенте, в том числе и на подключившихся позже.


ЗЫ

написал это, и понял какую ошибку я уже сделал в своей теме).


  • 0

#35 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 сообщений

Отправлено 01 June 2015 - 21:15

 

каждый раз триггер создавать чтоль? 

Триггер создаётся один раз на сервере, а настраивается на каждом клиенте, в том числе и на подключившихся позже.

 

 

ну в данном случае вроде ничего настраивать не надо... наверное.

 

 

ЗЫ

написал это, и понял какую ошибку я уже сделал в своей теме).

 

что за тема?


  • 0

#36 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 June 2015 - 21:16

if (_man distance thething < 15) then
{
_Man = _this select 0; // кого притянули 
_Man setdir getDir thething;
_Man setvelocity [sin(getdir thething)*-20,cos(getdir thething)*-20,3];
sleep 1;
addCamShake [8, 5, 8];
_Man switchMove "GetOutPara";
_Man setdamage 0;
thething switchMove "AinvPknlMstpSnonWnonDnon_medicUp0"; // к кому притянули
};                                  

Я правильно вас понял?

Триггер должен при определённых условиях швырнуть от себя бренное тело?


ЗЫ

Понял, притянуть одно тело к другому, так?


  • 0

#37 OFFLINE   TankiSD

TankiSD

    Ст. Прапорщик

  • Пользователи
  • 680 сообщений

Отправлено 01 June 2015 - 21:27

Да)

Для понимания.

 

Есть девять игроков синих и один гражданский.

Гражданскому сразу даётся имя TheThing. 

 

Этот гражданский, могёт притягивать к себе любого другого игрока, наведя на него курсор и нажав определённую кнопку.

// изначальный скрипт. Ну думаю задумка понятна

cursorTarget setdir getDir thething;
cursorTarget  setvelocity [sin(getdir thething)*-20,cos(getdir thething)*-20,3];
sleep 1;
addCamShake [8, 5, 8];
cursorTarget switchMove "GetOutPara";
cursorTarget setdamage 0;
thething switchMove "AinvPknlMstpSnonWnonDnon_medicUp0"; 

p.s. конечно же ещё планируются действия прыжка, невидимости и т.д. и т.п. 

Но это потом.

Хочу сначала понять, как это всё делать. 

 

 

=============

 

 

Скрипт на действие по кнопкам.

 

активировался так, через init.sqf

 

 

if (side player==civilian) then {

call {[] execvm "hunterattack.sqf";};};

 

Взял из старой миссии.
 
 
Скрытый текст

 

Через такой замечательный скрипт я буду активировать действия. 
 
И вот потом, когда я понял, что всё это муть, я удалил АрмА и до сегодняшнего момента не возвращался к этому.
 
P.S. также планирую "украсть" Ваш код, где вы увеличили скорость бега солдата. 

Сообщение отредактировал TankiSD: 01 June 2015 - 21:31

  • 0

#38 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 June 2015 - 21:39

Тогда это всем кроме гражданского

// Скрипт инициализации фишек, нужно вызвать при инициализации игрока, а также после респавна

_distAction = 15;	// Дистанция доступности экшена
player addAction [
	"Come to me my sweet sugar",
	{
		[_this select 0, _this select 1] spawn {
			// код исполняемый при астивации экшена
			_target = _this select 0; // тело на котором висит этот экшен
			_caller = _this select 1; // тело которое активировало этот экшен
		
			_target setdir getDir _caller;
			_target setvelocity [sin(getdir _caller)*-20,cos(getdir _caller)*-20,3];
			sleep 1;
			addCamShake [8, 5, 8];
			[[_target, "GetOutPara"], "switchMove"] call BIS_fnc_MP;
			_target setdamage 0;
			[[_caller, "AinvPknlMstpSnonWnonDnon_medicUp0"], "switchMove"] call BIS_fnc_MP;	// к кому притянули
		};
	},
	"",
	1,
	true,
	true,
	"",
	format["_this distace _target <= %1", _distAction]
];

Я мог что то не корректно написать, но вы уж сами дальше)


Правка

format["(_this distace _target <= %1) && (_this != _target)", _distAction]


Сообщение отредактировал SteelRat: 01 June 2015 - 21:41

  • 1

#39 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 June 2015 - 21:46

Ещё одна правка)

// Скрипт инициализации фишек, нужно вызвать при инициализации игрока, а также после респавна

_distAction = 15;	// Дистанция доступности экшена
_spyderMan = "C_Man_1"; // Сюда нужно вписать класс нейм гражданского

player addAction [
	"Come to me my sweet sugar",
	{
		[_this select 0, _this select 1] spawn {
			// код исполняемый при астивации экшена
			_target = _this select 0; // тело на котором висит этот экшен
			_caller = _this select 1; // тело которое активировало этот экшен
		
			_target setdir getDir _caller;
			_target setvelocity [sin(getdir _caller)*-20,cos(getdir _caller)*-20,3];
			sleep 1;
			addCamShake [8, 5, 8];
			[[_target, "GetOutPara"], "switchMove"] call BIS_fnc_MP;
			_target setdamage 0;
			[[_caller, "AinvPknlMstpSnonWnonDnon_medicUp0"], "switchMove"] call BIS_fnc_MP;	// к кому притянули
		};
	},
	"",
	1,
	true,
	true,
	"",
	format["(_this distance _target <= %1) && (typeOf _this == '%2')", _distAction, _spyderMan]
];

Сообщение отредактировал SteelRat: 01 June 2015 - 23:32

  • 1

#40 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 01 June 2015 - 21:57

Функции достаточно определить один раз, а не определять их в каждом цикле!

И, Коллега, возьмите себе за правило делать логические отступы при написании кода, то что вы выложили не возможно без мата прочитать другому).


  • 1




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