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

Создание и редактирование квестов

Создание новых квестов и редактирование существующих

Если у вас появились вопросы по созданию и редактированию квестов, изменению существующих и добавлению новых в игру. Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (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)", ее и надо расскомментировать, должно получиться вот так:
Code
function abort(fmt, ...)
                       local reason = string.format(fmt, ...)
                       error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Code
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)

Второй:
Code
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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Сб, 24.08.2013, 19:50 | Сообщение # 136
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

SpiderMen,
Для начала скачайте и изучите учебник Геонезиса.
 
NIVДата: Чт, 05.09.2013, 19:59 | Сообщение # 137
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

Здравствуйте! Возник вопрос по меткам на задания. Как сделать перескакивающую метку при обновлении задания - это мне понятно.
1) А можно ли в одном задании выдать две метки одновременно, target то ведь один? И тогда - одно задание - одна метка? Например, в оригинале для установки сканеров у ПЫСов выдаётся 3 задания.
2) Вроде бы тип метки задается параметром storyline = true / false. Можно ли сменить стандартную метку на другую из файла configs\ui\map_spots.xml?
3) Если я поставил метку на какой-нибудь объект функцией, то при перезагрузке эта метка исчезает. Как сделать, чтобы она сохранялась? Что дописать и где (в bind_stalker. actor_binder:save(packet) и actor_binder:load(reader) )?


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
 
denis2000Дата: Чт, 05.09.2013, 21:50 | Сообщение # 138
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

1. Вроде можно задать несколько целей, попробуйте.
2. Да это два вида меток, сюжетное и не сюжетное задание. Можно изменить вид метки для всех заданий quest_pointer вроде.
3. Нужно сохранять состояние метки в нетпакете объекта (только не в пакете актора!!!), для этого придется редактировать много файлов для всех типов объектов на которых может стоять метка. Или просто апдейтить состояние метки на выбранных объектах через периодически вызываемые функции скриптов binder:update.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Сб, 07.09.2013, 12:30 | Сообщение # 139
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

denis2000,
Цитата (denis2000)
Или просто апдейтить состояние метки на выбранных объектах через периодически вызываемые функции скриптов binder:update.
Может быть, вписать сюда: bind_stalker.actor_binder:info_callback ?
Сама функция пустая

P.S. Кажется, так и есть. Посмотрел в ТЧ, там было
Код
function actor_binder:info_callback(npc, info_id)
  printf("*INFO*: npc='%s' id='%s'", npc:name(), info_id)
  --' Сюжет
  level_tasks.proceed(self.object)
  -- Отметки на карте
  level_tasks.process_info_portion(info_id)
end


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"

Сообщение отредактировал NIV - Сб, 07.09.2013, 12:52
 
denis2000Дата: Сб, 07.09.2013, 15:10 | Сообщение # 140
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

NIV, bind_stalker.actor_binder:info_callback - это колбек на выдачу ГГ инфопорции! А в ТЧ из этого колбека вызывается апдейт заданий и меток этих заданий (то есть собственно установка или перенос, но не сохранение и восстановление)

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Сб, 07.09.2013, 15:35 | Сообщение # 141
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

denis2000, да, так и есть. Буду искать, в каком из binder:update идет сохранение и восстановление.

Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
 
denis2000Дата: Сб, 07.09.2013, 16:32 | Сообщение # 142
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

NIV, А как собственно ставите метку, что она у вас пропадает?

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
NIVДата: Сб, 07.09.2013, 16:51 | Сообщение # 143
Полевой исследователь
Ученые сталкеры
Сообщений: 167
Награды: 4
Репутация: [ 180 ]

denis2000, сейчас переделал через колл-бэк на инфопоршни, командой
level.map_add_object_spot(obj_id, "crlc_small", "text")
Пропадает метка при загрузке сейва. А если не загружаться, тогда есть.


Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"

Сообщение отредактировал NIV - Сб, 07.09.2013, 16:51
 
makdmДата: Сб, 07.09.2013, 18:22 | Сообщение # 144
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

NIV, как вывести метки можно посмотреть на примере вызова функции fill_sleep_zones() на апдейте актора - pda.fill_sleep_zones()
Ну, а как работает функция посмотрите в файле pda.script и сделайте по аналогии. Туда можно вместо таблицы, где идёт перебор всех спальных мест, вставить проверку на выдачу инфопоршион.
При каждой загрузке игры у вас функция будет вызываться, проверяться выдача поршней и устанавливаться метка на объекты.
Причём всё это можно сделать внутри функции fill_sleep_zones()
Сами id меток можно записать в таблицу, которую сохранять в pstor переменных.
Скажу честно, сам не пробовал, но посмотрите, возможно так и решите эту проблему.


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


Сообщение отредактировал makdm - Сб, 07.09.2013, 18:37
 
denis2000Дата: Сб, 07.09.2013, 18:52 | Сообщение # 145
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

NIV, Пробуй функцию level.map_add_object_spot_ser(id, spot, text), после нее в сейве метки не пропадают.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
9vova8Дата: Вс, 08.09.2013, 12:43 | Сообщение # 146
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

Доброго времени суток, у меня вопрос: можно ли в ЗП сделать видимый таймер как в ТЧ на ЧАЭС? Если да, то как?

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

9vova8, Конечно, только в стиле ЧН (не знаю отличается ли от ТЧ и чем):
Код
[logic]
active = sr_idle@wait

[sr_idle@wait]
on_info  = {+Инфопорция запуска таймера} sr_timer@1

[sr_timer@1]
type = dec ; Тип таймера - на уменьшение
start_value = 600000 ;Стартовое значение таймера в мс
on_value = 0 | sr_idle@wait %+Время таймера истекло%
on_info = {+Отмена таймера} sr_idle@wait


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
9vova8Дата: Вс, 08.09.2013, 14:06 | Сообщение # 148
Новичок
Пользователи
Сообщений: 91
Награды: 2
Репутация: [ 6 ]

denis2000, спасибо, только вот на экране его нет, а было бы неплохо.

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

9vova8, Проверяйте соответствующие теги hud_timer в файлах *.xml. У меня по крайней мере все работает, все текстуры и все конфиги на месте и не закоментарены. Вот в этом посте видео с арены там таймер видно примерно на 12 минуте.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Volk66Дата: Вт, 24.09.2013, 21:17 | Сообщение # 150
Отмычка
Пользователи
Сообщений: 34
Награды: 0
Репутация: [ -24 ]

А как убрать старый сюжет чтобы новый сделать?

А форум почитать слабо? Или вам в енцатый раз нужно ответить на этот вопрос? denis2000
 
Поиск: