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

[CoP] Ковыряемся в файлах


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

Как известно, в ванильном ЗП и в многих сборках CoC неписи довольно плохо воюют между собой и с мутантами, т.к. долго наводят оружие на врагов и в целом неповоротливы.

В Readme от Ai Tweaks на ЗП от Alundaio написано, что:
 

Скрытый текст

- Опционально: Можно вбить эти команды в консоль. (Внимание! Делает игру более сложной!) 
        ai_aim_max_angle     25.0
        ai_aim_min_angle     20.0
        ai_aim_min_speed     2.50
        ai_aim_predict_time     0.28

И действительно, в Gunslinger mod это улучшило реакцию ИИ.
Однако в чистом ЗП эти значения(ai_aim_max_angle и т.д.) сразу сбрасываются при вводе в консоли, т.е. изменить нельзя.
Может кто подсказать, в каких конфигах/скриптах ЗП "зашиты" значения этих параметров ИИ(надеюсь, это не "зашито" в сам движок ЗП)?

Ссылка на комментарий
22 минуты назад, otani-san сказал:

Может кто подсказать, в каких конфигах/скриптах ЗП "зашиты" значения этих параметров ИИ

Посмотри этот пост - https://www.amk-team.ru/forum/topic/12839-kovyryaem-op-2/?do=findComment&comment=979427

Там всё просто. Будешь находить даже самую мелочёвку :grin2:

 

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

@otani-san могу еще предложить альтернативу с Notepad ++. Нужно выполнить поиск по файлам (Поиск>Найти в файлах), указать папку (например корневую с игрой) и что искать (значение ai_aim_max_angle, или другое) и выполнить поиск. Найденные документы можно тут же открыть в данном текстовом редакторе и поправить.

  • Согласен 1
  • Полезно 3
Ссылка на комментарий
6 часов назад, otani-san сказал:

 

6 часов назад, otani-san сказал:

значения(ai_aim_max_angle и т.д.) сразу сбрасываются при вводе в консоли, т.е. изменить нельзя.

Значит, надо править движок.

  • Спасибо 1

Отношения между людьми- главная ценность в человеческом обществе.
Любая полученная информация- это только повод для размышлений, а не побуждение к действию.
Это должен знать каждый: уроки боевой подготовки Дяди Саши https://yadi.sk/d/60Ec2B06goLAE
Накопано и накнопано:https://yadi.sk/d/mzVY5jQEspwpt

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

@shahvkit @HellRatz 
Ничего не нашлось этими методами, похоже AI-параметры и впрямь "вшиты" в сам движок, как пишет aromatizer :russian_ru:
"Спасибо", дядя Грига, за тормозных дефолтных неписей в ЗП и невозможность это исправить без "пердоленья" движка :dash2:

Ссылка на комментарий
7 минут назад, otani-san сказал:

невозможность это исправить без "пердоленья" движка

Движок давным давно можно редактировать, если кто-то не в курсе.

  • Нравится 1
  • Согласен 2

Мод, где не бывает одинаковых путей - Судьба Зоны. (Лучшее, что у меня получилось на X-Ray) На базе модифицированного движка OGSR Engine.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine. Программист.

AMD Ryzen 9 7950X (16 ядер, 32 потока, 5.75 ГГц); RTX 3080; 128 ГБ DDR5; Arctic Liquid Freezer II-420; 3 ТБ SSD PCIe 4.0; 4ТБ HDD.

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

@Zander_driver 
Я сейчас прохожу ЗП с STCoP Weapon Pack 3.3 от Ga2z, там свой движок на основе чистого ЗП, не знаю, есть ли исходники от него в открытом доступе.
Опять же, редактирование движка - это не просто что-то вбить в консоль/конфиг, а устанавливать всякие "визуал студии", причём строго нужной версии и прочие доппрограммы, иметь исходники движка(для чистого ЗП они есть, я в курсе), нужно понять, где именно нужный параметр находится, потом компилировать всё это...
Для человека, никогда не занимавшимся подобным, выглядит всё это довольно заморочно :pardon: 

@Space.Marine 
Давно пробовал проходить ЗП с вышеназванным оружейным паком и с адаптированным к этому паку Ai Additions, но сия конструкция оказалась довольно глючной, т.е. случались регулярные вылеты. Пригорело тогда знатно, и АИ-пак был благополучно удалён.
Правда это случилось на старом компе с Core2Quad 14-летней давности и с 4 гигабайтами оперативки, нынешний комп куда лучше предыдущего, хоть тоже старьё.
Буду пробовать снова вышеописанную смесь модов, может будет приемлимая стабильность при хорошей боёвке :az1000106:
 

Изменено пользователем otani-san
Ссылка на комментарий
25.10.2021 в 17:01, otani-san сказал:

в чистом ЗП эти значения (ai_aim_max_angle и т.д.) сразу сбрасываются при вводе в консоли, т.е. изменить нельзя.

У меня на чистом ЗП эти параметры легко меняются и сохраняются.

Не знаю, в чем может быть проблема при вводе в консоль, но точно уверен, что эти параметры можно принудительно прописать в "user.ltx", присвоив им необходимые значения.

  • Согласен 1
  • Полезно 2

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

где находятся строки в конфигах, которые отвечают за то, чтобы можно было с детектором использовать болты и пистолеты. Давно ещё качал оружейный пак, в котором была убрана возможность таскать детектор и пистолет одновременно, и вот она походу до сих пор осталась, хотя оружейка давно изменена. Даже с болтом нельзя доставать детектор. После пары прокликиваний "6-О-6-О" вылет идёт без лога.
P.S. в движке для детекторов всё по стандарту, поэтому эта строчка точно должна быть в конфигах.

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

@ARTLantist лови готовый код по левел вертексам (с гейм вертексами уже подсказали):

Скрытый текст
local In_Path = "D:\\Program Files\\S.T.A.L.K.E.R. - Lost World Origin\\gamedata\\levels\\"

function vector(x,y,z)
	return {x = x or 0, y = y or 0, z = z or 0}
end

local to_byte, to_sub, to_char, to_floor, to_abs = string.byte, string.sub, string.char, math.floor, math.abs

-- функции перевода двоичного кода представленного символами в бинарную строку (для побитовых операций)
function Bin_to_u32( Bin , start_seek )
    start_seek = start_seek or 1
	local byte1, byte2 = to_byte( Bin, start_seek, start_seek + 1)
	local byte3, byte4 = to_byte( Bin, start_seek + 2, start_seek + 3)
	return byte4 * 16777216 + ( byte3 * 65536 + ( byte2 * 256 + byte1 ) )
end

-- преобразование строки символов в десятичное дробное число 4 байта (32 бита)
function Bin_to_float( Bin, start_seek )
    start_seek = start_seek or 1
	local byte1, byte2 = to_byte( Bin, start_seek, start_seek + 1)
	local byte3, byte4 = to_byte( Bin, start_seek + 2, start_seek + 3)
    local sBin = (
	    to_sBin[ byte4 ]
	 .. to_sBin[ byte3 ]
	 .. to_sBin[ byte2 ]
	 .. to_sBin[ byte1 ]
	)
	return ( --return s * (m * 2 ^ -23) * (2 ^(e-127))
	    ( byte4 < 128 and 1 or -1 )  --( to_sub(sBin , 1 , 1 ) == "0" and 1 or -1 )
	  * ( ( tonumber( "1".. to_sub(sBin , 10, 32 ), 2 ) ) * 0.00000011920928955078125)
	  * (2 ^( ( tonumber( to_sub(sBin , 2, 9 ), 2 ) ) -127) )
	)
end

-- для чтения хедера уровня
function read_level_header_info ( sFile )
    local level_header = {}
    if sFile then
		-----------------------------------------------------------------------------------------------------------------------
		-- вырез нужных строк, перевод в десятичное число и запись значений
		level_header.vertex_count = Bin_to_u32( sFile , 5, 8 )
		level_header.cell_size =    Bin_to_float( sFile, 9 , 12 )
		level_header.factor_y =     Bin_to_float( sFile, 13, 16 )
		level_header.Box_vector_p1 = vector()
		level_header.Box_vector_p2 = vector()
		level_header.Box_vector_p1.x = Bin_to_float( sFile, 17, 20 )
		level_header.Box_vector_p1.y = Bin_to_float( sFile, 21, 24 )
		level_header.Box_vector_p1.z = Bin_to_float( sFile, 25, 28 )
		level_header.Box_vector_p2.x = Bin_to_float( sFile, 29, 32 )
		level_header.Box_vector_p2.y = Bin_to_float( sFile, 33, 36 )
		level_header.Box_vector_p2.z = Bin_to_float( sFile, 37, 40 )
		-----------------------------------------------------------------------------------------------------------------------
		-- расчёт остальных данных
		level_header.cx = to_floor ( ( level_header.Box_vector_p2.x - level_header.Box_vector_p1.x ) / level_header.cell_size + 1.501 )
		level_header.cz = to_floor ( ( level_header.Box_vector_p2.z - level_header.Box_vector_p1.z ) / level_header.cell_size + 1.501 )
		-----------------------------------------------------------------------------------------------------------------------
	end
	return level_header
end
-- вывод в лог хедера (отладочный)
function print_level_header( level_header )
    print("")
	print( "level_header.vertex_count = ".. level_header.vertex_count )
	print( "level_header.cell_size = ".. level_header.cell_size )
	print( "level_header.factor_y = ".. level_header.factor_y )
	print( "level_header.Box_vector_p1 = vector("
		.. level_header.Box_vector_p1.x .. " , "
		.. level_header.Box_vector_p1.y .. " , "
		.. level_header.Box_vector_p1.z .. ")" )
	print( "level_header.Box_vector_p2 = vector("
		.. level_header.Box_vector_p2.x .. " , "
		.. level_header.Box_vector_p2.y .. " , "
		.. level_header.Box_vector_p2.z .. ")" )
	print( "level_header.cx = ".. level_header.cx )
	print( "level_header.cz = ".. level_header.cz )
    print("")
end
	
function main()
    ----------------------------------------------
	-- подготовка файла
    local Path = In_Path .. sLevel .. "\\level.ai"
	--print("In = " .. Path)
    local levelai = io.open( Path , "rb" )
	----------------------------------------------
	
	----------------------------------------------
	-- чтение хедера
	local sHeader = levelai:read(56)
	local level_header =  read_level_header_info( sHeader )
	print_level_header( level_header )
    ----------------------------------------------
end

 

....

 

 

Словил проблему в CoC. Играю себе никого не трогаю и тут внезапно на ТЧ Припяти отключились все диалоговые окна от левел ченджеров. Просто не спрашивает переходить ли на другую локацию. Рестрикторы которые отвечают за них вроде впорядке, стоят себе. Это от того что я мог накосячить с нет-пакетами или что это? Сталкивался кто с таким?

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

... А наше дело маленькое - с ружьём да по болотам. (с)

Ссылка на комментарий
26.10.2021 в 15:17, WinCap сказал:

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

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

  • Согласен 1

Здесь могла быть ваша реклама.

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

@Купер вроде оно, но чёт оно не работает. И при 0 и при 1 детектор не достаётся, а болт убирается. С пистолетами ещё "печальнее" - детектор тупо не достаётся, а пистолет и не убирается, как будто запрещено вообще использовать.

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

@ARTLantist, совместимость детектора с оружием и болтом задается в движке, функция "CheckCompatibilityInt" в файле "CustomDetector.cpp".

  • Полезно 1

S.T.A.L.K.E.R. CoP Objects (upd 15.11.24)

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

@WinCap да, я уже просмотрел это всё в движке, там всё норм, по стандарту. Детектор может активироваться только при отсутствии в руках оружия, или при активном слоте болта/ножа, ну или идёт активация слота с доступным оружием (болта, ножа, ствола с базовым слотом пистолетным). Но чёт нифига не пашет.

@WinCap сталкер не перестаёт удивлять :)

Болт достаётся с детектором только если положить что-то в любой слот. Неважно, до того, как положишь детектор в его слот, или после. А без этого ГГ не может научиться доставать их совместно.

причём только при первом заходе в игру и первой НИ. Если закинул что-то в слот, то потом всегда всё будет нормально работать, и при перезаходе в игру и запуске сохранения, и при новой игре не перезаходя в игру.

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

Вопрос из разряда "сам не умею, но хочу". 
Как перенести выбор окончания игры или фриплея (sr_idle@freeplay_dialog) на момент, скажем, начала эвакуации, когда все НПС ещё на базе? Дабы не проходить этот глючный путь эвакуации, когда из-за сбитых таймеров, пятен на солнце или ещё чего вертолёты просто не прилетают или весь отряд зависает в бассейне. Нашёл в pri_a28_sr_evac.ltx вызов окна выбора [sr_idle@freeplay_dialog], но ни черта не понимаю в логике и прошу помощи.

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

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

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

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