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

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


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

Значит ли это что привязки к spawn_id нет ? Стало быть и в оллспавне без разницы какие числа там стоят. Или эта привязка может быть запрятана ещё каким либо хитроумным скриптерским способом ? Если не сложно приведите пожалуйста пару таких примеров.

Скорее всего такой привязки нет. Ею наелись еще во времена АМК.

На всякий случай сделай поиск не по "alife():create(", а по ":create(", чтобы обработать случай:

local a = alife()
a:create(...
  • Спасибо 1

@abramcumner, ну если глянуть в сторону оберток, то твой ответ тоже не раскрывает всей сути, в амк есть обертка spawn_item и иже с ней, тогда надо делать поиск и по этим функциям, причем не только по созданию, но и по удалению, как выше заметил Денис. Это причем я еще не знаю какие есть подобные обертки в дочерних модах, а тем более в каком-нибудь ОП-2.

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

Безотносительно модов и почему у Дениса нашлись вызовы, а у BFG нет. Теория была правильной: проверить вызовы alife():create(. Вызывается ли она с одним параметром типа alife():create(11016) или вызывается с набором секция, координаты, лв, гв. Это будет видно и в функциях типа spawn_item.

Изменено пользователем abramcumner
  • Спасибо 1
Да ну ?

Денис, если я говорю что НЕТ, значит НЕТ. Проверил. НЕТ числовых id-привязок в скриптах. Вычистили всё. Полностью. Значит так.

На всякий случай сделай поиск

Тоже нет.

в амк есть обертка spawn_item
Пожалуйста приведи простой пример, если не трудно, с использованием данной "обёртки".
Изменено пользователем BFG

"Кругом зомби.....у меня кончаются патроны...."

@BFG, пример прост - spawn_item(number), но скорее всего таких случаев не будет, так как это обертка видно что была только под секцию и координаты, но я более чем уверен что таких случаев не встретится. Упомянул к тому, что в солянках могли в глобальное пространство добавить похожие функции и там уже могут дела обстоять иначе, но я коды солянки не изучал, мне ни к чему.

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

Подскажите, пожалуйста, такую вещь.
Рассматривал файл _g.script, в конце файла нашёл такое:

ammo_section = {}
ammo_section["ammo_9x18_fmj"]=true
ammo_section["ammo_9x18_pbp"]=true
ammo_section["ammo_9x18_pmm"]=true
ammo_section["ammo_9x19_fmj"]=true
ammo_section["ammo_9x19_pbp"]=true
ammo_section["ammo_5.45x39_fmj"]=true
ammo_section["ammo_5.45x39_ap"]=true
ammo_section["ammo_5.56x45_ss190"]=true
ammo_section["ammo_5.56x45_ap"]=true
ammo_section["ammo_5.7x28_fmj"]=true
ammo_section["ammo_5.7x28_ap"]=true
ammo_section["ammo_7.62x54_7h1"]=true
ammo_section["ammo_7.62x54_ap"]=true
ammo_section["ammo_7.62x54_7h14"]=true
ammo_section["ammo_9x39_pab9"]=true
ammo_section["ammo_gauss"]=true
ammo_section["ammo_9x39_ap"]=true
ammo_section["ammo_9x39_sp5"]=true
ну и т.д. идут оставшиеся патроны

Эта конструкция (массив или таблица: что это?) вообще читается игрой? Просто я не знаю, как определить, задействована ли функция в игре или нет.
Также ниже есть такая же конструкция, но в ней указаны квестовые предметы.

 

 

и секцию с координатами.

А это еще почему?

Ну написал я alife():create("medkit", ля-ля-тополя где хочу там спавню) - кому и где от этого плохо?

 

 

 

массив или таблица: что это?

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

 

 

вообще читается игрой?

Ну раз она находится в _g.script И не под комментарием, то очевидно да.

 

 

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

А причем тут функции, если это таблица :)

Как вариант, можно взять на вооружение Total Commander, вбить в поиск название искомой таблицы/функции/чего-то еще, и поискать в папке скриптов.

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил.

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

Определись конкретнее: тебе надо изменить отношение этих "красных военных" ко всем остальным, или просто сделать сюжетный запрет на агрессию, как, к примеру, у Кузнецова с его группой солдат под мостом на Кордоне ?

Именно! Запрет на агрессию

 

 

Подскажите, пожалуйста, такую вещь. Рассматривал файл _g.script, в конце файла нашёл такое:

Если будешь вводить в игру новый патрон - прописка его в _g.script обязательна. В противном случае будет вылет. Сам столкнулся с этим.


 

 

Именно! Запрет на агрессию

Смотри, как это сделано в оригинале с Кузнецовым под мостом на Кордоне. Там ничего сложного нету.

Сталкер - наше всё!

@AndrewMor, а что насчёт таблицы с квестовыми предметами? Я вроде как новый ввёл, в таблицу не добавлял, вылета не было.

 

 

По правильному в функции alife():create не должно быть вообще лв/гв - это внутренности системы навигации. Должны быть только координаты. А лв/гв пусть эта самая система навигации и считает, если они ей нужны.

Хм, а ничего, что одни и те-же координаты могут быть на куче разных локаций ? Как бы все не спорили, а реальность есть такова, что имея только координаты заспавнить объект не получится - по любому нужен gv, который определяет целевую локацию.


 

 

а что насчёт таблицы с квестовыми предметами? Я вроде как новый ввёл, в таблицу не добавлял, вылета не было.

Таблица "quest_section" в игре используется в единственном месте:

function relocate_item_section(victim, section, type)
if db.actor and victim then
if type == "in" then
-- Трансферить нужно только квестовые предметы --
if quest_section[section] == true and victim:object(section) ~= nil then
victim:transfer_item(victim:object(section), db.actor)
else
-- остальные - спаунить в инвентарь актеру --
alife():create(section, db.actor:position(), db.actor:level_vertex_id(), db.actor:game_vertex_id(), db.actor:id())
end
elseif type == "out" then
db.actor:transfer_item(db.actor:object(section), victim)
end
news_manager.relocate_item(db.actor, type, section)
end
end

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

Извините, если не в эту тему написал, но по-моему этому вопросу место именно здесь.
В общем, получил вылет. Вылет происходит при убийстве NPC (новичок у костра из деревни, стрелял прямо в голову):
 

[error]Expression    : fatal error
[error]Function      : CScriptEngine::lua_error
[error]File          : E:\stalker\sources\trunk\xr_3da\xrGame\script_engine.cpp
[error]Line          : 73
[error]Description   : <no expression>
[error]Arguments     : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\death_manager.script:139: attempt to index field '?' (a nil value)

Весь прикол в том, что указанный в логе файл я не трогал ВООБЩЕ (я его даже сравнил с файлом из "чистой" gamedata - полностью совпадает). Не подскажете, в чём дело. Накануне только 2 новых ранга ввёл. Но вряд ли это как-то связано.

Vadyanchikus, патчи проверь, сидишь на 4 а файл от 6, или наоборот.

@Карлан, сижу на 6-ом + недавнее (ну как недавнее) обновление из-за закрытия серверов GameSpy.

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

@Карлан, @abramcumner, @UnLoaded, вся дискуссия про спавн и координаты перенесена в «Курилку программистов».

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

Свои работы и совместные проекты: Инструмент, OGSM CS, Final Stroke, HARDWARMOD

Полезное: модули Артоса, XML парсер

 

 

указанный в логе файл я не трогал ВООБЩЕ

А его не обязательно трогать.

Достаточно потрогать что-то, обращающееся к этому скрипту. Частенько такое бывает - привыкнешь))

   УРАГАН.png

                 Краткий гид по моду Тайные Тропы 2

                                      ПАРТИКЛЫ TERRA

 

 

 

@_Val_, судя по всему, так и есть. И чё делать-то? Ошибку я всё равно не найду. Неужто сносить скрипты и ставить чистые?

Накануне только 2 новых ранга ввёл. Но вряд ли это как-то связано.

А чего гадать ? Открой death_manager.script и гляди в районе 139 строки - че ему надо.

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

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

ТЧ 1.0006 + НС

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

цепляем подствол с поддержкой ВОГ 25 и ВОГ 25п

делаю активным подствол , заряжаю ВОГ 25п (update_packet.ammo_type=1)

деактивирую подствол (update_packet.ammo_type=1)

сейв/лоад

делаю активным подствол , в подстволе ВОГ 25 (update_packet.ammo_type=0)

если делать сейв лоад с активным подстволом - тип гранаты (соответственно update packet сохраняется)

Сталкивался кто либо с подобным? виноват биндер или конфиг ствола?

Благодарю за информацию!

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

 

 

Если будешь вводить в игру новый патрон - прописка его в _g.script обязательна. В противном случае будет вылет. Сам столкнулся с этим.

А почему у меня не вылетает? :)

Бывший мододел на X-Ray / Начинающий игродел на Unreal Engine / Мимокрокодил.

Я понял что моя старая подпись что-то нарушает. Удалил все ссылки.

А почему у меня не вылетает? :)

Наверное , у Вас эта таблица заменена на универсальную функцию :) типа такой:

function ammo_section(section)
	return system_ini():r_string(section, "class") == "AMMO"
end

Ну или еще один вариант - Вы используете metatable c __index с функцией подобной выше выше.

Третий вариант - Вы используете конфиг для загрузки в этот массив... :):ph34r:

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

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

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

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

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

Войти

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

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

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