Так это же leavecorpse.fpi... Не, братан, такое не прокати... [img]http://s56.radikal.ru/i153/0910/dd/7697e2c2b1fc.gif[/img] [img]http://i.imgur.com/MjD6Z.jpg[/img]
Так не работает изменение. У тебя нет перехода состояний. И кириллицу в скриптах никогда не используй, а то глюков не оберешься. Фанат игр Max Payne и Fahrenheit.
Почитай про основы скриптования. Вот мой перевод мануала, к примеру:
Язык сценариев является простым, основанным на триггерах, языком искусственного интеллекта и используется для программирования поведения объектов в игре. Синтаксис языка очень прост: структура каждой строки «если-тогда» и заранее определенный список условий и действий. В этой статье рассказывается, как движок обрабатывает различные элементы сценариев. Fpi-сценарий состоит из списка состояний и различных примечаний. Строка, в которой описывается состояние, будет обязательно начинаться с двоеточия. В первой части строки пишем команды «если» (условия), разделяя их запятыми. Вторая часть строки «тогда» отделяется еще одним двоеточием – команды (действия), которые написаны в ней, будут выполнятся тогда, когда условия, написанные в первой части строки, «станут правдой». Здесь тоже команды нужно разделять запятыми. Ошибка многих состоит в том, что они на автомате лепят пробелы после запятых. Внимание: пробелов после запятых или двоеточий ставить не нужно. :условие,второе условие:действие,второе действие Примечания, которые еще называются комментариями, начинаються с точки с запятой. В этой статье, мы будем использовать примечания таким образом, что мы не смешиваем строки с комментариями со строками с состояниями. Примечания используются, чтобы делить сценарий на части и объяснять его использование как для разработчика, так и конечного пользователя. Во многих случаях, замечание используется для определения части сценария, как например Заголовок и Триггеры. Движок не обращает внимание на комментарии при выполнении сценария и они никоим образом не необходимы для его работоспособности. ;это примечание В следующем примере сценария, ты можешь видеть использование примечаний, условий и действий. Использование промежутка между частями сценария может также помочь при ориентировании в сценарии и его различных частях.
Давай, начиная с первой строчки, рассмотрим наш сценарий. ;Artificial Intelligence Script (;Сценарий искусственного интеллекта) - прим.пер. Это первое примечание определяет документ как сценарий искусственного интеллекта. Как заявлено раньше, примечание помогает как разработчику, так и конечному пользователю в ориентировании, использование, и, при необходимости, изменении сценария. ;Header (;Заголовок) – прим.пер. Часть заголовка состоит из одной строки в виде описания (desc = описание) сценария и, возможно, содержит дополнительные примечания, которые должны обьяснить людям что это за сценарий, с чем его едят, действия или или даже проинструктировать конечного пользователя. Проще говоря, там можно написать что угодно, любой бред. Помни, что каждая новая строка примечания должна начаться с точки с запятой. desc = Player Proximity Door (Open and Close) Описанию сценария предшествует сокращение «desc =». Я уверен, что ты можешь объяснить предназначение этого сокращения. Поверь мне, дальше ты начнешь разбираться с намного более сложными сценариями и благодаря только этому сокращению можно сразу будет сказать, что же этот сценарий делает. ;Triggers (;Триггеры) – прим.транслитератора Часть триггеров содержит основную часть сценария и состоит из условий и действий. Как говорилось раньше, строки начинаться с двоеточия, после которого следует условие. Для того, чтобы понимать, как проверяются условия, важно знать, откуда берутся значения. Представь, что условие – это коробка. Внутри коробки - значение, которое может быть установлено в начале игры, изменится в течение игры игры, или изменится из-за предыдущих действий сценария. Давай разберем первую строку в части триггеров. :state=0,plrdistwithin=120:state=4 Первое условие, которое ты видишь, это - "state=0". State, по-русски Состояние – коробка, в которой лежит значение - "0". В начале игры это значение будет «правдой», потому что значение "state" всегда поначалу будет "0". Поскольку условие "state=0" верно, движок продолжает проверять условия в этой же строке. Запятая после первого условия говорит нам, что есть еще другое условие, которое нужно проверить, "plrdistwithin=120". Запомни, "plrdistwithin" - коробка и "120" - значение. Если это условие верно (игрок находится на расстоянии до объекта ближе, чем 120 единиц), движок продолжает обрабатывать строку. В противном случае (если игрок дальше, чем в пределах 120 единиц) движок прекращает читать строку, ему уже ничего не важно, ни одно из действий не заработает, пока игрок не приблизится к объекту ближе, чем на 120 единиц. Мы допустим, что условие верно и расстояние до игрока меньше 120 единиц. Двоеточие говорит движку, что условия кончились, те, которые есть, проверены и они все положительные, или истинные, значит, наступило время осуществлять действия. Первое действие, "state=4", означает, что значение в коробке "state" изменяется от "0" к "4". Как ты, возможно, заметил, "state" используется и в качестве условия и в качестве действия, позволяя сценарию переходить к другим строкам, где среди условий есть "state=4" и выполнять только действия для этих строк, игнорируя все строки, где "state" какой-нибудь другой. Поскольку в этой строке нет больше никаких действий, движок начинает читать следующую по порядку строку. А если у нас нет никаких условий и мы хотим, чтобы движок выполнял все условия сразу, всегда и безоговорочно? В таком случае, мы начнем линию с двоеточия, как обычно, и сразу за ним поставим еще одно двоеточием. Например: ::incframe=0
В этом случае движок не имеет никаких условий для проверки, и переходит к действиям сразу. Но, это только пример строки и его нет в нашем примере сценарии, идем дальше. :state=1:incframe=0 Движок еще раз начинает обрабатывать условия этой строки, но здесь уже натыкается на первую «ложь». Первое условие после двоеточия, "state=1" не верно, потому что значение "state" было изменено к "4" в предыдущей строке. Поэтому движок останавливается и идет дальше к следующей строке без выполнения любого из действий. Он продолжает проверять условия в каждой новой строке, пока не наткнется на истинное условие. :state=1:incframe=0 :state=1,frameatend=0:state=2,coloff :state=2,plrdistfurther=120:state=3,sound=$1,colon :state=3:decframe=0 :state=3,frameatstart=0:state=0,setframe=0 Поэтому, выполнение этого сценария начинается только в следующей строке: :state=4,plrcanbeseen:state=1,setframe=0,sound=$0 Когда "state=4" стает верным, движок проверяет следующее условие в строке, "plrcanbeseen" (игрок виден – прим.пер.). Если это условие истинно, выполняются действия. Если это условие не истинно (объекту игрока не видно), движок останавливается, и значение "state" не меняется, остается "4". Движок прочитывает сценарий вновь, останавливаясь на "state=4", чтобы посмотреть, не стало ли условие "plrcanbeseen" правдивым. Вот когда оно станет «правдой», тогда и выполнятся команды. Ты, возможно, задался вопросом, почему значение "state" было изменено от "0" к "4", когда логичней было изменить его на 1,2, или 3, которые у нас пропустились. Первое действие в этой строке подсказывает нам правильный ответ. Значение "state" сейчас изменяется на "1", и когда объект видит игрока (plrcanbeseen), наступает состояние "state=1". Действие "state=4" создало петлю, оно заставило движок продолжать проверку условия "plrcanbeseen" и, не идти дальше, пока оно не станет истинным. Так движок читает следующую строку, и так далее. Когда достигается конец сценария, он начинает читать его с начала, и так прокручивается, пока объект не будет уничтожен или уровень не будет пройден.
Сценарий заканчивается с примечанием, говорящим тебе о его окончании. Дальше может писаться сколько угодно примечаний, с одним условием: строка должна начинаться с точки с запятой. ;End of Script Знания о том, как движок читает сценарий - хороший первый шаг в изучении создания fpi-сценариев для твоих игр. Лучший способ учиться - изучить существующие сценарии. А потом попробуй написать что-то свое.