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

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


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

SkyLoader, не стОит "засорять" этим топик ...

1. Топики по ковырянию движка и достижениям в этом - в ином месте.

2. Не отношусь к любителям рассматривать картинки, тем более таких (с болтом) понаделать может каждый.

3. И, наконец, а НАФИГА?

Похоже те, кто зациклился на "заканчивающийся" болтах совсем забыли или даже не понимают - а зачем вообще болты!

В игре актор способен кидать болты, дабы проверить наличие аномалии.

В книге/фильме ("Пикник на оболчине" и "Сталкер") - кидаются гайки с привязанными ленточками (для видимости).

Но что мешает кидать любой камешек иль патрон иль банку с консервой? Только несовершенство движка игры ограничивает ассортимент ...

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

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

 

 

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

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

после убийства нпс получаю вылет

[error]Expression : e_entity

[error]Function : xrServer::Process_event_reject

[error]File : E:\stalker\patch_1_0004\xr_3da\xrGame\xrServer_process_event_reject.cpp

[error]Line : 12

[error]Description : entity not found. id_parent=0 id_entity=43777 frame=2555

Насколько он глобален и есть ли способ его обойти?

 

Настолько "глобален", что дав поиск по интернету, получишь немало ссылок где можно прочесть о "что-и-почему". --/Artos

 

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

Artos, везде написано, что очень редкий. Возникает иногда произвольно при смерти неписей. Причина – движок отрабатывая лут изредка теряет серверный объект уничтожаемой вещи, в итоге происходит вылет. Лечению не подлежит, сообщать о них бессмысленно.Этот вылет еще со стандартного сталкера.Неужели все так плохо?

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

panzyuza

"Редкость" в данном случае - понятие все же относительное ... Можно неумелыми кодами и их применением и почаще такие вылеты сделать. Можно, понаворочав кучу переповерок и подстраховок, ошибку сделать редкой.

И, странно слышать подобные сетования и удивления спустя пять лет после выхода игры.

Да, считай все так "плохо" ... и, если не устраивает - переписывай движек с его алгоритмами, или же ищи способы свести к минимуму.

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

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

Возможно, ли убрать свет от ламп на статике при помощи all.spawn, то есть источник света удаляется, а освещение вокруг него остается, хочу полностью удалить освещение от ламп. Заранее благодарен.

 

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

И еще одно можете ли привести пример спавна ветряка (ветрогенератор) через all.spawn как в «Истории Прибоя» или «Paradise Lost beta» просмотрел весь all.spawn ИП так и не нашел как заспавнить, если спавнить просто модель вылетает и жалуется на анимацию.

Я правильно понимаю:что бы вывести нож в инвертарь я должен править какой файл xm?

 

Правильно понимаешь. --/Artos

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

 

Добрый день.Скажите пожалуйста как сделать логику что-бы прожектор перемещал свет из одной точки в другую.Как бы просвечал местность. Хотя-бы намекните если можно.Заранее спасибо :)

С каждым днём, всё радостнее жить!

Хм, что-то в игре не замечено прожекторов в автоматикой, чтобы сами "лупоглазиком" шарили по местности ...

Тут иль новую модель делать и крутить "головкою" как вентилятор у Сидоровича иль еще что-то.

Но, если приспичило и наплевать на "реализЬм", то что мешает крутить дирекцию объекту нужного прожектора? Объекты прожекторов вполне доступны и нет-пакетами можно поробовать реализовать "просвечивание".

(это именно намек, т.к. сам не пробовал ...)

 

P.S. Вот как то посоветовать повозиться с классом entity_action не осмелился ;-), у самого больше вопосов, чем ответов. ИМХО, стоило бы в "справочнике" эту тему приподнять и осветить хотя бы на упрощенном прикладном уровне ...

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

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

Прожекторами можно управлять и без нетпакетов. Для этого есть метод command и класс entity_action. Работает это криво, готовой логики в скриптах для этого нет, как нет и приличных примеров.

 

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

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

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

 

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

С каждым днём, всё радостнее жить!

пытался добавить ноовый ствол но получил вот такой вылет

Expression : !lst.empty()

Function : CHudItem::animGet

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

Line : 295

Description : reload

что это значит?

tank, как вариант анимация reload, которая прописана в конфиге, называется по другому, название этой анимации проще всего просмотреть в СДК, ну или открыть худ модель блокнотом и в самом конце поискать названия всех анимаций:)

 

Spezer, ну может через анимацию, но незнаю можно ли ее врубить для прожектора

S.T.A.L.K.E.R 1.004, Народная..Солянка от 19.04.10, дополнение 14.08.10, патч 3.09.10, DMX 1.3.5, Saruman addon 1.1

Vkontakte

Добавление нового транспорта в сталкер

Saruman, прожектору можно сделать анимацию "кручения-верчения" и назвать ее idle, должно работать на 99%(надеюсь :) ).

 

Создал торговаца, прописал продажу оружия, а он берет его в руки. как исправить?

 

Значит ты создал НЕ торговца, а просто сталкера. Перепроверяй. --/Artos

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

Всем привет, все с наступающим праздником.

Возник вопрос. Как выставить проверку на наличие боеприпасов в инвентаре ГГ? Итемная проверка на них не работает, на оружие и все остальное работает, а вот на боеприпасы, гранаты нет. Перепробовал кучу схем, ничего.

Например,

function have_ammo()

return db.actor:object("ammo_5.45x39_fmj") ~= nil

end

Что за бред?

 

Это не бред, а твои банальные ошибки синтаксиса в скрипте. Добавь скобку - и "бред" исчезнет. --/Artos

 

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

Это не бред, а твои банальные ошибки синтаксиса в скрипте. Добавь скобку - и "бред" исчезнет. --/Artos

Да нет. Дело не в этом. Это я здесь ошибся, забыл скобку поставить. Вопрос актуален. Я так понял, боеприпасы и гранаты идут отдельно от всех вещей в игре. Перерыл все моды, нигде подобной проверки не нашел...

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

Roman82, всё прекрасно работает.

Твой способ проверяет наличие у актора патронов, но всё же советую, явно возвращать логическое значение:

if db.actor:object("ammo_5.45x39_ap")~=nil then
    return true
else
    return false
end

Да и понятие "не работает" весьма неоднозначно.

 

P.S. В чистой игре используется проверка на наличие боеприпасов при помощи функции object, так что плохо искал, если искал... ;)

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

Roman82

Ты бы вначале почитал бы вообше материалы по моддингу.

При чем тут что-то "отдельно" от всего? Любой тип/класс предмета/объекта - стоит особняком от других.

Но если у актора есть в инвентаре какой-то предмет, то проверка db.actor:object(section_item) ~= nil работает для ВСЕХ без исключения.

Заменяешь section_item на свои "ammo_5.45x39_fmj" иль "grenade_f1" иль "ammo_vog-25" и все должно получаться.

Если же у тебя не получается - учи матчасть!

 

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

ColR_iT

Строка return db.actor:object("ammo_5.45x39_fmj") ~= nil полностью эквиваленттна твоему варианту, т.к. возвращает только булевы значения в любом случае.

Если же необходимо проверять и db.actor в игре(?), то тогда безопасный код таков:

return (db.actor ~= nil and db.actor:object("ammo_5.45x39_fmj") ~= nil) 

или

if db.actor and db.actor:object("ammo_5.45x39_ap") ~= nil then
    return true
else
    return false
end

 

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

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

Artos

Матчасть я выучил 5 лет назад. :)

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

Диалог -

<dialog id="agroprom_dezerter_about_supply">
        <precondition>agroprom_dialog.have_ammo</precondition>
        <precondition>agroprom_dialog.have_grenade</precondition>
        <precondition>agroprom_dialog.have_1_medkit</precondition>
        <precondition>agroprom_dialog.have_2_tushenka</precondition>
        <precondition>agroprom_dialog.have_2_bread</precondition>
        <dont_has_info>agroprom_dezerter_about_supply_talk_end</dont_has_info>
        <phrase_list>
            <phrase id="0">
                <text>dezerter_about_supply_01</text>
                <next>2</next>
            </phrase>
            <phrase id="2">
                <text>dezerter_about_supply_02</text>
                <next>3</next>
            </phrase>
            <phrase id="3">
                <text>dezerter_about_supply_03</text>
                <next>4</next>
            </phrase>
            <phrase id="4">
                <text>dezerter_about_supply_04</text>
                <next>5</next>
                <next>14</next>
            </phrase>
            <phrase id="5">
                <text>dezerter_about_supply_05</text>
                <next>6</next>
            </phrase>
            <phrase id="6">
                <text>dezerter_about_supply_06</text>
                <next>7</next>
            </phrase>
            <phrase id="7">
                <text>dezerter_about_supply_07</text>
                <next>8</next>
            </phrase>
            <phrase id="8">
                <text>dezerter_about_supply_08</text>
                <next>9</next>
            </phrase>
            <phrase id="9">
                <text>dezerter_about_supply_09</text>
                <next>10</next>
            </phrase>
            <phrase id="10">
                <text>dezerter_about_supply_10</text>
                <next>11</next>
            </phrase>
            <phrase id="11">
                <text>dezerter_about_supply_11</text>
                <next>12</next>
            </phrase>
            <phrase id="12">
                <text>dezerter_about_supply_12</text>
                <next>13</next>
            </phrase>
            <phrase id="13">
                <text>dezerter_about_supply_13</text>
                <give_info>agroprom_dezerter_about_supply_talk_end</give_info>
            </phrase>
            <phrase id="14">
                <text>dezerter_about_supply_14</text>
                <give_info>agroprom_dezerter_about_supply_talk_end</give_info>
            </phrase>
        </phrase_list>
    </dialog>

 

 

Скрипт -

function have_n_items(section,number)
    local actor = db.actor
    if actor then
      local cnt=0
      actor:iterate_inventory(function (dummy, item)
       if item:section()==section then cnt=cnt+1 end
      end, nil)
    return cnt>=number
  end
  return false
end

function have_1_medkit()
  return have_n_items("medkit_army",1)
end

function have_2_tushenka()
  return have_n_items("tushenka",2)
end

function have_2_bread()
  return have_n_items("bread",2)
end

function have_ammo()
return db.actor:object("ammo_5.45x39_fmj") ~= nil
end

function have_grenade()
return db.actor:object("grenade_rgd5") ~=nil
end

 

Пробовал все ваши варианты. Все-равно не работает.

Кстати, в схеме have_n_items тоже не хочет работать. Убираю прекондишены на гранату и боеприпасы, диалог начинает работать. Такие вот дела.

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

Roman82, для проверок патронов и гранат, всё же следовало бы задавать необходимое количество. Твоя функция have_n_items использует второй параметр number, если его не задать, то инициализация пройдёт как nil, а сравнивать число с нил бессмысленно.

Так что либо дописывай количество, либо ставь проверку:

function have_n_items(section,number)
    if number == nil then
        number = 1
    end
    local actor = db.actor
    if actor then
        local cnt=0
        actor:iterate_inventory(function (dummy, item)
                                    if item:section()==section then cnt=cnt+1 end
                                end, nil)
        return cnt>=number
    end
    return false
end

 

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

ColR_iT

Да нет. Этот вариант я тоже пробовал. Ноль. К тому же, при дополнении данной схемы

if number == nil then

number = 1

end

происходит безлоговый вылет. Я уже что только не пробовал. И главное, ни в одном моде я не нашел проверок на боеприпасы. Вот что странно.

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

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

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

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

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

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

Войти

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

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

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