CiberZold 141 Опубликовано 30 Октября 2023 21.10.2023 в 18:54, Капрал Хикс сказал: в оригинале ТЧ можно влиять на голод ГГ скриптами? Скажем, повесить на апдейт увеличение сытости при наличии в инвентаре определённой брони? в чистом ТЧ нельзя, надо ставить правки/другой движок X-ray Ext/OGSR где игровому объекту актор добавлен метод движка db.actor.satiety = нужное значение, в оригинале же можно например скриптом заспавнить еду и заставить игрока её съесть, чтоб убрать голод, в оригинале ТЧ только 2 фактора влияют на голод, это время - уменьшает сытость и еда -увеличивает, больше ничего не влияет( 1 1 2 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 19 Декабря 2023 28 минут назад, Zander_driver сказал: А вот +x или +z считается направлением "вперед" в X-Ray... блин, уже не помню наверное это ещё зависит от того как ориентирована сама локация/плоскость на которую ставиться объект, потому что если сама плоскость или лока ориентирована не строго по осям в глобальной системе коорд-т, то чтобы объект подвинуть вперёд возможно надо уменьшать x, а на какой-то плоскости z, а на третьей и x и z или наоборот, вообще чтоб представить положение объекта в 3D-пространстве на 2D-мониторе довольно трудно, тут надо иметь или хорошее воображение в голове или 3 Д шлем/очки или сделать модель в реальном мире и подвигать её физически 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 19 Декабря 2023 12 минут назад, Zander_driver сказал: "Вперед" - это ведь ВСЕГДА, понятие в локальной системе координат объекта. Не зависит и не может оно зависеть от локации, где объект находится. так ты сам себе противоречишь если говоришь, что ВПЕРЁД это локальное понятие, а потом что оно не может зависеть от локации когда мы говорим вперёд то по логике имеем ввиду вперёд относительно чего-то, в глобальном понимании это не имеет смысла, как представь объект, который летает в космосе, в глобальной системе коорд-т, да он может подвинуться типа вперёд (двинуть по оси z например), но это не имеет никакого смысла, потому что там нет ни лева/права, верха/низа, вперёд/назад, это всё приобретает смысл только относительно ещё какого-то объекта или плоскости, так же как ты можешь идти вперёд по улице в своём городе строго прямо и на север по компасу) но это вперёд относительно поверхности Земли, в глобальной системе коорд-т ты можешь в этом момент двигаться по вектору между осями z, y, x одновременно, который ещё и меняет направление в течении дня, т.к. Земля ещё движется вокруг Солнца и своей оси, так что когда говоришь вперёд это локально и зависит от локации, глобальное вперёд может и существует, но не имеет смысла на практике. 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 19 Декабря 2023 (изменено) 16 минут назад, Zander_driver сказал: 3D-движок, действующий по вашим правилам пространственной геометрии? я же не говорю что движок работает не так, понятно что движок работает по глобальной системе, он же не может подстраиваться под каждую локацию, я говорю о том что это малоудобно практически, человек хочет подвинуть объект вперёд на локации относительно самой локации, относительно других объектов, и по твоему совету двигает по оси Z типа вперёд, уменьшая эти коорд-ты, а у него по факту, этот объект по твоему совету, двигается не вперёд, а вправо и назад например, потому что так ориентирована локация, и что ему дело до твоего движка и теоретических рассуждений Изменено 19 Декабря 2023 пользователем CiberZold 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 8 Января 4 часа назад, Stalkersof сказал: Я вообще отказался от этой затей записывать в сейф условия да а условие, которое висит на постоянном апдейте не намного лучшее решение 24 минуты назад, I am Dead сказал: не советую пользоваться пстором, у движка есть некое хранилище где можешь что то сохранять. так это же только в ОГСР, а где он написал что работает на этом движке? Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 9 Января 1 час назад, Stalkersof сказал: В скрипте я только отключаю солнечные лучи во ночное время делая это на каждом апдейте, ты заставляешь процессор обрабатывать это условие каждый такт процессора, хотя само условие тебе нужно два раза в сутки ,чтоб сработало, включилось вечером и отключилось утром, оптимизация скрипта таким образом плохая) может условие повесить наоборот при запуске игры, загрузке уровня или сейва, а лучше для оптимизации и мне как юзеру, да и большинству юзеров думаю тоже хотелось бы самим выбрать, что им больше нравиться - играть с объёмными лучами или с ОГСЕ-саншафтами, кому то может наоборот эти объёмные нравятся, зачем юзера так ограничивать 1 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 9 Января 12 минут назад, Zander_driver сказал: Ну сгущать краски-то не надо. ну да с тактом я переборщил, сначала хотел просто написать 1 милисекунду, но потом для большего нагнетания написал про такт 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 10 Января (изменено) 12 часов назад, Stalkersof сказал: Перебрал несколько видов погоды для огср и не только пока в свободном доступе нормальной погоды для огср нет если у тебя ТЧ-погода, то можно поиграться с секциями flares в конфигах погоды для ночных часов, также в конфигах динамической погоды есть такие параметры как sun_shafts_length и sun_shafts можно тоже их уменьшить значение или скрутить в ноль. как по мне объёмные лучи ночью неплохо выглядят, вот мод с ТЧ-погодой, который я перевёл на ОГСР (динамическая погода в основе Atmosfear) ясная погода при полной луне, объёмные лучи, в конфигах стоит: sun_shafts = 2.03 sun_shafts_length = 1.0 flares = moon Скрытый текст Изменено 10 Января пользователем CiberZold 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 10 Января 4 часа назад, Stalkersof сказал: Мне этот эффект ночью не нравится. У вас картинка синюшная именно от лучей. ну вот тебе не нравится, а кому-то нравится, лунный свет - синий, и зачем скриптом принудительно отключать? те кому не нравиться сами отключат объёмные лучи в консоли, а кому нравится продолжать так играть, если ты конечно хочешь делат ьмод для людей, если для себя - то крути как хочешь и скрипты тоже 37 минут назад, Stalkersof сказал: Да и я использую 181 ревизию движка еще со всеми рендерами да тот движок который со всеми рендерами, только ТЧ-погоду поддерживает ,вот как у меня на скрине типа такой) Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 9 Февраля 31 минуту назад, Colder сказал: Как в труп заспавнить предмет? как вариант, в файлах characrer desc в описании непися которому ты хочешь дать предмет, ты же я так понимаю хочешь дать предмет конкретному неписю-трупу ,а не просто рандомному созданной на этой секции, так вот в файлах описании в секции [spawn] прописываешь нужные предметы, а потому убиваешь непися через спавн ставя ему health = -1 , и вещи из этого файла должны быть при нём + те которые заспавнит death_manager.script Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 12 Февраля 09.02.2024 в 20:11, Colder сказал: obj:on_death() а где ты откопал метод on_death() для а-лайфного объекта, и что он должен делать? так спавнили трупы в старых солянках, но там ещё был и файл логики, где прописывали скрипт по которому убивали непися, так что я не уверен что этот метод рабочий остался для ОГСР. Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 17 Февраля @kenguru а почему виноваты в переполнении памяти именно инфопоршни ,вылетать по памяти может и из-за скриптов (скорее всего) перегружающих проц и память, и и из-за настроек графики и информации относящейся к алайфу (неписи, монстры их память), в памяти также хранятся данные динамических физ объектов и пр. мусора, если у тебя всего этого много, вылеты последует на чистом движке ТЧ точно, ОГСР в этом плане получше, но беды со скриптами от мододелов он не исправит. Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 17 Февраля @kenguru если у тебя старый сюжет остался то ты там особо не разгуляешься, там большая часть поршней нужна чтоб этот сюжет двигать, я бы тогда вообще оригинальный сюжет вырезал вместо с поршнями и прочими хвостами, ну если в моде и так много заданий то зачем ещё и оригинальный всем надоевший сюжет тянуть, но понимаю объём работы - вырезать все хвосты оригинала за это время можно небольшой новый мод сделать ) 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 18 Февраля 2 часа назад, kenguru сказал: и мне жуть как ручонки чешутся потереть все заюзанные и окаменевшие из них понятно, но это будет непросто, тут или удалять по ходу игры, отслеживать постоянно какой инфопоршень выдался по info_id, а потом его отключать, но чревато что в будущем можешь сломать какой-то диалог или сценку ,или уже в конце поняв какие сюжетные какие нет, перед фриплеем их все сразу задисейблить. 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 4 Мая 1 час назад, Balavnik сказал: но create похоже ничего не возвращает create создаёт причём серверный объект, alife() как бы намекает, id игра сама рандомно присваивает игровому объекту цепляя цифру к названию секции на которой создан объект, поэтому этим id никто обычно не заморачивается, а обращается к объекту или через стори ид, или по имени, по поиску нужной строки в имени секции. Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 5 Мая 9 часов назад, Balavnik сказал: Я видимо ещё не до конца понял многих тонкостей концепции алайфа. чтоб не париться с id (там проблема что id можно получить от объекта к которому обращаешься в конкретной функции), а если тебе надо удалить в влюбой время ,в любом месте на любой локации серверный объект обычно юзают цикл перебора всех алайф объекту и по имени удаляем. for a=1,65635 do local obj=alife():object(a) if obj and string.find(obj:name(),"bar_dolg_respawn_3") then alife():release(obj, true) end end 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 5 Мая (изменено) 2 часа назад, Kirgudu сказал: "Обычно" наоборот, стараются так не делать в данном примере когда один раз надо удалить что-то вполне себе вариант, постоянно конечно такой цикл вешать не стоит. 2 часа назад, Kirgudu сказал: Первая: после нахождения объекта с именем "bar_dolg_respawn_3" цикл не остановлен и продолжится до достижения максимального числа 65535. в чём ошибка ,если как раз и нужно удалить всех неписей, пример с bar_dolg_respawn_3 был не для повторения вслепую, а для общего шаблона так сказать. особенно мой пример как раз хорош ,когда надо удалять заспавненных по скрипту нпс) потому что те нпс которые спавнятся через аллспавн им можно задать имя в самом алл-спавне и к ним можно обращаться по этому уникальному имени, а те что созданы через alife():create им игра сама назначает имя, прибавляя числа случайные к названию секции на которой они созданы, поэтому неписей с именем частью которого будет секция bar_dolg_respawn_3 вполне может наспавниться много, и вот чтоб их всех удалить их разом мой метод как раз самое то ,ну если я правильно понял задачу автора вопроса) Изменено 5 Мая пользователем CiberZold Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 5 Мая 2 часа назад, Kirgudu сказал: Где было написано про удаление всех? даже если надо удалить одного, секция bar_dolg_respawn_3 подразумевает, что это какой-то респавн, за то время пока дойдёт до ручного спавна и удаления, игра сама может наспавнить несколько неписей на этой секции и они будут с этой строчкой в имени, также как и нужный нам непись, потому можно и удалить их всех скопом вместе с нужным нам нпс, здесь делать выход из цикла после первого удалённого как раз приведёт к тому, что мы можем удалить левого нпс, а нужного нет, потому цикл надо довести до конца, чтоб он удалили всех с похожими именами (бесполезных сим неписей) и заодно и нужного на удаление 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 28 Июля @Labadal в _g.script например делаешь такую функцию sys_ini = system_ini() function get_string( section, param, def_val, ini_file ) local ini = ini_file or sys_ini if ini:line_exist( section, param ) then return ini:r_string( section, param ) else return def_val end end потом в нужном тебе скрипте в любой функции вызываешь get_string( "секция", "значение", "дефолт значение" ) --- это будет строчка из системного конфиг файла, для игры он делится на секции, а не на файлы, на файлы разделяют люди для удобства, потому тебе надо найти секцию с иммунитетами актора это [actor_immunities_gd_novice] если тебе новичок нужен и в ней значение burn_immunity то есть чтоб играла прочитала это значение надо задать get_string( "actor_immunities_gd_noviceve", "burn_immunity", "0,3" ) 1 Поделиться этим сообщением Ссылка на сообщение
CiberZold 141 Опубликовано 31 Июля @Labadal ну так посмотри в _g.script какие функции вызываются этой функцией start_game_callback(), и уже их в свою очередь просмотри, что гадать то. по умолчанию там точно должны быть task_manager.clear_task_manager() и dialog_manager.fill_phrase_table() вот тут и могут крыться проблемы с нпс. Поделиться этим сообщением Ссылка на сообщение