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


Фотография

крик раненого


Лучший Ответ Cooler58 , 24 October 2018 - 22:51

Друзья! Спасибо, всё действительно получилось! Итак: в условие триггера:(p1 getVariable ["ACE_isUnconscious", false]) and {(time - (thisTrigger getVariable ["time", time - 120])) >= 120}; в активацию: krik remoteExec ["playSound",-2]; p1 say3D "krik"; thisTrigger setVariable ["time", time]; Понятно, что р1 заменяется во втором триггере на р2, в третьем на р3 и т.д.

Перейти к сообщению


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

#1 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 11 September 2018 - 16:01

Добрый день, уважаемые форумчане! Пытаюсь написать скрипт криков раненого, но не преуспел. Ситуация такая: играем с АСЕ модом, без GPS и нужно, чтобы в бессознательном состоянии игрок кричал, чтобы другие могли хотя бы по источнику крика определить, где валяется подстреленный. Пытался в триггере условие: {(getDammage _x) > 0.8} ForEach [p1, p2, p3, p4, p5, p6, p7, p8], /где р1 и другие - это игроки, а 0.8 - степень повреждения при котором игрок уходит в бессознательное состояние  более чем на 30 секунд и не очнётся точно, а то будет смешно если ранили кого то рядом, а он в сознании и орёт как дурачок. В активации: playSound krik; [p1, p2, p3, p4, p5, p6, p7, p8] say3D "krik";  / где "krik" - это название звукового файла. Есть предположение, что скорее всего я не правильно выстроил логику скрипта. Если есть у кого какие мысли -помогите пожалуйста! С уважением.


  • 0

#2 OFFLINE   moroz89

moroz89

    Мл.сержант

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

Отправлено 11 September 2018 - 16:38

Для проверки бессознательного состояния можно использовать _x getVariable “unconscious”
  • 0

#3 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 11 September 2018 - 17:32

Cooler58 , попробуй сделать триггер локальным и настроить его так:
- Повторяемый
- Условие активации (если moroz89 прав):

(player getVariable ["unconscious", false]) and {!(triggerActivated thisTrigger)}

- При активации:

playSound3D [...];

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

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


Сообщение отредактировал Schatten: 11 September 2018 - 17:54

  • 0

#4 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 11 September 2018 - 20:24

Спасибо, ребята. надоумили как сделать проще, а не городить огород. В Wiki второй пример будет в самый раз. Благодарю!


  • 0

#5 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 13 September 2018 - 18:44

Попробовал - не получилось(

- Условие активации : (player getVariable ["unconscious", false]) and {!(triggerActivated thisTrigger)}

- При активации пробовал и ссылку из Wiki,  и просто любой звук в триггере.

Не срабатывает скорее всего из-за условия. А вот задержка триггера - это как? Я в самом триггере ставил время и 3, и 30 сек., может еще где-то надо? Ставил "повторяемый" и "на сервере". Может не нужно ставить в условии "!" (это по-моему "not alive" )


  • 0

#6 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 13 September 2018 - 22:57

Cooler58 , ставишь триггер и делаешь его повторяемым. В условие активации вставляешь это:

(player getVariable ["unconscious", false]) and {(time - (thisTrigger getVariable ["time", time - 30])) >= 30}

При активации:

playSound3D [...];

thisTrigger setVariable ["time", time];

 
P. S.
Похоже, playSound3D проигрывает только встроенные звуки. Тогда используй другие команды, а для проигрывания у других игроков используй

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

.


Сообщение отредактировал Schatten: 13 September 2018 - 22:57

  • 0

#7 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 14 September 2018 - 17:33

К сожалению ничего не получается. Вообще наверное с АСЕ такие штучки не проходят, там бессознанка наверное другая. Сам звуковой файл"крик" работает при других условиях (УАЗики, железные банки т.д. - всё орёт). А вообще вот так в условии {(getDammage _x) > 0.8} ForEach [p1, p2, p3, p4, p5, p6, p7, p8] написано правильно или в корне неверно?


  • 0

#8 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 14 September 2018 - 17:52

А вообще вот так в условии {(getDammage _x) > 0.8} ForEach [p1, p2, p3, p4, p5, p6, p7, p8] написано правильно или в корне неверно?

Неправильно, надо так:

({(getDammage _x) > 0.8} count [p1, p2, p3, p4, p5, p6, p7, p8]) > 0

или так:

([p1, p2, p3, p4, p5, p6, p7, p8] findIf {(getDammage _x) > 0.8}) >= 0

А если pX в одной группе, то можно вообще так:

((units (group player)) findIf {(getDammage _x) > 0.8}) >= 0

Сообщение отредактировал Schatten: 14 September 2018 - 18:03

  • 0

#9 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 14 September 2018 - 18:51

Странности продолжаются) в одном и том же триггере

при условии: p1 distance b1 < 3 звуковой файл срабатывает на железной банке (переменная b1) ,

при условии: ({(getDammage _x) > 0.1} count [p1, p2, p3, p4, p5, p6, p7, p8]) > 0 не работает (хотя урон снизил до 0.1 это при 2-х гранатах под ноги)


  • 0

#10 OFFLINE   moroz89

moroz89

    Мл.сержант

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

Отправлено 14 September 2018 - 18:56

Виноват. Ввел в заблуждение. Вместо "unconscious" нужно "ACE_isUnconscious"


  • 0

#11 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 14 September 2018 - 19:16

moroz89, вот сейчас условие рабочее, активация работает, звук от b1 (железная банка) воспроизводится. Спасибо тебе. Осталось только докумекать как  из игроков источник звука сделать.


  • 0

#12 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 14 September 2018 - 19:24

P.S. проверил с примерами из Wiki (playSound3D [...];) не пашет. Или я в синтаксисе filename не разобрался, т.е. "A3\Sounds_F\sfx\blip1.wav" менять нельзя на что то своё?


  • 0

#13 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 14 September 2018 - 19:49

Всё! Получилось!!!!!Спасибо вам, ребята!! Короче,

в условие:

(player getVariable ["unconscious", false]) and {(time - (thisTrigger getVariable ["time", time - 30])) >= 30}

в активацию: playSound krik; player say3D "krik"; thisTrigger setVariable ["time", time];

И даже несмотря на то, что триггер повторяемый, звуковой файл воспроизводится не с накложением, а  с определенным интервалом


Сегодня проверим в игре, и если всё нормально, то тему апну


  • 0

#14 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 14 September 2018 - 20:13

при условии: ({(getDammage _x) > 0.1} count [p1, p2, p3, p4, p5, p6, p7, p8]) > 0 не работает (хотя урон снизил до 0.1 это при 2-х гранатах под ноги)

getDammage возвращает интегральный показатель. Например, ты можешь ногам нанести урон 0,8, но в целом урон будет 0,1.
 

проверил с примерами из Wiki (playSound3D [...] ;) не пашет. Или я в синтаксисе filename не разобрался, т.е. "A3\Sounds_F\sfx\blip1.wav" менять нельзя на что то своё?

Всё-таки можно, смотри заметки в BIKI.
 

И даже несмотря на то, что триггер повторяемый, звуковой файл воспроизводится не с накложением, а  с определенным интервалом

Конечно, это благодаря этим кускам кода:

(time - (thisTrigger getVariable ["time", time - 30])) >= 30 // 30 -- время в секундах до следующей активации триггера
thisTrigger setVariable ["time", time];

Сообщение отредактировал Schatten: 14 September 2018 - 20:15

  • 0

#15 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 15 September 2018 - 01:47

Всё! Получилось!!!!!Спасибо вам, ребята!! Короче,

в условие:

(player getVariable ["unconscious", false]) and {(time - (thisTrigger getVariable ["time", time - 30])) >= 30}

в активацию: playSound krik; player say3D "krik"; thisTrigger setVariable ["time", time];

И даже несмотря на то, что триггер повторяемый, звуковой файл воспроизводится не с накложением, а  с определенным интервалом


Сегодня проверим в игре, и если всё нормально, то тему апну

ошибся в посте: вместо "unconscious" нужно "ACE_isUnconscious", как и сказал moroz89


  • 0

#16 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 30 September 2018 - 15:12

Ребята, не могу сообразить, как же сделать, чтобы после кратковременной потери сознания игрок, сам пришедший в себя, не начинал орать через время (время задержки триггера), будучи давным-давно в строю. Знаю одно, что при моих настройках ACE если через 1 минуту не очнешься, то значит кричи. Прошу, подскажите.


  • 0

#17 OFFLINE   moroz89

moroz89

    Мл.сержант

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

Отправлено 30 September 2018 - 16:03

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


  • 0

#18 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 30 September 2018 - 16:52

Cooler58 , если триггер настроен так, как я предложил, и такое происходит, то надо копаться в исходниках ACE и разбираться, почему значение ACE_isUnconscious остаётся равным true, когда игрок давным-давно пришёл в себя.


  • 0

#19 OFFLINE   Cooler58

Cooler58

    Сержант

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

Отправлено 10 October 2018 - 21:18

Друзья, добрый вечер! понравилось предложение от moroz89 насчет 5 сек.Теперь всё славно работает за исключением одного НО, а именно каждый игрок слышит только себя. Т.е. по-моему мнению отсутствует Глобальная составляющая этого скрипта. Пробовал в триггере ну все галочки снимать/ставить всё безуспешно. Как же сделать, чтобы крики других игроков слышать?

 
  • 0

#20 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 10 October 2018 - 21:49

Cooler58 , https://arma3.ru/for...ogo/#entry80906


  • 0




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