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

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


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

Люди.

Кто знает как добавить вертикальные лесницы?

Возможно ли их добавить без СДК редактора?

Сообщение от модератора n6260
В теме маперов или в теме СДК недавно обсуждали какие-то лестницы.
Ссылка на комментарий

Уважаемые сталкеры, у меня вопрос - чтоб уменьшить степень износа оружия надо параметр condition_shot_dec увеличивать или уменьшать? По броникам тот же вопрос. Характеристики иммунитета самой брони увеличивать или уменьшать?

Сообщение от модератора n6260
А поправить самому и проверить результат в игре? Оружие - значение указывает износ при одном выстреле - следовательно - уменьшая, делаем надежнее. Сравни два файла - например винтореза (200 выстрелов) и АКС-74 (гораздо надежнее ВСС). По броне аналогично - неужели трудно сравнить иммунитеты?

 

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

n6260, Я конечно понимаю твое негодование, но, честно говоря, у меня времени на комп чертовски мало (работа не позволяет), поэтому бывает и задаю довольно простые вопросы.

Железо: AMD Phenom 9550, nVidia GTS 450 1024 Мб, 4 Gb ОЗУ.

Две системы: Windows 7х64 и Windows 8х64

dx11, дрова на все свежайшие (автообновление).

Монитор LG W2052TQ, 1680x1050

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

Всем привет. У меня вот такой вопрос: хочу адаптировать наёмников v0.3 beta (автора не знаю) для народной солянки 2009(Народная Солянка от 14.06 + патч № 0.1 (на 19.06) + ВСЕ ДОПОЛНЕНИЯ СОЛЯНКИ ПО 08.08 + ДОПОЛНЕНИЕ ОТ 10.09 + патч от 17.09 + мод от Monnoroch ( v 1.5.2) + фикс для него). Файлы отредактировал, немного скрипты переделал перепроверил на пять раз и все равно вылазит дурацкий лог:

FATAL ERROR

[error]Expression : no_assert

[error]Function : CXML_IdToIndex<class CCharacterInfo>::GetById

[error]File : e:\stalker\patch_1_0004\xr_3da\xrgame\xml_str_id_loader.h

[error]Line : 112

[error]Description : item not found, id

[error]Arguments :

stack trace:

 

 

Подскажите где и в каком файле находится ошибка и по возможности как её исправить

Заранее спасибо :rolleyes:

Сообщение от модератора n6260
Каждый заспавненный предмет в игре имеет свой "id". У тебя же его нету у чего-то...

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

хочу адаптировать наёмников v0.3 beta (автора не знаю)

Напарники — мод для игры S.T.A.L.K.E.R.

дата: 19 июня 2007 / автор: finn / категория: Патчи и моды

Версия: 0.3

Резюме: Мод, позволяющий сказать дружественно настроенному NPC, чтобы он лечил главного героя во время боя.

Разработчик: BAC9-FLCL Team (Red75)

 

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

А в папке script есть файл, отвечающий за загрузку предметов или персонажей? Или за это отвечает только xr_spawner.spawn?

 

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

А в папке script есть файл, отвечающий за загрузку предметов или персонажей? Или за это отвечает только xr_spawner.spawn?

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

А что за чудо такое? хr_sраwnеr.sраwn??? ХыСпаунер штоль? Это программа. Читай вики, там все подробней не куда...

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

вопрос простой - как получить список вещей в инвентаре непися.

видел не раз в модах такую конструкцию

но так как не пользовался iterate_inventory поэтому непонятно откуда берутся значения для dummy и item

obj:iterate_inventory(function (dummy, item)

local sec = item:section()

end, nil) --и зачем тут вместо переменной передается nil либо иногда что то другое.

как вообще правильно получить лист значений (для вывода в мессидж) состоящий из объектов инвентаря NPC? (уточню - в моем скрипте неписи - клиентские объекты вытащенные из db.storage)

надо ли загонять все инвентарные вещи в таблицу а потом распаковывать ее? через table.concat() (получше unpack'а будет) это не проблема. если надо конечно...

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

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

а вывод просто - пишешь строку с месседжом и все.

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

Monnoroch

дак пример бы подсказал

вот идет у меня скрипт

for k, v in pairs(st) do

local obj = level.object_by_id(k)

if (obj and IsStalker(obj) and obj:id()~=0) then

if obj:position():distance_to_sqr(apos) < 900 then

local dummy = что указать то?

local item=

obj:iterate_inventory(function (dummy, item)

local inv = item:section()

end, obj) --и obj здесь нужен или нет?

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

А какой файл в моде Solinx для ЧН, и Full Realism Mod для ЧН, и Modern Mod v1.1 для ЧН отвечает за спавн денег у мёртвыйх НПС?

 

Хотел бы добавить эту фичу в другой мод и подправить этотй файл тоже.

 

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

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

Вот здесь то что не так?

 

obj:iterate_inventory(function (obj, item)

table.insert(tbl, item:id(), item:section())

--local n = unpack(tbl)

local n = table.concat(tbl,"\n") --обе попытки получить лист значений приводят к вылету

end,obj)

 

Alert

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

 

function lootmoney(npc)
if npc ~= nil then
local npc_rank, deadmoney
npc_rank = ranks.get_obj_rank_name(npc)
if npc_rank == "novice" then 
deadmoney = math.random(25,101) 
elseif npc_rank == "experienced" then 
deadmoney = math.random(25,201)
elseif npc_rank == "veteran" then 
deadmoney = math.random(50,401)
elseif npc_rank == "master" then 
deadmoney = math.random(70,801) 
end
if npc_rank ~= nil then
news_manager.relocate_money(db.actor, "in", deadmoney)
end
local mylootingid = game.translate_string("looting_id")
local news_texti = "%c[255,255,0,0]" .. mylootingid .. " \\n"..npc:character_name()..": $"..game.translate_string(tostring(deadmoney).."RU")
db.actor:give_game_news(news_texti, "ui\\ui_iconsTotal", Frect():set(0,0,83,47), 0, 10000)
db.actor:give_money(deadmoney)
game_stats.money_quest_update(deadmoney) 
end
return
else
return
end
end

 

суть надеюсь понятна - в зависимости от ранга трупа получаем рандомную сумму и через метод give_money передаем ее эктору

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

Ссылка на комментарий
Вот здесь то что не так?

obj:iterate_inventory(function (obj, item)

а то что ты поставил obj туда куда не следует ставить :nono:

local tbl = {}
obj:iterate_inventory(function (tmp, item)
table.insert(tbl, {item:id(), item:section()})
end,obj)

for i, data in ipairs(tbl)
  get_console():execute("load ~~~ id=" .. tostring(data[1]) .. " name="..data[2])
end

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

В данном случае я бы сделал так :)

obj:iterate_inventory(function (tmp, item)

get_console():execute("load ~~~ id=" .. item:id().. " name=".. item:section())

end,obj)

 

Gonarh,

лист значений (для вывода в мессидж)
Изменено пользователем Monnoroch
Ссылка на комментарий

Monnoroch, Gonarh

парни вы конечно скриптеры опытные, но ваши варианты не совсем то:

1. вывод в консоль мне действительно не нужен.

2. мне нужно получить инвентарь всех неписей в онлайне - с выводом данных в мессидж на экран и в текст метки - (что у меня сейчас и происходит с другими данными по сталкерам).

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

в идеале таблица должна выглядеть так:

local tbl= {[id]={[item:id()] = item:section(),[item:id] = item:section() и т.д. каждая вещь в инвентаре одного NPC },[next_id] ={[item:id()] = item:section(),[item:id()] = item:section(), и т.д.} и т.д. }

 

[id] = это одновременно и ключ для будущей итерации и айди конкретного непися - такими образом для каждого NPC создается отдельная таблица, в которой содержатся все его итемсы.

получить список вещей для каждого конкретного непиcя из такой таблицы труда не составляет

local str = table.concat(tbl[k],"\n") --получаем строку(точнее строчки) из всех объектов инвентаря отдельного непися с переносом каждого слова\объекта на новую строку

 

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

и поэтому такое заполнение - table.insert(tbl, k, {[item:id()] = item:section()}) - ничего путного не дает --у меня это вообще никак в игре не проявилось - что странно - хоть бы вылетело что ли - ведь переменная str конкатенировалась к строке с данными

(другие варианты приводили к вылету с логом table contains non-strings)

Так как все таки правильно заполнить таблицу?

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

Garry_Galler, Короче как это делал я.

local items = {}
...
if items[npc:id()] = nil then
items[npc:id()] = {}
end
....
local npc_items = {}
npc:iterate_inventory(function (dummy,item)
if not <исключения> then
npc_items[item:id()] = item:section()
end
end,nil)
npc_items = items[npc:id()]

 

Учти,от сердца отрываю :)

В замен: если не секрет,чем занимаешься?

 

Вывод:

for k,v in pairs(items[npc:id()]) do
функция_сообщения("id = "..k.." ;  section = "..v)
end

 

Другое дело,что такая конструкция нафиг не нужна.

Как совсем уж я делал: я записывал id() только:

вместо
npc_items[item:id()] = item:section()
это:
table.insert(npc_items,item:id())

а уж потом

for k,v in pairs(items[npc:id()]) do
функция_сообщения("id = "..v.." ;  section = "..level.object_by_id(v):section())
end

Надеюсь доступно?

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

Monnoroch

спасибо:-) - позже затестю.

 

делаю обширный скрипт с выводом всей инфы о сталкерах в оналйне - (такое досье на каждого)

помимо инвентаря осталось добавить в мессиджы объекты из памяти NPC - через функции мемори - если конечно получится.

Ссылка на комментарий
Кстати,я так до сих пор и не узнал: что обозначает 1 аргумент tmp который?

Справочник - описание game_object

 

И для кого я тему создавал?

 

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

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

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

 

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

Ребята а вопрос назрел значит, по логике, как переключить анимку нпс при получении поршна?

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

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

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

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

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

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

Войти

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

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

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