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

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


Halford

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

условия %+gans_kvest_proval% я бы растащил по разным секциям.

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

 

По крайней мере, когда правил Юрика - так и пришлось сделать. Ну, про сякоархаровских крыс вилетающих ты должен бы помнить.

 

 

2 Карлан: флудим ?

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

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


Ссылка на сообщение

На сколько я помню исходники - третья цифра не используется ни где.

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

  • Спасибо 1
  • Согласен 1

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


Ссылка на сообщение

А в game_relations учитывается вообще species =

Первая страница темы, все ссылки - на материалы на русском.

 

 

"А причем тут species?" - гм, впрочем, я тоже путать могу, да.

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

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


Ссылка на сообщение

Не трогать хиты, а прописать в логике соответствующую схему.

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


Ссылка на сообщение

[walker@...]

wounded = wounded@чего-то_там

 

[wounded@чего-то_там]

при каких хитах чего делаем.

Или смарт должен был иметь соотв. cond и прекратить свое существование?

Ты знал ! ©

  • Спасибо 1

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


Ссылка на сообщение

На сколько помню - да. Динамические же.

 

По поводу поиска причин проседания fps - ну так я вам кашпировкий, что-ли ? Вылавливайте с разных точек конкретное место, и вспоминайте, что такого красивого туда всаживали.

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

 

Точно известно, что подобный эффект умеют, во-первых, партиклы с завышенным сроком жизни (за подробностями - к amik, он подобное исправлял), во-вторых, традиционно, текстуры с размерами типа 13191x216. Но список явно не полный.

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

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


Ссылка на сообщение

Не совсем так. Там КУЧА аномалий, которые просто тупо удаляются при первом запуске игры (и, кстати, если этого не сделать - пойдут вылеты без лога), и несколько сюжетных. "Сюжетные", кстати, тоже не без греха (знаменитый вылет при выходе из лабиринта и в МГ).

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

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


Ссылка на сообщение

при заходе в зону аномалии

Поскольку я принципиально против мега- и гигаолспавнов, то на этот счет ни чего не скажу, кроме того, что при спавне скриптом им в пакет таки зачем-то прописывается радиус/шейп.

Ну и с классами еще стоит разобраться.

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


Ссылка на сообщение

Ну, положим, эффект, который описывал я, имел место на статике с минимальными настройками. А вот что именно на локацию добавили в составе тех 4-х гигабайт "апдейта" - пытался автора распросить, но в ответ получил от группы товарищей справедливое замечание, что нищебродам без видюхи за 30 килобаксов и плазменной панели, купленной обязательно в кредит, нехрен лезть в разработку, а надобно молчать в тряпочку. На этом собственно все и закончилось.

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


Ссылка на сообщение

Ну так ищем function gulag:set_restrictions( ... ) и смотрим:

npc:add_restrictions(), npc:remove_restrictions()

 

Ну и при чем здесь нетпакет/логика ?

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

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


Ссылка на сообщение

либо выбрасывают пистолеты, либо выбрасывают основной ствол.

В оригинале неписи ничего не выбрасывают.

То есть, разбирайтесь с тем, что Вы добавили.

  • Согласен 2

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


Ссылка на сообщение

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

 

Что тут еще сделать - это, например, вместо сканирования, строить таблицы на базе se_что_попало.on_register(), или использовать эти же таблицы для других надобностей.

 

Также, есть вариант БЕЗ уборщика, поскольку у многи предметов в конфигах предусмотрено "время протухания".

 

Ну, могу дать еще более монстровидный, который как раз делает ВСЕ СРАЗУ, только что кофе не варит.

К нему еще обвязка нужна, но на посмотреть - здесь: https://dl.dropboxusercontent.com/u/27871782/xl_offline.script- в принципе, все довольно очевидно. (И, да, обвязка выдается по запросу, дублирующие моды/паки и иже с ними можно снести). Поскольку здесь собраны все дублирующие операции этих самых модов-паков - быстрый. Но монстровидный.

 

Перерыв сам скрипт "bind_stalker" данной строки не нашел ( использовал даже ворлд с поиском по буквам)

 

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

Что-то типа

bind_stalker:

function actor_binder:reinit()

sak_off_corpses.off_corpses()

...

 

Можно почитать http://www.amk-team.ru/forum/index.php?showtopic=13078&p=967266- на предмет общих принципов. Старался доступно расписывать.

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

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


Ссылка на сообщение

npc:set_mental_state( anim.danger )

npc:set_body_state( move.crouch ) - переходит в присяд

 

npc:set_mental_state( anim.free )

npc:set_body_state( move.crouch ) - вылет error in stalker with visual actors\novice\green_stalker_4

 

В куда копать ?

 

Дополнительная информация: данный конкретный гражданин не хочет делать state_mgr.set_state( npc, "search" ) - ограничивается этаким полупоклоном. Аристократ, блин...

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

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


Ссылка на сообщение

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

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

 

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

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

  • Нравится 1

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


Ссылка на сообщение

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

 

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

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


Ссылка на сообщение

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

 

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

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

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


Ссылка на сообщение

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

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

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


Ссылка на сообщение

Ну вот вероятность и должна задаваться в олспавне в явном виде, да.

А вообще - не дело это: создавать случайные предметы через олспавн.

 

Кстати, тоже вопрос: ни кто не помнит, где регулируется время существования best_enemy/best_danger для неписей ? Много лет назад я это как-то правил, но забыл за ненадобностью.

То есть, непись кого-то увидел/услышал, определил во враги, и запомнил. И даже в сэйв ухитряется себе записать.

 

 

Также, нанесение хита союзникам при стрельбе в воздух - это sr_territory, или еще где-то ?

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


Ссылка на сообщение

Имею на руках некий мод и некий сэйв к нему.

В этом самом сэйве гражданин Волк явно чем-то напуган. Причем, при внимательном изучении оказалось, что по npc:best_danger() он постоянно получает этот самый danger с типом attack_sound, источником является он сам.

 

Точнее, сначала от другого непися, а потом уже сам. То есть, сам орет, и сам себя боится, по тому и орет.

 

Что делалось с неписями, их конфигами и т.д., а также со звуками, материалами и т.д. - неизвестно. "Все и сразу".

Так что вопрос опять же стандартный: где чего могли наделать, и куда именно смотреть ?

 

Ну не верю, что ни у кого такого не случалось.

 

 

Да, там же отдельно доставляют трупы, тоже с этим же самым attack_sound. То есть, лежит такой вот покойничек, и орет на всю Зону. Причем звук этот, "атакующий" долетает аж за 120 с лишним метров.

Изменено пользователем Dennis_Chikin
  • Нравится 2

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


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

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