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

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


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

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

Согласен, подход нехороший, но как мне еще было ответить? рассказать по порядку, как и из чего делается скриптоинвентарь? навряд ли вопрошающий станет то же самое делать сам :)

А релиза пока нету.

 

А принцип описать хотя-бы коротко, раз уж сделано ? dc

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

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

@dsh, в огсе насколько я знаю для торговли тоже как-то движок правили, но не утверждаю. В любом случае на скриптах такое сделать можно только в багованном варианте, т.е. он таки если что сможет продать тебе свой последний и единственный, т.к. манипулирвоать все-же с секциями, так что ответ - никак. Без движка. Ну либо вот как Андрей, все на скрипты переписать, но не советую. Я в движке себе добавил несколько коллбеков в торговое окно которые отрабатывают на нужных мне действиях и функции которые управляют торговым листом, и в таком случае я запрещаю/разрешаю торговать вообще чем угодно в любое время.

 

Но еще раз тебе говорю, ты с флагами накосячил.
 

Вчера ж обсуждали. Или позавчера. Читать-то его внутри схемы кто будет ?

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

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

Кстати, о движках и не-движках, картинка.

 

Давно хотел, а сегодня наконец руки дошли. В смысле, ни один бит движка не пострадал. Можно, кстати, и отрицательный сделать. Да, с любым грузом замечательно бегаем, прыгаем и не устаем. Хоть пол-тонны, только артами в соответствующем количестве запасаться надо, и будет 0 кг.

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

Давно хотел, а сегодня наконец руки дошли.

Здорово! Рабочий вариант выложен будет?

 

Я еще чуть-чуть народ поинтригую, а потом тайну золотого ключа раскрою. Вообще не понимаю, почему это не сделали в 2008 году. Элементарно же. Легким движением руки.

Можно даже уже догадаться, просто зная, что факт имеет быть. dc

 

 

описание всех визуалов ТЧ(желательно с картинками)?

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

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

 

 

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

А где конкретно? Я не нашел.

Небольшой апдейт о проблеме с секцией [hit@altar_monolith] логики НПС, в гулаге на Припяти, описаннго мной страницой ранее.

Вот, собственно, похоже и виновник, модифицированный xr_hit.script:

 

 

class "action_process_hit"

function action_process_hit:__init(obj, storage)
	self.object = obj
	self.st = storage
end

function action_process_hit:hit_callback(obj, amount, local_direction, who, bone_index)
	db.storage[self.object:id()].hit.bone_index = bone_index
	if amount == 0 and not(obj:invulnerable()) then
		-- FIXME if_then_else
--		printf("[%s] hit by [%s]: 0 damage, ignoring", obj:name(), if_then_else(who, who:name(), "<no one>"))
		return
	end
	if who then
		printf("[%s] hit by [%s]", obj:name(), who:name())
		db.storage[obj:id()].hit.who = who:id()
	else
		printf("[%s] hit by [Unknown]", victim:name())
		db.storage[obj:id()].hit.who = -1
	end
	if db.storage[self.object:id()].active_scheme then
		--printf("DEADLY HIT %s %s", amount, self.object.health)
		db.storage[self.object:id()].hit.deadly_hit = amount >= self.object.health*100

		if xr_logic.try_switch_to_another_section(obj, db.storage[self.object:id()].hit, db.actor) then
			db.storage[self.object:id()].hit.deadly_hit = false
			return
		end
		db.storage[self.object:id()].hit.deadly_hit = false
	end
end

----------------------------------------------------------------------------------------------------------------------
-- binder
----------------------------------------------------------------------------------------------------------------------
function add_to_binder(npc, ini, scheme, section, storage)
 	local new_action = this.action_process_hit(npc, storage)
	storage.action = new_action
end

function set_hit_checker(npc, ini, scheme, section)
	local st = xr_logic.assign_storage_and_bind(npc, ini, scheme, section)
	
	if not ini:section_exist(section) then
		abort("There is no section [%s] for npc [%s]", section, npc:name()) -- а вот и та самая часть
	end
	
	st.logic = xr_logic.cfg_get_switch_conditions(ini, section, npc)

	-- НЕ СТАВИТЬ hit callback напрямую - получаем его из motivator-а через
	-- event в подписанном на него action-е:
	--npc:set_callback(callback.hit, st.action.hit_callback, st.action)
	xr_logic.subscribe_action_for_events(npc, st, st.action)
end

function disable_scheme(npc, scheme)
	-- При отключении схемы, нужно снять подписку, чтобы hit callback перестал
	-- передаваться:
	-- npc:set_callback(callback.hit, nil)
	local st = db.storage[npc:id()][scheme]
	if st then
		xr_logic.unsubscribe_action_from_events(npc, st, st.action)
	end
end 

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

 

 

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

, интересно что за "модмейкер" его "модифицировал". В ТЧ не было никогда invulnerable.

 

Элементарно же. Легким движением руки.

Вроде-бы не только я тут описывал как это сделать. Причем даже не одним способом, но самый простой это как объем в АМК. Только на пороге перегруза актора чем-то действительно перегружать.

 

А еще проще ? Кстати, ты вообще обратил внимание на цифры на картинке ? dc

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

@Карлан, надо было мне просто повнимательнее почитать код. Это наработки кого-то из наших форумчан, я лишь кое-что изменил под свои нужды. Суть - временное бессмертие НПС. Устанавливаемое и снимаемое через логику. Основной скрипт:

 

 

function is_need_invulnerability(npc) 
                  local npc_st = db.storage[npc:id()] 
                  local invulnerability = utils.cfg_get_string(npc_st.ini, npc_st.active_section, "invulnerable", npc, false, "", nil) 

                  if invulnerability == nil then 
                   return false 
                  end 

                  invulnerability = xr_logic.parse_condlist(npc, "invulnerability", "invulnerability", invulnerability) 

                  return xr_logic.pick_section_from_condlist(db.actor, npc, invulnerability) == "true" 
end 

-- Вызывается на переключении на новую секцию. Производит вычитывание настроек из текущей секции
function reset_invulnerability(npc, ini, section) 
                  local invulnerability = is_need_invulnerability(npc) 

                  printf("RESET INVULNERABILITY. npc[%s] = [%s]", npc:name(), tostring(invulnerability)) 
                  if npc:invulnerable() ~= invulnerability then 
                   npc:invulnerable(invulnerability) 
                  end 
end 
function disable_invulnerability(npc) 
                  printf("DISABLE INVULNERABILITY. npc[%s] = [false]", npc:name()) 
                  npc:invulnerable(false) 
end 

function update_invulnerability(npc) 
                  local invulnerability = is_need_invulnerability(npc) 

                  if npc:invulnerable() ~= invulnerability then 
                   printf("UPDATE INVULNERABILITY. npc[%s] = [%s]", npc:name(), tostring(invulnerability)) 
                   npc:invulnerable(invulnerability) 
                  end 
end 

 

 

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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

@Dennis_Chikin, хз. Никогда не вдавался в подробности того, что ПЫС творили с логикой НПС в своих гулагах. Во всяком случае удаление

if not ini:section_exist(section) then
    abort("There is no section [%s] for npc [%s]", section, npc:name())
end 

"решает" проблему.

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

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

 

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

Изменено пользователем Dennis_Chikin
  • Согласен 2

, ты все строки которые с abort или assert начинаются - удали, вообще бед знать не будешь.

  • Нравится 1

Извините за нубский вопрос, но какая консольная команда отвечает за дальность прорисовки теней на R2?

Тыкните носом где есть описания консольным командам. :russian_ru:

И еще, может у кого завалялся патчер для exe-шника который изменяет размер карты теней на -smap4096.

NL-Vincenz.gif

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

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

aka Stalker_AleX333
 
Мои проекты  - ЯндексДиск   |   Я на Gamer-Mods.ru

  • Неравнодушный сталкер
,Что мешает сделать откат?

Я бы сказал: что мешает поправить сразу ?

 

Хотя, да, это было б смешно, если б не было так грустно, я 4 (!) года угробил на перелопачивание кучи кода только ради того, чтоб не трогать конфиги. Ну, то есть, мне в свое время как бы милостливо позволили трогать код, но вышел знатнейший скандал, когда я показал, что У СЕБЯ на компьютере,  ради того, чтоб хоть как-то проверить то, что делаю, не вслепую и без дивного секса с уворачиванием от пуль, монстров и аномалий, и сотен перезагрузок, когда увернуться не сумел -  тронул эти самые конфиги. Ага, ЧИТЕР и все такое. Со стороны, прости-господи, "тестеров".

 

А а ОП2 - вон - аж ЗАЩЩИТУ от изменений конфигов прикрутили, которая тормозит и глючит на каждом шагу, но, не дай бог кто вдруг покусится. Мдя...

 

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

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

 

 

Я еще чуть-чуть народ поинтригую, а потом тайну золотого ключа раскрою. Вообще не понимаю, почему это не сделали в 2008 году

Это похоже на меня, не так ли? :)

Как бы тайна всего и вся очевидна. Если мы сами рисуем и пишем то, что показать игроку, сами решаем что показать а что не-показать и как, то мы можем устанавливать любые правила, какие вздумается, в поле действия любого интерфейса где у нас есть таковая возможность.
И движок нас при этом абсолютно не интересует. Почему, в самом деле, никто этого в 2008 году не сделал, совершенно непонятно.

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

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

Здравствуйте, как сделать так, чтобы после диалога умерло несколько НПС?

 

 

Тыкните носом где есть описания консольным командам
Тыкаю.

 

 

И еще, может у кого завалялся патчер для exe-шника который изменяет размер карты теней на -smap4096.
Тыкаю.

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

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

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

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

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

Войти

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

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

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