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

Внимание. На форуме проводятся технические работы с боковым меню.

_Val_ _Val_

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


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

@AndrewMor, если у тебя винда старше хр, то должен еще профиксить милку. И еще не советую делать для каждой анимки (ну или небольшого набора) свой файл (как в твоем туторе), потом запаришься каждую модель редактировать, лучше общий файл один раз отредактировать и не парится. 

 

upd:

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

Винда - XP SP3. И почему Милка не хочет экспортить в skl - неясно. То, что лучше сразу в stalker_animation.omf добавить - это ясно, как божий день, так проще и легче на будущее.

 

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

Сталкер - наше всё!

2 UnLoaded: Ну, по идее, это самое smart_terrains - тоже логика, да. Но выполняется в другом месте.

 

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

 

function read_smart_terrain_conditions( obj )	-- вызывается объектами, которые могут ходить под smart terrain
	local ini = obj.ini

	if ini and ini:section_exist( smart_section ) then
		local n = ini:line_count( smart_section )
		if n == 0 then return end
		local t = {}
		local r, k, v
		for i = 0, n - 1 do
			r, k, v = ini:r_line( smart_section, i, "", "" )
			-- if dbg then log( "info", "[%s]:[%s]", k, string_sub( v, 1, 180 ) ) end
			if k == "none" then
				if v == nil or v == "" or v == "true" then
					if n == 1 then obj.strn_none = true; return end
					abort( "read_smart_terrain_conditions, invalid section [%s] (%s), ( n: %s, none )", smart_section, obj:name(), n  )
				-- else log( "info", "read_smart_terrain_conditions, [%s] (%s)", string.sub( v, 1, 150), obj:name() )
				end
			elseif v == "true" then
				if ( n == 1 ) or ( n == 2 and ini:line_exist( smart_section,
					"respawn_check" ) ) then obj.strn_e = k; return
				end
				abort( "read_smart_terrain_conditions, invalid section [%s] (%s), ( n: %s = true )", smart_section, obj:name(), n )
			end
			t[k] = xr_logic.parse_condlist1( --[[ obj, smart_section, k,]] v )

		end
		return t
	end
end

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

 

	if obj.strn_e == self.nm then	-- если смарт заведомо эксклюзивный, ни каких условий не проверяем
		npc_info.exclusive = true
	else
		n = obj.smart_terrain_conditions and obj.smart_terrain_conditions[ self.nm ]
		npc_info.cond = n	-- копируем условие для апдейта/анрега (экономим там одно извлечение из таблицы)
		if n then npc_info.exclusive = true
		else npc_info.exclusive = false
	end	end

 

 

Далее, в апдейте, происходит проверка:

 

-- Обновление. В онлайне вызывается через binder. Также может вызваться принудительно из xr_effects
-- Если в гулаге ни кого не осталось или условия существования гулага не выполняются - убрать гулаг.
-- В npc_info.cond только условия непися в ЭТОМ смарте, они и проверяются.
-- Если условие было просто true - в npc_info.cond оно не пишется, и никогда не проверяется.

function se_smart_terrain:update()
	cse_alife_smart_zone.update( self )
	if not self.gulag_working then return end
	if self:is_gulag_available() then
		if self.check_time < game_time_time then
			self.check_time = game_time_time + check_period
			for id, npc_info in pairs( self.npc_info ) do	-- не собрался ли кто-то уходить
				if npc_info.cond and not xr_logic.pick_section_from_condlist(
				  db.actor_proxy, npc_info.se_obj, npc_info.cond ) then
					--log( "info", "(%s):update, remove: %s", self.nm, npc_info.se_obj:name() )
					self:unregister_npc( npc_info.se_obj )
			end	end

- если непись проверку не прошел - выгнали.

 

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

 

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

Так и перемещается.

 

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

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

Нашел я в чём проблема. Оказывается в простом. В файле character_desc_escape. В этой строке <community>stalker</community> <terrain_sect>stalker_terrain</terrain_sect>. Я убрал  <terrain_sect>stalker_terrain</terrain_sect> и всё стало на свои места.  :beach:  :)

Железо: MS Windows 7 Профессиональная 32-bit SP1, AMD Athlon 64 X2 Dual Core Processor 5000+ 2.60 GHz, 3.0 GB RAM, nVidia GeForce GT440 Palit PCI-E 1024

d77f0c977eec.jpg

Добрый день. Меня мучает один вопрос: как узнать координаты ГГ на мультиплеерной карте? 

Ранее был известен под ником BoBaH_671.

нет не работает

Железо: MS Windows 7 Профессиональная 32-bit SP1, AMD Athlon 64 X2 Dual Core Processor 5000+ 2.60 GHz, 3.0 GB RAM, nVidia GeForce GT440 Palit PCI-E 1024

d77f0c977eec.jpg

Доброго времени суток! Вопрос такой- как в игре фиксируется помог ли ты в перестрелке или нет?

Пример- первый поход на НИИ агропром- в первый раз пару военных убил, то есть почти не помогал группе Крота, однако после разговора у входа в катакомбы все эти сталкер-нейтралы из группы Крота(около 9-10) стали друзьями.
Далее перезагрузил сохранение до входа на НИИ и прошел заново. В этот раз самолично убил почти всех военных, то есть по идее сильно помог, но после разговора у катакомб сталкеры друзьями не стали. Перезагрузил еще раз и попробовал помогать как и в первом случае, то есть пару военных застрелил. Но и в этот раз результата нет- остались нейтралами.

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

Как игра фиксирует, помог я или нет? 

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

Добрый день.

Система


Блок питания Hiper M650 650W
Мат. плата Gigabyte Z68 XP - UD 3
Процессор Intel Core i7-2600K
Кулер процессора Titan FENRIR EVO TTC-NK85TZ/CS2(RB)
Видеокарта Gigabyte GTX 770
Оперативная память Hynix DDR3 1600 MHz 2 по 4GB
Жёсткий диск Seagate Barracuda 7200 500GB 2 шт.
Корпус Gigabyte GZ-X1BPD-500 Black w/n PSU ATX
windows 7 ultimate 64 bit Лицензия

 

Игра - лицензия первого выпуска купленная в начале мая 2007 года.
Вертикальная синхронизация, частота 60Gz, различные версии NoDVD и драйверов для видеокарты, а также кривые руки и фазы луны к описанному ниже отношения не имеют.
 
Хочу попробовать разобраться с двумя видами багов которые проявляются в модах для ТЧ.
 
1.Этот баг начал проявляться пару лет назад после перехода с GTX 560Ti на 670 и позднее на 770.
Описание:
При загрузке меню игры, или при выходе в него из игры возникает следующее.
Рандомно пропадают части меню игры или указатель и иногда возникают разноцветные полосы идущие из верхнего левого угла к нижнему правому углу с последующим зависанием всего экрана.
Зависание лечится сворачиванием и разворачиванием игры, но не надолго. Поэтому приходится быстро выбирать нужную опцию или сохранение до появления следующего бага.
Всё это проявляется только при установке любых модов. На чистой игре этого нет.
 
2. Этот баг проявляется в двух модах - ОП-2 и Фотограф. Может он есть и ещё в каких то других, не знаю.
Описание:
ГГ не способен перешагивать через рельсы - упирается как в стену, и приходится перепрыгивать или пересекать под углом не больше 30 градусов.
Также ГГ запинается на каждой ступеньке при передвижении по лестницам, а при залезании на вертикальную лестницу сразу не может с неё сойти - упирается в невидимую преграду и сьезжает вниз на несколько ступенек.
Приходится многократно добираться до верха лестницы и в самом конце пытаться прыгать - на 5-8 раз помогает.

1. Похоже таки карточка. В железный раздел.

2. А не геометрия ли конкретных модов ? Ждем тех, кому будет не лень сравнить.

 

2 qwertynosik: "помощь" засчитывается, когда убит тот, кто нанес ранение. Причем нужно успеть в промежуток, пока ранившего "помнят".

@shahvkit, в драйвере переключи вертикальный синхроимпульс на адаптивный. ФПС большой слишком, скорее всего.

  • Полезно 1

Народ, помогите! Я на начале игры заспавнил несколько нпс (в доме что возле Сидоровича и в доме по соседству), и когда приходит Шустрый в деревню, мои заспавненые нпс телепортируются туда, где выход из деревни на дорогу. Что делать?

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

Железо: MS Windows 7 Профессиональная 32-bit SP1, AMD Athlon 64 X2 Dual Core Processor 5000+ 2.60 GHz, 3.0 GB RAM, nVidia GeForce GT440 Palit PCI-E 1024

d77f0c977eec.jpg

@max185, 

В userdata NPC добавить

[smart_terrains]
none = true

Твои NPC попадают под условия работы в смарт_терраине. Почитать можно тут
http://stalkerin.gameru.net/wiki/index.php?title=%D0%9D%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0_%D0%BB%D0%BE%D0%B3%D0%B8%D0%BA%D0%B8._%D0%A7%D0%B0%D1%81%D1%82%D1%8C_4

Изменено пользователем Allender
  • Спасибо 1

@Allender, [logic]

active = remark1
danger = danger_ignore
 
[danger_ignore]
ignore_distance = 5
 
[remark1]
no_move = true
anim = sit_knee
 
[smart_terrains]
none = true
Так писать да?

Железо: MS Windows 7 Профессиональная 32-bit SP1, AMD Athlon 64 X2 Dual Core Processor 5000+ 2.60 GHz, 3.0 GB RAM, nVidia GeForce GT440 Palit PCI-E 1024

d77f0c977eec.jpg

@max185, 

Кажется, да. Не помню важен ли порядок секций. :)

Такой точно работает.

[smart_terrains]
none = true


[logic]
active = walker


[walker]
  • Спасибо 1

Добрый день. Меня мучает один вопрос: как узнать координаты ГГ на мультиплеерной карте?

 

Неужели никто не знает? Или может не увидели. Изменено пользователем BoBaH_671

Ранее был известен под ником BoBaH_671.

@max185, неверно. Дангер указывается для текущей секции, т.о. он у тебя попросту не будет работать. Для всего это комбат_игнор ставится.

  • Спасибо 1

Народ, подскажите, заспавнил нпс на атп, и там есть Петруха с его товарищами, а эти нпс после спавна ведут себя, как будто хотят пристрелить Петруху и его товарищей.d0b952cbc984t.jpg
А я хочу, чтоб они стояли на месте, как охранники. Что делать?

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

Железо: MS Windows 7 Профессиональная 32-bit SP1, AMD Athlon 64 X2 Dual Core Processor 5000+ 2.60 GHz, 3.0 GB RAM, nVidia GeForce GT440 Palit PCI-E 1024

d77f0c977eec.jpg

 Привет. Ребят, подскажите пожалуйста, как сделать "Уборщик" бесхозного оружия с локаций для ТЧ 10006? Время исчезновения трупов НПС и мутантов подредактировал уже. Убираются исправно. А оружие приходится "пылесосить" постоянно.

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

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

Ну, в общем-то, можно и самостоятельно сделать. В простейшем случае for i = 1, 65534 do

local obj = alife():object( i )

if obj.parent_id == 65535 and v.obj.m_story_id == 4294967296 and t_wpn[obj:cls_id()] and что_нибудь_еще then делаете_что_надо end.

 

Можно, например, время вписать в custom_data, если нет, а если есть - проверить, и удалить, если больше нужного.

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

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

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

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

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

Войти

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

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

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