Перейти к контенту

Народная 2010 разработка


Рекомендуемые сообщения

"Что у нее внутри, и как это сделать лучше". Для тех, кто уже разбирается в скриптах, конфигах, текстурах и "других страшных словах" ©, и имеет желание и время действительно делать их лучше.
См. подробности в первом посте.

Тема НЕ является ни столом заказов, ни службой техподдержки, ни справочным бюро.

Изменено пользователем Dennis_Chikin
  • Нравится 2
  • Полезно 1
Ссылка на комментарий

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 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка

Ссылка на комментарий

Arhara, так моё дело было сами скрипты поправить, чтобы всё было быстро, читабельно и ты мог легко править всякие настройки. А сами настройки, а особенно координаты, я не трогал.

Всё в твоих руках. ;)

Ссылка на комментарий

Может кто подскажет какая версия ACDC для сборки allspawns Народной Солянки от 13.12.2009.За ранние спасибо!

Сообщение от модератора n6260
ACDC для каждого алл_спавна свое. В разделе моддинга как-то писалось как настраивается ACDC, что бы открыть любой (или почти любой) алл_спавн.

З.Ы. Проще всего ACDC спрашивать у автора мода.

Ссылка на комментарий

Появились первые недовольные удалением зависших неписей. Ну что ж...

Раз такое дело - отпишу, чего нужно сделать, чтобы отключить эту фичу.

 

Все до смешного просто. Берем и в скрипте 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

(все несколько сыровато, но работает вроде :) )

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Ссылка на комментарий

_Призрак_, хреново оно работает.надо его на биндер переделывать,только анимки нету :(

Не смогу.я смогу тебе сказать,что ты менял spawn_level_cganger.script - верни старый и сделай изменения заного поаккуратней.

Так же проверь вызов из on_item_drop функции какойто там в которой есть эта секция бутылки докторской.

Изменено пользователем Monnoroch
Ссылка на комментарий

Широкоформатники.

 

Надо просто довести до ума. Все уже есть, но, какая-то лишняя, мелкая, надоедливая проблемка.

 

Не нужны никакие другие текстуры. Не нужно трогать оригинальные файлы из солянки. Просто конфиги ххх_16.xml и координаты, которые уже давно есть. Потратил некоторое время на часы (сдуру лазил в скрипты) - оказалось - нужно создать новый файл ui_custom_msg_16.xml и, при выборе соответствующего разрешения, данные будут браться оттуда. Сделал, вроде работает. Но всякие мелочи (шкала радиации, к примеру), обязательно вылезут.

 

Смысл - сделать так, чтоб солянка с нуля работала на любых разрешениях. Это реально. Мало того, обязуюсь, что в ближайшее время протестирую и выложу - если до 8.02.10 нет, прошу публично побить меня камнями. :) Только просьба - кто знает о каких-либо подводных нюансах, пожалуйста, сообщите.

 

ЗЫ (1) Инвентарь и слоты под арты - это ну совсем просто - надо считать пиксели, ну сделаю, конечно под 14 (хотя, как игрок, считаю, что 12 - само то, но это не в тему). (2) Прицелы очень важная проблема, но, пока, я ей не занимался.

 

===

 

Сделал.

Изменено пользователем mangust
Ссылка на комментарий

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

 

Ссылка на комментарий

Ни у кого нет соображений по поводу сбоя времени: при варке артов или сне проходит примерно в полтора раза больше времени, чем должно? При этом погода\время суток меняется нормально, а на часах отображается "неправильное" время.

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)

Изменено пользователем dimos
Цензура ограничивает творчество © by me
Ссылка на комментарий

Я могу.

Конструкция

zz.m_story_id~=nil and zz.m_story_id==4294967296

 

Я так понимаю,что при сравнении числа > 32 разрядов оно превращается в другое- тут уж фиг знает какое.

Ну в общем если числу типа integer Присвоить high(integer)+1 то вылета не будет,просто оно будет равно непонятно чему.

 

Добавлено через 19 мин.:

Что я точно могу сказать,что npc:story_id() ~= 4294967296 - вот так определяется НЕквестовый НПС.

Изменено пользователем Monnoroch
Ссылка на комментарий

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;
}

В ЛУА без понятия чему оно будет равно.

Изменено пользователем 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

 

Ссылка на комментарий

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

Ссылка на комментарий

С замками ситуация была такая:

- Все рюкзаки Сидоровича были на одно лицо для замков (у всех стори ИД = 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 чтобы совсем было правильно (там не много) ?

Вот вариант "совсем правильно" :)

Изменено пользователем sapsan
Ссылка на комментарий

solvador, наши наработки потихоньку перетекают в Солянку ;)

 

Добавлено через 76 мин.:

solvador, если ты об включении именно в Солянку, то да - все наработки этой темы - для Солянки.

 

Arhara, Вот вариант замка "совсем правильно" :)

Изменено пользователем sapsan
Ссылка на комментарий

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, я нашел все файлы, в которых проверяется объект на то, что он есть аномалией, и уже поправил их все, но наткнулся на ещё большее количество "неучтённых" аномалий. :rolleyes:

 

Инетересно - а какой класс у стационарной радиации? А то ещё неписи перестанут там ходить или ещё чего делать...

Похоже это

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. Нужно протестировать.

Изменено пользователем sapsan
Ссылка на комментарий

clsid()>172 and alife():object(artefact.parent_id):clsid()<180

sapsan, Arhara,

Я точно знаю, что есть аномалии с clsid() = 188 (достаточно заглянуть в class_registrator - там правильно написано, я проверял)

Возможно, и с бОльшими значениями есть. И как-то кривовато это проверка написана... Неужели нельзя более корректно проверять ?

Есть аналогичная проверка в ньюсах. Там вообще половина аномалий вызывает в итоге сообщение "причина смерти неизвестна".

Это, естественно, некритично именно в ньюсах, а вот в оффлайн_алайф - ?

Изменено пользователем Shadowman

Железо: Intel Core i5 9400F / 16Gb DDR4 2400MHz / SSD NVMe M.2 Samsung 970 EVO Plus 256Gb / GF GTX 1050Ti 4Gb Ось: Win10x64

Ссылка на комментарий

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

Код понятнее, ошибок меньше и работает быстрее.

Изменено пользователем malandrinus
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

sapsan,

Часть рюкзаков и нычек не шмонают не потому, что там замок, а потому, что они в исключениях для шмона.

 

Добавлено через 8 мин.:

sapsan,

По аномалиям - это кто-нить проверял? :) Я пока достиг золотой середины - что надо - корректно спавнится и удаляется, нигде ничего не копится и т.д. - и без прописки новых аномалий, заданий им классов и прочего.... Достатосно было просто прописать их в таблу и сделать соответствующие изменения в конфигах, а части - просто поменять класс. А класс у дин. аномалий АМК д.б. ZS_*** - как мне правильно подсказали.

 

 

 

А как на счёт потестить? :ny_ph34r_1:

Изменено пользователем Arhara

Еще 10 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка

Ссылка на комментарий

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 :rolleyes:

Если что - редактируется только таблица anomaly_classes в файле amk_anoms.script.

 

Arhara, Monnoroch, по death_manager.script - я его исправил и адаптировал назад под Солянку. Исправил порядок проверки на поиск части в имени секции и вернул поиск по части имени непися вместо прямого сравнения.

Вот результат.

 

P.S. Ревизия кода приветствуется.

 

Arhara, извини - урвал время на покодировать. Играть - давно уже не играю...

 

Добавлено через 45 мин.:

Всем скриптёрам, нашел одну "аномалию" в скрипте amk_anoms.script - таблица on_anoms_per_level заполняется по проверке на то, что объект - это аномалия, но нигде не используется! :huh:

Смотрел даже в Солянке от 2009.08.08.

Качаю оригинальный АМК 1.4.1 с патчами для изучения....

Скачал, посмотрел - то же самое - таблица on_anoms_per_level нигде не используется :(

 

Добавлено через 161 мин.:

Arhara, по аномалиям - я сам спавн их не трогал, только их определие в скриптах поправил. Это не должно повлиять на сами аномалии.

Места изменений:

- отключение аномалий при начале выброса (теперь должны отключатся все аномалии);

- включение аномалий после выброса (включатся все аномалии обратно);

- проверка неписем в оффлайне не пренадлежит ли артефакт аномалии (теперь непись не должен влезть ни в какую аномалию);

- выявление причины смерти непися для новостей (теперь имена аномалий должны отображатся нормально, а не как указал Shadowman ("причина смерти неизвестна").

 

По таблице on_anoms_per_level - видать была задумка где-то её использовать, но потом обошлись без неё. Вот и вся история :)

Изменено пользователем sapsan
Ссылка на комментарий

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 лет таких цен, зарплат и пенсий, и вместо переписи населения будет перекличка

Ссылка на комментарий

Arhara, не понял. Убрать из таблицы ещё и "zone_smallrain_s", "zone_zavesa_s", "zone_fountain_s", "zone_sphere_s", "zone_ogon_s", "zone_monolith_s"? Так я видел сферу точно, фонтан видел и "огонёк" тоже видел :)

 

P.S. Тестировал аномалии на Баре и услышал окружающие звуки как в подземках... Баг однако. Услышал после выброса. До выброса были обычные для Бара звуки.

 

Arhara, так просто закомментируй ненужные аномалии в таблице anomaly_classes и всё - больше нигде править не нужно.

Изменено пользователем sapsan
Ссылка на комментарий
Гость
Эта тема закрыта для публикации сообщений.
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...