kallisto 1 Опубликовано 23 Января 2015 Поделиться Опубликовано 23 Января 2015 [Внимание, длинно-пост] Ребят, а кто-нибудь ковырялся в ЗП до такой степени, чтобы убрать практически все lua-скрипты (включая «системые») из игры? Причину, по которой я спрашиваю об этом проще всего объяснить на примере: Есть сталкер Вуася, который пару дней назад помог другому сталкеру (дал аптечку и зафрендился) из другого сквада. Завтра Вуасю застрелят реальные пацаны, а через несколько часов после смерти его найдут свободовцы и отправят автоматическое сообщение о смерти сталкера. Начинается самое интересное, Григорий (это тот мэн, которому Вуася дал аптечку) пойдет к Сычу за информацией о том, кто шлепнул жмура. Получив информацию, Григорий узнает, что топать ему с его сквадом на Юпитер. Сквад сталкеров перебирается на Юпитер, где идет на завод, дабы шлепнуть реального пацана и его сквад. Но на этом дело не заканчивается. Я хочу формировать группу событий. Ясный пень – тройку новичков-сталкеров могут реальные пацаны одолеть, поэтому события собираются в пул и начинается месиво. Например сквад долговцев отправили в тот сектор, где они с удовольствием примут участие в перестрелке. На данный момент лишь базовое: – hit-callback – каждый раз, когда в npc попадают, регистрируется bone_index, чтобы потом можно было оценить степень убитости – death-callback – после убийства регистрируется кто убил, и убили ли жертву когда та была ранена – loot-callback – срабатывает когда труп шманают и в зависимости от того, кто шманает, будет отпрабатываться та или иная логика (например бандиты не всегда будут отписывать о том, что они убили жмура, а сталкеры найдя труп будут отправлять авто-сообщение, для них это святой неписаный закон) Над чем колдую сейчас: – работаю над схемой для сообщений. Например сообщение: «Чуваки, на Юпитере химера завелась» будет отправлено в том случае, если химера, мочканувшая сталкера – жива. Под схемой я подразумеваю блок универсальных фраз, с помощью которой можно будет строить сносные (и разнообразные) предложения, а не «погиб сталкер: химера» (не в обиду, труд уважаю и понимаю что некоторым действительно трудно сочинять текст, сам думаю как буду с этой бедой разбираться). Я так познаю, когда есть снэпшот оригинала и очищенная от всего версия, я быстро начинаю понимать как все там устроено, иными словами я зажусь и воссоздаю от чистого до оригинального варианта по кусочкам. Да, может показаться что врагу-сталкеру такое не пожелаешь, но так я познаю быстрее и самое главное эффективнее. Понятное дело, что для подобной концепции может потребоваться значительное изменение (причем, очень может быть, что не только со стороны lua-скриптов). 1. Насколько сильно можно «отчистить» скрипты+конфиги? То есть довести до такого состояния, что загружается только самый минимум, без чего игра крешится. 2. Как много в ЗП заточено на стороне движка? Я имею ввиду именно скриптовую часть. Знаю что некоторые функции (например в trade_manager кажется) вызываются со стороны движка (судя по комментам в скрипте). 3. Кто-нибудь делал переход npc с одной локи на другую? То есть npc дошел до места перехода на Юпитер и там уже мы его хоп и забрали. 4. Пока не разбирался, но npc можно ставить задание по типу (сходи с менами убей долговца)? 5. В lua есть корутины (coroutines), основоное предназначение которых заключается в дроблении высоконагруженных процессов (перебор очень больших массивов например). Вопрос: есть ли что-то, что можно использовать чтобы запускать скрипт на фоне и с пониженным приоритетом? Ссылка на комментарий
ммихаилл 1 Опубликовано 27 Января 2015 Поделиться Опубликовано 27 Января 2015 Здравствуйте! Как работает скрипт маячка в модах для ЗП? Точнее, какая функция отвечает за мгновенную отметку в КПК? Ссылка на комментарий
makdm 37 Опубликовано 27 Января 2015 Поделиться Опубликовано 27 Января 2015 Как работает скрипт маячка в модах для ЗП? Спавн объекта ( маячка ) и установка на него метки local object = alife():create( "Секция_маячка", position, lv_id, gv_id ) level.map_add_object_spot_ser( object.id, "текстура_метки", "" ) Текстуру метки прописываете в gamedata\configs\ui\map_spots.xml и gamedata\configs\ui\map_spots_16.xml Ссылка на комментарий
ммихаилл 1 Опубликовано 1 Февраля 2015 Поделиться Опубликовано 1 Февраля 2015 Метка появилась, но на актере и совершенно не хочет ставиться по ид объекту. Ссылка на комментарий
UnLoaded 313 Опубликовано 1 Февраля 2015 Поделиться Опубликовано 1 Февраля 2015 @ммихаилл Уважаемый, возьми себе за правило к подобным вопросам сразу прикладывать фрагменты созданного тобой кода(под спойлер если много) - и тогда участникам форума не прийдется экстрасенсить а ты будешь оперативно получать подсказки и ответы. Хотя попытаться подтянуться к Кашпировскому могу попробовать и погадать, что метку ты поставил все-же на актера или объект находится в инвентаре актера. 1 2 Ссылка на комментарий
ммихаилл 1 Опубликовано 2 Февраля 2015 Поделиться Опубликовано 2 Февраля 2015 (изменено) Многоуважаемый, UnLoaded, код я не прилогаю по причине того, что ничего нового я в него не вписывал: имя функции, сама функция от makdm, кроме первой строки, и в итоге один end. В качестве объекта я брал ид физического объекта, то бишь рюкзака, потом ид любого рестриктора и тд. и тп. В общем перебрал все возможные варианты, однако каждый раз метка ставилась именно на актёра. UnLoaded, не считай себя умнее других, и Кашпировского лучшее не трогай - не сахар у него нынче время Изменено 2 Февраля 2015 пользователем ммихаилл Добавлено Dennis_Chikin, 2 Февраля 2015 Тем не менее, level.map_add_object_spot_ser() работает так, как описано, и метки у всех великолепно ставятся именно на тот объект, id которого передан. А вот правила форума настоятельно рекомендую почитать. Ссылка на комментарий
Kossa 0 Опубликовано 2 Февраля 2015 Поделиться Опубликовано 2 Февраля 2015 подскажите, какую строчку нужно вписать в раздел костюма, что бы допустим в тяжёлом костюме долга ГГ бегал медленнее, а в обычной заре быстрее, какая строка за это отвечает, и можно ли каждому костюму приписать высоту прыжка, и как, а то я раньше не сталкивался, а вырезать из файла Актор безполезно... если знаете пишите, заранее спасибо... Добавлено Kirgudu, 3 Февраля 2015 Перенесено в "ковырялку" Ссылка на комментарий
UnLoaded 313 Опубликовано 2 Февраля 2015 Поделиться Опубликовано 2 Февраля 2015 (изменено) @ммихаилл Вот вместо претензий на тему кто кого умнее считает - что Вам стоило скопипастить сюда код, написанный Вами. Вы чего-то стесняетесь или опасаетесь ? Так не надо, никто Вас хаять не будет, зато укажут ошибку и Вы получите искомый результат... P.S. А откуда информация про сахар\не сахар у Кашпировского ? Изменено 2 Февраля 2015 пользователем UnLoaded 1 Ссылка на комментарий
ммихаилл 1 Опубликовано 2 Февраля 2015 Поделиться Опубликовано 2 Февраля 2015 @UnLoaded, то есть читать мои сообщения не охота? Пожалуйста. function new_treasure_map(actor, npc, p) level.map_add_object_spot_ser( my_real_not_actor_id_object, "new_treasure", "" ) end То же самое, только ввиде кода - того же самого, что и был посоветан. Ссылка на комментарий
UnLoaded 313 Опубликовано 2 Февраля 2015 Поделиться Опубликовано 2 Февраля 2015 (изменено) @ммихаилл Хитрите, уважаемый... Тока зачем? Вы же прекрасно должны понимать, что Ваша проблема не в собственно движковой ф-ции установки отметки на объекте(которая отлично работает), а в том как Вы получаете этот самый my_real_not_actor_id_object. Давайте остальной код в студию.... Изменено 2 Февраля 2015 пользователем UnLoaded Ссылка на комментарий
ммихаилл 1 Опубликовано 3 Февраля 2015 Поделиться Опубликовано 3 Февраля 2015 @UnLoaded, это весь код. Больше мне добавить нечего. Ссылка на комментарий
Jeka81 75 Опубликовано 3 Февраля 2015 Поделиться Опубликовано 3 Февраля 2015 @ммихаилл, метка ставится по ID объекта. Ну а раз тебе добавить больше нечего, то UnLoaded, не считай себя умнее других не корректное высказывание обернувшееся против тебя.Чтобы поставить метку по ID объекта нужно сначала получить этот ID. Если твой рюкзак это спавн-элемент, то в его конфиге прописывай ID. Если статический объект - поставь в его центр спейс-рестриктор,пропиши ему ID и ставь метку на него. 2 С#Н#Т#Р# (CoP 1.6.02) Ссылка на комментарий
ммихаилл 1 Опубликовано 3 Февраля 2015 Поделиться Опубликовано 3 Февраля 2015 @Jeka81, именно так я всегда и поступаю. И в качестве id-меток я брал и рестрикторы, и физ. объекты, да и просто ид сквада. Все id абсолютны работоспособны, так как, при написании сюжета, я использовал их в качестве квествых отметок. Ссылка на комментарий
Eugen81 1 008 Опубликовано 3 Февраля 2015 Поделиться Опубликовано 3 Февраля 2015 function new_treasure_map(actor, npc, p) level.map_add_object_spot_ser( my_real_not_actor_id_object, "new_treasure", "" ) end Ну и как ты здесь получаешь id объекта, или передаешь его сюда? Вот получение по имени секции для уже заспавненного объекта: function set_mspot() for a=1,65534 do --// перебираем все айдишники local obj = alife():object(a) --// получаем обж if obj and obj:section_name() == "my_real_not_actor_id_object" then --// получили какой-то обж, смотрим имя. если наше level.map_add_object_spot_ser(obj.id, "new_treasure", "Рюкзак с хабаром") --// ставим метку break --// выходим из цикла end end end Ссылка на комментарий
Сталкер Лом 356 Опубликовано 3 Февраля 2015 Поделиться Опубликовано 3 Февраля 2015 Товарищи, выручайте.В теме справочника Вылетов писал про такой лог: FATAL ERROR [error]Expression : assertion failed[error]Function : CResourceManager::_CreateTexture[error]File : D:\prog_repository\sources\trunk\Layers\xrRenderDX10\dx10ResourceManager_Resources.cpp[error]Line : 582[error]Description : _Name && _Name[0]"Лечение" я предложил, но это "лечение" не выход, особенно когда ресурсы уже позволяют тянуть DirectX11, а какого-то ляда нельзя. Как уже писал в теме, вылет этот получаем при переходе на N-ную локу. С чем связано - не знал, но погуглив основательно, нашёл следующее:* "Суть такой ошибки в недостатке текстур на которые ссылаются .thm файлы" - http://www.amk-team.ru/forum/index.php?showtopic=5533&p=580128 * Аналогично, но с другого источника - http://translate.google.ru/translate?hl=ru&sl=en&tl=ru&u=http%3A%2F%2Fgsc-game.com%2Fmain.php%3Ft%3Dcommunity%26s%3Dforums%26s_game_type%3Dxr3%26thm_page%3D11%26thm_id%3D5125%26page%3D3%26sec_id%3D18 Итак, инфа есть, приступил к ликвидации вылета. Сразу взялся за строки типа: ! auto-generated bump map: ston\ston_beton_ch_09_bump ! auto-generated bump map: ston\ston_beton_ch_09_bump# ! Can't find texture 'terrain\terrain_chulim_average_mask' ! Can't find texture 'sky\sky_clouds1' ! Can't find texture 'sky\sky_clouds1#small' Исправил. Исправил всё - консоль ругается только на два инвалидных звука. Тем не менее, вылет жив-здоров, *негодяй, в общем*. Не подскажете, как дальше быть? Может, из за чего ещё этот вылет может случаться? Работы на Artstation - https://www.artstation.com/artist/stalker_lom Ссылка на комментарий
makdm 37 Опубликовано 3 Февраля 2015 Поделиться Опубликовано 3 Февраля 2015 Вот получение по имени секции для уже заспавненного объекта Зачем такие жертвы? В ЗП практически у каждого объекта есть story_id Получаем id по story_id: object_id = get_story_object_id( story_id ) Не подскажете, как дальше быть? Вылет связан с "кривым" THM файлом к текстуре, а не в текстуре. Ибо если текстура прогнана через SDK и к ней сделан THM файл, то как такой THM файл, созданный к этой текстуре, может ссылаться на недостаток чего-то в текстуре? Ошибка происхходит, когда вы в свою gamedata тащите, что-то из чужих модов и аддонов. Для того, чтобы найти ошибку я делал так. Убираю из gamedata всё содержимое папки texture Дальше начинаю добавлять папки, по одной, в папку texture, загружаю Сталкер и смотрю есть вылет или нет. Если вылет произошёл, то "битый файл" в это папке. Удаляю все THM файлы. Все текстуры прогоняю через SDK и делаю для них новые THM файлы. Вылет пропадает и можно играть на динамике. 1 2 Ссылка на комментарий
UnLoaded 313 Опубликовано 3 Февраля 2015 Поделиться Опубликовано 3 Февраля 2015 (изменено) так как, при написании сюжета, я использовал их в качестве квестовых отметок. Вон оно, в чем дело-то... Вы попутали storyID с ID: первое - это сюжетный идентификатор, уникальное число которое задается разработчиком, а второе - это идентификатор объекта, то-же уникальное число, но присваивается объекту движком в момент создания объекта. Установка метки на объект с использованием storyID будет выглядеть примерно так: local ser_obj = alife():story_object(число из game_story_ids.ltx) -- получаем объект по storyID if ser_obj then level.map_add_object_spot_ser(ser_obj.id, "new_treasure", "") -- ставим метку end Уточню сразу: если my_real_not_actor_id_object это строковая константа из game_story_ids.ltx, типа 004 = "Escape_tutorial_wounded" то в вышеуказанной ф-ции story_object(...) надо использовать именно числовое значение, незначащие нули не обязательны. Изменено 3 Февраля 2015 пользователем UnLoaded Ссылка на комментарий
Clayman 104 Опубликовано 4 Февраля 2015 Поделиться Опубликовано 4 Февраля 2015 Для спавн-объекта можно добавить в кастом дату: [story_object]story_id = tvoi_luboi_story_id А потом использовать его для установки метки. Объектом может быть и спейс-рестриктор, и инвентарный ящик, и левел-ченджер и аномальное поле. Ссылка на комментарий
Сталкер Лом 356 Опубликовано 10 Февраля 2015 Поделиться Опубликовано 10 Февраля 2015 (изменено) Дошли руки исправить предыдущий лог, получил другой: stack trace: 0023:06910203 xrRender_R4.dll После 023:цифры каждый раз разные. Поглядел, что люди пишут по этому поводу - ничего хорошего, только переходить на настройки графики пониже. Но это не дело. Может, кто что подсказать может? Изменено 10 Февраля 2015 пользователем Сталкер Лом Работы на Artstation - https://www.artstation.com/artist/stalker_lom Ссылка на комментарий
Alex-2020 12 Опубликовано 10 Февраля 2015 Поделиться Опубликовано 10 Февраля 2015 (изменено) Доброго времени суток. Не удается распаковать all.spawn MISERY 2.1.1. Отпишитесь, пожалуйста, кому это удалось\удавалось. Изменено 10 Февраля 2015 пользователем Alex-2020 Ссылка на комментарий
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти