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

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


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

Старлей, спасибо за помощь, но заглушки ставить не самый лучший вариант, с той ошибкой я уже разобрался, как и сказал Shredder там не хватало параметра targets в смарте. Тестовая локация теперь грузится, работы для смарта тоже сделал (без них был вылет на path camp), но после загрузки не происходит спавн НПС(сквада), в логе нету ни каких ошибок. Не ужели ни кто не занимался смартами на ЧН? Урок по созданию смартов в ЗП, только частично подходит для ЧН, ибо не все файлы и функции которые используются для смарта ЗП есть в ЧН.

Возник вопрос, возможно ли сделать так что бы в названии предмета было имя НПС, хочу сделать так что бы у убитого нпс был КПК, например "Кпк сталкера по кличке Димка Туз"

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

@vampirnik77,

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

Вы наверное не поняли, нужно чтобы при убийстве любого (не квестового) непися у него был кпк, как отследить имя НПС, ведь имя рандомное.

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

Имя непися отследить не проблема, проблема прописать это имя произвольному кпк. Здесь решения нет.

vampirnik77

Проблема в именовании КПК, как сказал malandrinus, это по идее для каждого нпс придется создавать отдельный предмет(секцию), в свойствах которого inv_name будет с именем НПС, я кстати даже незнаю можно ли вообще как-нибудь через нет-пакеты поменять этот параметр :unsure:

Чтобы КПК получил имя владельца, в его (КПК) параметр 'original_owner' должен быть прописан игровой идентификатор (id) владельца, а в 'specific_character' - профиль владельца (это вторично). Тогда имя КПК будет персональным и соответствовать имени сталкера с этим идентификатором.

Собственно этот параметр заполняется автоматом, когда сталкер спавнится в игру и следом ему его именной КПК.

Но, можно и заменить или добавить (если отсутствует) сам КПК (обычный!) и перезаписью net-пакетом установить требуемые значения.

Примечание: Секция для именных КПК должна быть ТОЛЬКО штатной, т.е. [device_pda], все остальное - по вкусу...

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

@Artos, а ты  это проверял? Поля то есть, вот только не похоже, чтобы это на самом деле работало. По крайней мере у меня сходу не заработало.

@Malandrinus, я практик, а не теоретик ;-), конечно же не только проверял, но и использую на практике (в SIMBION'e).

Не проверял только такие случаи:

- КПК спавнится, когда владельц уже мертв;

- КПК спавнится, когда у владельца уже имеется имеется свой именной КПК;

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

В моде в модуле офф-лайн-алайф (аналог AMK'шного), в котором неписи занимаются собирательством и "подметают" все на локациях, при продаже хабара, не продают именно свой КПК, отличая его по метке 'original_owner'.

Также, при сборе актором различных КПК, различаются безхозные и именные КПК, опять же по этой метке. Снятие метки снимало "персональность" найденного КПК.

У игроков в мод бывали случаи, когда при попадании в аномалию актор терял свой КПК... Искал потерянное (скриптами) именно по метке, и возвращал. А при отсутствии - просто спавнил новый и метил - КПК становился: "КПК Меченный". (это в ТЧ).

(к вечеру гляну непроверенные ситуации, и применительно с ЧН)

@Artos,

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

Вынужден признать свою ошибку относительно возможности отображения надписи для именных КПК в ЧН (CS) и ЗП (CoP) через параметры объекта.

К сожалению, в ЧН/ЗП в движке напрочь вырезана эта возможность и надпись отображает только то, что прописано в к конфиге строкою 'inv_name'.

 

Под ТЧ отображение именных надписей работает, но требуется спавнить КПК не сразу в тело, а вначале спавнить "на землю" и менять параметры и уже после этого вкладывать КПК владельцу (=>трансфер).

В противном случае возникает двойная проблема:

- сразу после спавна КПК не отображается "именным";

- после сэйв->лоад уже "именной" КПК как бы исчезает из трупа, т.е. невидим, хотя и находится в инвентаре (но это отдельная история).

Всем доброго дня, ребят, такой вопрос: Как сделать численность отряда допустим 6 человек постоянной, а то отряды ЧНовцев появляются по 3-4 человека, а я бы хотел чтобы было всегда 6 бойцов. И ещё, как сделать чтобы в отряде ЧНовцев не было сталкеров новичков (в кожанных куртках), а были все в комбезах. Можно такое сделать?

Roma3094

1. Зайди в файл sim_faction.script найди функцию:

 

 

 

function se_sim_faction:read_params()
И добавь перед строкой  "--' Вычитываем и заполняем уровни экспансии группировки" этот код:

	self.squad_size_min = utils.cfg_get_number(self.setting_ini, "settings", "squad_size_min", self, false, 5)
	self.squad_size_max = utils.cfg_get_number(self.setting_ini, "settings", "squad_size_max", self, false, 5)
Затем зайди в скрипт sim_squad_generic.script и найди функцию

function sim_squad_generic:create_npc(spawn_smart)
И замени на эту:

function sim_squad_generic:create_npc(spawn_smart)
self.squad_power = 0

local base_spawn_position = spawn_smart.position
local base_lvi = spawn_smart.m_level_vertex_id
local base_gvi = spawn_smart.m_game_vertex_id
if spawn_smart.spawn_point ~= nil then
base_spawn_position = patrol(spawn_smart.spawn_point):point(0)
base_lvi = patrol(spawn_smart.spawn_point):level_vertex_id(0)
base_gvi = patrol(spawn_smart.spawn_point):game_vertex_id(0)
end

local custom_resource = nil

local player = self.board.players[self.player_id]

--get max and min number of NPCs in a squad
local min_npc = player.squad_size_min
local max_npc = player.squad_size_max

if self.player_id == "monster" then
local level_name = alife():level_name(game_graph():vertex(spawn_smart.m_game_vertex_id):level_id())
local min, max = 0,5
if monster_resource_by_level[level_name] ~= nil then
min = monster_resource_by_level[level_name][1]
max = monster_resource_by_level[level_name][2]
end
custom_resource = math.random(min,max)


min_npc = monster_num_by_resource[custom_resource][1]
max_npc = monster_num_by_resource[custom_resource][2]
end

local npc_in_squad = math.random(min_npc,max_npc)


for i=1,npc_in_squad do
local position = base_spawn_position
position.x = position.x + math.random(-2,2)
position.z = position.z + math.random(-2,2)


local spawn_section = player:get_spawn_section(spawn_smart, custom_resource)
local obj = alife():create(spawn_section,
position,
base_lvi,
base_gvi)

obj.squad_id = self.squad_id
self.squad_npc[obj.id] = obj.id

self.sound_manager:register_npc(obj.id)


if self.commander_id == nil then
self.commander_id = obj.id
end
 
npc_ids[i] = obj.id
 
self.npc_count = self.npc_count + 1
--printf("sim_squad_generic: npc_count is [%s], obj:rank is [%s], obj:name is [%s], self.squad_power is [%s]", tostring(self.npc_count), tostring(obj:rank()), obj:name(), tostring(self.squad_power))
self.squad_power = self.squad_power + 5*obj:rank()/1000
end
self.smart_id = spawn_smart.id
self:refresh()
 
if self.squad_power > 25 then
abort("Squad power couldnt be over 25!!!")
end
end
 

 

Затем в файлах настройки группировок(misc\faction_****.ltx) ты можешь указывать значения мин. и макс. кол-ва человек в отряде для каждой группировки:

[settings]
...
squad_size_min = 2
squad_size_max = 4
...
Примечание: Естественно надо сделать проверку на то, получены ли параметры из .ltx файла, чтобы не было вылета, ну или просто во всех файлах настройки группировок указать эти значения.
Изменено пользователем Старлей

@Старлей,

В файле faction_csky строчки 

squad_size_min = 2
squad_size_max = 4

нужно прописывать самому? У меня их там нет, только это:

 

[settings]
glory_0 = 0 ;Количество дополнительных отрядов, в зависимости от числа захваченных территориальных точек.
glory_1 = 1
glory_2 = 2
glory_3 = 3
glory_4 = 4
glory_5 = 5

 



@Старлей,

Начинаю новую игру, появляюсь на базе небовцев. Отряды по 4 человека (на базе), хотя прописывал 8. Перехожу в стадию войны на болотах, при спавне нового отряда - вылет. Прописал такое же кол-во 

squad_size_min = 8
squad_size_max = 8

в других группировках, при спавне опять вылет. Что-то делаю не так =/

Roma3094

Товарищ, на базе Чистого неба - скриптовые отряды, параметры которых хранятся в misc\squad_descr_****.ltx и профили бойцов там же, а вылет твой при спавне отряда означает, что ты прикрутил эти параметры где-то не так, и чтобы сказать где, нужен лог.

Доброго Дня.
Подскажите пожалуйста правильный инфопоршн для принудительного завершения задания (через ui_main_menu) "Забрать добычу из тайника". Это квест из ориг. ЧН, после освобождения диггеров из концлагеря. Получилось так, что вещи из тайника забираю, а задание в ПДА так и остается. И как все правильно нужно прописать, чтобы при нажатии например Esc-F6-Esc, задание засчиталось?

@IGOR™,здравствуй. 

Попробуй вот так:

В ui_main_menu.script после


if dik == DIK_keys.DIK_Q then 
              self:OnMessageQuitWin()

 

добавь:


elseif db.actor~=nil and dik==DIK_keys.DIK_F6 then 
              db.actor:give_info_portion("gar_quest_captive_reward_done")
Изменено пользователем FantomICW
  • Нравится 2

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

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

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

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

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

Войти

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

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

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