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

Скриптование


Svoboда

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

 

 

не может найти диалог "dm_hello_dialog"

 

Автор: Моддер



Как лечить раненных НПС-врагов
Сложность: оч. легко
Совместимость с модами: легко совместимо
Многие люди в своих модификациях хотят добавить возможность лечить раненных врагов, как, например, в Солянке. Я тоже однажды заинтересовался этим вопросом и, не найдя на него ответа в интернете, занялся решением проблемы сам. В итоге мне это удалось и теперь выкладываю плоды своих стараний на просторы интернета :) .
Скрыть Инструкции

Запрет диалога с раненными противниками находится в файле xr_wounded.script, и выглядит так (я снабдил его комментариями, если вы не сильно шарите в скриптах):


if self.object:relation(db.actor) == game_object.enemy then --если отношение НПС к ГГ = отношению к врагум
self.object:disable_talk() --блокировать диалоги
else --иначе
self.object:enable_talk() --разрешить диалог
end --конец условия (if)
Дабы позволить ГГ говорить с врагами (только раненными) достаточно удалить лишнее и оставить всего одну строку:
self.object:enable_talk()
Но! Если ГГ попробует обратиться к раненным представителям бандитов, монолитовцев, наёмников, зомби (возможно), военных или противников на Арене - скорее всего произойдёт Фатал Еррор с логом на отсутствие подходящей фразы для диалога (в оригинальной игре с вероятностью 99%). Так вот, лично для себя я нашёл простое решение, которое подходило и по концепции моего мода - запретить диалог с данными группировками. Вот таким макаром:
local comm = self.object:character_community() --переменной обозначил "понятие" группировки обьекта (НПС)
if comm == "zombied" or --если НПС - зомби, или
comm == "bandit" or --НПС - бандит, или
comm == "monolith" or --НПС - монолитовец, или
comm == "arena_enemy" or --НПС - боец арены, или
comm == "killer" or --НПС - наёмник, или
comm == "military" then --НПС - вояка, тогда
self.object:disable_talk() --запретить диалог
else -- иначе
self.object:enable_talk() --разрешить диалог
end -- The End!
просто заменить изначальные строки этими и теперь ГГ сможет лечить врагов одиночек, долговцев, свободовцев и учёных.
Но есть ещё один момент. При лечении врагов, если всё сделать как было написано будет ещё одна проблемка - они так и останутся врагами после лечения и будут дальше атаковать ГГ.
Разумно было бы сделать НПС если не другом, то по крайней мере нейтралом. Для этого необходимо в файле dialogs.script кусок скрипта
if second_speaker:relation(first_speaker) ~= game_object.enemy then
second_speaker:set_relation(game_object.friend, first_speaker)
end
first_speaker:change_character_reputation(10);
end
заменить на
if second_speaker:relation(first_speaker) == game_object.enemy then
second_speaker:set_relation(game_object.friend, first_speaker)
first_speaker:set_relation(game_object.friend, second_speaker)
end
first_speaker:change_character_reputation(10);
end
Всё! ;)

 

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


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

Приветствую уважаемых специалистов. 

Сам ни разу не скриптёр\программер. Поэтому прошу помощи. Есть мод на ТЧ - "Ремкомплект" - там три скрипта:

https://cloud.mail.ru/public/EzpC/A5f3UbsKV

 

Хотел уменьшить количество деталей после "разборки" стволов, но не смог. Я так понял, что кол-во деталей зависит от кондиции ствола. Но не нашёл ту дельту которую нужно уменьшать. Буду очень признателен за помощь.

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


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

 

 

отключить такую фишку - НПЦ перетаскивают трупы подальше от костров.

"удаление каждой схемы производится удалением файла, указанного в скобках", то есть (модифицированный xr_kamp.script)

  • Спасибо 1

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


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

Подскажите, пожалуйста что делает функция:

function k_predicate_s(obj_info)
return obj_info.profile_name == "esc_killer_specnaz"
end

и далее по скрипту:

		t = { section = "logic@esc_killer1_raid",
			idle = 0,
			prior = 8, state = {4},
			online = true,
			predicate = k_predicate_s,
			in_rest = "", out_rest = ""

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


Ссылка на сообщение
(изменено)
Т.е. на эту работу

Я так понимаю, будет заспавнен вояка спецназовец во время нападения наймов на деревню новичков ?

 

P.S. Имеется мод (ТЧ Complete). Там, если вынести КПП около деревни новичков, происходит респаун вояк (появляется спецназ). Хотел перенести себе в мод. Сравнивал all.spawn - отличий (по неписям) не нашёл. Единственное в gulag_escape.script отличия по тем строчкам из прошлого поста. Подскажите как реализовать. 

Изменено пользователем Space.Marine

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


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

Прошу помощи. Сам в скриптах не силён.

Есть функция проигрывания звукового файла:

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

function CSurgeManager:play_siren_sound()
	local snd_obj=self.blowout_sounds["siren"]
	local snd_position
	if snd_obj ~= nil and snd_obj:playing() then
		snd_obj:stop()
	end
	if(level.name()=="zaton") then
		snd_position=vector():set(115,8,184)
	elseif(level.name()=="jupiter") then
		snd_position=vector():set(-50,16,198)
	else
		snd_position=vector():set(147,15,-187)
	end
	if snd_obj ~= nil then
		snd_obj:play_at_pos(db.actor, snd_position)
		snd_obj.volume = 1
		--self.debugMessages[12]:SetText("playing: "..tostring(id))
	end
end

 

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

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


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

Нашёл такой код:

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

local explosive_weapons = {
    ["wpn_rg-6"] = true,
    ["wpn_rpg7"] = true,
    ["grenade"] = true
    }
function npcondeath(victim, who)
    if IsStalker(who) then
  local active_item = who:active_item()
  local active_slot = who:active_slot()
  if (active_item and (active_slot == 1 or active_slot == 2)) or active_slot == 3 then
   local section = active_slot ~= 3 and active_item:section() or "grenade"
   if explosive_weapons[section] then
    particles_object("anomaly2\\body_tear_00"):play_at_pos(victim:bone_position("bip01_head"))
   end
  end
    end
end

 

Но, почему-то, партикл body_tear_00 отыгрывается даже при убийстве из любого дробовика, хотя их нет в списке. Прошу людей разбирающихся помочь. Сказали, что код из Simbion мода, но там такого не нашёл. И ещё, хотелось бы, чтобы труп после смерти исчезал. Хотя я понимаю, что тут нужна проверка на квестовость непися... Но может у кого нибудь уже есть готовое решение ?

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


Ссылка на сообщение
(изменено)
16 часов назад, Graff46 сказал:

попробуйте этот:

Ничего не поменялось. Партикл проигрывается, как и раньше при убийстве из любого мощного ствола (дробовик, СВД и пр.) Если что - платформа ЗП.

Изменено пользователем Space.Marine

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


Ссылка на сообщение
(изменено)
4 часа назад, WinCap сказал:

Попробуй

Завтра проверю, но... Если в условии есть конкретно переменная explosive_weapons и для неё заданны конкретные параметры wpn_такое-то, то какого не работает ? 

Уточню, я в скриптах - максимум читатель без образования.

Возможно ли такое поведения скрипта из-за того, что у меня значения k_ap и k_hit в конфигах некоторых боеприпасов больше единицы ? 

Изменено пользователем Space.Marine

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


Ссылка на сообщение
(изменено)
31 минуту назад, Dennis_Chikin сказал:

А что, вообще

Как я уже упоминал, я не специалист и, даже, не любитель. Я так понимаю, что условия такие, если некоторые заданные в explosive_weapons стволы а также гранаты, то - бабах ! Код из Simbion, как говорят. И, да, там есть фишка на эффект разрыва трупов для дум-дум боеприпаса (из описания мода). Как я припоминаю, это всё, тянется ещё из АМК мода для ТЧ. Я просто не понимаю, неужели это настолько проблематично (скорее просто на не нужно) решить спецам ? 

Изменено пользователем Space.Marine

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


Ссылка на сообщение
13 часов назад, BFG сказал:

Мне б хоть мод с куском кода

Atmosfear - surge_manager.script - там функция проигрывания звука по координатам...

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

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


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

Добрый вечер, уважаемые !

Подскажите почему не выводятся на экран сообщения отсюда:

 

			if dik == DIK_keys.DIK_HOME then
				level.set_time_factor(300)
				news_manager.send_tip(db.actor, "Ускорение времени ВКЛ.", nil, nil, 5000)
			elseif dik == DIK_keys.DIK_END then
				level.set_time_factor(5)
				news_manager.send_tip(db.actor, "Ускорение времени ВЫКЛ.", nil, nil, 5000)				
			end

 

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


Ссылка на сообщение
10 минут назад, lordmuzer сказал:

Попробуй без

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

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


Ссылка на сообщение
4 часа назад, temass сказал:

как заспавнить чего либо(бочки, мутни, нпс) вокруг ГГ

Повелитель Зоны от Shoker-а.

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


Ссылка на сообщение
В 30.06.2019 в 14:24, _Sk8_AsTeR_ сказал:

как можно заставить НПС уйти из лагеря и просто гулять по зоне?

Гугли - SANEX A-LIFE MOD

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

Полный список изменений:

I.   Отключены гулаги на картах Кордон, Свалка, Агропром, Тёмная Долина, Бар, Дикая территория, Янтарь, Военные склады, Радар.
         1. Отключены Гулаги на вышеперечисленных картах для всех животных за исключением кровососов на Военных складах.
         2. На вышеперечисленных картах отключены гулаги для многих NPC (Не сюжетных!!)
II.  Отключены SMART-TERRAIN для: военных в подземелье Аграпрома, убраны SMART-TERAIN для всех бандитов на карте АГРАПРОМ, 
     в лабе икс 18 для бандитов (а они там есть?), на Янтаре для Долга, на радаре для зомби. Также отключены SMART-TERRAIN для ВСЕХ монстров.

III.   Увеличен радиус действия А-ЛАЙФ со 150 метров до 300 метров.
IV. Исправлены ошибки с собаками, нападающими на лиса, и кабанами, нападающими на блокпост долга....

Описание мода:

Как вы все наверное знаете, разработчики игры обещали нам уникальную систему жизни. Существа зоны должны жить своей 
жизнью. На деле это оказалось немного не так: существа действительно живут своей жизнью, но только внутри определённой 
зоны. За эту зону они могут выйти при двух условиях: 1. Они за кем-то гонятся. 2. Они от кого-то убегают. Вот и 
получается, что, допустим на локации кардон, собачки недалеко от вагончика будут бродить там вечно, пока не наступит 
одно из вышеперечисленных условий. Я в своём моде убрал эти зоны для ВСЕХ животных, и для некоторых людей. Что
получается? Например всё теже собачки у вагончика, теперь могут пойти, например, к раненому сталкеру и съесть его. 
Существа зоны теперь могут свободно передвигаться по всей карте. Это порождает очень большое колличество интересных 
ситуаций. Например огромная стая собак, штук 20, гналась за плотями. Собаки эти раньше сидели в своей зоне-гулаге, 
но когда я их отпустил, они пошли к плотям, и напали на них. Тоже самое с людьми. Например в лагере новичков. Раньше 
из этого лагеря никто не уходил, но теперь из лагеря переодически уходят 1-2 сталкера. 

В моём моде спокойно работают ВСЕ квесты, кроме некоторых. 
Мой мод получил очень хорошие отзывы на офф. форуме игры. Качаем мод, и видим тот a-life, который нам так долго 
рекламировали разработчики игры!!!

Существуют разные версии мода на разные версии ТЧ и модификаций.

 

 

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


Ссылка на сообщение
17 часов назад, _Sk8_AsTeR_ сказал:

то у этого НПС отнималось определенное кол-во денег, за СМС.

и тут ОПСОСы !!! 

  • Не нравится 2
  • Смешно 1

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


Ссылка на сообщение
11 часов назад, Капрал Хикс сказал:

запретить артефакту перемещаться в слот для пистолета

Там ещё засада была такая, что если слот пестика пустой, то поднятый с земли арт перемещается автоматически в слот пистолета. Бесит жутко.

  • Согласен 1

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


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

Приветствую !
В ванильном ЗП в bind_stalker.script:

	-- Апдейт доступности для симуляции.
	simulation_objects.get_sim_obj_registry():update_avaliability(alife():actor())

	if not self.loaded then
		get_console():execute("dump_infos")
		self.loaded = true
	end

после чего в лог сыпется:

! Unknown command:  dump_infos

Я не скриптёр совсем. Поэтому вопрос - можно закоментить строку:

get_console():execute("dump_infos") ?

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


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

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

AMK-Team.ru

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