|
Модостроение. Создание и редактирование квестов
|
|
| denis2000 | Дата: Пн, 10.10.2011, 21:25 | Сообщение # 1 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Создание и редактирование квестов Создание новых квестов и редактирование существующих Если у вас появились вопросы по созданию и редактированию квестов, изменению существующих и добавлению новых в игру. Задавайте их в этой теме - умные головы, модосторители и просто разбирающиеся в программировании люди вам ответят.
Много интересного материала здесь (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 по ссылке из шапки и соседнюю тему "Курс молодого бойца", возможно Ваш вопрос уже рассматривался.
Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки. Помните чем подробнее вопрос, тем точнее ответ.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| NIV | Дата: Сб, 07.09.2013, 15:35 | Сообщение # 136 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 167
| denis2000, да, так и есть. Буду искать, в каком из binder:update идет сохранение и восстановление.
Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
|
| |
|
| Эти 0 пользователя(ей) поблагодарили NIV за это полезное сообщение: |
|
|
| denis2000 | Дата: Сб, 07.09.2013, 16:32 | Сообщение # 137 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| NIV, А как собственно ставите метку, что она у вас пропадает?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| NIV | Дата: Сб, 07.09.2013, 16:51 | Сообщение # 138 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 167
| 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 |
| |
|
| Эти 0 пользователя(ей) поблагодарили NIV за это полезное сообщение: |
|
|
| makdm | Дата: Сб, 07.09.2013, 18:22 | Сообщение # 139 |
 Рожденный в СССР
Разработчики
Сообщений: 1294
| NIV, как вывести метки можно посмотреть на примере вызова функции fill_sleep_zones() на апдейте актора - pda.fill_sleep_zones() Ну, а как работает функция посмотрите в файле pda.script и сделайте по аналогии. Туда можно вместо таблицы, где идёт перебор всех спальных мест, вставить проверку на выдачу инфопоршион. При каждой загрузке игры у вас функция будет вызываться, проверяться выдача поршней и устанавливаться метка на объекты. Причём всё это можно сделать внутри функции fill_sleep_zones() Сами id меток можно записать в таблицу, которую сохранять в pstor переменных. Скажу честно, сам не пробовал, но посмотрите, возможно так и решите эту проблему.
Терпение...... И все получится!
Сообщение отредактировал makdm - Сб, 07.09.2013, 18:37 |
| |
|
| Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
| denis2000 | Дата: Сб, 07.09.2013, 18:52 | Сообщение # 140 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| NIV, Пробуй функцию level.map_add_object_spot_ser(id, spot, text), после нее в сейве метки не пропадают.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| 9vova8 | Дата: Вс, 08.09.2013, 12:43 | Сообщение # 141 |
|
Новичок
Пользователи
Сообщений: 91
| Доброго времени суток, у меня вопрос: можно ли в ЗП сделать видимый таймер как в ТЧ на ЧАЭС? Если да, то как?
|
| |
|
| Эти 0 пользователя(ей) поблагодарили 9vova8 за это полезное сообщение: |
|
|
| denis2000 | Дата: Вс, 08.09.2013, 13:33 | Сообщение # 142 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| 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
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| 9vova8 | Дата: Вс, 08.09.2013, 14:06 | Сообщение # 143 |
|
Новичок
Пользователи
Сообщений: 91
| denis2000, спасибо, только вот на экране его нет, а было бы неплохо.
|
| |
|
| Эти 0 пользователя(ей) поблагодарили 9vova8 за это полезное сообщение: |
|
|
| denis2000 | Дата: Вс, 08.09.2013, 15:03 | Сообщение # 144 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| 9vova8, Проверяйте соответствующие теги hud_timer в файлах *.xml. У меня по крайней мере все работает, все текстуры и все конфиги на месте и не закоментарены. Вот в этом посте видео с арены там таймер видно примерно на 12 минуте.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| Volk66 | Дата: Вт, 24.09.2013, 21:17 | Сообщение # 145 |
 Отмычка
Пользователи
Сообщений: 34
| А как убрать старый сюжет чтобы новый сделать?
А форум почитать слабо? Или вам в енцатый раз нужно ответить на этот вопрос? denis2000
|
| |
|
| Эти 0 пользователя(ей) поблагодарили Volk66 за это полезное сообщение: |
|
|
| NIV | Дата: Ср, 25.09.2013, 12:59 | Сообщение # 146 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 167
| Коллеги, как вы считаете, можно ли в ЗП вернуть в ПДА некоторые функции из ПДА ТЧ, а именно: 1) добавить страничку "проваленные задания" (всего-то нарисовать новый элемент GUI) и 2) вернуть таймер на задания, типа "осталось 16 часов до провала"; 3) и др. - "Энциклопедия" и т.п. ? А может, в каком-то моде это уже реализовано? Добавлено (25.09.2013, 12:59) --------------------------------------------- Volk66, здесь, конечно не очень хороший поиск, тогда юзай "расширенный поиск" Яндекса по этому форуму. И всё найдется, например, сообщения 206 - 207.
Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
|
| |
|
| Эти 0 пользователя(ей) поблагодарили NIV за это полезное сообщение: |
|
|
| denis2000 | Дата: Вт, 01.10.2013, 09:13 | Сообщение # 147 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (NIV) Коллеги, как вы считаете, можно ли в ЗП вернуть в ПДА некоторые функции из ПДА ТЧ Теоритически это вполне возможно, есть ли мод с такой реализацией в свободном доступе - не знаю, сам поищи.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
| |
|
| Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
| NIV | Дата: Сб, 05.10.2013, 22:29 | Сообщение # 148 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 167
| Попробовал вместо таймера в ПДА сделать таймер на экране через sr_timer.script. Но поскольку он управляется из рестриктора, получается забавная вещь: уходишь с локации - таймера нет, возвращаешься - таймер продолжает отсчет. А хотелось бы, чтобы и на другой локации таймер продолжался. Как можно считать остаток времени и передать его в качестве параметра рестриктору на новой локации?
Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
|
| |
|
| Эти 0 пользователя(ей) поблагодарили NIV за это полезное сообщение: |
|
|
| FantomICW | Дата: Сб, 05.10.2013, 23:05 | Сообщение # 149 |
 Лидер «Свободы»
Свобода
Сообщений: 4438
| NIV, рекомендую глянуть схему работы армейского таймера в SGM. Там все построено на очень простой форме в XML и скриптами, которые вполне реально разобрать. [cut=XML-форма]Код <!-----[Военный таймер]------> <army_timer_form x="69" y="518" width="281" height="229"> <texture>ui_mod_timer_main_wnd</texture> <btn_start x="93" y="81" width="122" height="23"> <texture_e>ui_button_ordinary_e</texture_e> <texture_t>ui_button_ordinary_t</texture_t> <texture_h>ui_button_ordinary_h</texture_h> <text font="letterica16">st_army_timer_start</text> </btn_start> <btn_stop x="93" y="115" width="122" height="23"> <texture_e>ui_button_ordinary_e</texture_e> <texture_t>ui_button_ordinary_t</texture_t> <texture_h>ui_button_ordinary_h</texture_h> <text font="letterica16">st_army_timer_reset</text> </btn_stop> <btn_close x="93" y="168" width="122" height="23"> <texture_e>ui_button_ordinary_e</texture_e> <texture_t>ui_button_ordinary_t</texture_t> <texture_h>ui_button_ordinary_h</texture_h> <text font="letterica16">st_menu_close</text> </btn_close> <timer_value x="115" y="35" width="220" height="16"> <text r="154" g="205" b="50" a="100" align="c" font="letterica16"></text> </timer_value> </army_timer_form> [/cut] [cut=Скриптовая прорисовка ]Код army_timer_value=0 army_timer_deprive=0 army_timer_active=false class "army_timer" (CUIScriptWnd) function army_timer:__init(owner) super() self.owner = owner self:InitControls() self:InitCallBacks() end function army_timer:__finalize() end function army_timer:InitControls() self:SetWndRect(Frect():set(0,0,1024,768)) local xml = CScriptXmlInit() xml:ParseFile("ui_mod_elements.xml") self.army_timer_form=xml:InitStatic("army_timer_form",self) self:Register(xml:Init3tButton("army_timer_form:btn_start",self.army_timer_form),"btn_start") self:Register(xml:Init3tButton("army_timer_form:btn_close",self.army_timer_form),"btn_close") self:Register(xml:Init3tButton("army_timer_form:btn_stop",self.army_timer_form),"btn_stop") self.timer_value=xml:InitStatic("army_timer_form:timer_value",self.army_timer_form) end function army_timer:Update() CUIScriptWnd.Update(self) if not object_alive(db.actor) then self:btn_close() end if army_timer_active==true then army_timer_value=string.format(math.floor(time_global()/1000))-army_timer_deprive else if army_timer_value>0 then army_timer_value=0 end end self.timer_value:TextControl():SetText(army_timer_value) end function army_timer:InitCallBacks() self:AddCallback("btn_start",ui_events.BUTTON_CLICKED,self.btn_start,self) self:AddCallback("btn_stop",ui_events.BUTTON_CLICKED,self.btn_stop,self) self:AddCallback("btn_close",ui_events.BUTTON_CLICKED,self.btn_close,self) end function army_timer:OnKeyboard(dik,keyboard_action) CUIScriptWnd.OnKeyboard(self,dik,keyboard_action) if keyboard_action == ui_events.WINDOW_KEY_PRESSED then if dik == DIK_keys.DIK_ESCAPE then self:btn_close() end end return true end function army_timer:btn_start() army_timer_active=true army_timer_deprive=string.format(math.floor(time_global()/1000)) end function army_timer:btn_stop() army_timer_active=false end function army_timer:btn_close() give_object_to_actor("army_timer") self:HideDialog() end [/cut]
Сообщение отредактировал FantomICW - Сб, 05.10.2013, 23:07 |
| |
|
| Эти 0 пользователя(ей) поблагодарили FantomICW за это полезное сообщение: |
|
|
| NIV | Дата: Пн, 07.10.2013, 20:24 | Сообщение # 150 |
 Полевой исследователь
Ученые сталкеры
Сообщений: 167
| FantomICW, сам таймер, может быть и не сложный. Сложно все остальное. Сейчас пытаюсь понять идеологию (sgm_loader.script). Там есть менеджер сохранений, менеджер худа и менеджер таймера. И все их надо переносить. Я ничего не упустил?
Изменяем реальность S.T.A.L.K.E.R. CoP: "Цена Новых Исследований" / "New Investigations' Value"
|
| |
|
| Эти 0 пользователя(ей) поблагодарили NIV за это полезное сообщение: |
|
|
|