Svoboда 3 Опубликовано 23 Апреля 2009 Поделиться Опубликовано 23 Апреля 2009 Тема для обсуждения скриптов всего и всех в серии игр STALKER. Задавая вопрос (!): 1. Внимательно изучите суть вопроса. Вопрос должен соответствовать выбранной Вами темы. Это поможет сохранить порядок и читабельность темы, а также облегчит поиск и понимание сего; 2. Изучите то, что уже есть в теме (пролистайте "руками", воспользуйтесь поиском на форуме); 3. Изучите информацию которая может вам помочь: Stalkerin. Там есть много хороших статей касательно данной темы.Уроки по модостроению. Есть рабочие примеры готовых скриптов различного назначения. Справочное руководство по языку Lua 5.1https://www.mediawiki.org/wiki/Extension:Scribunto/Lua_reference_manual/ruСправочник по функциям и классам. Собрано много информации по функциям и классам, не всем, но по основные сведения предоставлены. Логика со вступлением и четырьмя частями: ВступлениеЧасть перваяЧасть втораяЧасть третьяЧасть четвертая. Smart_terrain (в простонароде - гулаг)Интересный способ настроики логики для гулаговСкриптовая часть игровой логики 4. Дабы не превращать обсуждение в "кашу" разной информативной направленности, задавайте несколько вопросов по порядку (в разных постах) после того, как получите ответ на предыдущий вопрос; 5. "Спасибо" и тому подобное - будьте так любезны в ПМ. Если не любите писать в ПМ, в конце вопроса напишите фразу: "Заранее спасибо!" - или что-то в этом духе; 6. ПОЖАЛУЙСТА! Указывайте, для какой игры Вам необходима информация (ТЧ, ЧН, ЗП), если стоит мод - укажите название мода; 7. Если Вы что-то сделали и результат не такой, какой Вами задумывался, то, пожалуйста, приводите коды которые Вы изменяли/писали целиком! Это поможет другим правильно ответить на Ваш вопрос, а также оградит Вас от лишней писанины. 8. Оформляйте сообщение. Пользуйтесь тегами для того, чтобы отделить код от текста. Пишите грамотно - ПОЛЬЗУЙТЕСЬ ЗНАКАМИ ПРЕПИНАНИЯ. 9. И помните: «Правильно заданный вопрос – половина ответа». Какие вопросы следует задавать, а какие нет... Задавайте вопросы, которые касаются непосредственно скриптов и их работы, т.е. Вы что-то делаете, а у Вас что-то не получается, при этом у Вас на руках должен быть хотя бы какой-то код, свидетельствующий о Вашей причастности к вопросу. Вопросы которые будут удалятся, следовательно их задавать не нужно:-- Где находится та или иная функция? Для ответа используем поиск по словам среди файлов оригинальной игры или мода, если объект поиска относится к нему, при помощью программы, которая Вам наиболее симпатизирует;-- Как сделать что-то/то-то? С подобными вопросами, либо в "ковырялки", где Вам вероятнее всего так же не ответят, либо выдвигаем мысли, подкреплённые теорией, практикой (идеальный вариант) и здравым рассудком;-- Вопросы со смыслом: "сделайте", "совместите" и подобными глаголами повелительного наклонения.-- К тому же удалению будут подвергаться вопросы, в которых масштабно не используются теги, для отделения кода и цитат от основного текста, а также не вписан в спойлер код размером превышающие семь строк.Ответ на возможно возникший вопрос: В какую тему можно обратиться по поводу логики и спавна объектов? В тему "ковырялок" соответствующей версии игры, для которой Вы задаёте вопрос. И последнее: очень рекомендовано к прочтению Правила форума 1 2 Ссылка на комментарий
Gektor 0 Опубликовано 20 Мая 2011 Поделиться Опубликовано 20 Мая 2011 Добрый день. У меня такой вопрос: Как в зове припяти заставить нпц исчезнуть на глазах? В тенях чернобыля так срабатывал [spawner]. Но в зове он почемуто не сработал. Заранее спасибо. Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий
Gektor 0 Опубликовано 20 Мая 2011 Поделиться Опубликовано 20 Мая 2011 Приветствую всех. Такой вопрос: Можно ли заставить скриптово динамический обьект, допустим ведро, менять свои координаты вместе с ГГ и при этом иметь синхронизированый угол поворота? Если можно, то как? Заранее спасибо. Команда ReWrite Team. От сталкера отошли. Пересели за другую платформу. Ссылка на комментарий
gruber 2 481 Опубликовано 20 Мая 2011 Поделиться Опубликовано 20 Мая 2011 strelok200, просто верни их в изначальную логику по какому то сигналу(скажем инфо на смерть всех мобов,так к примеру сделана атака на блокпост долга,но там это сделано через состояние гулага,а у тебя просто они как я понял всегда должны находится в этом состоянии).Да они и так при любом входе в онлайн(заход на локу или загрузка сохранки) будут возвращатся в изначальную логику Ссылка на комментарий
korshyn-3 0 Опубликовано 21 Мая 2011 Поделиться Опубликовано 21 Мая 2011 У меня вот какая проблемма , сделал квест по наподению сталкеров на бандитов , и не могу сделать так чтобы когда нпс бежит то он игнор гг ну то есть не входил с ним в диолог. Помогите пожалуйста ! Ссылка на комментарий
strelok200 0 Опубликовано 21 Мая 2011 Поделиться Опубликовано 21 Мая 2011 А как сделать чтобы после определенного диалога НПС шел в указанную точку Создаю глобальный мод с новыми локациямЭ Ссылка на комментарий
=VENOM= 50 Опубликовано 21 Мая 2011 Поделиться Опубликовано 21 Мая 2011 korshyn-3, укажи в логике, в конкретной секции NPC (walker или кто он у тебя) параметр meet = no_meet. strelok200, в диалоге получай инфопоршн, который будет условием переключения логики NPC на другую секцию, например: on_info = {+infoportion} walker@go_to_new_location. Ссылка на комментарий
Malandrinus 615 Опубликовано 21 Мая 2011 Поделиться Опубликовано 21 Мая 2011 Desertir, Такой вопрос, а как работает функция start_stop_menu класса CDialogHolder, т.е. прошу объяснить ее точное назначение. Как я понимаю она нужна для закрытия и открытия окон, но по конкретней пожалуйста. Да и вообще класс CDialogHolder для чего он нужен, для чего используется. Не полное описание, но минимальный набор приёмов использования есть в этом посте справочника. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Disord 1 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 Несколько вопросов накопилось 1. Где-то видел, что можно на последней точке пути НПС выдать поршень или что-то другое? Может кто сказать, как примеру поршень выдать? 2. Немного нубский вопрос, но как изменить поворот камеры в начале игры? direction меняю и ничего вообще не происходит (менял все 3 значения). Ссылка на комментарий
=VENOM= 50 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 Disord, сам инфопоршн на "последней" точке пути NPC выдать не сможет. Но. В путях на последней точке можно установить так называемый сигнал: [walk] points = p0 p0:name = wp01|a=walk|sig=arrif ... а в логической схеме NPC прописать реакцию на этот сигнал, в том числе и получение инфопоршна, примерно так: [walker@tra_la_la] ... on_signal = arrif | walker@tro_lo_lo %+infoportion% ... По второму вопросу - менять нужно у ГГ не только direction, но и параметр upd:o_torso. Ссылка на комментарий
Valerich 34 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 Народ, всем привет. Как удалить предмет из инвентаря у ГГ - (название - val_zapis_n) Черкните функцию, а я её через экшон вставлю в диалог. Заранее спасибо. Ссылка на комментарий
_Призрак_ 11 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 Можно воспользоваться функцией amk.remove_item_from_inventory_by_name("val_zapis_n",db.actor) Но ты сначала проверь, есть она у тебя или нет Freedom Ссылка на комментарий
=VENOM= 50 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 В АМК главная функция тянет за собой сервисную. Вот готовая, удаляет предмет из инвентаря ГГ по имени. Только не пытайтесь удалять болт : function del_from_player_inventory(item_name) local obj = db.actor:object(item_name) if obj then alife():release(alife():object(obj:id()), true) end end Ссылка на комментарий
Valerich 34 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 =VENOM= Я в скриптах не соображаю. Так ? function del_from_player_inventory(item_val_zapis_n) local obj = db.actor:object(item_val_zapis_n) if obj then alife():release(alife():object(obj:id()), true) end end А кавычки не надо "..." в скобках ? А в диалог такой экшон ставить ? <action>valerich_dialog.del_from_player_inventory(item_val_zapis_n)</action> Ссылка на комментарий
_Призрак_ 11 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 нет, не правильно Нужно сделать функцию: Если функция, которую кинул тебе =VENOM= лежит допустим в скрипте test1 то function my_megatest() test1.del_from_player_inventory("item_val_zapis_n") end <action>valerich_dialog.my_megatest</action> Freedom Ссылка на комментарий
Disord 1 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 (изменено) Valerich, не, не так Данную функцию суёшь в любой скрипт (чтобы потом вызвать): function del_from_player_inventory(item_name) local obj = db.actor:object(item_name) if obj then alife():release(alife():object(obj:id()), true) end end Затем создавай ещё одну функцию, вот такую: function del_val_zapis() название_скрипта.del_from_player_inventory("val_zapis_n") end А в диалоге вызывай так: <action>файл_с_функцией.del_val_zapis</action> ------------------------- Какая функция заставляет НПСа ударить ГГ по лицу? Изменено 22 Мая 2011 пользователем Disord Ссылка на комментарий
Artos 99 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 (изменено) Disord Хотелось бы дополнить твой пост предостережением об ограничении использования такого варианта набора функций 'однократным' применением. При попытке модмейкера удалить подобным образом пары (и более) однотипных предметов (да и порою разных) 'за раз', т.е. вызвав подряд в одном цикле (или даже в смежных) функцию удаления из инвентаря, можно получить вылеты. Обоснование: Проверка происходит по по клиентскому объекту актора, а удаление - у серверного объекта. Уже удаленный(!) предмет будет обнаружен и при следующей 'проверке наличия', если делается в одном и том же цикле, т.к. на синхронизацию серверного и клиентских объектов требуется время (несколько циклов апдейта актора). Т.о. упрощенные функции имеют область ограничений на применение. Более безопасный вариант может выглядеть так: function del_from_player_inventory(item_name) local obj = db.actor:object(item_name) if obj then local se_obj = alife():object(obj:id() --/ получаем серверный объект искомого предмета if se_obj then --/ проверка наличия объекта в игре alife():release(se_obj, true) end end end При этом варианте повторное удаление (однотипного предмета) скорее всего не сработает, но все же не вызовет фатальной ошибки выполнения кода. Или же можно использовать методы выставления флагов 'исключения' для предметов, типа: function del_from_player_inventory(item_name) local obj = db.actor:object(item_name) if obj and not db.actor:marked_dropped(obj) then --/ и отсутствует метка 'исключения' db.actor:mark_item_dropped(obj) --/ ставим метку 'исключения' alife():release(alife():object(obj:id()), true) end end Более надежный способ 'множественного удаления' все же предполагает итерацию по инвентарю с запоминанием требуемых идентификаторои с последующим удалением по запомненным идентификаторам. --- Готовых функций 'удара по лицу' не существует, вероятно ты имеешь ввиду схему 'abuse'. Требуется вызывать соответствующие состояния/анимации (или использовать подходящее из схемы 'abuse' или самописное). Есть моды, в которых имеется схема 'мордобоя'. Изменено 22 Мая 2011 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Valerich 34 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 (изменено) Ситуация такая , скриптер аддона "Коллекционер" Charsi (для него это дело плевое) - пока отсутствует, а люди спросили , как запустить аддон ещё раз , но он уже установлен. Я в скриптах - "нуб" . У меня завязано все на инфопоршнях. При нахождении в тайнике записки - предыдущая записка удаляется (скриптом) и вот так до последней . Последняя остаётся ,как бы на память. Вот её и надо удалить, чтоб начать заново. Инфопоршен изменяем и погнали по новой, но чтоб не было косяка - нужно удалить последнюю записку, чтоб скрипт не путался. Этот экшен я повешу всего ОДИН раз в диалоге, который больше не появиться. Добавлено через 23 мин.: П.С. Может этим спутал народ val_zapis_n , а n - это конкретный номер записки (просто я его забыл когда писал тот пост, толи 18 или 17) Изменено 23 Мая 2011 пользователем Cyclone Ссылка на комментарий
strelok200 0 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 Я прописал НПСу логику и при диалоге вылет [logic] active = remark@lesnik danger = danger_condition [remark@lesnik] target = actor meet = meet combat_ignore_cond = always danger = danger_ignore on_info = {+infoportion} walker@walker1 [danger_condition] ignore_distance = 3 [walker@walker1] path_walk = esc_bridge_kamp_way2 Создаю глобальный мод с новыми локациямЭ Ссылка на комментарий
=VENOM= 50 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 А сам инфопоршн зарегистрировал в каком-нибудь файле с инфопоршнами? Если нет, то вот это и причина для вылета. Вторая возможная причина - отсутствие path_look в секции [walker@walker1]. Ссылка на комментарий
strelok200 0 Опубликовано 22 Мая 2011 Поделиться Опубликовано 22 Мая 2011 Инфопоршен есть. Зарегистрировал path_look , все равно вылет Создаю глобальный мод с новыми локациямЭ Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти