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

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


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

Я как-то задавал вопрос о бессмертие здесь

Цитата

либо сделать копию модели, аккуратно поправить в ней #include и сделать/прописать секцию иммунитета для бессмертных

 

 

Это как сделать?? Объясните поподробнее

 

 

Мне ответили тогда

shooting unicorn

 

В идеале - перевести модельку в формат .object конвертером Бардака, загрузить в СДК и поправить ссылку на файл инклуда в Object -> User Data. Потом экспорт обратно в .ogf, и в новом файле инклуда прописать нужные параметры защиты.

 

Если нет СДК или неохота с ним возиться, можно просто скопировать модель под другим именем, открыть ее в hex-editor-е или в текстовом редакторе (notepad++ справляется, с обычным блокнотом возможны проблемы, 50/50). Поиском найти #include, обычно в конце файла, за ним будет идти ссылка на файл, типа вот такого: #include "models\capture\exo_helmet_damage_med.ltx"

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

Сохраняем и в новом файле инклуда прописываем нужные параметры защиты. Если нигде не накосячили по ходу, должно получиться.

 

 

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

И вот хочу воспользоваться hex едитором и сделать бесмертие Серому, который на свалке. Открываю папку с моделями сталкеров. Там следующие папки: bandit, camo, dolg, fanatic, monolit, novice, partizan, rasvet, stalker, svoboda и unique_traders. Так вот я так понимаю что Серый будет в папке stalker. В этой папке файлы stalker_1.ogf, stalker_2.ogf, stalker_3.ogf и т.д. до stalker_20.ogf.

И вот у меня такой вопрос какой из этих файлов надо править, чтобы сделать бессмертие Серому? И еще вопрос как определять, для кого какой файл брать ( допустим если подопоный был бы не серый, а Крот)?

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

shooting unicorn, Модель присваевается в секции спавна в ал-спавн.Или в профиле перса в характер деке

Вообще ты бы почитал основы(шпаргалку,статьи на вики),а то не зная букваря пытаешься квантовую физику понять

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

Ищу функции:

1. Выбросить объект obj из инвентаря объекта par.

2. Возвращает obj, который актор на данный момент держит в руках.

3. Возвращает true, если obj на данный момент находится в секции в инвентаре (например, артефакт на поясе, или спрятанное оружие). Иначе false.

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

IQDDD,

1. par:drop_item(obj)

2. db.actor:active_item()

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

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

Возвратился к вопросу со временем в билде 3120.

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

local t = game.get_game_time()

local y,m,d,h,minut,sec,ms = t:get() -- получаем текущие значения

 

Но выставить так:

local t = game.get_game_time()

local y = 2012

local m = 6

local d = 12

local h = 10

local minut = 10

local secunda = 5

local ms = 3

t:set(y,m,d,h,minut,secunda,ms)

У меня не получилось. Даже просто прибавить к времени еще один час ничего не давало. Пытался так:

local t = game.get_game_time() -- получить текущее время

local dt = game.CTime() -- объект с нулевым счётчиком

dt:setHMS(10,10,5)

t:set(dt)

И так:

local t = game.get_game_time() -- получить текущее время

local dt = game.CTime() -- объект с нулевым счётчиком

dt:setHMS(10,10,5) -- устанавливаем смещение в один час

t:set(dt) -- меняем t, увеличивая на один час

И так:

local t = game.get_game_time()

t:setHMS(10,10,5)

 

Но ничего не получается:(

Freedom

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

Это ты все задаешь время в переменной t, но не в игре.

Где-то в _g.script была функция установки времени. Принцип приблизительно следующий: задается большой time_factor и в ждут в цикле, пока время в игре не станет больше нужного. Потом time_factor возвращается обратно.

Возможно и сейчас можно что-нибудь похожее сделать

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

Expression : fatal error
Function : CBlender_default::Compile
File : E:\stalker\patch_1_0004\xr_3da\xrRender_R1\BlenderDefault.cpp
Line : 50
Description : <no expression>
Arguments : Not enought textures for shader, base tex: prop\prop_socket1

Ммм, как лечить?

Сообщение от администратора n6260
Переведи в переводчике Not enought textures for shader и тебе откроется страшная тайна ;)

Мод "Жесть"

В команду Two Team ("Жесть") требуется моделлер.

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

Ищу функции:

1. Возвращает вес инвентаря ГГ. (Перебор объектов инвентаря

actorMass=actorMass+db.actor:object(i):mass()

результатов не даёт, т.к. mass() почему-то возвращает всегда 0.

2. Возвращает максимальный вес инвентаря ГГ (могу и через .ltx, но может есть способ быстрее?)

3. Возвращает true, если актор перегружен (или 3, или 1, т.к. эти функции в условиях моей задачи взаимозаменяемые), иначе false.

4. Получить массу по секции объекта (без вылетов в случае отсутствия параметров, т.е. возвращения nil)

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

IQDDD,

1. Почитай последние страницы этой темы, если не ошибаюсь, то об этом что-то говорилось.

2. А чем способ через чтения из конфига не быстр?

3. В _g есть ф-ия on_actor_cant_walk_weight. Можно с ней покопаться...

4.

if system_ini():line_exist(obj_section, "inv_weight") then return system_ini():r_float(obj_section, "inv_weight") end

Изменено пользователем Министр
Ссылка на комментарий
есть ли возможность определить момент попадания болта в спейсрестриктор?

Если кому интересно, проблему решил навешиванием на болт своего биндера

в файле config\weapons\w_bolt.ltx добавляем строку

script_binding = xr_bolt.bind

создаем скрипт xr_bolt.script примерно такого содержания

function bind(obj)
  local new_binder = bolt_binder(obj)
  obj:bind_object(new_binder)
end

class "bolt_binder" ( object_binder )
function bolt_binder:__init(obj) super(obj)
  self.obj = obj
  self.timer_update = game.time()
  self.worked = false
  self.trigger = false
end

function bolt_binder:update(delta)
  if self.timer_update<=game.time() then self.timer_update=game.time()+1500 else return end
  --здесь делаем необходимые нам дела ))))
  --в моем случае необходимо было из подготовленной заранее таблицы спейсрестрикторов
  --выбрать ту в которую текущий болт попал
  if not self.trigger then
    for i, tp in pairs(g_teleports.array_space_rest) do
      local obj = alife():object(tp.id)
      if obj then 
        if self.obj:position():distance_to(obj.position)<=2.5 then
          if not self.worked then
        self.worked = true
        self.trigger = true
        break
          end
        end
      end
    end
  end
  if self.worked then 
    --выполняем нужные нам действия )))
    self.worked = false
  end  
end

 

Изменено пользователем Gonarh
118 101 110 105 44 32 118 105 100 105 44 32 118 105 99 105
Ссылка на комментарий

Столкнулся с такой проблемой.

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

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

Доброй ночи!

 

В каком файле можно изменить процент выпадания патронов с трупа в зависимости от сложности игры?

 

Сообщение от администратора n6260
death_items_count.лтх

"Зло перестало быть слепой хаотичной силой. Сегодня Зло действует по праву закона - ибо у него теперь есть права. Оно действует в соответствии с заключенными мирными договорами, ибо о Зле подумали, заключая эти договоры. Геральт из Ривии, ведьмак."

Ссылка на комментарий
Ирбис, в файле fonts.ltx, что в папке config. Просто распакуй архивы Сталкера (не солянки).

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

"Худ" и "Умное выпадание частей монстров" для Народной солянки

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

Совершенно не получается дать обьекту стори_ид при спавне.Делал так:

local obj = alife():create("esc_npc",vector():set(x1,y1,z1),lvid, gvid)
local t = amk.read_stalker_params(obj)
t.story_id = 30139
amk.write_stalker_params(t,obj)

Так же менял визуал неписю - все работает, а вот стори_ид не назначается, я пробовал определить НПС по этому новому стори_иду:

local obj =  alife():story_object( 30139 )

сдесь даже проверка на существование не проходит.Новый стори_ид прописывал в game_story_ids.ltx.

Может кто-нибудь подсобить другим, более надежным вариантом назначения стори_ида?Или я ошибку где-то допустил?

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

А ты вообще откуда взял, что надо так стори_ид устанавливать?

t.story_id = 30139

 

В amk.script read_stalker_params и функцтях, которые она вызывает, такой параметр не читается. И соответственно потом и не пишется

Есть параметр sid, то есть надо так:

t.sid = 30139

 

Названия параметров по-хорошему надо смотреть в amk.script.

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

Stalk15, Kolmogor,

с изменением story id через нетпакеты есть ещё одна неприятность. Для объекта то он меняется, а вот в разных внутренних структурах не прописывается. Т.е. скажем искать по свежеизменённому story id получится не раньше, чем после перезагрузки.

 

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

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

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

 

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

Извините, если задаю вопрос не туда куда нужно.

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

Expression : fatal error

Function : CScriptEngine::lua_error

File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engine.cpp

Line : 73

Description : <no expression>

Arguments : LUA error: ....l.k.e.r\gamedata\scripts\smart_monster_parts.script:300: attempt to index global 'arc' (a nil value)

Конечно в моей gamedata много модов и моих исправлений, но ни одно из них не касалось монстров. Правда мог повлиять "Фотореалистичная зона: Живность " но мне он важен.Скажите пожалуйста как это исправить?Можно конечно пройти мимо, но потом аукнется?

Дурак знает как затеять драку, умный знает как победить в драке, мудрец знает как избежать драки.

Ссылка на комментарий
Arguments : LUA error: ....l.k.e.r\gamedata\scripts\smart_monster_parts.script:300: attempt to index global 'arc' (a nil value)

Собственно все ясно или отсутствует скрипт arc.script или в нем ошибка. Вылеты будут при каждом убийстве монстра :)

 

Эти скрипты из русиного мода Smart Monster Parts(Умное выпадение частей монстров). Попробуй найти его и переставить. ну и конкретно arc.script используется и в других модах от Руси и Ко: биорадар, контейнеры и радиация от артов в инвентаре

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

Ребята, подскажите где поправить бинокль? http://ipicture.ru/uploads/101020/6SlxHTT4UT.jpg

Сообщение от администратора n6260
Иконку что ли (которая в правом нижнем углу)? Просто указать правильные координаты. Как определять координаты и т.д. Читай в теме "редактора иконок" (раздел модинга) или в моем туторе по добавлению оружия в теме Арсенала.

Так у меня в файле S.T.A.L.K.E.R\gamedata\config\weapons\w_binoc.ltx прописан путь именно к биноклю, а отображается пм.

Сообщение от администратора n6260
Тебе не путь к модели надо править. А иконку предмета :) Это гораздо проще и легче.

 

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

n6260 Тоесть надо вместо икони пм поставить иконку бинокля? Но у ни по сетке размеры разные.

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

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

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

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

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

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

Войти

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

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

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