Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
AndrewMor 527 Опубликовано 13 Октября 2013 Поделиться Опубликовано 13 Октября 2013 Вот интересно стало: в паке локаций от Кости (вроде) есть лока Болота. Так вот, костры там не горят, а тлеют. Можно ли их сделать, как в чистой ТЧ? Сталкер - наше всё! Ссылка на комментарий
La'Rento 30 Опубликовано 13 Октября 2013 Поделиться Опубликовано 13 Октября 2013 (изменено) @AndrewMor, Наверное, ты не закинул спавн, либо в нём просто нету костров.Для его создания понадобится создать 3 спавн-секции.1. lights_hanging_lamp 2. zone_flame_small3. space_restrictorДля примера, в alife_l01_escape.ltx посмотри секции под номерами [846], [847], [848]. Первая отвечает за свечение, вторая- аномальная зона, обжигает НПС и ГГ, а рестриктор нужен как дополнительная зона, зачем - сам не знаю, но нужен. Изменено 13 Октября 2013 пользователем La'Rento Ссылка на комментарий
zhuravll 2 Опубликовано 14 Октября 2013 Поделиться Опубликовано 14 Октября 2013 (изменено) вопрос: как изменить (замедлить) скорость падения капель дождя? приписывание пятого значения как у скорости неба ничего не меняет. сталкер тч Изменено 14 Октября 2013 пользователем BFG Ссылка на комментарий
Dniwe 3 Опубликовано 14 Октября 2013 Поделиться Опубликовано 14 Октября 2013 @Dniwe, что ты вкладываешь в понятие "динамические"? Формулируй вопрос яснее. Если тебе нужен диалог типа "Что интересного?", то тебе в dialog_manager.script, а если тебе нужна рандомная фраза, то нужно просто вызвать перед ветвлением функцию, которая рандомно выберет твои фразы, можешь поглядеть Megadeath Mod, там по моему это было. Я уже разобрался сам. Спасибо. имел ввиду несколько вариантов ответов у НПС. Ссылка на комментарий
Artos 99 Опубликовано 14 Октября 2013 Поделиться Опубликовано 14 Октября 2013 Продублирую свой вопрос из соседнего топика, там мне отвечать не хотят. Как получить стори айди собеседника? Нужно правильно ставить условия. Ну как можно сравнивать: if s1:id() == (db.actor or ... - т.е. тип данных 'number' с 'userdata'?! "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Карлан 1 049 Опубликовано 14 Октября 2013 Поделиться Опубликовано 14 Октября 2013 @Artos, действительно, поправил, по прежнему никакого результата. ТЧ 1.0006 function sendtip(text) --/ текст return news_manager.send_tip(db.actor, text, 0, "default", 10000) end function test_sid(s1,s2) if s1:id() == db.actor:id() then sendtip("S2 sid~~: "..tostring(s2:story_id())) return s2:story_id() end return s1:story_id() --/> номер из game_story_ids sendtip("S1 sid~~: "..tostring(s1:story_id())) end ... <phrase id="13"> <text>carlan_mod_sidor_13</text> <action>my_mod.test_sid</action> </phrase> ... Ссылка на комментарий
azrael1325 28 Опубликовано 14 Октября 2013 Поделиться Опубликовано 14 Октября 2013 (изменено) @Карлан, return s1:story_id() --/> номер из game_story_ids sendtip("S1 sid~~: "..tostring(s1:story_id())) Попробуй местами эти строки поменять. Изменено 14 Октября 2013 пользователем azrael1325 Ссылка на комментарий
Карлан 1 049 Опубликовано 14 Октября 2013 Поделиться Опубликовано 14 Октября 2013 Вопрос снят, все заработало. Можете удалить мои посты. Ссылка на комментарий
Artos 99 Опубликовано 14 Октября 2013 Поделиться Опубликовано 14 Октября 2013 (изменено) @Карлан, говоря "никакого результата" - стОит уточнять, т.к. и отрицательный результат (если таковой есть), несет информацию! Исходя из того, что ты пытаешься получить story_id у своего собеседника, то НИКАК не может быть никакого результата. Функция sN:story_id() - обязана вернуть хоть какой-то результат в виде числа (хотя бы 4294967296) или ругнуться в лог. Если у тебя отсутствует вызов твоей функции test_sid(s1,s2) - то и разбирайся с диалогом... Примечание: параметр 'story_id' не является "номером из game_story_ids". Упомянутая табличка является массивом соответствий собственно выбранного параметра (числа) со строкою, прописываемых "ручками", и используемых, например, для заданий. Не следует это путать. Изменено 14 Октября 2013 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Карлан 1 049 Опубликовано 14 Октября 2013 Поделиться Опубликовано 14 Октября 2013 (изменено) @Artos, т.о. мы получаем именно непосредственно индентификатор(число)? И story_id() у нас возвращает число соответствующее строке из game_story_ids(типа "000" => 0). И для сидора функция возвращает нам 3(а не 003), а для бармена 500(как и в game_story_ids). Правильно-ли я все понял? Если правильно, тогда поясните на кой черт вообще сдался game_story_ids.ltx со story id(для квестов?)? И как тогда понимать ; Номер SID-а состоит из номера уровня + номер персонажа (2 цифры).? P.S. в том случае у меня как раз таки никакого результата не было. Изменено 14 Октября 2013 пользователем Карлан Ссылка на комментарий
Artos 99 Опубликовано 14 Октября 2013 Поделиться Опубликовано 14 Октября 2013 (изменено) @Карлан, (без желания обидеть): 1. СтОит почитать ФАКи и топик "Справочник по функциям и классам". 2. Включить собственную думалку, отбросив шоры... Метод story_id() для объектов игры возвращает именно число (s32), естественно отбрасывая незначащие нули, которое является значением, присвоенным объекту при его спавне или изменением посредством net-пакетов. Какое значение (число) присваивать кому-то/чему-то и по каким правилам - решает сам разработчик/модмейкер. Главное чтобы оно было уникальным и в диапазоне 0...0x8fffffff (0...4294967295) Таблица "[story_ids]" - является конфигом и может правиться кем угодно и как ему угодно (с соблюдением отдельных правил). Она вообще может отсутствовать, как в ЧН иль ЗП. В эту таблицу разработчики/модмейкеры заносят нужные им значения story_id своих персонажей иль предметов и сопоставляют им строку, которая может применяться в описаниях/условиях для квестов. Комментарий разработчиков игры "Номер SID-а состоит из номера уровня + номер персонажа (2 цифры)." - чисто технический и даже уже с первой же строки ими же нарушается: 000 - сид предмета (кейса с доками), а не персонажа. И ничто(!) не мешает этот "порядок" не соблюдать. Все это критично только для квестов и записям для них. Кол-во незначащих нулей можно ставить "по-вкусу"... P.S. В твоем случае (последний тут показанный вариант) обязан был быть отрицательный результат - твой файл (my_mod) имел синтаксическую ошибку в функции (test_sid) и был просто проигнорирован игрою. Однако, при вызове из диалога строки: <action>my_mod.test_sid</action> - обязана была быть ошибка c вылетом и соотв. записью в логе... Т.о. нужно бы заглядывать в лог и показывать его тут, при описании своих действий/кодов/результатов. Изменено 14 Октября 2013 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
AndrewMor 527 Опубликовано 14 Октября 2013 Поделиться Опубликовано 14 Октября 2013 La'Rento, да, действительно, в алайфе на заспавнены костры: нет ни lights_hanging_lamp, ни zone_flame_small, ни space_restrictor. Буду спавнитьь сам, огромное спасибо. Сталкер - наше всё! Ссылка на комментарий
AndreySol 215 Опубликовано 16 Октября 2013 Поделиться Опубликовано 16 Октября 2013 Подскажите - какие соотношения или формулы используются движком при обсчете эффектов от артефактов ? К примеру, имеем в actor.ltx параметр health_restore_v, а в секции какого либо арта health_restore_speed - как они будут обсчитываться движком, есть ли формула обсчета ? И еще - минимальные и максимальные значения для параметров в секции actor_condition и для health_restore_speed, radiation_restore_speed, satiety_restore_speed, power_restore_speed, bleeding_restore_speed у артефактов ? Ссылка на комментарий
zhuravll 2 Опубликовано 16 Октября 2013 Поделиться Опубликовано 16 Октября 2013 (изменено) Подскажите, как можно свести на нет глянцевитость поверхностей при полном динамическом освещении в Сталкер тч или как сделать, чтобы на всей карте лежала тень, как под кустами и деревьями? Изменено 16 Октября 2013 пользователем ColR_iT Ссылка на комментарий
Карлан 1 049 Опубликовано 16 Октября 2013 Поделиться Опубликовано 16 Октября 2013 (изменено) Возможно-ли как-то получить реальную текущую дату?(16.10.13) Через скрипты, разумеется. Изменено 16 Октября 2013 пользователем Карлан Ссылка на комментарий
Charsi 440 Опубликовано 16 Октября 2013 Поделиться Опубликовано 16 Октября 2013 @Карлан, можно сохранить какой-нибудь файл на диск и посмотреть время его изменения. -- user.ltx get_console():execute("cfg_save") local f = getFS() local flist = f:file_list_open_ex("$app_data_root$",FS.FS_ListFiles,"user.ltx") local file = flist:GetAt(0) local res = file:Modif() get_console():execute(res:gsub(":","."):gsub("%s","_")) -->Thu_Oct_17_00.30.52_2013_ local res = file:ModifDigitOnly() get_console():execute(res:gsub(":","."):gsub("%s","_")) -->17.10.2013_00.30 -- log get_console():execute("flush") local f = getFS() local flist = f:file_list_open_ex("$logs$",FS.FS_ListFiles,"*.log") flist:Sort(FS.FS_sort_by_modif_down) local file = flist:GetAt(0) local res = file:Modif() get_console():execute(res:gsub(":","."):gsub("%s","_")) -->Thu_Oct_17_00.30.52_2013_ local res = file:ModifDigitOnly() get_console():execute(res:gsub(":","."):gsub("%s","_")) -->17.10.2013_00.30 Lua и LuaJIT плагины для Notepad++ SciTE-RU 3.5.5 плагины для MilkShape3D Ссылка на комментарий
Карлан 1 049 Опубликовано 16 Октября 2013 Поделиться Опубликовано 16 Октября 2013 (изменено) Спасибо, @Charsi. Вот наваял функцию получения номера билда по формуле GSC, без введения циферок ручками. Теперь функция полностью автономна. --// by Карлан function get_build_date() get_console():execute("mod loaded") local flist = getFS():file_list_open_ex("$logs$",FS.FS_ListFiles,"*.log") flist:Sort(FS.FS_sort_by_modif_down) local res = flist:GetAt(0):ModifDigitOnly() if not (res and res ~= "") then return 0 end local days = {0,31,59,90,120,151,181,212,243,273,303,334,365} local y = tonumber( res:sub(7,10) or 0 ) local m = tonumber( res:sub(4,5) or 0 ) local d = tonumber( res:sub(1,2) or 0 ) local bd = (365*(y - 1999) - 31 + days[m] + d ) return "(build: "..bd..")" end Вариант куда более лучший, от @Charsi --// by Charsi function get_build_date() get_console():execute("cfg_save") local f = getFS() local flist = f:file_list_open_ex("$app_data_root$",FS.FS_ListFiles,"user.ltx") local file = flist:GetAt(0) local res = file:ModifDigitOnly() local d,m,y = res:match("(%d+)%d+)%d+)") local days = {0,31,59,90,120,151,181,212,243,273,303,334,365} local bd = (365*(y - 1999) - 31 + days[tonumber(m)] + d ) return "(build: "..bd..")" end Финальная версия: --// ------------------------------------------------------------------------------------------- --// Версия мода в виде (build: 5369) [+171013], где первое - номер билда, второе - номер фикса --// Работает полностью автономно, вызывать в меню, либо где угодно еще --// ------------------------------------------------------------------------------------------- function get_build_date() get_console():execute("cfg_save") local flist = getFS():file_list_open_ex("$app_data_root$",FS.FS_ListFiles,"user.ltx") local res = flist:GetAt(0):ModifDigitOnly() local d,m,y = res:match("(%d+)%d+)%d+)") local fix = tonumber(res:sub(9,10)) local days = {0,31,59,90,120,151,181,212,243,273,303,334,365} local bd = (365*(tonumber(y) - 1999) - 31 + days[tonumber(m)] + tonumber(d) ) return "(build: "..bd..") [+"..tonumber(d..m..fix).."]" end Изменено 16 Октября 2013 пользователем Карлан Ссылка на комментарий
Artos 99 Опубликовано 16 Октября 2013 Поделиться Опубликовано 16 Октября 2013 (изменено) Хм, что-то смахивает на чесание пяткой уха... 1. В ЧН/ЗП доступно пространство 'os' и не сложно получить реальную дату (и/или время): os.date() 2. В ТЧ несколько посложнее, но также не сложно добавить это пространство имен (см. xrLuaFix и аналогичное). 3. В "финальном" варианте явно ошибочен патерн, вероятно должно быть: '(%d+)\%d+)\%d+)\.+' 4. Довольно странные определения билда и фикса... Получается что, когда запустил игру - тогда и билд сделан с фиксом?! Все же 'build' и 'fix' - некие даты, когда были созданы коды или изменения к ним, а не "дата создания запущенной игры"... 5. Насиловать ради некой даты файловую систему с файлом настроек - хм, а ежели взглюкнет? (не каждый знает как восстановить) ;-) ИМХО, безопаснее насиловать фейковый файл: get_console():execute("cfg_save tmp") --/ запись настроек в файл 'tmp.ltx' или вообще использовать готовый файл-лог из соотв.папки: getFS():update_path("$logs$", "xray_"..user_name()..".log") P.S. xrLuaFix - расширитель Lua для S.T.A.L.K.E.R SHoC|CS|CoP (ТЧ/ЧН/ЗП) xrLuaFix базируются на исходниках: http://code.google.com/p/xrluafix/ (by RvP) и совместима со всеми официальными версиями S.T.A.L.K.E.R : ТЧ, ЧН и ЗП (соответственно). Краткое описание: ----------------- Добавляемые в игру функции: глобальное пространство имен: void logf(string1 [, string2, string3, ...]) -- вывод в лог аргументов, каждый аргумент в новой строке. void LuaFix([arg]) -- открывает доп. пространства имен io, os, package и debug. void LuaExt() -- расширяет пространства имен math, string, table и добавляет функции куйлоггера. set_vKeyCB() -- запуск обработчика нажатия клавиш get_vKeyCB() -- запрос из обработчика о нажатых клавишах. out: table[vk] = true vKeyPressed(vk1[,vk2]) -- запрос о нажатой клавише (двух славишах) Дополнительные/возвращенные пространства имен: os -- для ТЧ io -- для ТЧ package -- для ТЧ (добавляет и глобальную функцию require) debug -- опционально Расширители пространств: math.random([a[, b]]) -- замена стандартной функции, более быстрая. Использование прежнее math.randomseed(x) -- замена стандартной функции генератора псевдослучайных чисел string.trim(str) -- обрезка строки string.trim_l(str) -- обрезка строки слева string.trim_r(str) -- обрезка строки справа string.trim_w(str) -- обрезка строки по первому слову table.keys(t) -- возвращает таблицу ключей таблицы table.values(t) -- возвращает таблицу значений таблицы table.size(t) -- возвращает реальный размер таблицы table.random(t) -- возвращает случайный елемент таблицы lfs -- Оригинальная Lua библиотека. Подробное описание и использование: http://keplerproject.github.com/luafilesystem/ Изменено 16 Октября 2013 пользователем Artos "Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени Ссылка на комментарий
Карлан 1 049 Опубликовано 17 Октября 2013 Поделиться Опубликовано 17 Октября 2013 (изменено) 4. Довольно странные определения билда и фикса... Получается что, когда запустил игру - тогда и билд сделан с фиксом?! Все же 'build' и 'fix' - некие даты, когда были созданы коды или изменения к ним, а не "дата создания запущенной игры"... Разумеется я это учел, т.к. номера-даты менялись бы ежедневно вне зависимости от каких-либо правок, что, как ты подметил, в корне не верно. 3. В "финальном" варианте явно ошибочен патерн, вероятно должно быть: Форум проглотил патерн, было: "(%d+)%d+)%d+)" Расскажите пожалуйста о том, как влияют различные параметры ГГ(репутация/ранг...) на коэффициенты торговли в оригинальном ТЧ? И вообще влияют-ли как-то? Я пока нигде информации о влиянии подобных параметров не нашел, возможно как-то это обрабатывается движком. Изменено 17 Октября 2013 пользователем Карлан Ссылка на комментарий
Карлан 1 049 Опубликовано 17 Октября 2013 Поделиться Опубликовано 17 Октября 2013 (изменено) У меня теперь вопрос конкретно про репутацию встал. Сейчас начну формулировать, начал я с того, что вывел кастом статиком db.actor:character_reputation(), и она мне стала показывать репутацию ГГ. Ясно, что она в наградах за таски прописывается, и где то в диалогах о помощи и etc., а вот насчет смерти я например не нашел. Искал в xr_motivator.script что-либо что могло бы повлиять на репутацию, но не нашел. Нашел только непонятную функцию: if(actor_stats.remove_from_ranking~=nil)then local community = self.object:character_community() if community == "zombied" or community == "monolith" or community == "arena_enemy" then return end actor_stats.remove_from_ranking(self.object:id()) end Итак, собственно вопросы: 1 По каким критериям она изменяется? 2 Каков ее диапазон? 3 Как она влияет на отношения разных группировок/торговцев/монстров на ГГ? (н-р убили сталкера, репутация отнялась, как на это отреагируют бандиты?) Еще добавлю подобный вопрос про функцию goodwill, чем отличается от general_goodwill? Как и от чего изменяется? Мне возвращает всегда 0, пострелял, выполнил пару заданий, и по прежнему было 0. Изменено 17 Октября 2013 пользователем Карлан Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти