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

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

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

@ed_rez, так я ж не спорю, но игрок игроку рознь. :grin2:  А во вторых мне уже тупо интересно, что я делаю не так.... А неправильные команды там вроде и не получиться дать - конвертор их просто не принимает и ничего не делает или отказывается делать. Я пока получил  результат, раз пять бат файлы переписывал... Вот и спрашиваю, в чем может быть дело??? :dash2:

Железо: IC i5-7500 CPU 3.40 GHz, ОЗУ 16 Гб, NVIDIA GeForce GTX 750. Win10 64-бит

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

 

 

npc:set_mental_state( anim.free ) npc:set_body_state( move.crouch ) - вылет error in stalker with visual actors\novice\green_stalker_4 В куда копать ?

Это движковый вылет, я его уже описывал. Вылечить без ковыряния движка нельзя. Просто надо учитывать, что сочетание anim.free и move.crouch недопустимо.

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

Добрый день.

В каком файле прописывается частота (скорость) смены разных типов погоды ?

В ОП-2 очень неплохая погода, но ей не хватает динамики.

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

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

@shahvkit, в ЗП например есть рандом. Причём я заметил что для полной смены погоды надо 2 часа, а значит всего 12 вариантов за сутки получается. Но можно погоду и принудительно менять на желаемую. Написать логику новую и пусть она меняется по какой то формуле, что в Сталкере отсутствует однозначно.

andreyholkin.gif

rod_cccp.gif

 

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

 

 

по какой то формуле, что в Сталкере отсутствует однозначно.

Так существует же динамическая погода. И, я так понимаю, в ОП-2 скорее всего она стоит. Надо менять скриптовую схему, чтобы рандом шёл чаще, и соответственно конфиг динамической погоды, состоящий из сотни секций, состоящих в свою очередь из параметров времени с сылкой на секцию непосредственно описания эффектов погоды. Сам динамическую погоду не юзал, точно сказать как всё организовать не могу, там, в основном, конфиги править надо. Ярким примером является Народная Солянка + DMX 1.3.5 + АМК + Master Addon + ООП + Collector (других примеров не знаю...).

Изображение погибло, снес. Ссылка на канал остается пока в виде >>>ссылки<<<. HellRatz

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

@Ghost-2142, я про Тч не помню, но вот про Зп могу сказать точно, что при подключении локации прописывается динамическая погода и она будет всегда, если конечно принудительно её не заблокировать, но эта блокировка держится только час и опять погода уходит на динамику из-за поверки обновления в скриптах.

Давно я ТЧ не юзал - не помню ничего уже.

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

andreyholkin.gif

rod_cccp.gif

 

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

Я наоборот ЗП не трогаю... На ТЧ-то точно есть динамическая погода. В ЧН-тоже была, вроде. И в ЗП что-то подобное было... Но @shahvkit спрашивал насчёт ОП-2, а он же на ТЧ сделан. Сам не играл (не ковырял), поэтому и говорю, что надо либо править динамику в ОП-2, если она там есть, либо ставить отдельно, что потребует определённого опыта со скриптами. Взять даже файл level_weathers.script: вся схема, насколько я помню, хранится там, а для этого нужны дополнительные переменные из сторонних файлов (amk.script), такие, как amk.load_variable(xxx) и т.д. На ОП-2 это не трудно править, учитывая, что там уже всё готово, надо только конфиги дополнять.

Изменено пользователем Ghost-2142

Изображение погибло, снес. Ссылка на канал остается пока в виде >>>ссылки<<<. HellRatz

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

Да-да, а так же авторы оп2 написали сам сталкер, виндовс и изобрели собственно компьютеры.

Там древняя "динамическая" погода стоит, от Ивара. И даже не он тот скрипт писал.

 

Есть, кстати, более альтернативные, для той же самой, динамической. С подробными комментариями, что зачем, и без "amk.load_variable()".

Выброс - тоже проверяется в зависимости от того, какой прикручиваем. Если ни какой не прикручиваем - ничего не проверяется

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

Всё это конечно хорошо, но в процессе обсуждения разных видов погоды потерялся собственно сам вопрос...

 

Так в каком файле или скрипте задаётся интервал времени для смены типа погоды ?

 

Ведь по любому какие то временные цифры должны быть...

Если надо - могу скинуть папки конфиг и скрипт на обменник.

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

@shahvkit, ты прав, эти цифры есть. В конфигах. Посмотри, есть ли в папке конфигов погоды файл, с именем "weather_dynamic" или "weather_default_dynamic". Если есть, открой и посмотри, там должны быть интервалы погодных циклов и сотни секций, с указанным временем и соответствующим типом погоды (секцией грозы, дождя, солнечной погоды и т.д.). Т.е. надо увеличивать кол-во циклов и соответствующим им секций. Вобщем, там разбираться надо, может кто и поможет, может и сам сможешь.

  • Нравится 1

Изображение погибло, снес. Ссылка на канал остается пока в виде >>>ссылки<<<. HellRatz

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

В наиболее распространенных динамических что-то типа такого:

 

local r, k, v, kk, vv, t
	if ini:section_exist( "weather_transition_times" ) then
		for i = 0, ini:line_count( "weather_transition_times" ) - 1 do
			r, k, v = ini:r_line( "weather_transition_times", i, "", "" )
			t = {}
			trans_n = trans_n + 1; trans_t[trans_n] = { k + 0, v, t }
			if ini:section_exist( v ) then
				for ii = 0, ini:line_count( v ) - 1 do
					r, kk, vv = ini:r_line( v, ii, "", "" )
					t[kk] = vv
					if t_prob[vv] then trans_types[kk] = vv end
				end
			else abort( "invalid section: [%s]", v )
		end	end
	else abort( "invalid section: [weather_transition_times]" )
	end

Ну и выбор:

	if s then	-- для следующего раза
		for k, v in string_gmatch( s, "([%w]+):?([%d]*),?" ) do
			-- log( "info", "update, allowed: [%s:%s]", k, v )
			if t_prob[k] then v = t_prob[k]; tt[k] = v; nn = nn + v
			else
				v = trans_types[k]
				if v then v = t_prob[v]; tt[k] = v; nn = nn + v
				else log( "error", "invalid section: [%s], line: [%s]", t[2], k )
	end	end	end	end
	if t_prob[next_w] and not tt[next_w] then	-- текущая тоже участвует в конкурсе
		s = t_prob[next_w]; tt[next_w] = s; nn = nn + s
		-- log( "info", "update, add current: [%s]", next_w )
	end
	if nn ~= 0 then
		s = math_random( nn )
		-- log( "info", "update, total: %s, rnd: %s", nn, s )
		-- for k, v in pairs( tt ) do log( "info", "update, [%s:%s]", k, v ) end
		for k, v in pairs( tt ) do
			if v < s then s = s - v
			else next_w = k; break
		end	end
		-- log( "info", "update, next: [%s]", next_w )
	else log( "error", "invalid section: [%s], entry [%s] absent", t[2], next_w )
	end

Либо то же самое по смыслу, но в 100500 строк.

То есть, в итоге, выбор идет вот отсюда:

 

[weather_transition_times]

0 = weather_transition_list0000 ; 00:00

...

1380 = weather_transition_list2300 ; 23:00

 

[weather_transition_list0000]

transition230000 = dry

...

transition230005 = stormy

foggy = transition000000:7

rainy = transition000001:5

stormy = transition000002:4, transition000003:5

thunder = transition000004:3

 

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

Заодно можно будет согласовать параметры clouds_color и rain_density у секций, между которыми производится выбор, чтобы цвет неба резко не дергался, а дождь при ясном небе не падал мегасосульками в количестве 100500 штук на миллиметр экрана.

 

Гм, а не переместить ли это в более соответствующую тему ?

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

@Dennis_Chikin, полностью согласен, но вот нашему @shahvkit охота "каждый час". Это, конечно, хорошо и красиво, только мороки в несколько раз больше. поэтому я и не трогаю динамическую погоду... И другим не советую...

Изменено пользователем Ghost-2142

Изображение погибло, снес. Ссылка на канал остается пока в виде >>>ссылки<<<. HellRatz

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

@Dennis_Chikin, похоже на СВТС. Так много цыфирек, я в них путаюсь.

А если вот так?

local dynamic_level = GetVar("LevelPrefix", nil)

local weather_type = {
    clear = {
        clear = 60,
        pasmurno = 30,
        mist = 10
    },

И да...похоже тут тема вообще не для ковыряния погоды ОП-2.

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

Погодная тема очень редко посещается. Поэтому и задавал свой вопрос в этой теме.

Далее:

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

Придётся лезть в сами погодные файлы.

Или всё таки можно обойтись "малой кровью" ?

Вот в скрипте level_weathers.script в начале задаются какие то временные переменные. Может там чего можно поделать ?

На всякий случай папки конфиг и скрипт из ОП-2 - http://rghost.ru/8ddZZ42Ln

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

 

 

Погодная тема очень редко посещается

:offtopic: 

Это до первого звоночка)) А прозвенит - полезут как сумашедшие...

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

В погодной теме есть почти построчный разбор двухстраничного скрипта, заточенного на то, чтоб работать с погодой Ивара, не трогая конфигов.

 

И, да, вот в этом конкретном скрипте имеет место быть

local t_prob = { -- вероятности типов погоды

["beta"] = 20,

["dry"] = 10,

["foggy"] = 10,

["rainy"] = 20,

["grey"] = 20,

["stormy"] = 10,

["thunder"] = 10 }

То есть, оверрайдящих прописанное в конфигах Ивара.

 

В конце-концов, из них можно просто вынести все строки и секции с упоминанием transition, оставив переходы foggy = rainy, без всяких цифр, и будет работать вот эта табличка, только для оставленных переходов.

 

Мегаскипт на 100500 мегабайт и смотреть не буду - это тот же самый времен OGSM и SPR, с небольшими изменениями и ровно тем же функционалом, только без "предсказания", и тормознее. На нем точно так же можно убрать лишние transition, и добавить подстановку вероятностей из внешней таблицы, только вникать дольше.

 

Проблема во всех, абсолютно всех решений с "динамической" погодой - в строчках clouds_color и rain_density, которые должны быть максимально близки у всех секций, с которых/на которые переходим. Иначе будет эффект "выключателя".

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

  • Спасибо 3
Ссылка на комментарий

@Dennis_Chikin, возможно лучше будет вывести эти параметры в rw, и в самом менеджере погоды руками вычислять подходящий и вставлять нужные коэффициенты в рандомно выбранную секцию погоды.

 

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

 

upd:

"если лезть в движок, то там и вычисления"

"Собственно, и отдельный менеджер после этого уже не нужен. "

На это и намекал.

Изменено пользователем Карлан
  • Согласен 2
Ссылка на комментарий

"возможно лучше будет вывести эти параметры в rw, и в самом менеджере погоды" - если лезть в движок, то там и вычисления. И там же отдавать следующую - спрашивать обратно.

Собственно, и отдельный менеджер после этого уже не нужен.

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

Всем привет.

Такая проблема...

После старта новой игры все ящики-респавнеры в смартах сразу наполняются, можно сказать, битком. Опытным путём выяснил, что ноги растут из xr_gulag.script: при регистрации нового нпс в смарте вызывается респавн. В общем-то, так и должно быть, но вещи должны спавниться с определённой вероятностью, с очень низкой. А у меня отрабатывает на 100%. Ни кто не сталкивался?

П.С.: ТЧ 1.0006 + XE

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

Аддон для ОП-2.09.2: Яндекс/Google/GitHub

naxac.gif

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

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

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

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

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

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

Войти

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

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

AMK-Team.ru

×
×
  • Создать...