Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: denis2000, FantomICW  
Модостроение. Общие вопросы и ответы
denis2000Дата: Сб, 15.06.2013, 11:51 | Сообщение # 1
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Помощь тем кто хочет знать больше о игре и модах

Если у вас появились вопросы по модостроению в игре 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]
 
denis2000Дата: Вс, 04.01.2015, 23:20 | Сообщение # 991
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата asd123 ()
p5:links = p6(1) - что означает число в скобках?

Весовой коэффициент, для расчета вероятности выбора следующей точки.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
ElianaДата: Пн, 05.01.2015, 12:23 | Сообщение # 992
Бывалый
Пользователи
Сообщений: 124
Награды: 1
Репутация: [ 9 ]

Приветствую)
Решила я создать маленький квест с участием нпс Квесстодатель мутант кот баюн
В связи с этим возник вопрос
1) Как мне создать мутанта,а не сталкера
2) как создать его на Кордоне
По курсу молодого бойца я научилась создавать Никитку на Затоне Но хочется на Кордоне
 
СахарДата: Пн, 05.01.2015, 13:18 | Сообщение # 993
Гражданский
Пользователи
Сообщений: 2
Награды: 4
Репутация: [ 69 ]

Цитата 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 так всегда как устаревшие параметры убрать так они это не сделали. Зато воздействие аномалий на НПС они вырезали. sad
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 непися.


 
asd123Дата: Пн, 05.01.2015, 23:31 | Сообщение # 994
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
Без правок движка, красиво не получиться.

То есть, это возможно без правок движка. Я так понимаю, должно получиться примерно вот такое: [cut=Полёт на вертолёте + стрельба с него][/cut]


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Пн, 05.01.2015, 23:51
 
roma_ufДата: Вт, 06.01.2015, 12:06 | Сообщение # 995
Гражданский
Пользователи
Сообщений: 17
Награды: 0
Репутация: [ -10 ]

Приветствую. Возможно-ли создать на ЗП костюмы, которые могли защищать от выброса и быть невидимы на определенной дистанции от НПС?
 
denis2000Дата: Вт, 06.01.2015, 16:27 | Сообщение # 996
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата asd123 ()
Я так понимаю, должно получиться примерно вот такое

Да получается примерно такое. Причем видео многого не показывает.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Вт, 06.01.2015, 16:36 | Сообщение # 997
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
Да получается примерно такое. Причем видео многого не показыв

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

Вчера скачал мод Время Альянса, смотрел в логике вертолета, что в него может сесть ГГ. Заметил, что там появляется новая инфопорция: =actor_in_heli. Похоже, придётся копаться во многих скриптах biggrin


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Вт, 06.01.2015, 16:47
 
denis2000Дата: Вт, 06.01.2015, 17:47 | Сообщение # 998
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата 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 ()
Можете показать пример скрипта, или логики, в котором можно будет подобное повторить? Буду сильно-сильно благодарен.

Не могу у меня этого кода нет. А в во Времени Альянса вертолет вроде летает по статичному маршруту, ГГ управляет только целеуказанием.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Вт, 06.01.2015, 17:51 | Сообщение # 999
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
Не могу у меня этого кода нет.

Понятно. Чтож, надеюсь makdm ответит.. В скриптах Времени Альянса часто упоминается его ник нэйм.


У мутантов тоже есть группировки. © Движок X-Ray


 
denis2000Дата: Вт, 06.01.2015, 17:53 | Сообщение # 1000
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

asd123, Да именно он делал вертолет для данного мода и не только его.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
makdmДата: Ср, 07.01.2015, 11:32 | Сообщение # 1001
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

asd123, полёт на вертушке - это всего три функции.

Вертолёту прописываете в логике маршрут, по которому он будет кружить над локацией.

1 функция отвечает за посадку ГГ в вертушку. При этом с худа убираются все индикаторы и устанавливается шлем пилота.
function actor_in_heli

2 функция - контролирует положение ГГ во время полёта.
function actor_fly_mi_24

3 функция убирает лётный шлем и возвращает все индикаторы на худ при высадке ГГ с вертушки
function actor_out_heli

Всё пишется в логике вертушки. Сложного ничего нет. Просто смотрите как сделано и переносите в свой мод.


Терпение......
И все получится!


Сообщение отредактировал makdm - Ср, 07.01.2015, 11:33
 
asd123Дата: Ср, 07.01.2015, 12:00 | Сообщение # 1002
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата makdm ()
переносите в свой мод.

Было бы не честно воровать Ваш труд angel2 Ну, если Вы сами разрешаете, то ладно. Кстати, Время Альянса не смог запустить. Игра жаловалась на то, что не смогла найти DLL файл, хотя я всё скопировал из rar архива.

Добавлено (07.01.2015, 12:00)
---------------------------------------------
makdm, А как насчет стрельбы? Или она уже встроена?


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Ср, 07.01.2015, 12:00
 
makdmДата: Ср, 07.01.2015, 12:27 | Сообщение # 1003
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата asd123 ()
Игра жаловалась на то, что не смогла найти DLL файл

Кроме установки папки gamedata необходимо также установить папку BIN

Цитата asd123 ()
А как насчет стрельбы? Или она уже встроена?

Со стрельбой всё гораздо сложнее. Необходимо править "кучу" скриптов, чтобы вертолёт "видел" врагов.
Попробуйте сами разобраться в файлах heli_fire.script, bind_monster.script, xr_motivator.scfript, bind_physic_object.script,
bind_heli.script
Всё, что я добавлял или менял в скриптах выделено и легко понять, что нужно добавлять.


Терпение......
И все получится!
 
asd123Дата: Чт, 08.01.2015, 06:04 | Сообщение # 1004
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата 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)


Раз никто в Читер-клубе не ответил, спрошу здесь biggrin

Добавлено (08.01.2015, 06:04)
---------------------------------------------
makdm, позаимствовал из Времени Альянса модельку вертолета. Теперь вопрос: Как убрать этих дружбанов из кабины?
[cut=Вы хто? О_о][/cut]


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Ср, 07.01.2015, 20:36
 
makdmДата: Чт, 08.01.2015, 08:01 | Сообщение # 1005
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата asd123 ()
Как убрать этих дружбанов из кабины?

В моде используется 4 модели вертолёта.
Возьмите другую модель вертолёта ми - 24. В ней будет один пилот в шлеме. Вы сядете в вертушку вторым - за стрелка.


Терпение......
И все получится!
 
Поиск: