[smart_terrains]
none = true \это чтобы непися ближайший гулаг не засосал
[logic]
active = remark \ активная схема работающая первой - можно ставить camper - но это сложнее, так как придется задавать точку кемпа.
no_move = true \ запрет неписю на движуху в первой схеме - чтобы он не сорвался куда не надо.
danger = danger_condition \ секция реакции непися на опасность
дальше сама схема
[remark]
anim = hello \начальная анимка - ставишь какую захочешь.
snd = звуковая тема что непись будет говорить в этой анимке - ставишь что хочешь. можно строчку не писать, тогда непись будет молча стоять
target = actor \ кто цель , если nil, то никто
для перехода к следующей схеме можно использоват таймер
скажем они у тебя заспавнились, отработали схему ремарк и через 5 секунд переключились к схеме волкер
on_timer = 5000 | walker
либо можно так
on_info = {+твой инфопоршень} walker
поршень можно в диалог сунуть, тогда после базара с неписем он будет выдан ГГ и сработает переключение на новую схему.
либо так
on_actor_dist_ge = 30| %+инфопоршень%
on_info = {+инфопоршень} walker
на расстоянии дальши 30 метров от непися будет выдан инфопоршень, после чего сработает переход на новую схему
либо так
on_actor_dist_ge = 30| walker
когда ГГ отойдет от непися на дальше 30 метров - переключение на новую схему.
либо так
on_actor_dist_le = 5| walker - при приближении ГГ к неписю биже чем на 5 метров переключение на новую схему
meet = no_meet \ если написать так, то непись не будет разговаривать с ГГ
danger = danger_condition
схема волкер на котрую переключится твой непись через 5 секунд (или сколько сам поставишь)
[walker]
path_walk = патрульный путь \(куда пойдет непись) - задается в all.spawn - снимаешь координаты и вписываешь туда. А в этой строчке пишешь имя заданного пути.
path_look = точка куда непись будет смотреть останавливаясь в конечной точке пути. Задается там же. Здесь же пишешь имя точки.
meet = meet
danger = danger_condition
если указываешь секцию meet= meet , то есть делаешь возможность общения непися с ГГ, то тогда расписываешь эту секцию так
[meet]
meet_state = расстояние|анимка@звук \ реакция непися на ГГ если он без оружия
meet_state_wpn = 10|анимка@звук \ реакция непися на ГГ если он с пушкой
victim = 10|actor \ расстояние с которого увидит ГГ
victim_wpn = 10|actor
use = true \ будет ли общаться
use_wpn = true \будет ли использовать оружие
meet_dialog = escape_lager_guard_start_dialog
диалог который будет доступен неписю при встрече с ГГ
[danger_condition]
ignore_distance = 20
здесь указываешь расстояние дальше которого непись будет игнорировать опасность.
Можно конечно и без схемы ремарк обойтись - задав сразу волкер.
то есть в секции [logic] сразу ставишь
active = walker
Ремарк на тот случай, если тебе понадобиться чтобы непись не cразу рванул в целевую точку.
В общем примерно так. Если где ошибся Максим Р. или singapur22 потом поправят.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Почему в этой схеме (под спойлером) не срабатывает переключение на первый ремарк (после того, как NPC включился в комбат против ГГ), при жизни эктора? После того, как непись его грохнет - срабатывает тут же. А так - ни таймер, ни дистанция не работает. Тут получается что на непися, когда он в комбате, какой то эвалюатор действует?
[smart_terrains]
none = true
[logic]
active = remark
danger = danger_condition
meet = meet
on_hit = hit
combat_ignore = combat_ignore
on_combat = combat
erlik, потому что помимо этой логики на NPC действует и скриптовая логика. Есть такие схемы поведения, у которых приоритет самый высокий, например, на попадание пули. Записываются эти схемы в xr_motivator.script, в функцию addCommonPrecondition(action). А как видно из этой логики, в remark2 NPC перейдёт, только если в него попала пуля.
Дело в том, что так и задумано, чтобы непись переключался на второй ремарк после хита. А дальше я хотел, чтобы он выходил из комбата обратно в первый ремарк по таймеру (или по дистанции).
Но пока эктор жив - непись шмаляет и шмаляет, а когда эктор дуба даст - тогда тут же в в первый ремарк - и на задницу плюхается. Как в anim и указано.
Я уж кучу вариантов перепробовал - но все никак.
Вот еще один - думал стопроцентно сработает - но... все также.
[smart_terrains]
none = true
[logic]
active = remark
danger = danger_condition
meet = meet
on_hit = hit
combat_ignore = combat_ignore
on_combat = combat
пробовал использовать функцию отключения секции combat - она вроде как сработала - непись из комбата вышел, но остался все равно во втором ремарке - да еще в консоли ошибка.
Неужели нельзя как то перебить эти эвалюаторы? Если это действительно из-за них...
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik А почему ты используешь именно remark? Эта схема, вроде как не предназначена, для боевых действий. Используй схему camper. Эта схема предназначена для действий нападения, в которой можно устанавливать любые действия нпс, во время боя. И самое главное. Схема camper имеет приоритет над движковым боем.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22, в кемпере же потребуются пути, а как я понял, erlik не хочет редактировать all.spawn или я ошибся?
добавлено спустя 1 минуту
erlik, а Вам нужно чтобы NPC остался врагом, но через 30сек. начал игнорировать бой?
добавлено спустя 7 минут
erlik, а что если во 2-ом ремарке (первый вариант логики) убрать строку:
on_combat = combat
Просто, судя по ней, NPC, перейдя во второй ремарк, тут же перейдёт в секцию [combat], поскольку он будет в состоянии боя. Но это предположение, точно не знаю.
отредактировал(а) Максим Р.: 18-07-2009 20:21 GMT3 час.
[b]Максим Р. , erlik Весь смысл в том, что схема combat является схемой настройки движкового боя. К сожалению, как отключать его, я не в курсе. Поэтому, остаётся единственный вариант, схема camper, которая имеет над ним приоритет. В любых других схемах, нпс будет переключаться в универсальный combat (движковый бой).
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
Да Максим Р. прав, я хочу создать схему похожую на кемпера, но без путей. Непись будет стрелять с места (при нападении) и садиться снова у костра после боя. В идеале. :-)
ТО что непись останется врагом ГГ после боя- это можно в приниципе и исправить, но это мне сейчас не нужно. Главное - чтобы он реагировал на таймер или дистанцию от ГГ. Время там стоит условное - для быстрой проверки.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Хотя, вспомнил. Можно использовать оверайд combat_ignore_keep_when_attacked = true. Данный оверайд может устанавливаться в любой схеме. Действия его, игнорирование хитов получаемых от актора.
Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
singapur22
Я пробовал использовать %=disable_combat_handler %. Но пока точно не понял, имеет ли она в моем случае какой то смысл.
Максим Р.
Без секции комбат вообще попробовать? Тогда получится непись будет использовать движковый бой, а не кемперский как у меня, если я правильно понял?
В общем с этой секцией [combat] много пока неясного. Например имеет ли смысл в ней ставить таймер.
Вариант с функцией делающей непися из враг нейтралом к ГГ - я как раз думал над этим вариантом.
И его стоит поробовать. Спасибо за вид самой функции.
добавлено спустя 4 минут
singapur22
Кстати поздравляю - (и себя тоже:-)) наши с тобой журналы вошли в двадцатку лучших на СП. :clapping
отредактировал(а) erlik: 18-07-2009 21:09 GMT3 час. Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
erlik, может ошибка в консоль выводилась из-за того, что стоит пробел:
%=disable_combat_handler %
нужно:
%=disable_combat_handler%
Насчёт комбата. Просто я подумал, в чём различия у on_info и on_combat (так же и у других), только лишь в том, что проверяют разные параметры? Если да, то комбат действует по такому же принципу: переключает в нужную схему и тп. Получается, что когда NPC переходит во второй ремарк, происходит проверка всех условий: on_timer не проходит (время ещё не прошло), расстояние тоже, а вот on_combat проходит, поскольку NPC в состоянии боя. После чего происходит переключение в другую схему, в которой уже нет проверок на время и расстояние.
Насчёт типа боя, да, будет универсальный (движковый). У меня были соображения, а что если просто вписать combat_type в сам ремарк, но я не пробовал и не знаю, будет работать или нет.
Присоединяюсь к поздравлениям!:-)
отредактировал(а) Максим Р.: 18-07-2009 21:43 GMT3 час.
Максим Р.
Функция disable_combat_handler у меня правильно была вписана - это когда на форуме писал лишний пробел сделал.
На сей момент добился того, что непись выходит из комбата по таймеру - и никакой ошибки в консоли - все тип-топ.
НО вот перехода в начальную диспозицию пока нет - активным почему по прежнему то остается второй ремарк.
причем получается интересно - сначала чувак выходит из боя - но не таймер, а на danger_inertion_time = 30000 - время забывания денжера, а потом на таймер 60 сек (его я вписал в секцию [combat] - (получается что можно таймер и сюда вставлять) - срабатывает включение функции %=actor_neutral%
Непись становится нейтралом. Отыгрывает анимку из второго ремарка. И все. Перехода к первой ремарке нет. Кстати бой я пока оставил кемперский - так как мне нужно, чтобы чувак с места стрелял - и этот бой вполне отключаем.
В общем надо еще эксперементировать.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
У меня вопрос по секции combat.
После того как непись из какой-либо схемы преходит в бой (заданный в combat) то остается ли активной прежняя схема, откуда он пошел в комбат? То есть скажем если в том же ремарке поставить таймер ну пусть на 60 секунд, а в бой непись включился через 15 секунд (после получени хита), то продолжает ли тикать таймер в этой схеме? Или он обнуляется?
И сама секция combat - это отдельная схема, или лишь дополнение к активной?
Я в ней кстати ставил таймер - и он тикал - эффекты в знаках процента срабатывали.
Но вот с переключением схем после боя - какие то неувязки...
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
По твоей статье пытаюсь сделать несколько k**5001c54314580bda8be6**5,
state = {0}
}
table.insert(sj, t)
end[/code]
Как видишь сделал их в количестве 6 штук. Но у костра сидит только 4. Размер гулага равен 30, так что места предостаточно.
В чем проблема?
отредактировал(а) Отшель[НИК]: 19-07-2009 19:54 GMT3 час.
"Нет Предназначения… Оно не существует. Единственное, что предназначено всем, - это смерть."
А как выдать инфопоршн эктору, когда он взял какой-то предмет?
Сталкер - круто, Сталкер - класс,
Crysis смоем в унитаз!!
Метро не круто и не класс!
ПЫСа смоем в унитаз!))
---
Если у кого то есть вопросы по Game Maker, модмейкерству или языку html, то пишите - вместе потупим =))
Функция проверки наличия у эктора вещи называется actor_has_item(section)
Если в логику какого либо непися (я так понимаю - тебе нужно, чтобы заказчик квеста получил поршень, что вещь найдена эктором, значит в его логику и пиши) вставить эту строчку
on_info = {=actor_has_item(имя предмета)} %+твой инфопоршень%
то при взятии эктором в инвентарь указанной в скобках вещи будет установлен инфопоршень заключенный в знаки процента. А дальше уже все зависит от того, зачем именно тебе был нужен этот инфопоршень.
Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Геныч Defake Данную процедуру можно провести несколькими способами.
1. Если тебе это нужно в единичном, конкретном случае. Например, при взятии квестового предмета. То можно сделать так:
На месте предмета, спавнишь рестриктор, и в логике рестриктора прописываешь такую схему, как описал erlik, прописав перед проверкой, значение nil. Чтобы функция выдачи поршна сработала однократно:
2. Если твой предмет не имеет конкретного местоположения. Тоесть может находиться на любой локации. То можно использовать функцию отслеживания спавна предметов в инвентаре актора. Функция находится в файле bind_stalker.script, и называется actor_binder:on_item_take (obj).
В теле данной функции добавляешь такие строки:
if db.actor then
name = obj:section()
if db.actor:object(name) ~= nil then
db.actor:give_info_portion("твой инфопоршень")
end
end
Если у тебя какойто другой случай, то отпишись какой.
отредактировал(а) singapur22: 20-07-2009 12:52 GMT3 час. Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
Эта тема закрыта, публикация новых сообщений недоступна.
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.