Перейти к содержанию

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

 

1491319448148138184.png

Тема посвящена моддингу на платформе Зов Чернобыля.

 

Правила темы:

  • Здесь задают вопросы и получают на них ответы. Прежде чем задать вопрос, воспользуйтесь поиском, ответ на него, вероятно, уже есть.
  • Если у вас произошёл вылет, проверьте лог и поищите информацию об ошибке в справочнике. Также будет полезно посмотреть справочник ошибок. Если у Вас вылетает какой-то мод, то следует написать в тему этого мода.
  • Грамотно оформляйте свой пост, чётко доносите суть своего вопроса (ответа).
  • Благодарность выражаем в личке или же ставим реакцию. Посты с благодарностями в теме будут удаляться.
  • Так же, если вы модифицируете готовый мод, обязательно указывайте какой. Некоторые модификации очень сильно отличаются от Call of Chernobyl. 
  • Лайк 4
  • Хабар 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Mawrak Благодарю за помощь! Сейчас буду колдовать...


Дополнено 40 минуты спустя

Mawrak , вести с полей, так сказать

Движок anomaly не подошёл - из папки bin и из корневой папки Xray.exe не запускается, ссылаясь на отсутствующий fsgame. ltx, хотя он есть

Ярлыки от Xray.exe тоже не запускаются, по тем же причинам

Но запустился stalker-coc.exe,  через который я всегда сборку запускаю. При запуске висела картинка из dollchan. Игра проработала на третьем рендере минут 15 и произошёл тот самый вылет по памяти. Запускал с ярлыка с командой no_staging,  результат тот же. Диспетчер задач показал, что использовалось максимум 4 Гб оперативы из 8

Вернул свой "пропатченный" движок обратно, запустил снова  stalker-coc.exe напрямую без ярлыка и команды no_staging. Побегал где то час без проблем на третьем рендере, времени больше не было проверять

Завтра попытаюсь облегчить симуляцию, и протестирую с командой no_staging

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

baraholschik прошу прощения за поздний ответ. Ну да, игру я тоже запускаю из корневой папки с обычного ярлыка, тогда fsgame.ltx распознается. Но раз вылеты все равно есть, то видимо тут не в движке дело. Если есть какие-то обновления по результатам тестов, готов попробовать еще что-то предложить.

  • Жму руку 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Mawrak , да я сам надолго пропал. В общем, вылеты эти ни одним и ваших способов не лечились. Это я сам набедокурил - прописал каждому смарту 20 разных отрядов мутантов на выбор, разнообразия захотел)
Теперь у каждого смарта по 10 сквадов на выбор, на 9 директе вроде неплохо работает. Уменьшил количество стартовых отрядов в simulation.ltx, это тоже пошло на пользу. Кстати, заметил, что некоторые приметные мутанты появляются на локациях, на которых появляться не должны - однажды контроллер на кордон попал, хотя заспавниться он там никак не мог, я проверял. Сам пришел что ли? 
Сейчас осталось поймать баланс между количеством сталкеров и мутантов - у меня слишком мало людей оказалось. Стоило повысить коэффициент числа сталкеров в настройках - со следующей локации пошли вылеты
 


Дополнено 25 минуты спустя

 Такой вопрос еще есть: как мне убрать заскриптованных мутантов из подземелий? Хочу заменить их на рандомные сквады, как на поверхности. Удаление секций с заскриптованными монстрами из смартов по адресу configs/script/имя локации/smarts/имя смарта вызывает вылет, а больше идей у меня нет 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

baraholschik тут я не могу помочь, с оригинальным спавном не работал вообще, все с нуля пилю, да и до серьезного заселения еще не добрался даже. Тоже теперь буду знать, что не надо перебарщивать со сквадами. Надо смотреть, как они именно спавнятся, каким методом. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Mawrak , вести с полей, так сказать
Не знаю, как в COC обстоят дела, но в COM сделано было так, что  изменить население подземных локаций можно, ковыряя три группы файлов:
1. "смарты" по адресу configs/script/имя локации/smarts
2. файлы формата squad_description_имя локации.ltx
3. файлы формата spawn_sections_имя локации.ltx

1.1 В первом пункте изменить все спавнящиеся сквады нельзя, например по катакомбам агропрома там указаны всего 4 смарта, их население заскриптовано. По идее, это дело можно отключить с помощью файлов типа "agru_bloodsucker_spawn" по адресу  "configs\scripts\agroprom_underground". Но я смог лишь отключить спавн одного контроллера в финальном туннеле, как в ТЧ, и вместо него никто не отспавнился.

2.1 Однако заскриптованных мутантов можно заменить через файлы из второго пункта. Опять же на примере подземки агропрома видно, что в squad_description_agroprom_underground указана примерно половина всех скриптованых сквадов на локации. И есть пометка, что все сквады с полтергейстами заменены на бюреров, и это уже надо смотреть в файлах из третьего пункта

3.1 В spawn_sections_agroprom_underground перечислены помимо сквадов из второго пункта, все остальные сквады, например, куча отрядов снорков из коридора с жарками. Файл разбит на секции и к названию каждой секции после квадратных скобок приписан конкретный вид мутантов, который будет спавниться. Например, секция называется так: 
[agru_poltergeist_2]:burer_weak - это как раз полтергейсты, замененные на бюреров.

До конца не уверен, но очень похоже, что после гибели вот всех этих заскриптованных мутантов, в дело вступает симуляция, используя сквады, которые указаны в смартах по адресу configs/script/имя локации/smarts. Я туда дописал секции [spawn_mutants] с бюрерами в том числе, и после убийства скриптованых кровососов на их месте появились бюреры
Кстати, заметил новую проблему - в подземельях глючит физика, а конкретно деревянные ящики порой застревают в поверхностях или друг друге и при первом же взаимодействии их начинает "троить", в итоге игра со страшными звуками вылетает. В какой момент эта проблема появилась, не знаю, я подземелья только сейчас начал проверять, а на поверхности такого не случается 
UPD: есть еще simulation.ltx, в нем тоже прописаны  например скриптованные сквады кровососов из подвалов агропрома, но я не думаю, что тут стоит их удалять, так как без них скрипты не сработают и мы пойдём на рабочий стол скорее всего

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Очередная проблема, ребят. COM. После отключения выжигателя мозгов, в бункере под Радаром спавнятся 30 монолитовцев. Я их заменил на экологов и получил при запуске игры такой вылет:
[error]Line          : 189
[error]Description   : fatal error
[error]Arguments     : LUA error: ...misery second\gamedata\scripts\sim_squad_scripted.script:639: wrong number of arguments to 'insert'
Заменял болванчиков в файле spawn_section_bunker.ltx, другие файлы не трогал. Что я мог сделать не так?
Ранее точно также по аналогии я успешно изменил скриптованное население почти всех подземных локаций, но исключительно мутантов. Замена зомби-сталкеров на мутантов и наоборот, вызывала другой вылет и я на это забил. Видимо, это принципиально разные виды НПС, их так просто не заменить
Но сейчас то я людей на людей поменял, всё должно было работать. 
Единственная "отсебятина", это строчка "relationship = enemy", ее я добавил каждому экологу. Но это строчку я взял из файла squad_description_agroprom - там смарт в туннеле есть, где всем отрядам эта строчка прописана с разными значениями. Я сначала думал, что это баг, когда одиночки в туннеле на меня нападали, а гопники были нейтралами, но на самом деле, такое отношение к гг было в файле прописано
UPD: проблема решена

Изменено пользователем baraholschik
Проблема решена

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Знатоки, мне снова нужна ваша помощь. В общем, мне нужно, чтобы по скрипту игрок услышал определенный звук. Без получения квестов или сообщений в пда, только звук. Самого звука у меня пока нет, но можно же использовать "затычку". Триггером будет отключение выжигателя. Есть какое то типовое решение для этой ситуации? Или придётся писать скрипт с нуля и всюду его "регистрировать"?
Платформа COM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

baraholschik можно так сделать, функцию только объявить не забудь

Спойлер

function play_zvuk()
    if has_alife_info("инфопоршень_отключения_выжигателя") then
        local snd_obj = xr_sound.get_safe_sound_object([[твои_звуки\твоя_заглушка]])
        snd_obj:play_at_pos(db.actor, vector():set(0,0,0), 0, sound_object.s2d)
    end
end

 

  • Хабар 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

StrawFlux ого, спасибо! Но для меня это всё не сильно понятно. Можете указать, в какой файл эту функцию вписывать? Название функции произвольное? Что значит объявить функцию?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Приветствую. Что-то не получается у меню скомпилить локацию, при нажатии на батник, консоль открывается на мгновение и тут же закрывается. Я пытался скомпилить локацию fake_start, что идет с файлами SDK CoC. Это мой первый опыт, в попытке скомпилировать локацию, поэтому возможно я где-то в совсем простом забурился, в том числе и прописывании путей. Я прописывал только для декомпиляции, не знаю, нужно ли для компиляции прописывать отдельно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
20 минут назад, ParaworldFan сказал:

Что-то не получается у меню скомпилить локацию, при нажатии на батник, консоль открывается на мгновение и тут же закрывается.

Вероятнее всего, у тебя компиляторы просто падают при запуске. 

Перетащи на время компиляции в другое место папку lod из gamedata/textures и пробуй запускать. 
Если не поможет, тогда еще и папку objects из rawdata, тогда уж точно должен запустится. 

20 минут назад, ParaworldFan сказал:

Я прописывал только для декомпиляции, не знаю, нужно ли для компиляции прописывать отдельно.

Только в батнике имя локации.

Изменено пользователем WolfHeart
  • Мастер! 1

EaRLNb6.gif
AMD FX-8370 (8 X 4.35GHz); RAM 16Gb; MSI GTX 1070 (8Gb).
Windows -10 PRO (х64)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
16 минут назад, WolfHeart сказал:

Вероятнее всего, у тебя компиляторы просто падают при запуске. 

Перетащи на время компиляции в другое место папку lod из gamedata/textures и пробуй запускать. 
Если не поможет, тогда еще и папку objects из rawdata, тогда уж точно должен запустится. 

Только в батнике имя локации.

Помогло, спасибо.

  • Мастер! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Почему, при декомпиляции локаций из ЧН (stancia_2) у объектов геометрии не отображаются координаты во вкладке properties? Может знает кто, как можно пофиксить? Очень нужно…

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Хотелось бы сделать аддон (для Anomaly 1.5.2), который будет сообщать игроку список предметов в тайниках, полученных в награду за квесты. Например, чтобы при наведении курсора в КПК на метку тайника в всплывающей подсказке-описании был список предметов, или чтобы сразу после получения координат тайника в КПК присылалось также сообщение о его содержимом.
Как это можно сделать?

Пока всё, что я смог - это понять, что за выдачу игроку этих тайников отвечает функция "create_random_stash" в файле treasure_manager.script, и написать примитивный скрипт, вызывающий эту функцию при нажатии кнопки.
Я второй день в моддинге. Что и где мне стоит прочитать, изучить, чтобы осилить написание такого аддона? Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

spl1fach скинь этот файл

16 часов назад, spl1fach сказал:

Что и где мне стоит прочитать, изучить, чтобы осилить написание такого аддона?

Луа надо изучить. И вот это https://www.amk-team.ru/forum/topic/7450-spravochnik-po-funkciyam-i-klassam/  Это относится к оригиналам, в коке, особенно в аномалии, есть много изменений в скриптовой части, но все равно не помешает, это основа. Отдельно по аномалии не попадалось, придется самому смотреть отличия от оригинала, но сначала изучи основу

Изменено пользователем N42
  • Мастер! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

N42 

23 часа назад, N42 сказал:

Луа надо изучить. И вот это https://www.amk-team.ru/forum/topic/7450-spravochnik-po-funkciyam-i-klassam/  Это относится к оригиналам, в коке, особенно в аномалии, есть много изменений в скриптовой части, но все равно не помешает, это основа

Понял. Буду шерстить основу-оригинал.
А нет случайно Дискорд-сервера, где могут подсказать насчёт моддинга? Я нашёл пару, но они англоязычные в основном по составу.

23 часа назад, N42 сказал:

spl1fach скинь этот файл

Прикрепляю

treasure_manager.script

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
В 02.06.2023 в 16:33, spl1fach сказал:

А нет случайно Дискорд-сервера, где могут подсказать насчёт моддинга?

Без понятия, если честно, не пользуюсь дискордом. А по форумам - есть еще амк, можно там спрашивать тоже

В 31.05.2023 в 23:43, spl1fach сказал:

чтобы при наведении курсора в КПК на метку тайника в всплывающей подсказке-описании был список предметов, или чтобы сразу после получения координат тайника в КПК присылалось также сообщение о его содержимом

Текст на метке или все-таки сообщением надо? Извиняюсь за поздний ответ, не до этого было

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

N42 

20 часов назад, N42 сказал:

Текст на метке или все-таки сообщением надо? Извиняюсь за поздний ответ, не до этого было

Лучше бы на метке. А вообще хотя бы как-то - как получится.

У меня вот получилось вывести список из id предметов, которые появляются в объекте-хранилище при получении игроком тайника.
В функции set_random_stash в том же файле (treasure_manager.script) я добавил пару строк
 

Спойлер

-- начинается отрывок на 487 строке
	-- Apply the content + Add map spot
	else
		if (#content > 0) then
		
			local spot
			if no_spot and (type(no_spot) == "string") then
				spot = no_spot
			else
				spot = is_rare and "treasure_searched" or "treasure"
			end
			
			if (no_spot ~= true and level.map_has_object_spot(id,spot) == 0) then
				level.map_add_object_spot_ser(id, spot, hint or "")
				news_manager.send_treasure(0)
			end
			caches[id] = table.concat(content,",")
			-- ----------------- Мои правки ----------------
			for k, v in pairs(content) do
				news_manager.send_tip(db.actor, tostring(k) .. tostring(v), nil, nil, 30000)
			end
			-- ---------------------------------------------
			return id
		else
			caches[id] = false
		end
	end
	
	return
end

 

В итоге id каждого предмета в тайнике приходит игроку сообщением в ПДА. Насколько корректно я это сделал вообще?
И мне бы название предмета, а не его id, отправлять игроку сообщением. Можно его как-то в скрипте получить по id?
Как я понял, некие "словари" (xml-файлы) с названиями предметов хранятся в gamedata/configs/text/rus (или eng, или ещё какой язык)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

spl1fach небольшая поправка, там не id, там секции предметов, а зная секцию - да, можно получить название. В самой секции название пишется в строчке "inv_name", обычно там id текста, который находится в файлах в gamedata/configs/text/rus. Но бывает, сразу пишут текст, но лучше так не делать. Получить то, что в "inv_name" написано, можно так:

system_ini():r_string_ex(секция,"inv_name") или system_ini():r_string(секция,"inv_name") 

Если в "inv_name" id текста, а не сам текст, надо еще текст получить

game.translate_string(id_текста)

В итоге, вот так получаешь название предмета

local itm_name = game.translate_string(system_ini():r_string_ex(секция,"inv_name") )

Теперь насчет метки, она ставится в строчке level.map_add_object_spot_ser(id, spot, hint or ""). hint or "" - отвечает за текст метки, вот его можно поменять, добавив к hint еще своего текста. Сформировать список можно в том же цикле, каждый раз присоединяя к items_str название следующего предмета. Можно запятую в конце ставить или перенос делать с "\\n", сам уже сделаешь как понравится

local items_str = "Содержимое: "

for k, v in pairs(content) do

    items_str = items_str..game.translate_string(system_ini():r_string_ex(v, "inv_name"))..", "

end

Дальше соединить изначальный текст метки и новый список

hint = hint.."\\n"..items_str

Всё это до level.map_add_object_spot_ser(id, spot, hint or "") пропиши


Дополнено 2 минуты спустя

Не знаю, выдается ли где-нибудь тайники без переданного hint, но наверно лучше сделать какой-нибудь дефолтный текст если hint будет nil

if hint == nil then

    hint = "Тайник"

end

Изменено пользователем N42
  • Мастер! 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Ребят, мне нужна консультация по A-life, я себе уже мозг сломал.
Вот есть локация, есть на ней смарты, есть squad_description.ltx для этой локации, есть spawn_sections.ltx для этой локации, есть секция для этой локации в simulation.ltx и есть мутанты, которые ни в одном из этих файлов не указаны, в смарты не назначены, но данной локации они почему то присутствуют. Как такое может быть?
Наглядно: на Болотах не может быть контроллеров, кровососов и полтергейстов, но на болотах они появляются. Ближайшая локация с кровососами и полтерами - агропром, а с контроллером вообще бар. Могут ли эти твари придти на болото через пару локаций? Я не думаю, что эти твари спавняться, когда гг приближается к смарту, потому что фризов не возникает, да и визуально я этого не видел. 
Есть еще особенность: я десятки раз перезапускал НИ, и только при некоторых запусках я наблюдал контроллеров на болотах, псевдогиганта на кордоне и т.д. Есть какой то рандом при создании симуляции, раскидывающий зверьё на абум?
Как всё таки работает строчка "DEACTIVATE_SIM_ON_NON_LINKED_LEVELS = true" в _g.script ? Инфа в интернете разнится, я лично разницы не замечаю, как давно эта строчка у меня "true" я уже и не помню
Возможно остатки старого мода на a-life дают о себе знать - очень давно я поставил TRX Alife rewamp, который спавнил в рандомных местах рандомные сквады мутантов, например тех же контроллеров на болотах. Ещё спавнил он мутантов прямо у меня на глазах, поэтому я его отключил. Этот мод вносил изменения в _g.script, поэтому я оригинальный _g.script заменил на этот, а потом уже сверху в него писал всё, что требовалось для работы других модов. В итоге оригинальный  _g.script я вернуть не могу, потому что другие моды перестанут работать. А снова редактировать чистый _g.script, заново вписывая туда все изменения от кучи модов я не хочу, так как риск накосячить слишком высок. Но могут ли теоретически в этом файле находиться какие то строчки, вызывающие вышеописанную ситуацию? Был в этом моде файл с названием dynamic_spawn.script, но когда я его удалил, рандомный спавн зверья всё равно происходил. Как я прекратил это дело, уже и не помню.
All.spawn оригинальный, от COM

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

baraholschik может они просто идут куда-нибудь через эти локи, а по пути их встречаешь

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

N42 я вот тоже думаю, но насчет этого есть большие сомнения - я думаю что алайф работает не так. Хотя как он на самом деле работает, я тоже не знаю. 

Кстати, обнаружил, что у меня  simulation_object_props от call of Chernobyl стоит, он может быть за это ответственен - согласно этому файлу НПС передвигаются по локациям, гуляют так сказать. Заменил на оригинальный, тестирую. За два запуска симуляции проблему не обнаружил, может действительно в нём было дело

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

Приветствую. Столкнулся с такой проблемой: добавил новую группировку, но по каким-то причинам враждебные к группировке нпс, игнорируют её бойцов, даже когда те атакуют данных. При этом бойцы самой группировки спокойно атакуют враждебных к ней нпс. С чем может быть связана данная проблема, что я упустил?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 

ParaworldFan в таблице отношений у игнорирующей группировки правил отношение? Там два раза править надо, и у тех и у тех

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
 
14 часов назад, N42 сказал:

ParaworldFan в таблице отношений у игнорирующей группировки правил отношение? Там два раза править надо, и у тех и у тех

Если бы дело было в этом, я бы не стал сюда писать. Естественно я редактировал эти значения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу