Это популярное сообщение. Dennis_Chikin 3 658 Опубликовано 16 Мая 2014 Это популярное сообщение. Поделиться Опубликовано 16 Мая 2014 Ковыряемся в файлах ТЧ Прежде чем писать в тему - внимательно читаем первый пост, и пользуемся поиском. Возможно, ответ на Ваш вопрос уже есть. Касательно телепатии: если Вы передаете Ваши файлы телепатическим путем - ответы будут передаваться тоже телепатически. Если Вы предлагаете угадать, отчего у Вас в подвале происходит странный стук - ответ будет передан стуком. 4 8 6 12 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Gonarh 5 Опубликовано 2 Декабря 2009 Поделиться Опубликовано 2 Декабря 2009 (изменено) Логическая переменная в классических языках программирования занимает 1 бит не бит а байт что я выиграл и где я проиграл (имею в виду объем занимаемой памяти и скорость работы). выиграл то что не используешь инфопоршень, на скорости твоя локальная переменная не скажется не то что практически, а вообще практически никак, видел бы ты скока юзается переменных в других модах, ужаснулся бы кроме того она же у тебя не сохраняется при сохранении игры а инициализируется заново при загрузке, или я ошибаюсь? Gonarh, да блин заработался если пиво мешает работе, ну её нахрен, эту работу Изменено 2 Декабря 2009 пользователем Gonarh 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
Wlad777 24 Опубликовано 2 Декабря 2009 Поделиться Опубликовано 2 Декабря 2009 (изменено) проще в ии-схеме выброса сделать на него исключение, чтобы ИИ схема выброса его не учитывала - будет стоять как миленький А можно отсюда поподробнее, пожалуйста? Я вот тоже как раз столкнулся с этой проблемой при составлении скриптовой массовой перестрелки во время выброса, нужной мне по сюжету. Изменено 2 Декабря 2009 пользователем Wlad777 --------------------------------- www.amk-zone.de Ссылка на комментарий
banderos 17 Опубликовано 2 Декабря 2009 Поделиться Опубликовано 2 Декабря 2009 Wlad777, В файле blowout_scheme.script функция function bind_scheme(npc,storage). В неё добавляются исключения по npc:name() или npc:character_community(). Имена НПС берутся из all.spawn. Мой вариант билдовских локаций: Мёртвый город (build 1935) и Свалка (build 2205) Ссылка на комментарий
Gonarh 5 Опубликовано 2 Декабря 2009 Поделиться Опубликовано 2 Декабря 2009 Бандерос объяснил все просто и понятно 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
Monnoroch 6 Опубликовано 2 Декабря 2009 Поделиться Опубликовано 2 Декабря 2009 (изменено) Ray, Короче как я выше говорил - если в сейв,то лучше инфо юзать,а если не надо в сейв лучше переменную. Добавлено через 7 мин.: Ray, А ты уверен кстати,что каждую секунду функция юзается?Просто я о том,что если чаще - это нецелесообразно в твоем случае.... Изменено 2 Декабря 2009 пользователем Monnoroch Ссылка на комментарий
Malandrinus 615 Опубликовано 2 Декабря 2009 Поделиться Опубликовано 2 Декабря 2009 вопрос в том сколько памяти тянет инфорпоршн. выиграл то что не используешь инфопоршень, на скорости твоя локальная переменная не скажется В традиционных языках булевская переменная может занимать от бита до 4-х байт в зависимости от способа хранения и оптимизации. В Lua скорее всего один байт, но во-первых - это опять же зависит от сборки, а во-вторых - есть ещё и накладные расходы на хранение переменной (в частности её имя - ключ в таблице текущего модуля). Инфороршн в движке хранится похожим образом - у каждого объекта есть коллекция - ассоциативный массив, в котором ключи - это строки имён, а значения - структуры с данными размером в несколько байт (среди которых и собственно логическое значение). Причём строки все существуют в единственном экземпляре, поскольку зарегистрированы заранее, и таким образом в коллекции занимают всего 4 байта - размер указателя. Т.е. о размере можете забыть как и о скорости обращения. Сравнивать инфопоршены с булевскими переменными не вполне корректно. Разве что для упрощённого понимания. Да, в принципе это что-то вроде логической переменной. Но лучше воспринимать инфопоршены как движковый механизм памяти персонажей. Потому ведь и Info Portion - т.е. "порция информации". Это некие зарегистрированные игровые факты (не обязательно соответствующие сюжету), о которых персонаж знает или нет. Как использовать этот механизм - дело личное, но, как совершенно верно было сказано, стимулы к этому большие: 1. Автоматическое сохранение 2. Завязка на этот механизм диалогов и квестов 3. Использование инфопоршенов в скриптовых схемах управления персонажами Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
boboz 0 Опубликовано 2 Декабря 2009 Поделиться Опубликовано 2 Декабря 2009 Подскажите, как убрать кружок от прицела. Поиск юзал по слову "кружок", как правильно называется не знаю. Сообщение от модератора n6260 В опциях сделать прицел невидимым. Больше никак. Добавлено через 46 мин.: Нашел другое решение. Берем текстуру \gamedata\textures\ui\cursor.dds и убираем у нее альфа канал. зы: предыдущий пост отредактировать не могу. Не прошло и 2,5 года. Ссылка на комментарий
Malandrinus 615 Опубликовано 2 Декабря 2009 Поделиться Опубликовано 2 Декабря 2009 boboz, Из скрипта можно убрать курсор командой консоли get_console():execute("hud_crosshair 0") Вообще, все консольные команды доступны таким образом. Так что смотрите список команд и используйте. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Nevada47 418 Опубликовано 2 Декабря 2009 Поделиться Опубликовано 2 Декабря 2009 Такая проблема! Вчера в Припяти после тормозов и многократных вылетов пропали из инвентаря бинокль и фонарь.Кроме того исчезли также различные боеприпасы,продукты,лекарства.Сегодня поставил ПНВ на экзу. а он не включается.Как вернуть бинокль и фонарь? Сообщение от модератора n6260 1. Если играет в Народную солянку - по биноклю есть лекарство в старой теме вылетов Народной. 2. Фонарик - у меня как то было - исправить смог только новой игрой. 3. ПНВ включается кнопкой И точно оно установлено? З.Ы. И тут точно не тема для лечения багов. «Ну и жесть!» Сказал асфальтовый каток, оглянувшись назад на бывшую "копейку". Ссылка на комментарий
Wlad777 24 Опубликовано 3 Декабря 2009 Поделиться Опубликовано 3 Декабря 2009 Бандерос объяснил все просто и понятно Блин, я тормоз. Мог бы и сам туда сначала заглянуть. А вот specific_character id или class туда добавить получится? А то выходит, что спавненых скриптом неписей это не коснётся. Не хочется что-то для одной единственной сценки 20 лишних уникальных неписей в аллспавн записывать. --------------------------------- www.amk-zone.de Ссылка на комментарий
Gonarh 5 Опубликовано 3 Декабря 2009 Поделиться Опубликовано 3 Декабря 2009 Не хочется что-то для одной единственной сценки 20 лишних уникальных неписей в аллспавн записывать. и это не проблема, добавь их в gamedata\config\creatures\spawn_sections.ltx и спавни себе на здоровье скриптом Добавлено через 2 мин.: Хотя... могешь воспользоваться функцией read_stalker_params из amk.script прочесть нет-пакет сталкера и получить его профиль и класс и сделать проверку условия по нему 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
karavan 36 Опубликовано 3 Декабря 2009 Поделиться Опубликовано 3 Декабря 2009 Люди. Как сделать спаут обьекта на определенном растоянии от точки? Есть функция спавна на растоянии от ГГ: function spawn_random() local radius = 20 local ang = 0.5 local dir = vector_rotate_y(db.actor:direction(),ang) local obj = alife():create("mehanik",db.actor:position():add( dir:mul(radius)),db.actor:level_vertex_id(),db.actor:game_vertex_id()) end Подскажите как правельно заменить db.actor на точку не меняя сути функции? Жду любых советов. Ссылка на комментарий
Monnoroch 6 Опубликовано 3 Декабря 2009 Поделиться Опубликовано 3 Декабря 2009 просто пишешь позицию.замеряешь какойнить прогой и вписываешь.оли ловишь obj любой и пишешь вместо актора. Ссылка на комментарий
Полтергейст 37 Опубликовано 3 Декабря 2009 Поделиться Опубликовано 3 Декабря 2009 (изменено) Возможно ли теоретически сделать в ТЧ захват (или уничтожение) смарта и войну группировок так, как это сделано в ЧН? Или хотя бы сделать так, чтобы можно было какому-нибудь отряду прописать нападение на смарт? Изменено 4 Декабря 2009 пользователем Полтергейст Ссылка на комментарий
karavan 36 Опубликовано 3 Декабря 2009 Поделиться Опубликовано 3 Декабря 2009 Monnoroch Спасибо. Я просто думал что есть какой-то другой метод кроме: vector():set(-244.025,-20.16,-159.768188) А есть ли возможность заспавнить что либо рядом с НПС? Т.е. db.actor переделать в любого НПС. Ссылка на комментарий
iDreD 5 Опубликовано 3 Декабря 2009 Поделиться Опубликовано 3 Декабря 2009 Зачем этой фигней портить такую прекрасную игру как тч? Строгое предупреждение от модератора n6260 1. Не флудим. 2. Выражаемся вежливее. Работа в Sculptris 3D [туториал] Страничка на Проза.ру Ссылка на комментарий
Полтергейст 37 Опубликовано 3 Декабря 2009 Поделиться Опубликовано 3 Декабря 2009 (изменено) Почему "портить"? Просто как-то странно это выглядит, когда на свалке возле входа на агропром зачищаешь бандитов, а после перехода на другую локацию и обратно они опять там. По идее, там должны быть либо сталкеры, либо вообще никого не должно быть. Такая ж фигня и на агропроме возле входа в подземелье и ещё много где. Изменено 4 Декабря 2009 пользователем Полтергейст Ссылка на комментарий
Malandrinus 615 Опубликовано 4 Декабря 2009 Поделиться Опубликовано 4 Декабря 2009 Как сделать спаут обьекта на определенном растоянии от точки? Тебе ведь это динамически сделать надо, не так ли? Т.е. надо выбрать место спавна "на лету". Не важно, как ты выбираешь место спавна, есть одна проблема. Для спавна нужны не только координаты, но и номера game/level вертексов. game vertex вроде как можно указать достаточно произвольно, надо только, чтобы он был на нужном уровне (не полностью уверен, но вроде так). А вот level vertex важно указывать точно. Если ты его тупо возьмёшь скажем у актора, а спавнишь например в 10-и метрах от него, то скорее всего это не сработает. Часто предмет в таком случае проваливается вниз. Узнать level vertex для произвольной точки пространства в ТЧ нельзя (по крайней мере тривиальных способов нет). Начиная с ЧН появилась функция level.vertex_id(pos), обратная функции level.vertex_position(lvid), которая была и раньше. С её помощью можно узнать номер вертекса по вектору положения. Но только для текущего уровня. На другом уровне по-прежнему невозможно. Так что спавн в произвольном месте на произвольном уровне представляет собой пока нерешённую проблему. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Gonarh 5 Опубликовано 4 Декабря 2009 Поделиться Опубликовано 4 Декабря 2009 (изменено) Так что спавн в произвольном месте на произвольном уровне представляет собой пока нерешённую проблему. Разве? Вот вам функция генерации необходимых данных для спавна на любом уровне в рандомной точке: в функцию передаём имя левела, возвращает таблицу в которую передается позиция, левелвертекс, геймвертекс для спавна, учтите что данные в таблицах для этой функции сняты с моего game.graph, который перекомпилен, и координаты и количество геймвертексов и левелвертексов могут не совпадать с оригиналом игры level_vertexes = { l01_escape = 595465, l02_garbage = 382655, l03_agroprom = 437418, l03u_agr_underground=4921, l04_darkvalley=390121, l04u_labx18=7565, l05_bar=99523, l06_rostok=67707, l07_military=418264, l08_yantar=141442, l08u_brainlab=8002, l10_radar=227176, l10u_bunker=8801, l11_pripyat=261218, l12_stancia=477876, l12_stancia_2=264570, l12u_control_monolith=3971, l12u_sarcofag=10670 } local game_vertexes = { l01_escape={0,251}, l02_garbage={252,415}, l03_agroprom={416,702}, l03u_agr_underground={703,810}, l04_darkvalley={811,1108}, l04u_labx18={1109,1167}, l05_bar={1168,1307}, l06_rostok={1308,1437}, l08_yantar={1438,1528}, l08u_brainlab={1529,1544}, l07_military={1545,1861}, l10_radar={1862,2116}, l11_pripyat={2117,2272}, l12_stancia={2273,2401}, l12u_sarcofag={2402,2466}, l12u_control_monolith={2467,2516}, l12_stancia_2={2517,2660}, l10u_bunker={2661,2791} } function get_random_coordinates(lname) local gvn, gvx, lvx = game_vertexes[lname][1], game_vertexes[lname][2], level_vertexes[lname] local min_dist = 100000 local data = {} data.lvid = math.random(1, lvx) data.pos = level.vertex_position(data.lvid) data.gvid = 0 for a = gvn, gvx do g1 = game_graph():vertex(a):game_point() if g1:distance_to(data.pos) < min_dist then min_dist = g1:distance_to(data.pos) data.gvid = a end end return data end Изменено 4 Декабря 2009 пользователем Gonarh 118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105 Ссылка на комментарий
Malandrinus 615 Опубликовано 4 Декабря 2009 Поделиться Опубликовано 4 Декабря 2009 Gonarh, Но ведь функция level.vertex_position(lvid) работает только для текущего уровня. Я специально перепроверил - на разных уровнях эта функция выдаёт разные координаты для одинаковых значений lvid. Каким образом этот подход можно использовать для спавна на произвольном уровне? Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти