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

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


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

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

 

Это поможет? Что ещё надо будет изменить, чтобы они не появлялись при загрузке сейвов, пока я на одной локациии... А при смене локаций пусть появляются, то есть зачистил одну локацию, ушёл, вернулся и там вновь они - не страшно, я только "За!" - это и нужно, в этом и задумка, чтобы убитые не появлялись вновь пока я нахожусь на локации!

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

Weeko, "помощь" подразумевает всегда некую работу/действия от того, кому помогают, иначе это, применительно к модингу, называется не помощью, а: "сделайте мне мою похачушку".

Если ты, как говоришь не обладаешь ни "специфическими знаниями" ни, вероятно, "специфическими навыками редактирования скриптов", то ... предполагаю твоя похачушка останется без "помощи". Тут как говорится, немного перефразируя: "Похачушки игроков - дело рук самих игроков!".

 

По ранее данному варианту должно "помочь" обезлюдить Зону, но ... не раскатывай губы особенно. Если на Кордон с дальних локаций не особо подтягиваются сталкеры/монстры, то далее - если будет где-то спавнится сталкер/монстр - он запросто может пойти на любую локацию, которая ему по рангу.

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

 

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

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

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

Если бы где-то была достойная инфа по данной теме, поверь мне, не стал бы Тебя так напрягать...

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

везде кроме общих фраз и модов нет ничего... НИКАКОЙ КОНКРЕТИКИ!

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

 

Короче как понимаю, никто не в состонии мне помочь, потому как получается никто не задавался таким вопросом...

 

Хорошо, если Ты более или менее разьбираешься, что делать с вторым вопросом: как сделать, чтобы Герой мог таскать (не брать в рюкзак!) канистру?

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

Weeko

'

достойную' инфу пишут те, кому не лень в том числе "сидеть и сравнивать" ...

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

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

Касательно конкретики - сами коды игры, коды многочисленных модов, комментарии к этим кодам, сотни топиков и постов на различных форумах - это ли не конкретика? Давай не будем хаить всех лентяем модмейкеров, не удосужившихся везде разложить на блюдечке все что потребно таким как ты. При желании и времени(!) можно найти почти любую конкретику или даже готовое.

Weeko: Короче как понимаю, никто не в состонии мне помочь ...
Понимай как хочешь, но и прими к сведению, что подобные слова обычно присущи троллям, которые пытаются играть на самолюбии тех, кого принижают и от которых пытаются получить ...

Однако реакция может быть и не ожидаемой тобою. Например, более тебе с моей стороны не будет дано ни одного совета.

 

По 2-му вопросу я уже тебе дал дважды совет - искать в ФАК'ах, иного ответа не будет от меня (потрудись сам немного).

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

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

(кстати, пока была поднята тема)

 

Некоторые размышления о доработке респавнеров для тех, кто понял о чем и может воспользоваться:

 

1. Респавнеры не сохраняют время последнего респавна, что приводит при каждом (пере)запуске игры к спавну объектов, что порою нежелательно.

Для того, чтобы тайм-аут спавна запоминался достаточно чуть доработать методы чтения/записи серверного объекта респавнеров (см. se_respawn.script).

Заодно можно ввести (на всякий случай) защиту от переполнения кол-ва заспавненных объектов респавнерами, т.к. разрядность байта хранения этого кол-ва позволяет хранить до 255 и при переполнении приводит к сбросу/искажению.

Итак правим читалку/запоминалку:

-- сохранение
function se_respawn:STATE_Write( packet )
  cse_alife_smart_zone.STATE_Write( self, packet )
  
  local table_size = table.getn(self.spawned_obj)
  if table_size > 255 then --/#+# проверка переполнения
     --printf("STATE_Write:=[%s/%s],Cnt=[%s]:<%s>", self:name(), self.id, table_size, "Warning!") --/#~#
    table_size = math.min(table_size,255) --/ усекаем до объема хранилища (или потребного)
  end
  packet:w_u8(table_size)
  for i=1,table_size do
    packet:w_u16(self.spawned_obj[i])
  end
  --/#+# запоминаем тайм-аут респавнера
  if self.last_spawn_time_present then --/ спавн уже был?
    packet:w_u8(1)
    utils.w_CTime(packet, self.respawn_time) --/ записываем время след.спавна
  else
    packet:w_u8(0)
  end
end
-- восстановление
function se_respawn:STATE_Read( packet, size )
  cse_alife_smart_zone.STATE_Read( self, packet, size )
  
  if editor() then
    return
  end
  
  local table_size = packet:r_u8()
  for i=1,table_size do
    table.insert(self.spawned_obj, packet:r_u16())
  end
  --/#+# считываем тайм-аут респавнера
  if not packet:r_eof() then --/ еще не конец пакета? (для совместимости со 'старыми' сэйвами)
    self.last_spawn_time_present = packet:r_bool()
    if self.last_spawn_time_present then
      self.respawn_time = utils.r_CTime(packet)
    end
  end
end

Для того, чтобы регистрация респавнеров в игре не затирала бы запомненные значения потребуется небольшая правка метода регистрации:

function se_respawn:on_register()
  --/ ... начальные коды
  --/ производим первичную инициализацию (если нет времени последнего спавна)
  if not (self.last_spawn_time_present and self.respawn_time) then
    self.respawn_time = game.CTime()
  end
  --/ ... заключительные коды
end

и в методе 'execute' добавим инициализацию флага спавна чтобы запоминать состоявшиеся спавны:

function se_respawn:execute()
  --/ ... начальные коды
  self.last_spawn_time_present = true --/#+# флаг
  if self.respawn_time < game.get_game_time() then
  --/ ... заключительные коды
end

 

2. Еще один недостаток респавнеров - отсутствие возможности задавать начальную паузу для спавна.

Т.е. если нам требуется чтобы некий респавнер респавнил бы объекты с периодом в 24 часа, то ... все одно он будет спавнить каждый раз при запуске игры, если актор не на текущей локации (при отсутствии спец.ограничителей). Ведь при запуске новой игры все респавнеры по сути свободны для спавна и ... требуется каждому прописывать некое услове для начала спавна (инфопоршни и т.п.)

Если ввести в параметры респавнеров дополнительный, например назовем : 'respawn_first_idle' в котором в секундах игрового времени задавать начальную паузу для спавна, то в купе с другими условиями, дает довольно простое средство задавать начальную паузу.

Таким образом доработанный вышеприведенный код в регистраторе респавнеров может быть таким:

function se_respawn:on_register()
  --/ ... начальные коды
  --/ производим первичную инициализацию времени спавна
  if not (self.last_spawn_time_present and self.respawn_time) then
    --/#+# читаем начальную паузу спавна объектов (при старте игры)
    local iPause = r_num(ini, "respawn", "respawn_first_idle", nil) --/ sec
    if iPause then --/ имеется пауза (в игр.секундах)
      local iShift = math.floor(iPause*0.2) --/ погрешность (sec)
      local idle_time = game.CTime() --/ текущее игровое время
      idle_time:setHMSms(0,0,iPause+math.random(-iShift,iShift),0) --/ тайм-аут
      self.respawn_time = game.get_game_time() + idle_time --/ устанавливаем начальный тайм-аут
      self.last_spawn_time_present = true --/#+# флаг
    else --/ ставим текущее игровое время
      self.respawn_time = game.CTime()
    end
  end
  --/ ... заключительные коды
end

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

 

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

 

P.S. Подправил коды, а то при перенесении из рабочих кодов допустил пару неточностей/дублей.

 

Добавлено через 8 мин.:

===============================================================

Max_Plohih, ты хоть понял о чем спросил?

1. Звук противогаз НЕ издает, издавать звук может тот, кто в противогазе (озвучка дыхания).

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

Если ты об "интерактивном худе" для противогазов/шлемов из АМК-мода, то там звук уже в наличии. Бери и смотри как 'добавлено', в чем вопрос-то?

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

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

Что ни кто не знает почему по лестницам лазить нельзя..?

FANAT.gif

Мой канал на ютабчике... / Недельки из жизни фаната STALKER'a / Клуб 'Фанат Отчуждения'

Я нет-нет, а думаю, может я неправильно жил, надо ж брать деньги у богатых и давать их бедным, а таким как ты давать по морде, шоб у мире была красота и гармония.(с)Ликвидация

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

Что ни кто не знает почему по лестницам лазить нельзя..?

попробуй axis_z увеличить.

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

как сделать так чтобы при новой игре, ГГ вставал с земли и его немного мутило и еще чтобы при вставании издавал звук?

 

А в школе не учат начинать предложения с заглавной буквы?

Правила форума требуют соблюдать грамотность в своих постах ... --/Artos

 

К перечисленному добавлю: уж за три месяца, мог бы и разобраться с вопросом... Cyclone

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

Всем привет. Такой вопрос. Никто еще не научил неписей стрелять со стационарного пулемета?

Изменено пользователем Roman82
Roman82, ПЫСы научили... взять хотя бы ЧН переход с Болот на Кордон, вспомни как этот "стационарный пулемет" поливает ГГ...

Серый Волк

Да это понятно. Я имел ввиду ТЧ. Походу нет такой возможности...

Серый Волк - там турель+модель непися приделаная к геометрии-если пробовал в пулемётчика стрелять-замечал наверное что его незя убить ;) .

Люди - может кто подсказать что означает такой лог?

 

Expression : hFile>0

Function : FileDownload

File : E:\stalker\sources\trunk\xrCore\FS.cpp

Line : 106

Description : e:\games\stalker\gamedata\config\

Ещё раз...

Такой вопрос, как заставить Героя таскать канистру с бензином, так же как он таскает трупы?

 

Замечу, не брать! в рюкзак!, а именно таскать!!!

Нигде не могу найти... везде реализовано только то, что Он берёт в рюкзак - не то, надо чтобы Он её мог таскать "руками"...

 

Прописываю по аналогии с монстрами... Таскает всё, кроме канистры почему-то. Пишу ящики, вёдра, балоны и т.д. - тащит, канистру в упор не берёт.

Думаю, что отказывается брать всё взрывающееся, поскольку не получилось взять бочку с топливом (красную) тоже...

 

Как сделать?

 

оригинальная игра, версия 1.0006, Тень Чернообыля, модов нет...

Weeko, попробуй в параметрах предмета (канистры) указать что этот предмет можно таскать... такой параметр существует, и если я правильно помню называется "atachable item" (или как-то похоже). Изменено пользователем Серый Волк
Weeko, попробуй в параметрах предмета (канистры) указать что этот предмет можно таскать... такой параметр существует, и если я правильно помню называется "atachable item" (или как-то похоже).

 

Простите, а где находится файл с параметрами канистры? и балонов тогда тоже... (чтобы можно было провести аналогию)

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

Серый Волк, параметра '"atachable item' для предметов не существует.

Имеется 'auto_attach' - то это только возможность 'сразу взять в руки' предмет при его получении/поднятии, что к возможности 'таскать' не отностится.

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

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

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

как заставить Героя таскать канистру с бензином, так же как он таскает трупы?

В файле \gamedata\config\system.ltx, попробуй дописать physics\balon\kanistra в секции [ph_capture_visuals].

 

 

Правила форума, 3.6. Предупреждение.

ЛС закрыта.

В файле \gamedata\config\system.ltx, попробуй дописать physics\balon\kanistra в секции [ph_capture_visuals].

 

Не работает... это и делаю.

 

\\\ ... Прописываю по аналогии с монстрами (в system.ltx в секцию [ph_capture_visuals] добавляю ссылку на модель относительно папки meshes)... Таскает всё, кроме канистры почему-то. Пишу ящики, вёдра, балоны и т.д. - тащит, канистру в упор не берёт.

Думаю, что отказывается брать и всё взрывающееся, поскольку не получилось взять бочку с топливом (красную)...

 

Как сделать? ... ///

 

Изменение параметров в секции false на true - тоже не то... После замены Он воспринимает канистру как предмет и ложит в рюкзак.

А мне необходимо, чтобы он тащил её как труп... "Типо" реалистично...

Прошу прощения, вот что я написал в alife_l12_stancia_2.

 

[869]

; cse_abstract properties

section_name = actor

name = level_prefix_actor_0001

s_rp = 0

position = 537.801025390625,18.2054042816162,278.553558349609

direction = 0,-1.27738451957703,-0

s_flags = 0x29

 

; cse_alife_object properties

game_vertex_id = 2517

distance = 0

level_vertex_id = 5983

object_flags = 0xffffffba

custom_data = <<END

 

[dont_spawn_character_supplies]

 

[spawn]

wpn_binoc

novice_outfit

device_torch

END

 

; cse_visual properties

visual_name = actors\hero\stalker_novice

 

; cse_alife_creature_abstract properties

g_team = 0

g_squad = 0

g_group = 0

health = 1

dynamic_out_restrictions =

dynamic_in_restrictions =

 

upd:health = 1

upd:timestamp = 0x75732029

upd:creature_flags = 0x70

upd:position = -139.449829101563,-29.6908683776855,-351.492797851563

upd:o_model = 0

upd:o_torso = 0.00895109120756388,0,-0.999959945678711

upd:g_team = 0

upd:g_squad = 0

upd:g_group = 0

 

; cse_alife_trader_abstract properties

money = 40

trader_flags = 0

character_profile = actor

 

; cse_ph_skeleton properties

 

; cse_alife_creature_actor properties

 

upd:actor_state = 0xd20

upd:actor_accel_header = 0

upd:actor_accel_data = 0

upd:actor_velocity_header = 0

upd:actor_velocity_data = 0

upd:actor_radiation = 0

upd:actor_weapon = 110

upd:num_items = 0

В чем же ошибка? ГГ под землей за пределами, может что надо в самой локации редактировать тогда?

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

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

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

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

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

Войти

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

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

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