Dennis_Chikin 3 658 Опубликовано 24 Апреля 2014 Поделиться Опубликовано 24 Апреля 2014 (изменено) "Что у нее внутри, и как это сделать лучше". Для тех, кто уже разбирается в скриптах, конфигах, текстурах и "других страшных словах" ©, и имеет желание и время действительно делать их лучше.См. подробности в первом посте.Тема НЕ является ни столом заказов, ни службой техподдержки, ни справочным бюро. Изменено 28 Апреля 2014 пользователем Dennis_Chikin 2 1 Солянка обезжиренная, диетическая, полезные советы по "солянке", текущий тестовый патч Ссылка на комментарий
Arhara 32 Опубликовано 23 Января 2010 Поделиться Опубликовано 23 Января 2010 sapsan, local art_on_level={ -- налетай! дополняй! нету уровня - нету артов! l01_escape = {lvid=595580, gvid=44, count = 1}, l02_garbage = {lvid=384039, gvid=265, count = 2}, l03_agroprom = {lvid=438379, gvid=693, count = 2}, l04_darkvalley = {lvid=392517, gvid=813, count = 5}, l05_bar = {lvid=99538, gvid=1233, count = 2}, l06_rostok = {lvid=69283, gvid=1311, count = 3}, l07_military = {lvid=915663, gvid=1546, count = 5}, l08_yantar = {lvid=141470, gvid=1438, count = 8}, l11_pripyat = {lvid=295965, gvid=2269, count = 8} Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
sapsan 336 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 Arhara, так моё дело было сами скрипты поправить, чтобы всё было быстро, читабельно и ты мог легко править всякие настройки. А сами настройки, а особенно координаты, я не трогал. Всё в твоих руках. Ссылка на комментарий
22ff 4 Опубликовано 24 Января 2010 Поделиться Опубликовано 24 Января 2010 Может кто подскажет какая версия ACDC для сборки allspawns Народной Солянки от 13.12.2009.За ранние спасибо! Сообщение от модератора n6260 ACDC для каждого алл_спавна свое. В разделе моддинга как-то писалось как настраивается ACDC, что бы открыть любой (или почти любой) алл_спавн. З.Ы. Проще всего ACDC спрашивать у автора мода. Ссылка на комментарий
Shadowman 939 Опубликовано 28 Января 2010 Поделиться Опубликовано 28 Января 2010 (изменено) Появились первые недовольные удалением зависших неписей. Ну что ж... Раз такое дело - отпишу, чего нужно сделать, чтобы отключить эту фичу. Все до смешного просто. Берем и в скрипте remove_zavis.script оставляем только это: function remove_obj(obj) local npc_id = obj:id() if IsStalker(obj) or IsMonster(obj) then abort("xr_logic: ОБНАРУЖЕН ОБЪЕКТ С ПОВРЕЖДЕННЫМ PSTOR: '%s'", tostring(obj:name())) end end Все. Будем ловить вылеты по зависшим неписям, как это было раньше. Кстати, коллеги: ACS для Солянки от 26.01.2010 описание в теме ACS (все несколько сыровато, но работает вроде ) Изменено 29 Января 2010 пользователем Shadowman Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
Monnoroch 6 Опубликовано 1 Февраля 2010 Поделиться Опубликовано 1 Февраля 2010 (изменено) _Призрак_, хреново оно работает.надо его на биндер переделывать,только анимки нету Не смогу.я смогу тебе сказать,что ты менял spawn_level_cganger.script - верни старый и сделай изменения заного поаккуратней. Так же проверь вызов из on_item_drop функции какойто там в которой есть эта секция бутылки докторской. Изменено 1 Февраля 2010 пользователем Monnoroch Ссылка на комментарий
mangust 1 Опубликовано 1 Февраля 2010 Поделиться Опубликовано 1 Февраля 2010 (изменено) Широкоформатники. Надо просто довести до ума. Все уже есть, но, какая-то лишняя, мелкая, надоедливая проблемка. Не нужны никакие другие текстуры. Не нужно трогать оригинальные файлы из солянки. Просто конфиги ххх_16.xml и координаты, которые уже давно есть. Потратил некоторое время на часы (сдуру лазил в скрипты) - оказалось - нужно создать новый файл ui_custom_msg_16.xml и, при выборе соответствующего разрешения, данные будут браться оттуда. Сделал, вроде работает. Но всякие мелочи (шкала радиации, к примеру), обязательно вылезут. Смысл - сделать так, чтоб солянка с нуля работала на любых разрешениях. Это реально. Мало того, обязуюсь, что в ближайшее время протестирую и выложу - если до 8.02.10 нет, прошу публично побить меня камнями. Только просьба - кто знает о каких-либо подводных нюансах, пожалуйста, сообщите. ЗЫ (1) Инвентарь и слоты под арты - это ну совсем просто - надо считать пиксели, ну сделаю, конечно под 14 (хотя, как игрок, считаю, что 12 - само то, но это не в тему). (2) Прицелы очень важная проблема, но, пока, я ей не занимался. === Сделал. Изменено 5 Февраля 2010 пользователем mangust Ссылка на комментарий
Malandrinus 615 Опубликовано 15 Февраля 2010 Поделиться Опубликовано 15 Февраля 2010 Shadowman, Сравнивать таблицы можно, но без дополнительных усилий они сравниваются на равенство ссылок. Это означает, что равна таблица будет всегда и только самой себе. Чтобы сравнивать "по смыслу", надо вписать таблице мататаблицу с оператором сравнения. Как-то так: local t1 = {} lcoal t2 = {} log(tostring(t1 == t2)) -- вернёт false t1.a = 3 t2.a = 3 local mt = {} mt.__eq = function(op1, op2) return op1.a == op2.a -- сравниваем по содержанию end setmetatable(t1, mt) setmetatable(t2, mt) log(tostring(t1 == t2)) -- вернёт true Пример упрощённый, но рабочий. И надо понимать, что никакой выгоды по скорости я не имею. Просто сделал синтаксическую обёртку для своего кода сравнения. Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
dimos 10 Опубликовано 16 Февраля 2010 Поделиться Опубликовано 16 Февраля 2010 (изменено) Ни у кого нет соображений по поводу сбоя времени: при варке артов или сне проходит примерно в полтора раза больше времени, чем должно? При этом погода\время суток меняется нормально, а на часах отображается "неправильное" время. Ray, это встречается в разных модах на основе АМК. Вот только не могу понять, связано это с выбросами и фриплеем или нет... Или это пресловутая ошибка "судного дня" из оригинала, когда после определенного момента игровое время начинает глючить? Наткнулся в sleep_manager.script на такое: local factor = scale * 2650 Откуда взята эта цифра, никак не могу понять... Или из-за этого? Попытка подогнать 1 под 3, 3 под 5 и т.д. function sleep_one_hour() sleep_manager.main (3) end function sleep_three_hours() sleep_manager.main (5) end function sleep_nine_hours() sleep_manager.main (8) Изменено 17 Февраля 2010 пользователем dimos Цензура ограничивает творчество © by me Ссылка на комментарий
Monnoroch 6 Опубликовано 18 Февраля 2010 Поделиться Опубликовано 18 Февраля 2010 (изменено) Я могу. Конструкция zz.m_story_id~=nil and zz.m_story_id==4294967296 Я так понимаю,что при сравнении числа > 32 разрядов оно превращается в другое- тут уж фиг знает какое. Ну в общем если числу типа integer Присвоить high(integer)+1 то вылета не будет,просто оно будет равно непонятно чему. Добавлено через 19 мин.: Что я точно могу сказать,что npc:story_id() ~= 4294967296 - вот так определяется НЕквестовый НПС. Изменено 18 Февраля 2010 пользователем Monnoroch Ссылка на комментарий
Ray 14 Опубликовано 18 Февраля 2010 Поделиться Опубликовано 18 Февраля 2010 (изменено) Monnoroch, во многих языках программирования оно будет равно не непонятно чему, а минимальному числу. К примеру код С++ #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { short int a = 32767; cout << a << endl; // выведет 32767 a = a + 1; cout << a << endl; // выведет -32768 return 0; } В ЛУА без понятия чему оно будет равно. Изменено 18 Февраля 2010 пользователем Ray AMD Ryzen 5 3600 Box, MB Asus Prime B450-Plus, 2x8 Gb Kingston DDR4-3200, MSI GeForce GTX 1060 3GB, SSD Samsung 840 EVO 120GB, Kingston A400 120 Gb, Samsung HD103SJ SATA2, Samsung HD502HJ SATA2 Ссылка на комментарий
Shadowman 939 Опубликовано 18 Февраля 2010 Поделиться Опубликовано 18 Февраля 2010 sapsan, вот что пишет тов. malandrinus здесь Я проверил и выяснил, что для всех объектов, у которых sid не установлен, и obj.m_story_id, и obj:story_id() выдают значение 4294967296. Если посмотреть на шестнадцатеричное представление этого числа, то увидим 0x100000000. Т.е. вообще говоря число выходит за пределы 32-х разрядов, однако младшие 32 разряда равны нулю. Сорри, если баян Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
sapsan 336 Опубликовано 19 Февраля 2010 Поделиться Опубликовано 19 Февраля 2010 (изменено) С замками ситуация была такая: - Все рюкзаки Сидоровича были на одно лицо для замков (у всех стори ИД = 4294967296, тоесть отсутствует). Поэтому закрыв такой рюкзак замком, автоматически закрывались все рюкзаки Сидоровича. - Некоторые нычки от ПЫС также со стори ИД = 4294967296 (отсутствует). Кроме того их имена (level_prefix_inventory_box_0012) явно недоделаны самими ПЫС-ми. Они должны были называться как новые стационарные нычки от мододелов (atp_arhara_secret_1), тоеть вместо level_prefix должен быть идентификатор уровня. Из-за этого в игре есть нычки с одинаковыми именами и некоторые из них без стори ИД. Внёс я изменения в работу замков. Изменения не кардинальные и не до конца корректные потому, что пришлось бы менять и amk_offline_alife.script (переводить работу замков и защиты на ИД нычек). Изменения - если у нычки стори ИД = 4294967296, то под защиту берётся её имя. Таким образом рюкзаки Сидоровича теперь будут охраняться индивидуально. У нычек от ПЫС-в со стори ИД = 4294967296 уменьшится защита "на шару", а с установленным стори ИД (таких - большенство) защита будет нормальная - по их стори ИД. Вот результат. Можно раскомментировать отладочный вывод в консоль и понаблюдать за именами и стори ИД нычек. P.S. Не нашел код защищающий рюкзаки Сидоровича. Arhara, что скажешь - переделывать amk_offline_alife.script чтобы совсем было правильно (там не много) ? Вот вариант "совсем правильно" Изменено 20 Февраля 2010 пользователем sapsan Ссылка на комментарий
sapsan 336 Опубликовано 19 Февраля 2010 Поделиться Опубликовано 19 Февраля 2010 (изменено) solvador, наши наработки потихоньку перетекают в Солянку Добавлено через 76 мин.: solvador, если ты об включении именно в Солянку, то да - все наработки этой темы - для Солянки. Arhara, Вот вариант замка "совсем правильно" Изменено 20 Февраля 2010 пользователем sapsan Ссылка на комментарий
sapsan 336 Опубликовано 20 Февраля 2010 Поделиться Опубликовано 20 Февраля 2010 (изменено) Arhara, в моём новом варианте amk_offline_alife.script из "правильных замков" в строке 540 есть такой кусок проверки: (alife():object(artefact.parent_id):clsid()>172 and alife():object(artefact.parent_id):clsid()<180) Я так понимаю, что это аномалии. Нужно добавить новые сюда приблизительно так: (alife():object(artefact.parent_id):clsid()>172 and alife():object(artefact.parent_id):clsid()<180 or alife():object(artefact.parent_id):clsid() == НОМЕР КЛАССА АНОМАЛИИ) Или скажи мне номера новых аномалий - я добавлю. P.S. Нашел в такую проверку: (sobj:clsid()>172 and sobj:clsid()<180) or sobj:clsid()==clsid.zone_electra_s or (sobj:clsid()>18019 and sobj:clsid()<18024) or sobj:clsid()==clsid.nogravity_zone Если она есть полной, то нужно сделать общую функцию проверки и вызывать её всюду (таких файло-мест есть 3). Добавлено через 19 мин.: Только вот я не понял зачем идёт сравнение с clsid.nogravity_zone, который равен 179 и автоматом попадает в диапазон проверки (sobj:clsid()>172 and sobj:clsid()<180) ? Описка по незнанию? const zone_bfuzz_s = 168; const zone_galant_s = 169; const zone_mbald_s = 170; const zone_mincer_s = 171; const zone_rusty_hair = 181; const zone_buzz_s = 185; const zone_zharka_s = 188; const zone_electra_s = 189; const zone_ice = 190; const zone_ice_s = 191; Или я чего не понимаю ? Shadowman, я нашел все файлы, в которых проверяется объект на то, что он есть аномалией, и уже поправил их все, но наткнулся на ещё большее количество "неучтённых" аномалий. Инетересно - а какой класс у стационарной радиации? А то ещё неписи перестанут там ходить или ещё чего делать... Похоже это const zone_radioactive = 180; и её стоит исключить из проверки... Arhara, вот результат. Включены отсутствующие аномалии, кроме стационарной радиации (zone_radioactive = 180), всюду используется унифицированная функция проверки. Также в архиве присутствует изменённый замок, так как в файле amk_offline_alife.script пересеклись правки по замку и аномалиям. function is_anomaly(class_id) return ( class_id and ( (class_id >= 168 and class_id <= 179) or class_id == 181 or class_id == 185 or (class_id >= 188 and class_id <= 191) or (class_id >= 18020 and class_id <= 18024) ) ) end if is_anomaly(sobj:clsid()) then amk_anoms.is_anomaly(alife():object(artefact.parent_id):clsid()) P.S. Нужно протестировать. Изменено 21 Февраля 2010 пользователем sapsan Ссылка на комментарий
Shadowman 939 Опубликовано 20 Февраля 2010 Поделиться Опубликовано 20 Февраля 2010 (изменено) clsid()>172 and alife():object(artefact.parent_id):clsid()<180 sapsan, Arhara, Я точно знаю, что есть аномалии с clsid() = 188 (достаточно заглянуть в class_registrator - там правильно написано, я проверял) Возможно, и с бОльшими значениями есть. И как-то кривовато это проверка написана... Неужели нельзя более корректно проверять ? Есть аналогичная проверка в ньюсах. Там вообще половина аномалий вызывает в итоге сообщение "причина смерти неизвестна". Это, естественно, некритично именно в ньюсах, а вот в оффлайн_алайф - ? Изменено 20 Февраля 2010 пользователем Shadowman Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64 Ссылка на комментарий
Malandrinus 615 Опубликовано 21 Февраля 2010 Поделиться Опубликовано 21 Февраля 2010 (изменено) Shadowman, sapsan, крайне не рекомендуется пользоваться магическими числами, как это сделано в примере выше. Мне точно известно, что константы из класса/перечисления clsid отнюдь не постоянны. При добавлении в class_registrator новых сетов новые идентификаторы могут втыкаться в совершенно произвольное место и, таким образом, смещать существующие. Логики назначения я не понял, хотя, если честно, сильно и не искал. Не обязательно в этом случае, но это может стать причиной ошибок. И да, так проверять совершенно недопустимо. Надо примерно так, как это делается в функции IsMonster (в ЗП версии) local anomaly_classes = { [clsid.zone_electra_s] = true, -- <<== никаких магических чисел, только именованные константы !!!! [clsid.nogravity_zone] = true, и т.д. } function IsAnomaly(obj) return anomaly_classes[obj:clsid()] == true end Код понятнее, ошибок меньше и работает быстрее. Изменено 21 Февраля 2010 пользователем malandrinus Плагины Total Commander для работы с игровыми архивами: Архиваторный плагин (для работы с одиночным архивом): link1 link2 Системный плагин (для распаковки установленной игры): link1 link2 Ссылка на комментарий
Arhara 32 Опубликовано 21 Февраля 2010 Поделиться Опубликовано 21 Февраля 2010 (изменено) sapsan, Часть рюкзаков и нычек не шмонают не потому, что там замок, а потому, что они в исключениях для шмона. Добавлено через 8 мин.: sapsan, По аномалиям - это кто-нить проверял? Я пока достиг золотой середины - что надо - корректно спавнится и удаляется, нигде ничего не копится и т.д. - и без прописки новых аномалий, заданий им классов и прочего.... Достатосно было просто прописать их в таблу и сделать соответствующие изменения в конфигах, а части - просто поменять класс. А класс у дин. аномалий АМК д.б. ZS_*** - как мне правильно подсказали. А как на счёт потестить? :ny_ph34r_1: Изменено 21 Февраля 2010 пользователем Arhara Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
sapsan 336 Опубликовано 21 Февраля 2010 Поделиться Опубликовано 21 Февраля 2010 (изменено) Arhara, по нычкам - да, там есть таблица исключений стори ИД: 5008, 5013, 5014, 5041, 5065, 5084, 5104, 5205, 5222, 5226, 5237, 5238, 5243, 5244, 5245, 5246, 5247, 5248, 5249, 5250, 5254, 5255, 5408, 5413, 5428, 5433, 5434, 5444, 5446, 5470, 5471, 5472, 5473, 5474, 573 Я её не трогал. Arhara, список аномалий, как я понял, "одобрили" неотрицанием Shadowman, malandrinus, Monnoroch Если что - редактируется только таблица anomaly_classes в файле amk_anoms.script. Arhara, Monnoroch, по death_manager.script - я его исправил и адаптировал назад под Солянку. Исправил порядок проверки на поиск части в имени секции и вернул поиск по части имени непися вместо прямого сравнения. Вот результат. P.S. Ревизия кода приветствуется. Arhara, извини - урвал время на покодировать. Играть - давно уже не играю... Добавлено через 45 мин.: Всем скриптёрам, нашел одну "аномалию" в скрипте amk_anoms.script - таблица on_anoms_per_level заполняется по проверке на то, что объект - это аномалия, но нигде не используется! Смотрел даже в Солянке от 2009.08.08. Качаю оригинальный АМК 1.4.1 с патчами для изучения.... Скачал, посмотрел - то же самое - таблица on_anoms_per_level нигде не используется Добавлено через 161 мин.: Arhara, по аномалиям - я сам спавн их не трогал, только их определие в скриптах поправил. Это не должно повлиять на сами аномалии. Места изменений: - отключение аномалий при начале выброса (теперь должны отключатся все аномалии); - включение аномалий после выброса (включатся все аномалии обратно); - проверка неписем в оффлайне не пренадлежит ли артефакт аномалии (теперь непись не должен влезть ни в какую аномалию); - выявление причины смерти непися для новостей (теперь имена аномалий должны отображатся нормально, а не как указал Shadowman ("причина смерти неизвестна"). По таблице on_anoms_per_level - видать была задумка где-то её использовать, но потом обошлись без неё. Вот и вся история Изменено 21 Февраля 2010 пользователем sapsan Ссылка на комментарий
Arhara 32 Опубликовано 23 Февраля 2010 Поделиться Опубликовано 23 Февраля 2010 sapsan, Я сейчас позакомментил всё в класс_регистрейшоне, это всё было детским лепетом... Удалить надо вообще - нет таких аномалий.... --cs_register (object_factory, "CMosquitoBald", "se_zones.se_zone_anom", "ZS_MBALD", "zone_smallrain_s") --zone_smallrain_s = 18020 --cs_register (object_factory, "CMosquitoBald", "se_zones.se_zone_anom", "ZS_MBALD", "zone_zavesa_s") --zone_zavesa_s = 18021 --cs_register (object_factory, "CMosquitoBald", "se_zones.se_zone_anom", "ZS_ZHARK", "zone_fountain_s") --zone_fountain_s = 18022 --cs_register (object_factory, "CMincer", "se_zones.se_zone_anom", "ZS_GALAN", "zone_sphere_s") --zone_sphere_s = 18023 --cs_register (object_factory, "CMosquitoBald", "se_zones.se_zone_anom", "Z_MBALD", "zone_ogon_s") --zone_ogon_s = 18024 --cs_register (object_factory, "CMosquitoBald", "se_zones.se_zone_anom", "Z_RADIO", "zone_monolith_s") --zone_monolith_s = 18025 Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка Ссылка на комментарий
sapsan 336 Опубликовано 23 Февраля 2010 Поделиться Опубликовано 23 Февраля 2010 (изменено) Arhara, не понял. Убрать из таблицы ещё и "zone_smallrain_s", "zone_zavesa_s", "zone_fountain_s", "zone_sphere_s", "zone_ogon_s", "zone_monolith_s"? Так я видел сферу точно, фонтан видел и "огонёк" тоже видел P.S. Тестировал аномалии на Баре и услышал окружающие звуки как в подземках... Баг однако. Услышал после выброса. До выброса были обычные для Бара звуки. Arhara, так просто закомментируй ненужные аномалии в таблице anomaly_classes и всё - больше нигде править не нужно. Изменено 23 Февраля 2010 пользователем sapsan Ссылка на комментарий
Рекомендуемые сообщения