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 Ссылка на комментарий
Jekyll 92 Опубликовано 25 Октября 2017 Поделиться Опубликовано 25 Октября 2017 8 часов назад, Graff46 сказал: Живые можно удалять так Прошу прощения, может я некорректно задал вопрос, что-то перепутав. Вот здесь автор статьи утверждает обратное (удалить-то живого можно, но к чему это приведет, особенно в массовых случаях?). Впрочем, возможно я слишком заморачиваюсь. 3 часа назад, AndreySol сказал: соответственно метод kill не будет полноценно обработан для объекта, и он будет сразу удален Такой код исправит положение? Скрытый текст if mob then local sim = alife() local sobj = sim:object(mob:id()) if sobj then sim:release(sobj.id, true) end end New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
Graff46 598 Опубликовано 25 Октября 2017 Поделиться Опубликовано 25 Октября 2017 Только что, Jekyll сказал: автор статьи утверждает обратное Я тоже наслышан об этом, но с проблемами при удалении НПС не сталкивался, уменя в хр_эффектс такое есть: function del (actor, npc) alife():release(alife():object(npc:id()), true) end Пока еще не вылетало. 1 Ссылка на комментарий
dsh 3 824 Опубликовано 25 Октября 2017 Поделиться Опубликовано 25 Октября 2017 @Jekyll не исправит. Нужно, как минимум, разрегистрировать его в смарт террейне, если он там зарегистрирован. Ещё хорошо бы отрегистрировать его в респаунере, который его создал, если если мод был респаунером создан. Ну и в остальных местах отрегистрировать, если он ещё где-то зарегистрирован. 1 dsh mod: https://github.com/dsh2dsh/op2ogse Ссылка на комментарий
AndreySol 215 Опубликовано 25 Октября 2017 Поделиться Опубликовано 25 Октября 2017 (изменено) 7 часов назад, Jekyll сказал: Такой код исправит положение? Мало исходных данных... Надо знать, что за монстров Вы будете удалять - они работают в каком-то гулаге, они под персональной логикой, они просто под движковым управлением ? Насчет отрегистрации в гулагах и респавнерах, на мой взгляд, лучше сделать так, как в первом Вашем посте предлагалось - убить моба, а затем по факту его смерти удалить. Тогда он автоматом будет отрегистрирован везде, где был завязан. Код может выглядеть как-то так: mob:kill(db.actor) level.add_call(mob, function() return mob:alive() ~= false end, function() alife():release(alife():object(mob:id()),true) end)) тут мы используем кэллбэк-ф-цию, которая даст время движку на умерщвление моба, после чего удалит его. Изменено 25 Октября 2017 пользователем AndreySol 1 Ссылка на комментарий
Jekyll 92 Опубликовано 25 Октября 2017 Поделиться Опубликовано 25 Октября 2017 9 часов назад, Graff46 сказал: Пока еще не вылетало. Да и у меня, в общем-то, не вылетало, разве что несколько раз при использовании именно этого своего скрипта ловил такое: Скрытый текст Expression : assertion failed Function : CALifeSimulator__release File : deep deep in space Line : 666 Description : Object to release is a zero pointer Стремно как-то. 1 час назад, AndreySol сказал: Надо знать, что за монстров Вы будете удалять По задумке - всех подряд, кто под "горячую руку" попадет: и НПС, и монстры... Короче, оружие "на каждый день". Не знаю, как к такому подходу отнесется движок - подозреваю, что у него может случится серьезное "несварение". Кстати, появилось еще несколько вопросов, возможно нубских, но уж как есть: 1) в alife():release(alife():object(mob:id()),true) для чего это самое "true"? 2) в логе могут проскакивать записи вроде "! Invalid ogg-comment version, file:" или "- Critical: SMapLocation binded to non-existent object id". Первая отмечается в консоли красным цветом, вторая - зеленым. О чем в таких случаях говорит цвет записи? 3) насколько серьезны "- Critical: SMapLocation binded to non-existent object id" и "- Critical: CMapLocation::UpdateSpot binded to non-existent object id"? Возникает каждый раз, когда удаляется НПС (вторая изредка). Понимаю, что дело в метках, но как от этого избавиться - не знаю. New Anomalies 1.1 ☢☢☢ "Смерть-лампа" ☢☢☢ Дисраптор Русификатор для игры Vendetta: Curse of Raven's Cry Ссылка на комментарий
Graff46 598 Опубликовано 25 Октября 2017 Поделиться Опубликовано 25 Октября 2017 1 час назад, Jekyll сказал: записи вроде "! Invalid ogg-comment version, file:" Это в каком то звуковом файле не прописаны тэги. 1 час назад, Jekyll сказал: Description : Object to release is a zero pointer Пока не встречал... Ссылка на комментарий
Demosfen 142 Опубликовано 30 Октября 2017 Поделиться Опубликовано 30 Октября 2017 Подскажите как сделать приемники отключаемыми? как это у dsn в моде? Ссылка на комментарий
PBAX 4 Опубликовано 30 Октября 2017 Поделиться Опубликовано 30 Октября 2017 Народ, всем хай, как мне узнать ID своего (новосозданного через скрипт) НПСиса и дать ему денег? У меня вылетает при выдачи денег. PS ЗП 1.6.02 Ссылка на комментарий
Kirgudu 1 264 Опубликовано 30 Октября 2017 Поделиться Опубликовано 30 Октября 2017 @PBAX local sobj = alife():create(sect, pos, lvid, gvid) local id = sobj.id Инструмент Ссылка на комментарий
PBAX 4 Опубликовано 30 Октября 2017 Поделиться Опубликовано 30 Октября 2017 @Kirgudu А как мне переменную вызвать? Просто в коде указать ее имя? Ссылка на комментарий
aka_sektor 1 477 Опубликовано 30 Октября 2017 Поделиться Опубликовано 30 Октября 2017 (изменено) В 25.10.2017 в 20:37, Jekyll сказал: Invalid ogg-comment version В 25.10.2017 в 20:37, Jekyll сказал: отмечается в консоли красным цветом В 25.10.2017 в 20:37, Jekyll сказал: О чем в таких случаях говорит Комментарии в *.ogg файле отсутствуют или они неправильные. Как исправлять, смотри тут: https://modfaq.ru/Импорт_звука Изменено 27 Марта 2020 пользователем aka_sektor 1 - Ссылка на комментарий
shahvkit 3 582 Опубликовано 31 Октября 2017 Поделиться Опубликовано 31 Октября 2017 (изменено) Добрый день. Скрипты совершенно не моя стихия, поэтому прошу вашей помощи. В моде NLC7 столкнулся с проблемой спавна нужного НПС под текстурами. Решение данного вопроса предлагается такое: Прописать диалоги этого НПС кому нибудь другому и сделать следующее Скрытый текст Если случаются такие косяки с уходящими под текстуры НПС, то я применяю на этот случай простое решение: В логе найти его название как он заспавнен, например в данном случае это rad_tramplin_glavn. Ну и просто удалить его из игры, чтобы не мучался сам и не мучал игрока. Прописать в любом скрипте функцию с произвольным названием. Например test в mike.script Имя НПС вставить того, который глючит. В нашем случае это rad_tramplin_glavn function test() misc.release_by_name("rad_tramplin_glavn") end Загрузить игру на нужной локации и ввести команду исполнения скрипта В нашем случае это flush !mike.test НПС исчезнет навсегда, без убийства и падения репы ГГ. Вот скрипт в который нужно это вставить - http://rgho.st/6ZlCvRDgL Пожалуйста вставьте правильно предложенное выше. И ещё одно: Как ввести команду исполнения скрипта - где то напечатать её ? Просьба снимается. Сделал как написано, и в консоли прописал flush !mike.test Вроде сработало. Изменено 31 Октября 2017 пользователем shahvkit Ссылка на комментарий
Kirgudu 1 264 Опубликовано 31 Октября 2017 Поделиться Опубликовано 31 Октября 2017 20 часов назад, PBAX сказал: А как мне переменную вызвать? Просто в коде указать ее имя? Да. Не забывая об области её видимости: переменную, объявленную локально в одной функции, нельзя использовать в другой без передачи. Инструмент Ссылка на комментарий
PBAX 4 Опубликовано 31 Октября 2017 Поделиться Опубликовано 31 Октября 2017 @Kirgudu С этим способом у меня вылетает. attempt to index local 'npc' (a number value) Ладно не хочу через скрипт спавнить вопрос изменяется, но суть остается. Как мне заспавнить НПС через конфики т.е. заспавню его через сквад (не знаю можно-ли одного спавнить), как мне узнать его ИД и дать ему денег? Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 31 Октября 2017 Поделиться Опубликовано 31 Октября 2017 Всем привет. Есть какие-то способы спрятать оружие актору не считая bind_stalker.hide_weapon() ? bind_stalker.hide_weapon() - прячет оружие слишком резко, отключается худ модели и анимация holster не наблюдается, слышен только звук. А вот restore_weapon() работает нормально. Ссылка на комментарий
Shkiper2012 35 Опубликовано 1 Ноября 2017 Поделиться Опубликовано 1 Ноября 2017 Снимаю флаг flUsedAI_Locations (в данном примере для предметов из ящиков, чтоб не проваливались) local sobj_item = alife():object( obj_itm.id ) local pk = m_netpk.get( sobj_item ) local data = pk:get() data.object_flags = bit_and( data.object_flags, bit_not( 128 ) ) -- снять флаг flUsedAI_Locations pk:set( data ) Как выставить флаг обратно, так же скриптом? (В побитовой математике не шарю.) @TIGER_VLAD Можно попробовать, через имитацию нажатия клавиши (если есть такой функционал). Адаптация мода "AtmosFear" для мода "Боевая Подготовка" v.2.0.2. Адаптация мода "Магазинное питание" для мода "Боевая Подготовка" v.2.0.2. Ссылка на комментарий
abramcumner 1 181 Опубликовано 1 Ноября 2017 Поделиться Опубликовано 1 Ноября 2017 @Shkiper2012 data.object_flags = bit_or(data.object_flags, 128) -- установить флаг flUsedAI_Locations 1 Ссылка на комментарий
TIGER_VLAD 361 Опубликовано 1 Ноября 2017 Поделиться Опубликовано 1 Ноября 2017 22 минуты назад, Shkiper2012 сказал: Можно попробовать, через имитацию нажатия клавиши Только этот вариант и был на уме. Думал может есть попроще вариант. Ссылка на комментарий
sv6o6o9a 1 Опубликовано 7 Ноября 2017 Поделиться Опубликовано 7 Ноября 2017 Помогите Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ...e.r. - Çîâ Ïðèïÿòè\gamedata\scripts\sim_board.script:226: attempt to index local 'spawn_smart' (a nil value) Что бы быть конкретнее, я удалил всех нпс в припяти. После чего в файлах удалил что бы они не спавнились 1 Ссылка на комментарий
Pir@t@s 36 Опубликовано 7 Ноября 2017 Поделиться Опубликовано 7 Ноября 2017 Всем привет. Подскажите пожалуйста как при помощи скрипта отключить кнопки использования ПДА. Суть вопроса: Скрытый текст Создал отдельный предмет "пда для актера" и по моему сюжету, если гг теряет свой пда кнопки вызова (карта, контакты и задания - не доступны). Только как это сделать не знаю. Потому что знание скриптов 0 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти