Форум Игромании
 
Регистрация
Справка
Пользователи Календарь Сообщения за день

"Пикник на обочине" Раздел по популярному проекту S.T.A.L.K.E.R.

Ответ
 
Опции темы
Старый 13.04.2007, 21:44   #1
Опытный игрок
 
Аватар для Jesh
 
Регистрация: 19.08.2007
Сообщений: 1,050
Репутация: 145 [+/-]
S.T.A.L.K.E.R. - Создание модов


Мануал по созданию модификаций для начинающих
Часть 1.
Часть 2.

Что необходимо:


Статьи участников:
Скрытый текст:
А
Активация артефактов
В
В Зоне только день
В Зоне только день способ 2
Вывод координат на екран
Выдача Волком оружия
Выдача оружия в ЧН
Д
Добавление транспорта
Динамические диалоги
Добавление новых локаций в ЧН и ЗП
И
Изменение первоначального инвентаря у Меченого(1-й урок читерства)
Имитация намокания дороги во время дождя
К
Как менять ломкость брони
Качание оружия при хотьбе
М
Материал про: активацию артефактов, добавление статей в ПДА, редактирование НПС, создание новой группировки, вычисление координат
Н
Настройка AI Wrapper от bardak'a
Настройка конвертора bardak'a
NPC покупают и продают оружие
Носимый вес
О
Описание Actor.ltx
П
Параметры оружия с описанием
Прорисовка уровня и изменение дистанции видимости
Прототип динамических новостей
Р
Работа с acdc от Bardak-a
Размер раны
Редактирование мультиплеерных карт, для последующего их запуска в сингле
С
Создание механика
Создание уровня для сингла
Создание нового оружия
Создание скриптовых роликов
Создание квеста
Создание нового НПС путём редактрирования all.spawn
Создание HUD модели оружия
Спавн предметов в инвентарь (2-й урок читерства)
Свойства костюмов
Cпавн монстра
Т
Транспорт в игре
У
Уменьшение сытости ГГ


Работы участников:

Разрабатываемые моды:
Скрытый текст:
antdiablon, Минор
Nacek 2


Полезные ссылки

Мод-портал. - Официальная вики по модам для сталкера (Не обновляется)
S.T.A.L.K.E.R. Inside Wiki. - Фанатская вики по модострою для сталкера.

X-Ray SDK. Ныне все вопросы с ним обсуждаются тут.
S.T.A.L.K.E.R. Universal Extractor.


Внимание: если Вы новичок, то сперва ознакомьтесь с мануалом по созданию модификаций для начинающих
При вылетах также прилагайте лог ошибки!!!

Последний раз редактировалось DoctorWagner; 26.02.2023 в 22:25.
Jesh вне форума  
Ответить с цитированием
Старый 20.03.2011, 20:09   #3181
Гейммастер
 
Аватар для Earth2Space
 
Регистрация: 20.01.2009
Адрес: Хабаровск
Сообщений: 11,733
Репутация: 1136 [+/-]
Винtorez, лог дай хоть.
__________________
ASUS ROG Phone
ZTE Axon 7
Nokia Lumia 920
Earth2Space вне форума  
Отправить сообщение для Earth2Space с помощью ICQ Отправить сообщение для Earth2Space с помощью Skype™ Ответить с цитированием
Старый 20.03.2011, 20:33   #3182
Юзер
 
Аватар для Винtorez
 
Регистрация: 29.09.2010
Адрес: У меня дома
Сообщений: 208
Репутация: 20 [+/-]
Earth2Space,вот:

Expression : no_asser
Function : CIni_IdToIndex<1,struct COMMUNITY_DATA,class shared_str,int,class CHARACTER_COMMUNITY>::GetById
File : e:\stalker\patch_1_0004\xr_3da\xrgame\ini_id_loade r.h
Line : 134
Description : item not found, id
Arguments : grex

или

Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engin e.cpp
Line : 73
Description : <no expression>
Arguments : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\death_manager** ***ipt:139: attempt to index field '?' (a nil value)
Винtorez вне форума  
Ответить с цитированием
Старый 20.03.2011, 20:56   #3183
Гейммастер
 
Аватар для Earth2Space
 
Регистрация: 20.01.2009
Адрес: Хабаровск
Сообщений: 11,733
Репутация: 1136 [+/-]
Earth2Space, ты во 2ом пункте намутил. Покажи мне куски файлов с исправлениями твоими.
Апд.: И в 3ем тоже.
__________________
ASUS ROG Phone
ZTE Axon 7
Nokia Lumia 920
Earth2Space вне форума  
Отправить сообщение для Earth2Space с помощью ICQ Отправить сообщение для Earth2Space с помощью Skype™ Ответить с цитированием
Старый 20.03.2011, 21:29   #3184
Юзер
 
Аватар для Винtorez
 
Регистрация: 29.09.2010
Адрес: У меня дома
Сообщений: 208
Репутация: 20 [+/-]
Earth2Space,все получилось создать. Я протестировал, даже убивал нпс новых группировок. Убил штук 6, но потом была ощыбка:
Expression : fatal error
Function : CScriptEngine::lua_error
File : E:\stalker\patch_1_0004\xr_3da\xrGame\script_engin e.cpp
Line : 73
Description : <no expression>
Arguments : LUA error: ...\s.t.a.l.k.e.r\gamedata\scripts\death_manager** ***ipt:135: bad argument #1 to 'pairs' (table expected, got nil)
Винtorez вне форума  
Ответить с цитированием
Старый 20.03.2011, 22:00   #3185
Гейммастер
 
Аватар для Earth2Space
 
Регистрация: 20.01.2009
Адрес: Хабаровск
Сообщений: 11,733
Репутация: 1136 [+/-]
Винtorez, ты опять с уборщиком трупов намутил.
__________________
ASUS ROG Phone
ZTE Axon 7
Nokia Lumia 920
Earth2Space вне форума  
Отправить сообщение для Earth2Space с помощью ICQ Отправить сообщение для Earth2Space с помощью Skype™ Ответить с цитированием
Старый 21.03.2011, 10:35   #3186
Юзер
 
Аватар для Винtorez
 
Регистрация: 29.09.2010
Адрес: У меня дома
Сообщений: 208
Репутация: 20 [+/-]
Earth2Space, а как исправить?
Скрытый текст:

--' Ключем является группировка персонажа. Значением является таблица, содержашая имена секций предметов.
local item_by_community = {}

--' Зависимости в спауне предметов. Предмет спауниться только если есть хотя бы один из зависимых.
local item_dependence = {}

--' Множители и минимаксы для выпадения вещей в зависимости от уровня
local mul_by_level = {}
local count_by_level = {}

--' Предметы, которые нельзя удалять (квестовые например)
local always_keep_item = {}

--' Предметы, относящиеся к патронам. Их надо спаунить другим методом.
local ammo_sections = {}

local death_ini = ini_file("misc\\death_generic.ltx")


function init_drop_settings()
local community_list = { "stalker", "dolg", "freedom", "bandit", "military", "zombied", "ecolog", "killer", "monolith", "arena_enemy", "actor_dolg", "st_dolg ", "st_freedom", "oxotniki", "texniki", "razvedchiki","grex", "cs", "issledovately ", "perebezchiki", "sobirately"}

for k,v in pairs(community_list) do
--' Необходимо заполнить таблицу
item_by_community[v] = {}
if death_ini:section_exist(v) then
local n = death_ini:line_count(v)
local id, value = "", ""
for i=0,n-1 do
result, id, value = death_ini:r_line(v,i,"","")
item_by_community[v][id] = 100*tonumber(value)
end
end
end

--' Заполняем таблицу зависимостей
local n = death_ini:line_count("item_dependence")
local id, value = "", ""
for i=0,n-1 do
result, id, value = death_ini:r_line("item_dependence",i,"","")
item_dependence[id] = {}
local vvv = parse_names(value)
for k,v in pairs(vvv) do
item_dependence[id][v] = true
end
end

--' Множители и минимаксы для выпадения вещей в зависимости от уровня
local level_name = level.name()

if not death_ini:section_exist(level_name) then
level_name = "default"
end

local n = death_ini:line_count(level_name)
local id, value = "", ""
for i=0,n-1 do
result, id, value = death_ini:r_line(level_name,i,"","")
mul_by_level[id] = tonumber(value)
end

local item_count_section = "item_count_" .. level.get_game_difficulty()
local n = death_ini:line_count(item_count_section)
for i=0,n-1 do
result, id, value = death_ini:r_line(item_count_section,i,"","")
--' Нужно распарсить value в два значения
local t = parse_nums(value)
if t[1] == nil then
abort("Error on [death_ini] declaration. Section [%s], line [%s]", item_count_section, tostring(id))
end
local min = t[1]
local max = t[2]
if max == nil then
max = min
end

if mul_by_level[id] == nil then
mul_by_level[id] = 0
end

min = tonumber(min) * mul_by_level[id]
max = tonumber(max) * mul_by_level[id]

count_by_level[id] = {min = min, max = max}
end

--' Предметы, которые нельзя удалять (квестовые например)
local n = death_ini:line_count("keep_items")
for i=0,n-1 do
result, id, value = death_ini:r_line("keep_items",i,"","")
if value == "true" then
always_keep_item[id] = true
end
end

--' Предметы, относящиеся к патронам. Их надо спаунить другим методом.
ammo_sections = {}
local n = death_ini:line_count("ammo_sections")
local id, value = "", ""
for i=0,n-1 do
result, id, value = death_ini:r_line("ammo_sections",i,"","")
ammo_sections[id] = true
end
end



class "drop_manager"
function drop_manager:__init(npc)
self.npc = npc
end
function drop_manager:create_release_item()
--' Спрашиваем у серверного объекта генерились ли предметы
local se_obj = alife()bject(self.npc:id())
if se_obj.death_droped == true then
return
end
se_obj.death_droped = true

--' Запускаем итератор на удаление предметов
self.npc:iterate_inventory(keep_item, self.npc)

--' Проверка на отсутствие спауна лута
local ini = self.npc:spawn_ini()

if ini and ini:section_exist("dont_spawn_loot") then
return
end

--' Доспавниваем необходимое количество итемов:
--' Необходимо составить список объектов которые могут быть заспавнены для персонажа

local spawn_items = item_by_community[self.npc:character_community()]
for k,v in pairs(spawn_items) do
--' По каждому объекту необходимо получить зависимости
if check_item_dependence(self.npc, k) == true then
--' По каждому объекту необходимо получить количество
local number = math.ceil(math.random(count_by_level[k].min, count_by_level[k].max))
--' Необходимо заспавнить нужное количество.
create_items(self.npc, k, number, v)
end
end
end

--' Функция вызывается для каждого предмета, если вернет false то предмет удалится.
function keep_item(npc, item)
local section = item:section()

if section == "bolt" then
return false
end

if always_keep_item[section] == true then
return true
end

local item_id = item:id()
local item_in_slot = npc:item_in_slot(1)
if item_in_slot ~= nil and
item_in_slot:id() == item_id
then
item:unload_magazine()
--' Тут надо уменьшить кондишн оружия
item:set_condition((math.random(15)+75)/100)
return true
end
item_in_slot = npc:item_in_slot(2)
if item_in_slot ~= nil and
item_in_slot:id() == item_id
then
item:unload_magazine()
--' Тут надо уменьшить кондишн оружия
item:set_condition((math.random(15)+75)/100)
return true
end
alife():release(alife()bject(item:id()), true)
end

--' Функция спавнит необходимое число предметов
function create_items(npc, section, number, rnd)
--'printf("create %s of %s", tostring(number), tostring(section))
if ammo_sections[section] == true then
if number > 0 then
se_respawn.create_ammo(section,
npc:position(),
npc:level_vertex_id(),
npc:game_vertex_id(),
npc:id(),
number)
end
else
for i=1,number do
--' Проверяем вероятность появить каждый объект в отдельности
if math.random(100) <= rnd then
alife():create(section,
npc:position(),
npc:level_vertex_id(),
npc:game_vertex_id(),
npc:id())
end
end
end
end


--' Функция проверяет есть ли хоть один из зависимых объектов у персонажа
function check_item_dependence(npc, section)
if item_dependence[section] == nil then
return true
end

local d_flag = true
for k,v in pairs(item_dependence[section]) do
local obj = npcbject(k)
if obj ~= nil and npc:marked_dropped(obj) ~= true then
return true
end
d_flag = false
end

return d_flag
end
Винtorez вне форума  
Ответить с цитированием
Старый 21.03.2011, 17:02   #3187
Гейммастер
 
Аватар для Earth2Space
 
Регистрация: 20.01.2009
Адрес: Хабаровск
Сообщений: 11,733
Репутация: 1136 [+/-]
Цитата:
Сообщение от Винtorez Посмотреть сообщение
Код:
function init_drop_settings()
  local community_list = { "stalker", "dolg", "freedom", "bandit", "military", "zombied", "ecolog", "killer", "monolith", "arena_enemy", "actor_dolg", "st_dolg ", "st_freedom", "oxotniki", "texniki", "razvedchiki","grex", "cs", "issledovately ", "perebezchiki", "sobirately"}
Ты пробелы понаставлял и убрал где ненадо. Должно так быть:
Код:
function init_drop_settings()
  local community_list = { "stalker", "dolg", "freedom", "bandit", "military", "zombied", "ecolog", "killer", "monolith", "arena_enemy", "actor_dolg", "st_dolg ", "st_freedom", "oxotniki", "texniki", "razvedchiki", "grex", "cs", "issledovately", "perebezchiki", "sobirately" }
Т.е. запятая-пробел-кавычка-название-кавычка-запятая-пробел...
__________________
ASUS ROG Phone
ZTE Axon 7
Nokia Lumia 920
Earth2Space вне форума  
Отправить сообщение для Earth2Space с помощью ICQ Отправить сообщение для Earth2Space с помощью Skype™ Ответить с цитированием
Старый 22.03.2011, 11:32   #3188
Юзер
 
Аватар для Винtorez
 
Регистрация: 29.09.2010
Адрес: У меня дома
Сообщений: 208
Репутация: 20 [+/-]
Earth2Space,спасибо. А ти случаем не знаеш какие нужны файлы для динамических новостей, я нашел в АМК скрипты:
1.amk_death_lists
2.amk_names_lists
3.amk_news_lists
4.amk_uniq_news_lists
Винtorez вне форума  
Ответить с цитированием
Старый 22.03.2011, 12:07   #3189
Гейммастер
 
Аватар для Earth2Space
 
Регистрация: 20.01.2009
Адрес: Хабаровск
Сообщений: 11,733
Репутация: 1136 [+/-]
Винtorez, ну есть же статья по созданию динамических новостей! Я этим никогда не знамался.
__________________
ASUS ROG Phone
ZTE Axon 7
Nokia Lumia 920
Earth2Space вне форума  
Отправить сообщение для Earth2Space с помощью ICQ Отправить сообщение для Earth2Space с помощью Skype™ Ответить с цитированием
Старый 22.03.2011, 13:40   #3190
Игрок
 
Аватар для venom9875
 
Регистрация: 07.03.2009
Адрес: Галактика Млечный Путь
Сообщений: 615
Репутация: 169 [+/-]
Ребята, прошу помощи. Решил создать свою сборку из других модов - наковырял файлов с динамическими новостями из АМК, прописал кое-что в xr_motivator.sсript (решил просто добавить недостающие строки из АМК, поскольку просто скопировать не вышло бы - стоит адаптированный под 5-й патч АИ-пак), несколько гулагов на Кордон, Темную Долину, вообще симуляцию жизни (уход\переход сталкеров в оффлайн\онлайн), схему выброса, сон... так что теперь ошибка:

bind_stalker.sсript... attempt to index field AddToMotivator.

Смотрел сам bind_stalker.sсript и xr_motivator.sсript - ничего такого не обнаружил ошибочного, проверял на синтаксические ошибки с помощью LuaChecker...

В Долгу не останусь.
__________________
Кому вообще какая разница, что думают другие, а? Загляните в свое сердце и делайте то, что поможет стать вам счастливее.

Роберт Келсо
venom9875 вне форума  
Отправить сообщение для venom9875 с помощью ICQ Ответить с цитированием
Старый 23.03.2011, 21:26   #3191
Новичок
 
Регистрация: 17.02.2011
Сообщений: 6
Репутация: 1 [+/-]
Помогите поставить звук на ур-нь чтобы играл в определенном месте. Я поставил звук через Sound Source в СДК, уменьшил вроде бы радиус, но звук слышен на всей карте
Mizyro вне форума  
Ответить с цитированием
Старый 24.03.2011, 11:19   #3192
Игрок
 
Аватар для Троян
 
Регистрация: 02.10.2007
Адрес: C:\Windows\system32
Сообщений: 795
Репутация: 197 [+/-]
Кто нибудь дайте ссылку на самый новый SDK для ЗП(0.7 что ли, или какой там)
__________________
Болельщик лондонского ФК "Челси".
Троян вне форума  
Ответить с цитированием
Старый 24.03.2011, 11:30   #3193
Гейммастер
 
Аватар для Earth2Space
 
Регистрация: 20.01.2009
Адрес: Хабаровск
Сообщений: 11,733
Репутация: 1136 [+/-]
Троян, тебе для ЗП или 0.7?)))хД Вот на ЗП: http://www.amk-team.ru/forum/index.p...c=10742&st=340 , там рядом и на ТЧ (0.7) есть.
__________________
ASUS ROG Phone
ZTE Axon 7
Nokia Lumia 920
Earth2Space вне форума  
Отправить сообщение для Earth2Space с помощью ICQ Отправить сообщение для Earth2Space с помощью Skype™ Ответить с цитированием
Старый 24.03.2011, 20:15   #3194
Юзер
 
Аватар для An7on
 
Регистрация: 05.07.2010
Адрес: Донецк
Сообщений: 115
Репутация: 112 [+/-]
Возникла проблема.
Установил Complete mod(для ТЧ),
Пообщавшись с барменом можно вступить в Долг(или в другую группировку), но я хочю оставить всю сюжетную линию, диалоги, оригинальными, каки файлы отвечают за эти действия?
An7on вне форума  
Ответить с цитированием
Старый 24.03.2011, 20:49   #3195
Юзер
 
Аватар для FlackS
 
Регистрация: 06.10.2007
Адрес: Ростов-Батюшка
Сообщений: 445
Репутация: 48 [+/-]
An7on, Не совсем понял что ты хочешь сделать. Как я понимаю, мод не делает ничего, пока не вступишь в долг?
__________________
the things I have to take
Jesus it never ends
it works it's way inside
if the pain goes on...

http://vkontakte.ru/club2213402
http://vkontakte.ru/club7001079
Добавляйтесь)
FlackS вне форума  
Отправить сообщение для FlackS с помощью ICQ Ответить с цитированием
Старый 24.03.2011, 20:53   #3196
Новичок
 
Аватар для russtalker
 
Регистрация: 27.12.2010
Адрес: ---
Сообщений: 56
Репутация: 16 [+/-]
Если не ошибаюсь то gamedata\config\gameplay\character_desc_bar.xml
russtalker вне форума  
Ответить с цитированием
Старый 24.03.2011, 21:46   #3197
Юзер
 
Аватар для An7on
 
Регистрация: 05.07.2010
Адрес: Донецк
Сообщений: 115
Репутация: 112 [+/-]
russtalker, посли удаления файла игра вылетает.
FlackS, После установки Complete mod(он похож на AMK-mod только сюжет почти не трогает), там есть модификация - поговорив с Барменом можно вступить в любую группировку, но я хочю отключить ее и все остальные которые изменяют сюжет или диалоги, какие файлы нужно изменить или удалить?
An7on вне форума  
Ответить с цитированием
Старый 25.03.2011, 00:21   #3198
Юзер
 
Аватар для FlackS
 
Регистрация: 06.10.2007
Адрес: Ростов-Батюшка
Сообщений: 445
Репутация: 48 [+/-]
An7on, руссталкер тебе правильно написал, но нужно не удалить, а изменить этот файл так, чтобы у бармена просто не было этого диалога на вступление. Просто если создан какой-то диалог, то он должен быть прописан у конкретного персонажа в "character_desc_****". Достаточно удалить ссылку на диалог и его просто не будет.
Если я правильно тебя понял...
__________________
the things I have to take
Jesus it never ends
it works it's way inside
if the pain goes on...

http://vkontakte.ru/club2213402
http://vkontakte.ru/club7001079
Добавляйтесь)
FlackS вне форума  
Отправить сообщение для FlackS с помощью ICQ Ответить с цитированием
Старый 25.03.2011, 00:48   #3199
Юзер
 
Аватар для An7on
 
Регистрация: 05.07.2010
Адрес: Донецк
Сообщений: 115
Репутация: 112 [+/-]
FlackS,
Да все уже разобрался...
An7on вне форума  
Ответить с цитированием
Старый 25.03.2011, 06:07   #3200
Игрок
 
Аватар для MBM98
 
Регистрация: 14.07.2010
Адрес: Между складками Логвинова
Сообщений: 890
Репутация: 100 [+/-]
Подскажите, пожалуйста: я заспаунил через скрипт трех новых НПС на одном из чердаков в деревне на Кордоне. Прописал все как надо: в spawn_questions.ltx, в npc_profile.xml и в character_desc_escape.xml, поставил функцию на спаун в escape_dialogs*****ipt, вставил название функции в инфопоршень (по убийству стрелка). Потом я включил игру, проверить. Сначала нпс были на чердаке, а потом захотели походить, и оказались возле бункера Сидора. Вопрос: Как можно сделать так чтобы мои НПС не двигались? Но только так чтобы не через АЛЛ.СПАВН а через скрипты.
__________________
Ice blue silver sky
Fades into grey
To a grey hope that omens to be
Starless and bible black
MBM98 вне форума  
Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 13:13.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Rambler's Top100 Яндекс цитирования