Модостроение. Общие вопросы и ответы
|
|
denis2000 | Дата: Сб, 15.06.2013, 11:51 | Сообщение # 1 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Помощь тем кто хочет знать больше о игре и модах Если у вас появились вопросы по модостроению в игре S.T.A.L.K.E.R. Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (wiki), Lua_help.script, Help из SDK 0.7
Сборник модостроения ЗП v10.10.11 (автор: XOBAH): *.CHM, *.HTML [cut noguest=Если у вас не открывается файл CHM]Если у вас не открывается файл: 1. Запустите [Пуск]=>[Выполнить] (либо хот-кей [WIN]+[R]) 2. Введите команду (без кавычек) "regsvr32 %windir%\system32\hhctrl.ocx" 3. Если вылезло окно об успешном завершении вы все сделали правильно и можете перезагружать компьютер (а может и не надо) Также: файлы МОГУТ не открываться если в пути к файлу есть: символы кириллицы, "_", "#" Также: есть не стандартные программы-просмоторщики CHM файлов. Например: FBReader[/cut] [cut=Где найти лог игры после вылета]Что такое LOG ошибки, и как мне его найти? Это система отладки происходивших вылетов, которая подается игрой в форме текста, хотя не всегда. Для того чтоб найти LOG необходимо зайти вот сюда:
В Win хр лог находится:
C:\Documents and Settings\All Users\Документы\S.T.A.L.K.E.R. - Зов Припяти\logs
Затем открываете первый файл в формате TXT, и в нем отбираете с низу 25 строчек. После кидаете эти 25 строчек в сообщение на форум.
В Win7 лог находится C:\Users\Public\Documents\S.T.A.L.K.E.R. - Зов Припяти\logs
Путь к папке с логом можно найти открыв файл fsgame.ltx который находится в корневой директории ЗП, за это отвечает строка: ... $app_data_root$ = true | false| $fs_root$| users\(тут мы указываем что папка пользователя, будет хранится рядом с Fsgame.ltx) ... $logs$ = true| false| $app_data_root$| logs\(а тут мы указываем что в папке пользователя, в подпапке Logs будут храниться наши логи) ... [/cut][cut=Получение более подробной информации о вылете (ХОВАН)] Открываем файл _g.script и ищем такую функцию: function abort(fmt, ...) Там есть заккомментированная строчка "--error_log(reason)", ее и надо расскомментировать, должно получиться вот так: Код function abort(fmt, ...) local reason = string.format(fmt, ...) error_log(reason) end Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией
Первый: Код Expression : !m_error_code Function : raii_guard::~raii_guard File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp Line : 748 Description : ....a.l.k.e.r. - Зов Припяти\gamedata\scripts\_g.script:478: bad argument #2 to 'format' (string expected, got nil) Второй: Код Expression : 0 Function : ErrorLog File : D:\prog_repository\sources\trunk\xrServerEntities\script_engine_script.cpp Line : 49 Description : 'Attempt to read a non-existant string field 'path_walk' in section 'walker@mechanic' [/cut]
Перед тем, как задать вопрос в этой теме, прочтите все предыдущие страницы, статьи в wiki по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
Посты, для которых есть свои категории, из этой темы будут удаляться или перемещаться в соответсвующую тему. Персональных извещений в ЛС о переносе\удалении поста не будет, ищите сами. Учитывайте, что в системах Ucoz тема не обновляется в статистике при переносе поста. Посты, написанные здесь-же после переноса, будут расцениваться как кросспостинг, со всеми вытекающими
[cut noguest=Первый юбилей нашей темы] Здравствуйте господа модостроители, и все так или иначе причастные к этому. Нашей теме исполнился 1 год. От души поздравляю Всех Вас дорогие друзья, творческих успехов. Хочу так же выразить отдельную благодарность denis2000 и ХОВАН. tracker 23.06.11
[/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
denis2000 | Дата: Вс, 04.01.2015, 23:20 | Сообщение # 991 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата asd123 ( ) p5:links = p6(1) - что означает число в скобках? Весовой коэффициент, для расчета вероятности выбора следующей точки.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Eliana | Дата: Пн, 05.01.2015, 12:23 | Сообщение # 992 |
Бывалый
Пользователи
Сообщений: 124
| Приветствую) Решила я создать маленький квест с участием нпс Квесстодатель мутант кот баюн В связи с этим возник вопрос 1) Как мне создать мутанта,а не сталкера 2) как создать его на Кордоне По курсу молодого бойца я научилась создавать Никитку на Затоне Но хочется на Кордоне
|
|
|
Эти 0 пользователя(ей) поблагодарили Eliana за это полезное сообщение: |
|
|
Сахар | Дата: Пн, 05.01.2015, 13:18 | Сообщение # 993 |
Гражданский
Пользователи
Сообщений: 2
| Цитата Eliana ( ) Как мне создать мутанта,а не сталкера В gamedata\configs\creatures\spawn_sections_escape.ltx [cut][zat_b14_stalker_1]:stalker ;id непися или монстра с указанием родительского профиля. В нашем случаи это cat_normal $spawn = "respawn\zat_b14_stalker_1" ;параметр для левел эдитора character_profile = zat_b14_stalker_1 ;профиль непися в character_desc.xml. Для монстров не надо, понятно. spec_rank = regular ;ранг непися в игре не используется. rank = 17 ;ранг непися значением в игре не используется. Вот у GSC так всегда как устаревшие параметры убрать так они это не сделали. Зато воздействие аномалий на НПС они вырезали. community = stalker ;группировка в нашем случаи ненужно story_id = zat_b14_stalker_1 ;sid непися. рекомендуется задавать для эксклюзивов, обрабатываемых скриптами custom_data = scripts\escape\название.ltx ;кастом дата непися. Используется для НПС или монстров, спавнящихся скриптом не под смартом или жмуриков. :)[/cut] Цитата Eliana ( ) как создать его на Кордоне [cut]function spawn_cat() local x= 111.75521087646 -- Координаты по оси Х local y= -3.9362425804138 -- Координаты по оси Y local z= 185.2212677022 -- Координаты по оси Z local level_vertex= 1158851 --Левел вертекс local game_vertex_id= 316 -- Гейм вертекс alife():create("my_stalker",vector():set(x,y,z),level_vertex,game_vertex_id) end [/cut] Вместо my_stalker пишешь id непися.
|
|
|
Эти 0 пользователя(ей) поблагодарили Сахар за это полезное сообщение: |
|
|
asd123 | Дата: Пн, 05.01.2015, 23:31 | Сообщение # 994 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Цитата denis2000 ( ) Без правок движка, красиво не получиться. То есть, это возможно без правок движка. Я так понимаю, должно получиться примерно вот такое: [cut=Полёт на вертолёте + стрельба с него][/cut]
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Пн, 05.01.2015, 23:51 |
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
roma_uf | Дата: Вт, 06.01.2015, 12:06 | Сообщение # 995 |
Гражданский
Пользователи
Сообщений: 17
| Приветствую. Возможно-ли создать на ЗП костюмы, которые могли защищать от выброса и быть невидимы на определенной дистанции от НПС?
|
|
|
Эти 0 пользователя(ей) поблагодарили roma_uf за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 06.01.2015, 16:27 | Сообщение # 996 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата asd123 ( ) Я так понимаю, должно получиться примерно вот такое Да получается примерно такое. Причем видео многого не показывает.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
asd123 | Дата: Вт, 06.01.2015, 16:36 | Сообщение # 997 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Цитата denis2000 ( ) Да получается примерно такое. Причем видео многого не показыв Я готов пойти на такие "жертвы" . На самом деле, я хотел именно того, что в видео. Можете показать пример скрипта, или логики, в котором можно будет подобное повторить? Буду сильно-сильно благодарен.
Вчера скачал мод Время Альянса, смотрел в логике вертолета, что в него может сесть ГГ. Заметил, что там появляется новая инфопорция: =actor_in_heli. Похоже, придётся копаться во многих скриптах
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Вт, 06.01.2015, 16:47 |
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 06.01.2015, 17:47 | Сообщение # 998 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата roma_uf ( ) Возможно-ли создать на ЗП костюмы, которые могли защищать от выброса и быть невидимы на определенной дистанции от НПС? Вот из Сборника модостроителя из шапки темы. [cut=Невидимый костюм]Режим не очень серьёзный. Глаза - глазами, а на слух неписи как собаки, прям! На зверьё прозрачный режим ГГ не действует. Это - пример. Браз что-то сделал, надеюсь лучше, чем у меня.
Создаём пустой файл в \scripts\trans_outfit.script и создаём две функции:
function transparent_gg() --назовём её для памяти - "хулиганы зрения лишают!"
local fov1, range1, id, obj_around, alife_obj, dist_act_npc
if db.actor == nil then
return nil
end
--если ГГ голый
if db.actor:item_in_slot(7) == nil then
fov1 = 150
range1 = 80
--если на ГГ одет костюм новичка
elseif db.actor:item_in_slot(7):section() == "novice_outfit" then
fov1 = 1
range1 = 1
--если на ГГ одет другой броник
else
fov1 = 150
range1 = 80
end
--задача предыдущего куска проанализировать, что надето на ГГ и установить
--соответствующие угол обзора и дальность зрения
--
--дальше перебор ВСЕХ объектов в игре по его id
for id = 1, 65534 do
obj_around = level.object_by_id(id) -- создаём онлайн объект
if obj_around ~= nil and IsStalker(obj_around) then --если есть такой и это сталкер
--создаём серверный объект, соответствующий онлайновому
--сам обескуражен, что не смог определить дистанцию по онлайновому объекту
--ну, наверное, мало рыл
alife_obj = alife():object(id)
if alife_obj then
--определяем дистанцию между ГГ и неписем
dist_act_npc = db.actor:position():distance_to(alife_obj.position)
end
if dist_act_npc <= 120 then --отличаясь огромным человеколюбием я решил не бросать
--в беде ослеплённых сталкеров и восстанавливать им зрение в кольце 120-150 метров.
--ну жалко их, болезных
if obj_around then - проверка обязательна иначе может быть
--вылет при убийстве вражины
obj_around:set_fov(fov1) --портим неписю угол зрения
obj_around:set_range(range1) --портим неписю дальность зрения
end
else
if obj_around then --если непись в кольце 120-150м восстанавливаем зрение
obj_around:set_fov(150)
obj_around:set_range(80)
end
end
end
end
end
--а это стартёр нашей функции "хулиганы зрения лишают!"
--тупой до бесконечности, когда я подоткнулся к таймерам Николая - диалоги начали мелькать.
--но мы ж не таймеры разучиваем. Принцип прост. Вызов ф-ции подтыкаем в апдейт биндера актёра
--и каждый раз наращиваем, предварительно созданную, глобальную переменную на 1 единичку.
--на 50 раз обнуляем глобалку и запускаем "хулиганы зрения лишают!"
function timer_trans()
timer_transparent = timer_transparent + 1
if timer_transparent >= 50 then
timer_transparent = 0
transparent_gg()
end
end
------------------------------------------------------------------------------
Далее открываем файл \scripts\_g.script и внем прописываем свою глобалку:
dev_debug = false
sim_debug = false
mus_vol = 0
amb_vol = 0
timer_transparent = 0 --вот она, родная!
-------------------------------------------------------------------------------
Ну и последний штрих: подключить моторчик, чтобы пятидесятки считались, и "хулиганы
зрения лишают!" запускалась один раз на 50 апдейтов биндера.
Открываем \scripts\bind_stalker.script
ищем функцию апдейта function actor_binder:update(delta)
и так скромненько пристраиваем ей в хвостик свой доморощенный таймер
pda.fill_sleep_zones()
trans_outfit.timer_trans() -- функция из другого файла вызывается с префиксом имяфайла.
-- загрузка мода(постоянное обновление)
if mod_update() then
sgm_loader.sigerous_mod_main()
end
end
-----------------------------------------------
Всё в игре находим/обдираем/покупаем костюм новичка и пробуем инвизибл вар! [/cut]
С костюмом защищающем от выбросов все гораздо проще в скрипте surge_manager.script проверяйте, что одето на ГГ и если надет определенный костюм отключайте воздействия выброса: [cut] Код local h = hit() h.type = hit.telepatic h.power = att h.impulse = 0.0 h.direction = vector():set(0,0,1) h.draftsman = db.actor if(xr_logic.pick_section_from_condlist(get_story_object("actor"), nil, self.survive)=="true") then if(db.actor.health<=h.power) then h.power = db.actor.health - 0.05 if(h.power<0) then h.power = 0 end end end db.actor:hit(h) Код if(xr_logic.pick_section_from_condlist(get_story_object("actor"), nil, self.survive)~="true") then self:kill_all_unhided_after_actor_death() db.actor:kill(db.actor) return else level.add_cam_effector("camera_effects\\surge_02.anm", sleep_cam_eff, false, "surge_manager.surge_callback") level.add_pp_effector("surge_fade.ppe", sleep_fade_pp_eff, false) db.actor.health = db.actor.health-0.05 end [/cut]
Цитата asd123 ( ) Можете показать пример скрипта, или логики, в котором можно будет подобное повторить? Буду сильно-сильно благодарен. Не могу у меня этого кода нет. А в во Времени Альянса вертолет вроде летает по статичному маршруту, ГГ управляет только целеуказанием.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
asd123 | Дата: Вт, 06.01.2015, 17:51 | Сообщение # 999 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Цитата denis2000 ( ) Не могу у меня этого кода нет. Понятно. Чтож, надеюсь makdm ответит.. В скриптах Времени Альянса часто упоминается его ник нэйм.
У мутантов тоже есть группировки. © Движок X-Ray
|
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 06.01.2015, 17:53 | Сообщение # 1000 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| asd123, Да именно он делал вертолет для данного мода и не только его.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
makdm | Дата: Ср, 07.01.2015, 11:32 | Сообщение # 1001 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| asd123, полёт на вертушке - это всего три функции.
Вертолёту прописываете в логике маршрут, по которому он будет кружить над локацией.
1 функция отвечает за посадку ГГ в вертушку. При этом с худа убираются все индикаторы и устанавливается шлем пилота. function actor_in_heli
2 функция - контролирует положение ГГ во время полёта. function actor_fly_mi_24
3 функция убирает лётный шлем и возвращает все индикаторы на худ при высадке ГГ с вертушки function actor_out_heli
Всё пишется в логике вертушки. Сложного ничего нет. Просто смотрите как сделано и переносите в свой мод.
Терпение...... И все получится!
Сообщение отредактировал makdm - Ср, 07.01.2015, 11:33 |
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
asd123 | Дата: Ср, 07.01.2015, 12:00 | Сообщение # 1002 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Цитата makdm ( ) переносите в свой мод. Было бы не честно воровать Ваш труд Ну, если Вы сами разрешаете, то ладно. Кстати, Время Альянса не смог запустить. Игра жаловалась на то, что не смогла найти DLL файл, хотя я всё скопировал из rar архива.
Добавлено (07.01.2015, 12:00) --------------------------------------------- makdm, А как насчет стрельбы? Или она уже встроена?
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Ср, 07.01.2015, 12:00 |
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
makdm | Дата: Ср, 07.01.2015, 12:27 | Сообщение # 1003 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата asd123 ( ) Игра жаловалась на то, что не смогла найти DLL файл Кроме установки папки gamedata необходимо также установить папку BIN
Цитата asd123 ( ) А как насчет стрельбы? Или она уже встроена? Со стрельбой всё гораздо сложнее. Необходимо править "кучу" скриптов, чтобы вертолёт "видел" врагов. Попробуйте сами разобраться в файлах heli_fire.script, bind_monster.script, xr_motivator.scfript, bind_physic_object.script, bind_heli.script Всё, что я добавлял или менял в скриптах выделено и легко понять, что нужно добавлять.
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
asd123 | Дата: Чт, 08.01.2015, 06:04 | Сообщение # 1004 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Цитата makdm ( ) Кроме установки папки gamedata необходимо также установить папку BIN Устанавливал. Я ведь описал, что установил всю gamedata. Всё равно жаловалась и не запускалась.
Добавлено (07.01.2015, 20:35) --------------------------------------------- Добавил в sgm_options.script патроны vog-25 и m203. А еще там до моего изменения были ракеты к РПГ. Почему они не спавнятся после активации чит-режима? Код respawn_item_if_comparison("ammo_og-7b",ammo_types,1) respawn_item_if_comparison("ammo_gauss",ammo_types,2) respawn_item_if_comparison("ammo_pkm_100",ammo_types,3) respawn_item_if_comparison("ammo_dumdum",ammo_types,2) respawn_item_if_comparison("ammo_vog-25",ammo_types,1) respawn_item_if_comparison("ammo_m203",ammo_types,1)
Раз никто в Читер-клубе не ответил, спрошу здесь Добавлено (08.01.2015, 06:04) --------------------------------------------- makdm, позаимствовал из Времени Альянса модельку вертолета. Теперь вопрос: Как убрать этих дружбанов из кабины? [cut=Вы хто? О_о][/cut]
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Ср, 07.01.2015, 20:36 |
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
makdm | Дата: Чт, 08.01.2015, 08:01 | Сообщение # 1005 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата asd123 ( ) Как убрать этих дружбанов из кабины? В моде используется 4 модели вертолёта. Возьмите другую модель вертолёта ми - 24. В ней будет один пилот в шлеме. Вы сядете в вертушку вторым - за стрелка.
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
|