z-Hunter Опубликовано 25 ноября, 2010 Жалоба Поделиться Опубликовано 25 ноября, 2010 Допустим, в диалоге с NPC запускается некий скрипт, который прикрепляется к этому NPC и начинает выполнятся. Внимание, вопрос: Если на этом NPC уже есть такой скрипт, означает ли это, что запустится ещё одна копия скрипта и они будут работать одновременно? Или же перезапустится уже работающий скрипт, или ничего не произойдёт? Ссылка на комментарий Поделиться на другие сайты Поделиться
z-Hunter Опубликовано 26 ноября, 2010 Автор Жалоба Поделиться Опубликовано 26 ноября, 2010 Поэкспериментировал. Интересно... Кажется, этот скрипт запускается ВООБЩЕ на всех NPC с таким id. И запускается к счастью только один раз. Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 26 ноября, 2010 Жалоба Поделиться Опубликовано 26 ноября, 2010 а разве у NPC не должен быть уникальный ID? это ко всем объектам в целом относится Ссылка на комментарий Поделиться на другие сайты Поделиться
z-Hunter Опубликовано 26 ноября, 2010 Автор Жалоба Поделиться Опубликовано 26 ноября, 2010 а разве у NPC не должен быть уникальный ID? это ко всем объектам в целом относится В игре он у всех уникальный. Что-то вроде redoran_guard_male0000000001. А в конструкторе у всех стандартных стражей редоран стоит просто redoran_guard_male. То есть в терминах ООП это класс, а в игре размещаются экзепмляры этого класса и им даются уникальные номера. Что касается скрипта, то он по-моему присоединяется ко всем NPC которые отвечают условиям этого диалога, который скрипт запускает. Но я не уверен. Ссылка на комментарий Поделиться на другие сайты Поделиться
Майк Опубликовано 26 ноября, 2010 Жалоба Поделиться Опубликовано 26 ноября, 2010 а ну стражи понятное дело, все верно, всем стражам добавится. если надо чтоб одному - делать уникального стража. если надо всем стражам иметь этот скрипт, но чтоб действовал один с которым разговор... хмм... надо mfsd листать, чтоб указывать в результате не абстрактного стражника в диалоге, а того, с кем говоришь. как-то так Ссылка на комментарий Поделиться на другие сайты Поделиться
TJ Опубликовано 26 ноября, 2010 Жалоба Поделиться Опубликовано 26 ноября, 2010 (изменено) Какова цель эксперимента? Если на НПС (или другом объекте) уже висит скрипт, то он будет выполняться по умолчанию пока его не остановят командой СтопСкрипт. А если мы его не останавливали, то зачем его запускать из диалога - он уже выполняется? Просто ставишь условие, которое нужно, чтобы отследить некий момент. СтартСкрипт используют для запуска глобальных скриптов, которые не присвоены ни какому объекту. Такой скрипт должен сработать на те объекты, коорые в нем указаны. В игре он у всех уникальный. Что-то вроде redoran_guard_male0000000001. Это не ID объекта - это имя копии (Reference) объекта в игровом мире. Если нужно чтобы эффект скрипта распрострянал свои действия на 1 объект, то этот объект должен иметь уникальный ID в редакторе и 1 копию в ячейке исполнения (в идеале - дабы избежать глупых ошибок - вообще 1 копию в игровом мире) Изменено 26 ноября, 2010 пользователем TJ Ссылка на комментарий Поделиться на другие сайты Поделиться
z-Hunter Опубликовано 26 ноября, 2010 Автор Жалоба Поделиться Опубликовано 26 ноября, 2010 Какова цель эксперимента? Если на НПС (или другом объекте) уже висит скрипт, то он будет выполняться по умолчанию пока его не остановят командой СтопСкрипт. А если мы его не останавливали, то зачем его запускать из диалога - он уже выполняется? Просто ставишь условие, которое нужно, чтобы отследить некий момент. СтартСкрипт используют для запуска глобальных скриптов, которые не присвоены ни какому объекту. Такой скрипт должен сработать на те объекты, коорые в нем указаны. Это не ID объекта - это имя копии (Reference) объекта в игровом мире. Если нужно чтобы эффект скрипты распрострянал свои действия на 1 объект, то этот объект должен иметь уникальный ID в редакторе и 1 копию в ячейке исполнения (в идеале - дабы избежать глупых ошибок - вообще 1 копию в игровом мире) Мне нужно, чтобы при изменении глобальной переменной любой NPC класса Guard предпринимал определённые действия (допустим подбегал к игроку и начинал его задержание). Повесить напрямую скрипт на стражников как-то неправильно, да и не известно насколько это совместимо с какими-нить другими плагинами. Вместо этого для запуска скрипта я использовал голосовые приветствия. То есть создаю "приветствие" Hello с фильтром для всех Guard-ов и для нужного состояния глобальной переменной. И ешё одно такое-же на Idle. Когда игрок проходит мимо такого NPC, срабатывает голосовой диалог в Result которого стоит startscript XXX. И, что самое интересное, этот XXX запускается не глобально, а локально именно на этом NPC. Правда я опасаюсь, что там несколько копий скрипта могут на одном стражнике запустится, потому и задаю этот вопрос. Ссылка на комментарий Поделиться на другие сайты Поделиться
Муурн Шепард Опубликовано 26 ноября, 2010 Жалоба Поделиться Опубликовано 26 ноября, 2010 Можно добавить в скрипт if ( CellChagned == 1 ) stopscript XXX endif Ссылка на комментарий Поделиться на другие сайты Поделиться
TJ Опубликовано 26 ноября, 2010 Жалоба Поделиться Опубликовано 26 ноября, 2010 (изменено) Мне нужно, чтобы при изменении глобальной переменной любой NPC класса Guard предпринимал определённые действия (допустим подбегал к игроку и начинал его задержание). Повесить напрямую скрипт на стражников как-то неправильно, да и не известно насколько это совместимо с какими-нить другими плагинами. Вместо этого для запуска скрипта я использовал голосовые приветствия. То есть создаю "приветствие" Hello с фильтром для всех Guard-ов и для нужного состояния глобальной переменной. И ешё одно такое-же на Idle. Когда игрок проходит мимо такого NPC, срабатывает голосовой диалог в Result которого стоит startscript XXX. И, что самое интересное, этот XXX запускается не глобально, а локально именно на этом NPC. Правда я опасаюсь, что там несколько копий скрипта могут на одном стражнике запустится, потому и задаю этот вопрос.Ух как. Ну вообще, чтобы начинали задерживать достаточно лишь поднять CrimeLevel игрока.А так - ну запустили вы этот скрипт из реплики Hello - потом во время задержания в резулте диалога пропишите СТопСкрипт "ваш скрипт" и он будет остановлен. Изменено 26 ноября, 2010 пользователем TJ Ссылка на комментарий Поделиться на другие сайты Поделиться
z-Hunter Опубликовано 28 ноября, 2010 Автор Жалоба Поделиться Опубликовано 28 ноября, 2010 (изменено) Ух как. Ну вообще, чтобы начинали задерживать достаточно лишь поднять CrimeLevel игрока.А так - ну запустили вы этот скрипт из реплики Hello - потом во время задержания в резулте диалога пропишите СТопСкрипт "ваш скрипт" и он будет остановлен. Т.е. если поднять CrimeLevel, то стражники должны задерживать без скрипта? У меня они обычно НЕ задерживают пока я с ними сам не заговорю. В процессе выяснения причин по которым в моём моде RA стражники не задерживают нарушителя, обнаружилась правда о запуске скрипта на NPC. Так вот, это глобальный скрипт, нацеленный на NPC, и в каждый момент времени такой скрипт может быть запущен только один. То есть, если на всех стражников повесить один и тот-же скрипт, заработает только один -- у самого первого встреченного стражника. Изменено 16 ноября, 2011 пользователем z-Hunter Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти