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 Ссылка на комментарий
Artos 99 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) ziStam, каких-либо штатных или иных удобных методов отслеживать анимации (иль подобное) для монстров нет. У них нет менеджеров состояния/движения/анимации/... как у сталкеров. Все в основном идет mob_capture из xr_logic.script, и если проанализировать - любая сторонняя схема может перебить прежнее и забрать управление на себя. Тут только перелопачивать скрипты и вставлять проверки на "если монстр свободен - то только тогда брать управление и командовать им", но ... это может порой и недопустимо. Добавлено через 2 мин.: *Shoker*, а я и не говорил про нет-пакеты для патронов. Они были упомянуты в связке - нельзя трогать свеже-убиенного НПС, пока у него в руках активно оружие, т.е. удалять его и его оружие в это время никак нельзя ... Добавлено через 2 мин.: P.S. Вот когда пояснишь, что же ты хочешь от нет-пакетов для оружия у трупа - тогда и можно гадать дальше ... Что-то мне подсказывает, что ты пытаешься чесать правой пяткой левое ухо ... ;-) Изменено 9 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) Я дополнил пост выше. Мне нужно каким то образом помечать оружие для игрока. Т.к у меня оружие делится на оружие с трупов, и купленное оружие. Сперва я хотел менять ему имя в инвенторе. Но это не получилось. Теперь я хочу ему апгрейд дописывать со своим текстом, чтобы хоть как то различать пушки. Изменено 9 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Artos 99 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) *Shoker*, хм ... что мешает ставить метки оружию при покупке? Что мешает ставить метки при дропе оружия? Под меткой подразумеваю не изменение чего-либо в свойствах предмета - а создание некоего массива, куда по имени/идентификатору заносить потребное (метить), и эту табличку сохранять в сэйвах. Все же стОит различать свойства самого предмета и пользовательские/модмейкерские данные для этого объекта и без особой нужды их не перемешивать. На крайний случай - сделай биндер оружию и используй pstor'ы для каждого такого ствола - вот тебе и не потребуется ковырять нет-пакеты и будешь запоминать метки вместе с оружием. Вот только такой вариант будет прокатывать для "онлайн"-оружия. Изменено 9 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
*Shoker* 322 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) Да не нужны мне метки\pstor-ы, я хочу показать ИГРОКУ, у которого в инвенторе лежит два совершенно одинаковых по внешнему виду и конфигам оружия, но разных на уровне скриптов. Мне надо, чтобы это увидел игрок, увидел при просмотре инвенторя в свойствах предмета, увидел при торговле там же и прочее... Для себя на уровне скриптов у меня это давно реализовано, но мне нужно донести это визуально игроку в максимально удобной форме. Именно для этого я хотел поменять оружию название скриптом, именно для этого я сейчас пытаюсь провернуть трюк с апгрейдами, потому что они сразу бросаются в глаза игроку. Собстно никто не пробовал менять предмету нет-пакет, пока он находятся в инвенторе игрока? Можно ли предмет там переносить в онлайн\оффлайн, или надо обязательно выкинуть его инвенторя. Изменено 9 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
ziStam 1 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) Artos, а нельзя ли сделать немоного по другому, наоборот, т.е "если монстр занят каким либо действием, то берем управление на себя и отпускаем его если дистанция до игрока допустим 10 метров"? И еще, недавно начали происходить произвольные вылеты со строчкой в логе(точного лога пока нет): application is aborting Что это примрно может быть? Понимаю что пальцем в небо, но может мысли какие и есть... Изменено 9 Февраля 2012 пользователем ziStam Legend of Stalker Ссылка на комментарий
*Shoker* 322 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) > application is aborting Проблема с моделью скорее всего. У меня было когда omf-файл был взят от другой модели. Ищи место где вылет постоянный, и думай, кто там может рядом быть. Изменено 9 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
ziStam 1 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 (изменено) *Shoker*, это началось вроде с попытки вставить новую анимацию смарткавера из чн в зп, но в игре оно почему-то нехотело нормально отыгрыватся и я отрубил вроде как все хвосты к чн-вским каверам, но вылеты остались, причем вылет происходит произвольно, либо во время синхронизации либо где-то где стоит кавер с новой анимацией. Интерестно то, что в omf-файлах сами анимации есть, но проигрыватся они не хотели не в игре, не в сдк, что странно... Изменено 9 Февраля 2012 пользователем ziStam Legend of Stalker Ссылка на комментарий
*Shoker* 322 Опубликовано 9 Февраля 2012 Поделиться Опубликовано 9 Февраля 2012 Ну в любом случае копай в этом направлении. Может у тебя какая то модель из ЧН не имеет\имеет лишние анимации или типа того. По идее у тебя модель будет вылетать сразу, как тока появится в игре. Так что можешь просто ставить на карту сталкеров и смотреть с какой моделью будет вылет... тут уже сам решай. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Zander_driver 10 343 Опубликовано 10 Февраля 2012 Поделиться Опубликовано 10 Февраля 2012 (изменено) Такой вопрос: Хотел зделать чтобы антирадар без жгута не использовался но когда есть жгут антирадар спавнится в инвентарь но не используется, прошу мне помочь, указать на мою ошибку. function use_antirad() if not db.actor:object("zgyt") then spawn_to_inventar("antirad") news_manager.send_tip(db.actor, game.translate_string("У_вас_нет_жгута.")) elseif db.actor:object("zgyt") then spawn_to_inventar("antirad_norm") del_zgyt() db.actor:eat(db.actor:object("antirad_norm")) end end -- Функция спавна в инвентарь. function spawn_to_inventar(spawn_item, npc) if npc==nil then npc=db.actor end return alife():create(spawn_item, npc:position(), npc:level_vertex_id(), npc:game_vertex_id(), npc:id()) end -- Функция удаления. function del_zgyt() local oItem = db.actor:object("zgyt") if oItem then db.actor:drop_item(oItem) alife():release(alife():object(oItem:id()), true) end end У тебя в одной и той же функции происходит спавн предмета в инвентарь и его съедание. Так нельзя) В это время предмета, который ты спавнишь, еще не существует. Поэтому и съесть нечего. Он появится когда функция завершила работу. Изменено 10 Февраля 2012 пользователем Zander_driver Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine. Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист. AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD. Ссылка на комментарий
Artos 99 Опубликовано 10 Февраля 2012 Поделиться Опубликовано 10 Февраля 2012 (изменено) Zander_driver, поправлю: Предмет после спавна (команды из функции спавна) появится СРАЗУ, но(!) это будет серверный объект. "Поедать" же можно только клиентские объекты. Клиентский объект появится не "по завершению работы функции", а по завершении всей процедуры его (объекта) регистрации в игре, на что, глубо говоря, тратится 1-2 периода апдейта актора. Добавлено через 6 мин.: ziStam: а нельзя ли сделать немоного по другому, наоборот, ... Можно, делай. Я дал ответ о том, "как продлить время", т.е. чтобы анимация не прерывалась, для чего нужно исключить перехватывание управление монстром ... Ты же теперь сам хочешь перехватывать и управлять им. Ну что ж, и это не запрещено. Изменено 10 Февраля 2012 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
S.T.A.L.K.E.R-DOLG 1 Опубликовано 10 Февраля 2012 Поделиться Опубликовано 10 Февраля 2012 (изменено) Как сделать respawn НПС на новой локации? Не стОит задавать банальных вопросов, ответ на которые очевиден. Создай/заспавни на новые локации свои респавнеры и будет тебе респавн неписей иль чего захотелось. --/Artos Изменено 10 Февраля 2012 пользователем Artos Пункт 3. Ссылка на комментарий
KD87 718 Опубликовано 10 Февраля 2012 Поделиться Опубликовано 10 Февраля 2012 (изменено) ziStam, с монстрами дело такое. Они управляются с помощью методов класса entity_action. У монстров есть очередь действий, можно получить текущее действие, можно добавить новое, но вот изменить текущее - никак. Так что ответ на твой вопрос - никак не продлить. Можно только узнать, закончилось ли действие. Но ты покопайся в скриптах типа mob_***.script, вероятно, где-то ошибка, из-за которой анимация и не проигрывается до конца. Изменено 10 Февраля 2012 пользователем KD87 Ссылка на комментарий
S.T.A.L.K.E.R-DOLG 1 Опубликовано 11 Февраля 2012 Поделиться Опубликовано 11 Февраля 2012 Дай статью как это сделать )))) Пункт 3. Ссылка на комментарий
*Shoker* 322 Опубликовано 11 Февраля 2012 Поделиться Опубликовано 11 Февраля 2012 (изменено) ziStam А ты на ЗП делаешь? Там у снорка вроде бы тока анимация stand_run_0 Или ты анимацию не из конфигов, а скриптами вызываешь? Если ты анимацию вызываешь из конфигов, или просто заменил существующию на свою, то скрипты тебе врятле помогут. Надо крутить конфиги\модели. Ежели анимация у тебя вызывается скриптами, тогда можно что нибудь попробовать. Изменено 11 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Boofer 0 Опубликовано 11 Февраля 2012 Поделиться Опубликовано 11 Февраля 2012 (изменено) Как должна выглядеть логика моба при таком раскладе действий? После спавна моб ждёт 10 игровых минут и потом направляется в заданную точку, но при этои игнорируя ГГ. Изменено 11 Февраля 2012 пользователем Boofer Ссылка на комментарий
*Shoker* 322 Опубликовано 11 Февраля 2012 Поделиться Опубликовано 11 Февраля 2012 Boofer Схема mob_walk Две секции. Активная первая. В ней ставь on_timer = 10 | переключение на другую@секцию (как то так) через 10 секунд. В другой секции кажется ставь combat = ... или combat_ignore = true, опять таки глянешь в готовых примерах или в статьях,и там настраиваешь игнорирование им врагов. Я точно не помню как это выглядит, но сделать в целом просто. Правда скорее всего он будет игнорировать не только игрока, но и всех врагов. Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Boofer 0 Опубликовано 11 Февраля 2012 Поделиться Опубликовано 11 Февраля 2012 *Shoker*, если так, тогда уж combat_ignore в активную писать. И не combat_ignore = true, а combat_ignore = combat_ignore [combat_ignore] И тут уже параметры. Да и вообще работает схема combat_ignore у мобов? И где бы ещё эти готовые примеры найти... Ссылка на комментарий
gruber 2 481 Опубликовано 11 Февраля 2012 Поделиться Опубликовано 11 Февраля 2012 (изменено) Смотрите в логике - оверрайды для монстров (кажется так).Тутора нет под рукою, но там команда есть на игнор актера, до первой атаки с его стороны - actor_frend=true так кажется.В ТТ2 есть собака проводник - пример подобной логики еще логика кабанов и тушканов на стадионе в Припяти с оригинала. Изменено 11 Февраля 2012 пользователем gruber Ссылка на комментарий
Boofer 0 Опубликовано 11 Февраля 2012 Поделиться Опубликовано 11 Февраля 2012 (изменено) gruber, нашёл тутор, спасибо, попробую. Добавлено через 43 мин.: В туторе такого не нашёл. Кто знает как через логику убить моба, или это невозможно? А вот с этим, плз, в соответствующий топик: "[XXX] Ковыряемся в файлах". Собственно возьми готоую логику/скрипты для "учебной" плоти с Кордона (ТЧ), в которой и пауза (хотя и по рестриктору) и игнор и убийство ... --/Artos Изменено 11 Февраля 2012 пользователем Artos Ссылка на комментарий
*Shoker* 322 Опубликовано 11 Февраля 2012 Поделиться Опубликовано 11 Февраля 2012 (изменено) Возможно кому то будет интересно, столкнулся сегодня с вылетом в ЧН: FATAL ERROR [error]Expression : error handler is invoked! [error]Function : invalid_parameter_handler [error]File : E:\priquel\sources\engine\xrCore\xrDebugNew.cpp [error]Line : 793 [error]Description : stack trace: Вываливался при попытке вывести UI с листом названий инвентарных предметов. Покапавшись и проведя тесты - выяснил, что игра валилась при попытке добавить в лист строчку "Противорадиационные препараты" Причём достаточно было изменить любую букву\заменить пробел на _\написать любое другое слов и вылет прекращался. Я честно говоря немного ... Полез сюда на форум и оказалось, что я (и не только) уже сталкивался давно с этим вылетом. Это какой то баг с разрешением экрана. У меня вылет происходил на 1280x1024, стоит сменить разрешение (я себе на 800x поставил + vid_restart в консоли для гарантии) и вылет пропал... Вот такой он... Сталкер. Антирад пришлось переименовать. Изменено 11 Февраля 2012 пользователем *Shoker* Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О Мастер аномалий на свою заднюю точку. Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти