Полная Версия: Вопросы скриптования
Страницы: 1, 2, 3
Hmt
обнаружил еще один очень печальный "косяк" FT.
если ваш персонаж имеет Tagname, полученный через точку респавна, и вы сохраните вашу игру, то при считывании сохраненной игры ваш Tagname исчезнет, и все скрипты связанные с ним работать не будут (спасает только перезаход на карту.)

Эх ... Если бы в триггерах была опция присвоения тэга ...


Отправлено: 5 окт 10 14:22
Ну вот собственно и решение данной проблемы:
- Ставим на карте (или за ее пределами) "существо" с таким-же Tagname как и Ваш
- Создаем, для него, в меню Player строчку присваиваем ему номер команды игрока и оставляем это "существо" без управления.

Теперь, на вашей карте есть невидимый и неактивный Бот,
который всегда возвращает вам ваш Tagname.

Two Eyed Yum
Хех, косяк был известен давно, теперь и ты о нем знаешь :) Идея с "запоминателем" отличная, но к сожалению нельзя будет различить персонажей в группе. Все под одним тэгом будут ходить...
saurenc
Вопрос о репутации. Ft есть такое понятия как звания! Как можно сделать так, чтоб допустим открылись ворота при звании -=Сержант=- а не -=Рекрут=- или чтоб получить доступ к шкафчикам с добром тоже нужна своя определенная карма.
Grey
По идее, на репу можно завязать открытие. Смотришь, сколько её нужно для нужного звания, условие — "больше этого значения у игрока", действие — открытие тегованной двери.
der Fluger
В условиях триггера есть проверка ранга, разве не так?
Grey
Не ранг, проверяется именно количество репутации игрока.
der Fluger
Да, точно. Ранг в требованиях к оружию и броне есть. Надо эту фишку использовать: например, завязать триггер на надетую некую абстрактую «парадную броню палладина» или «наградной генеральский пистоль», например.
Good Year
Будут ли изыматься из отряда при заходе на "зелёную зону" персонажи игрока Human, если им выставить Remove on exit?
Grey
По идее, если выставить на команду игрока — то да, все персонажи группы будут убраны. Но тогда образуется "пустая" команда (если на другой карте не выдать принудительно под командование народ), и процесс игры встанет. А если стоит условие на количество живых у игрока — то гамовер выдаст (если очень надо такое, придётся делать переменную-переключатель для этого условия, чтобы после опр. момента переводить его в неактивное состояние).
Hmt
кину еще для развития темы:

Обнаружил интересный факт — нельзя использовать в Speech Event
переменную с названием `return` — движок начинает ее воспринимать не адекватно. Момент еще исследую, но похоже что происходит пересечение с какими-то системными переменными самого движка.

Тщательно проверил:
Это был злостный глюк, более он не повторялся.
Hmt
Обнаружил интересный факт работы триггера `Give Item to NPC`:

1. При передачe предмета от игрока к NPC,
в качестве NPC можно использовать контейнер с теговым именем.
2. При передачe предмета от игрока к NPC,
NPC можно вообще не указывать — предмет из инвентаря исчезнет в никуда :)

Может кому пригодится в работе ...
d_seven
QUOTE
1. При передачe предмета от игрока к NPC,
в качестве NPC можно использовать контейнер с теговым именем.
2. При передачe предмета от игрока к NPC,
NPC можно вообще не указывать — предмет из инвентаря исчезнет в никуда :)


Первый пункт был известен. Второй же пригодится, думаю, уже сегодня вечером. Спасибо.
Senka
QUOTE
2. При передачe предмета от игрока к NPC, NPC можно вообще не указывать — предмет из инвентаря исчезнет в никуда :)

Погодите. разве при этом предмет не падает на землю? Вот если в транспорте такое проделывать, то может и исчезнуть. Хотя я как-то находила его под транспортом.
Hmt
я вот веревку таким образом скинул, пока не нашел ...
хотя по логике должен под себя :)
Senka
К сожалению, ФТ забагован до боли, и никакие патчи рандомные глюки не вылечили. Так что может раз в никуда пропасть, раз под себя упасть :)
Hmt
специально проверил на карте размером в 4 тайла — веревка исчезает в никуда :)
Hmt
В процессе создания карт и отлаживания скриптов,
постепенно обнаруживаются всякие нехорошие вещи.
Тема создана для сбора всех известных и малоизвестных
"Граблей" (возможно некоторые вещи уже известны давно).

- совместное использование триггеров `Force speech` и `Click speech`
частый вылет в Windows;

- триггер `Move Unit` нельзя использовать во время пошагового боя;
(команда ведет себя неадекватно).

- после применения триггера `Move Unit`, крыши зданий перестают "съезжать";
(нужна "ручная" центровка на персонажа, если он работает через `SpawnPoint`).

- триггер `Center View`, в режимах центровки на персонажа, поcтавленного
на карту и персонажа, появившегося на карте посредством `SpawnPoint`,
работает по разному. Через `SpawnPoint`, центровка сбита.
Более того команда `CenterView` не аналогична клику по персонажу
И это реально бесит !

- при заходе на новую карту, все члены отряда получают `Tagname`
соответствующий тэгу точки `SinglePlayerSpawn`.

- совершая запись в игре и последующее ее считывание, `Tagname` обнуляется.
(нужен "запоминатель" `Tagname`, поставленный на карту)

- Триггер `Display World Text` блокирует все окна и вырубает фоновую музыку.
(фиг с ним с окнами — но вот музыка ...)

- применение триггера `Force Speech`, с условием `Click Speech`.
Игра вылетает в Windows.

- номера команд, на карте не должны прерываться
(нельзя поставить Team1 и скажем Team4, с пустотой между ними).
Игра вылетает в Windows.

пост будет дополняться ...
d_seven
- условие "speech occured" + любой триггер -> игра вылетает в Windows, если более 3х раз для одного или нескольких персонажей

Hmt
По поводу тагнеймов. Тагнейм, заданный через свойства объектов, всегда работает(что позволяет прописывать события для персонажей в отряде), и при этом работает и новозаданный на карте тагнейм (сбрасывается этот, или я чёто путаю?)
Hmt
тэг заданный в редакторе объектов, насколько я понимаю, все равно накрывается.
допустим я вышел с карты с тэгом `Player`, далее я зашел на случайную карту,
затем вернулся обратно — мой тэг накрылся, все скрипты завязанные на тэг
`Player` больше не работают. (связано это с `SinglePlayerSpawn`)
По поводу команды игроков, тег одинаковый для всех — на эти грабли, я еще
с лифтами наступил — у меня по тегу `Dweller` все игроки перемещаются в зону
лифта :) Вообще тут надо-бы полное исследование провести ... все по полкам
раскидать.
d_seven
Таг, заданный в свойствах объектов, не соответствует тагу, заданному вручную на карте или с помощью single player spawn point. Это легко отследить на следующем примере: задаём в свойствах стимпака таг *стимпак*, кладём в рюкзак префаба. Открываем какую-нибудь карту, кладём тэгованный стимпак на землю (или в рюкзак NPC). Заходим на карту, поднимаем второй стимпак и смотрим в рюкзак — стимпаки не сложились в кучу, игра воспринимает их как разные объекты. Более того, если подвязать проверку на обладание тэгованным объектом, она не срабатывает. Вот только я пока не вычислил, на какой именно и при каких условиях тэгованный из этих 2х объект, игра не реагирует (это можно разные спрайты дать для начала, чтоб понять, руки ещё не дошли). Ещё пример. На карте я установил юнита, заранее тэгованного в свойствах + тэгованного на этой карте. Взял его в команду. На этой же карте, без перезаходов, в спец. зонах игра реагирует на этого члена команды по всем тагам. На второй карте игра реагирует точно так же. Вернувшись на первую, отрабатывается только персональный таг (заданный в свойствах). (последнее утверждение требует уточнения, не помню сейчас)

Я так понял, что в редакторе свойств объектов, можно задать *глобальный* таг, а непосредственно на картах — локальный(и отрабатываться он будет только на данной конкретной карте). В эту теорию вписывается и ситуация с перезаходом на карту посредством sps(single player spawn). Существует несколько других видов спаунПойнта, особенно меня интересует Revisited, до которого блинкампот тоже пока не добрался...а стоит ли? Что он конкретно делает кроме того, что торчит на каждой случайной встрече в одном экземпляре?

>>Вернувшись на первую, отрабатывается только персональный таг (заданный в >>свойствах). (последнее утверждение требует уточнения, не помню сейчас)
Сорри, ввёд в заблуждение. Конечно, отрабатываются оба тага, потому что спаунится юнит уже с командой на sps, что даёт ему таг *player*
Hmt
займусь-ка я этим вопросом поплотнее — дабы расставить все точки ...
QUOTE
особенно меня интересует Revisited
Да ничего он особо не делает.
должен высаживать игрока, при повторном посещении карты, в месте где стоит.
интересен, если при повторе нужна высадка отличная от `SPS`.
Но, по моим наблюдениям, нифига он не работает как надо.

Отправлено: 29 дек 10 22:01
Проверил один из вариантов:
`Tagname` пишите куда угодно и как угодно — он ВСЕГДА перепишется на SPS.
(никакой разницы нет, в свойствах объекта или на карте.)
Надо искать, где в памяти FT хранит информацию о тэгах и блокировать их.



Good Year
А каким триггером отобрать у игрока предмет? Например, если хочешь, чтобы игрок дал голодающему рейдеру в Макомбе еду?
Hmt
`Give item to NPC` — передача предмета от ГГ выбранному NPC.
Если нужно от NPC1, к NPC2, то двойной командой,
`Give item from NPC1 to human`
`Give item to NPC2`
(сначала от NPC1 себе, затем от себя NPC2.)
Giesnik
Кхм...
Дилетанский вопрос(ну увы пока,у меня такой уровень).
Какой тригер отвечает за то, что-бы при входе на карту определённая группа энкоутёров, помогла ГГ при зачистке локации.Например как в 24 миссии(Помню, там тоже при входе суровые мужички меня ждали).

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

Сразу спасибо за ответ господа.
Hmt
QUOTE
как сделать, грубо говоря встречу караванщиков, скажем с руками смерти, но только не на глобалке, а на определённой карте.
хм... а чего тут такого ? Берем караванщиков (нейтрально к игроку, ну или положительно),
берем "рук смерти" (враждебных и игроку, и каравану) — ставим их на одну карту, все.
Далее вы заходите на карту и видите "рук смерти" напавших на караван.
Giesnik
А можно поподробнее, что нажимать, что включать)
Good Year
QUOTE
А можно поподробнее, что нажимать, что включать)


Посмотрите сюда. Здесь всё подробнейшим образом расписано.

Также я посоветовал бы Вам ознакомится с правилами и впредь не задавать вопросов, на которые здесь отвечали уже миллион раз.
Good Year
1. Представим ситуацию: имеется некий персонаж, который по сюжету может говорить с игроком. Только в случае, если харизма отряда будет слишком низкой, его фразы сменятся на более грубые, а если у отряда слишком низкий суммарный интеллект — он будет говорить более просто. А если будут выполняться оба условия, игра вылетит, выберет первое из них в списке триггеров или выберет одно из них случайным образом?

2. Вот если в триггере стоит условие на кол-во определённого стата у игрока, то проверяется суммарное значение этого стата у всех партийцев. А если идёт проверка на уровень навыка — то же самое?
Nik O`Tin
QUOTE
в упрощенном виде, вся система. 8 кнопок, за которыми прячется ГГ, и на которые он может нажать не двигаясь с места.
Ему не дает двигаться четверть тайла на котором он стоит. Если же кнопки расположить горизонтально, я не уверен что он дотянется до всех.


А если использовать скрипт?

Например в некоторых миссиях героем можно воздействовать на кнопку, и в другом краю карты включаются турели.
Hmt
QUOTE
Пощёлкал — работает, достаточно быстро.
я заметил, что на разных компьютерах скорость работы отличается,
причем не обязательно, что на быстрой машине будет работать быстрее ...
QUOTE
А если использовать скрипт?
Например в некоторых миссиях героем можно воздействовать на кнопку, и в другом краю карты включаются турели.
чтобы что-то где-то произошло — нужно совершить действие, а в данном случае, это действие и не совершить.
Приведенный пример — это другое, в данной ситуации не поможет.
Nik O`Tin
QUOTE
чтобы что-то где-то произошло — нужно совершить действие, а в данном случае, это действие и не совершить.


А что насчет ловушек?
Тусть герой топчется по пикселям ловушкам.
Hmt
QUOTE
Тусть герой топчется по пикселям ловушкам.
ну ... если бы я хотел нажимать кнопки путем перемещения героя, я бы это сделал и без ловушек.
Идея как раз в том, чтобы герой стоял на месте :) Иначе это халтура !
Nik O`Tin
т.е. ты хочешь сказать что совсем не реально осуществить привязку скрипта к нажатию кнопки?
der Fluger
Nik O`Tin, на этот вопрос отвечают уже не первый год одним и тем же словом. Ты его даже жирным выделил.
Hmt
QUOTE
т.е. ты хочешь сказать что совсем не реально осуществить привязку скрипта к нажатию кнопки?
Речь о кнопках клавиатуры ?
der Fluger
Hmt, судя по всему именно так. Ещё часто спрашивают о привязке скрипта к простому клику на объект. Пардон, что влез в диалог. Подождём, что ответит Nik O`Tin.
Nik O`Tin
QUOTE
отвечают уже не первый год

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

Но в общем и целом, некоторое представление о том как оно работает, имею.

Говоря о кнопках, я подразумевал оба типа кнопок.

  • Так как в 1-2 в диалоговом меню можно "топтать клаву ручками" по цифрам.
    В тактикс к сожалению не много играл, посему не знаю, реагирует ли игра на нажатия на цифры.
  • Кнопки как правило выполнены в виде картинок, на которые кликают курсором.
Потому и спрашиваю, точно совсем?
Можно же найти способ дотянуться до уха нестандартным способом. По любому.

QUOTE
Идея как раз в том, чтобы герой стоял на месте

Ну хорошо, пусть стоит на месте, ну а вертеться ему можно?
Или оружие в руках менять. Реакция то на это прописывается?
Hmt
QUOTE
Ещё часто спрашивают о привязке скрипта к простому клику на объект.
вот это теперь вполне возможно.
QUOTE
реагирует ли игра на нажатия на цифры.
в том виде, что Вы подразумеваете, нет и не будет.
QUOTE
Кнопки как правило выполнены в виде картинок, на которые кликают курсором
можно сказать, что так и сделано, но это не совсем кнопки, это, скорее,
уникальные объекты, со своими очень ограниченными свойствами.
QUOTE
ну а вертеться ему можно?
он и вертится, но в плоскости, зона его действия, сильно ограничена (это если стоять на месте).
QUOTE
Реакция то на это прописывается?
нет, это невозможно ...

т.о вертикальное расположение кнопок более предпочтительно.
Grey
Вопрос: режимами стрельбы в FT Improver ещё никто не баловался? Потому как появилась идея по делению на шумное/бесшумное оружие, относительно пригодная для применения вообще по кампании, а не по одному месту на карте. Может быть местами багнутая, но по идее должна срабатывать.

В первом задании (или просто вначале, при определении общих переменных, если это просто одна карта) делаются глобальные переменные, в которых на всё последующее действо прописываются списки оружия и режимов работы. Минусы — всё оружие должно быть тегованное, и карты придётся дополнительно отмечать зонами с соотв.маршрутами (или другими необходимыми для показа действия механизма шума извращениями), чтобы разницу громкого и тихого оружия понимали боты и реагировали на шум.

Суть: для каждого оружия прописываются его режимы стрельбы в условиях, в действиях же прописывается значение переменной, отвечающее за шумность. Величина данного блока скриптов будет напрямую зависеть от количества оружия и его режимов. Возможно, удастся сократить методом "от противного" — по умолчанию переменная шумности (и всё оружие) имеет значение "шумно", но если оружие (по тегу) и режим огня (потому и нужен Импрувер, чтобы режим проверялся при атаке) относятся к бесшумным, то переменная переключается в "бесшумно". Таким образом, вся масса оружия по фактору шумности сводится к двум значениям одной переменной.
После же эта переменная используется на картах, и по ней бесшумность и определяется. Например, если какой-то юнит игрока находится в определённом месте и шумит громким оружием — на звук реагирует бот, и движется туда по вейпойнтам в зону, где стреляли (условием служат значение переменной в шумном режиме и наличие юнита игрока в помеченной зоне). Если нужно, можно настроить группы реагирующих ботов в зависимости от их местоположения, чтобы за полкарты не бегали. Если же атака тихая — никто не реагирует, все стоят на местах. Или если боты не видят стрелка с бесшумным оружием — то после убийства одного из них они не переходят во враждебный режим.
Hmt
QUOTE
Потому как появилась идея по делению на шумное/бесшумное оружие
Если все оружие в игре будет тэгованное, то импрувер вроде как и не нужен.
Или деление происходит не по типу оружия ? Тут мая немного не понимай :)
QUOTE
Например, если какой-то юнит игрока находится в определённом месте
Значит карту придется превращать в сетку, состоящую из независимых зон
(иначе как узнать где конкретно юнит), причем мелкую сетку.
А ведь это шикарная идея ... правда и скрипты будут "веселые".
QUOTE
то после убийства одного из них они не переходят во враждебный режим.
значит, как минимум, каждый вражеский юнит должен иметь свой тэг и номер команды (порядковый, не прямой).
Grey
QUOTE
Если все оружие в игре будет тэгованное, то импрувер вроде как и не нужен.

Кхм. Не помню, есть ли в игре проверка на наличие и применение особого предмета в руках, потому Импрувером и озаботился. Вроде как нет.
QUOTE
Или деление происходит не по типу оружия ?

Деление именно по тегам (которые суть скопированы с названий стволов, чтоб легче ориентироваться), по отдельным "видам" оружия, так сказать. Потому и от бесшумных лучше идти — их наверняка меньше будет.
Например, в значение переменной (вроде как не только обычные же true и false можно ставить?) "L" (loud) записать, с прописью всех режимов огня по отдельности: ak74, aksu74, toz34, pkm, chainsaw. А в глушёные — "S" (silent): все рукопашные (чтобы не случился косяк, что рукопашка вдруг будет сильный шум давать), axe, nailer, autonailer, throwknife.
Если тега из ent-редактора не теряются — можно прямо там прописать. Если теряются — уже придётся извращаться, ложа прямо на карту пушки, и приписывая им теги руками.
QUOTE
Значит карту придется превращать в сетку, состоящую из независимых зон

Вроде того. Не обязательно слишком мелких, но суть такая. Конечно, дополнительный онанирен с картами (прописка для каждой зоны как минимум юнита там и его шума, плюс нужной реакции), но зато возможность воплощения творческих задумок. Мне лично это нужно для периодически оживающей задумки зомби-кампании: там зомби на слух реагируют как раз (по примеру "Школы мертвяков" и небольших выводов из их гипотетической биологии). Как минимум часть тварей по этой причине должна быть "мобильной группой", и ковылять туда, где игрок нашумел выстрелами.
QUOTE
значит, как минимум, каждый вражеский юнит должен иметь свой тэг и номер команды (порядковый, не прямой)

А отношение команды напрямую не ставится, чтоб без лишних телодвижений? Или я чего запамятовал...
Hmt
QUOTE
наличие и применение особого предмета в руках
Наличие да, вот насчет применения не уверен. С другой стороны, если у меня в руках "тихий" ствол,
какой смысл делать проверку на то, что был произведен выстрел ? Переменную можно присвоить по наличию этого оружия в руках.
QUOTE
А отношение команды напрямую не ставится, чтоб без лишних телодвижений? Или я чего запамятовал...
Я наверное не очень понятно выразился. Реальных то всего 8, а вот виртуальных завязанных на эти 8, сколько угодно,
атаковать они (виртуальные) будут независимо, каждый по отдельности. Но если атаковать любого из команды (реальной),
разве остальные не станут агрессивными ? Необходимо будет, каждый раз менять "отношения" между командами,
чтобы вернуть их в мирное русло так сказать (кстати я не уверен что этот номер пройдет).

Grey
QUOTE
Наличие да, вот насчет применения не уверен.

В этом и фишка. Если юнит в стелсе и режиме без атаки сразу по-всему-что-шевелится зайдёт в зону проверки, но реакция на шумный ствол будет (уже полезут, без выстрела даже), даже если он не выстрелит, что уже не то.
Потому именно проверку на выстрел и хочется сделать.
...
Чьорт. Только сейчас дошло, что результат одинаковый будет, хоть при проверке наличия ствола в руках, хоть при проверке режима, привязанного к переменной. Но — можно попробовать поставить условием сделанные в момент нахождения в зоне убийства (как факт стрельбы), тогда можно обойтись и проверкой экипированного оружия.
...
Не помню. Возможно ли в редакторе сделать подобие условия "ИЛИ", чтобы хватало для сработки действия одного условия из списка? От огромного ж количества излишков избавиться можно тогда.
Hmt
QUOTE
Потому именно проверку на выстрел и хочется сделать.
да, тут похоже только импрувер. Хотя ... интересно, сработает ли `ObjectScriptState`у оружия при выстреле ...
QUOTE
Возможно ли в редакторе сделать подобие условия "ИЛИ"
каждое условие придется прописать отдельно (это и будет ИЛИ). Но это можно сделать, универсально 1 раз, а дальше просто грузить триггер-лист на каждую карту.
Grey
К слову, на крайняк стандартными средствами можно сделать проверку юнита на наличие в зоне, наличие экипированного ствола по прописанному в начале типу (без изврата с каждым его режимом стрельбы) и проверку киллов представителей определённых групп команды врага, которых можно достать атакой из этой зоны. На шумном ближнего боя — тоже должно работать, просто зона будет та же, где и размещаются потенциальные цели. Дополнительный изврат, но более чистая реакция. "Если кто-то там, и в руках шумный ствол, и он бахнул, свалив кого-то, кого оттуда можно достать — туда стоит идти".
Hmt
QUOTE
"Если кто-то там, и в руках шумный ствол, и он бахнул, свалив кого-то, кого оттуда можно достать — туда стоит идти".
в конечном итоге, едва-ли на таких картах вообще будут "мирные" противники, так что стандартными средствами сделать можно.
Движок, чую, нас еще порадует своими возможностями.

Кстати я тут подумал, попробую накидать идею вкратце (думаю над реализацией).
У каждого члена команды игрока, допустим есть тег user01, user02 ... userXX ...
Они все поменяются на тэг ГГ, при выходе с любой карты, это всем известный факт
(как же это меня выбешивает). Так вот к чему я ... эти тэги расположены где-то
в оперативной памяти, нужно их заблокировать, чтобы они всегда оставались неизменными
(ну прям как ArtMoney делает, им кстати и можно для начала попробовать)

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

Может, может. Вариант — сделать ту же Артманю в поставке с модом и написать в инструкции, когда её включить и какой список значений загрузить. Геморно, но, возможно, рабоче. Или ссылку на скачивание дать, как доп.софт.
Grey
Только что на всякий случай проверил, можно ли сделать реакцию на экипированный в слот брони предмет (маскировка под врага, например).
Если броня тегованная, то игра её нормально опознаёт, и можно задавать действия.
Пробовал на юните с собственным тегом-именем.
Hmt
Господа ... есть ли у кого мысли, мнения, руководства о том,
что такое Enable Script Events и с чем его едят ?
Buzzil
Если это у ентити, то вроде бы для использования скриптов типа Skill Use Occured (в статьях с JJ86 про это говорится). Но я лично не уверен в правдивости тех статей.

Искать Skill-Use Occurred
Ваш ответ: