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

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


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

Люди.

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

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

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

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

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

 

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

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

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

Всем привет. У меня вот такой вопрос: хочу адаптировать наёмников 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?

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

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

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

но так как не пользовался 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
Ссылка на комментарий

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

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

 

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

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

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

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

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

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

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

Войти

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

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

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