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

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


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

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

Cоветы,по какому либо делу стоит давать только тогда, когда умеешь делать это дело лучше того, кого пытаешься наставлять.
Ссылка на комментарий

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

Изменено пользователем vampirnik77
Ссылка на комментарий

@vampirnik77,

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

Изменено пользователем vampirnik77
Ссылка на комментарий

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий
vampirnik77

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

Ссылка на комментарий

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

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

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

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

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

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

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

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

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

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

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

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

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

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

@Artos,

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

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Вынужден признать свою ошибку относительно возможности отображения надписи для именных КПК в ЧН (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

c57d8f0c86.png

Ссылка на комментарий

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

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

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

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

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

Войти

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

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

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