Курс молодого бойца - КМБ. Уроки для начинающих
|
|
tracker | Дата: Вт, 02.11.2010, 09:28 | Сообщение # 1 |
Удаленные
| Курс молодого бойца. Уроки для начинающих *
В этой теме на конкретных примерах (Уроках) разбирается весь процесс создания мода.
Правила работы в теме: Любой пользователь обладающий опытом и знаниями в модостроение, создает урок по определенной теме (отражено в задаче урока), после этого описывает выполнение поставленной задачи в виде отдельного файла и (или) напрямую в своем посте спрятав его под спойлер. В дополнении к уроку желательно выложить содержимое папки gamedata с выполненным уроком, чтобы пользователь скачав его мог проверить правильность выполнения урока самостоятельно. Обсуждение уроков ведется в теме: "Общие вопросы модостроения". Также в данной теме могут быть размещены дополнительные материалы помогающие пользователю освоить все аспекты модостроения.
Будем пытаться не использовать специфические файлы, поэтому можно работать в чистом ЗП, SGM и т.д. **
Не рекомендуется размещать информацию автором которой вы не являетесь, но если она полезна для пользователей сайта указывайте автора. Не рекомендуется размещать информацию доступную на других ресурсах повещенных модостроению - пользователи и так смогут ее найти. Запрещено размещать непроверенную информацию. В любом случае модераторы раздела оставляют за собой право удалить пост с Уроком или Справочной информацией в случае нарушения автором правил данного форума или правил данной темы.
*В любом уроке, вопросы рассмотренные полно в предыдущем уроке, могут быть описаны весьма сжато, поэтому при возникновении вопросов, прежде всего посмотрите предыдущие. ** Если нет специальных пояснений то урок делался на чистом ЗП 1.6002, в противном случае указан мод и версия для которой урок предназначен.
Скрипт показа координат в реальном времени
[cut=Рекомендации по оформлению]1. Заголовок сообщения из которого понятно назначение поста (Урок, Справочная информация или другое) 2. Если это урок то он должен иметь четко обозначенную задачу и желательно иметь ссылку на файл с выполненным уроком, для того чтобы выполняющие его могли скачать и посмотреть выполнение урока на примере. 3. Придерживайтесь устоявшейся цветовой схемы: а) Путь к файлу и (или) имя файла - Зеленый б) Имя параметра, функции и т.п. в файле - Желтый в) Не рекомендуется использовать оранжевый - это цвет комментариев кураторов раздела и к тому же близок к цвету ссылок. 4. Куски кодов и конфигурационных файлов обязательно помещайте в контейнер . 5. Выделение текста изменением размера шрифта, его типом на усмотрение автора, главное не перебарщивать.[/cut]
Тема предназначена только для публикации уроков и справочной информации, вопросы в другой теме! Флуд и оффтоп будет наказан без предупреждения, а пост удалён, что бы там не находилось.
|
|
|
Эти 0 пользователя(ей) поблагодарили tracker за это полезное сообщение: |
|
|
asd123 | Дата: Вт, 26.07.2016, 16:08 | Сообщение # 61 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Дополнение к урокам № 6 и 6а Урок №80 Тема: Диалоги | Заставляем сквады новой группировки радовать Вас местными новостями, подсказывать имена работодателей и рассказывать о местных аномалиях(ну, всё это по Вашей фантазии ) [cut=Все готовы? Выходим. (Внимание! Много слов!)] И так. У нас есть группировка "Падонки"(как-никак, этот урок - дополнение к урокам 6 и 6а ). Весело, добавили группировку, сквады.. Но постойте! Из диалогов с ними мы имеем только "Чем занимаешься?"(если не заблокировали их в travel_manager). Это не дело, верно? Хотим, чтобы они были полезными не только в бою, но и в диалогах! Как исправить? Да легко! Начнём пожалуй с.. о, dialog_manager.script. На самом деле всё очень просто. Для начала мы добавим нашу группировку по анологии с теми, что уже имеются в файле. Находим вот этот "набор слов": Код function init_new_dialog(dialog) local actor_table = { [1] = "job", [2] = "anomalies", --[3] = "place", [3] = "information", } local start_phrase_table = { [1] = "dm_universal_npc_start_0", [2] = "dm_universal_npc_start_1", [3] = "dm_universal_npc_start_2", [4] = "dm_universal_npc_start_3", } local precond_table = { [1] = "dialogs.npc_stalker", [2] = "dialogs.npc_bandit", [3] = "dialogs.npc_freedom", [4] = "dialogs.npc_dolg", }
printf("init_new_actor_dialog") Тут мы видим, какие группировки зарегистрированны для precondition(precond. Эта функция нужна для проверки в начале ветки диалога, чтобы тот мог начаться(однако, это нужно не для всех диалогов) ). Таблицу actor_table мы не трогаем, ибо в ней перечислено, что может спросить ГГ у персонажа(интересно то, что строка с диалогом о местности закомментирован, и даже нет ни одного текстового упоминания с этой строкой. Однако, в том же файле(dialog_manager.script) эта строка сравнивается со строкой anomalies). Чтож, изменим таблицы start_phrase_table и precond_table. Добавим строки по анологии, чтобы получилось вот так:
Код local start_phrase_table = { [1] = "dm_universal_npc_start_0", [2] = "dm_universal_npc_start_1", [3] = "dm_universal_npc_start_2", [4] = "dm_universal_npc_start_3", [5] = "dm_universal_npc_start_4", } local precond_table = { [1] = "dialogs.npc_stalker", [2] = "dialogs.npc_bandit", [3] = "dialogs.npc_freedom", [4] = "dialogs.npc_dolg", [5] = "dialogs.npc_padonki", если помните - вместо padonki можете прописать свою группировку(я пользуюсь основой - уроками 6 и 6а) Обязательно нужно при вписывании новой группировки добавлять "dm_universal_npc_start_...", потому как ниже есть одна проверочка.. Кстати о ней.. Находим(она ниже на 8 строк) for j = 1, 4 do и меняем 4 на 5, потому как мы добавили новые строки. Дальше находим(в том же файле) функцию function uni_dialog_precond(first_speaker, second_speaker) и там видим это:
Код return character_community(npc) == "stalker" or character_community(npc) == "bandit" or character_community(npc) == "freedom" or character_community(npc) == "dolg" Добавим свою группировку ниже. Получится так:
Код return character_community(npc) == "stalker" or character_community(npc) == "bandit" or character_community(npc) == "freedom" or character_community(npc) == "dolg" or character_community(npc) == "padonki"
Хорошо, идём дальше.. Чтобы все группировки из этих списков(а не только сталкеры) могли говорить об аномалиях(или же как эта строка называется в игре "Где можно найти артефакты?") нужно найти и удалить вот эти строки:
Код if str == "anomalies" then script:AddPrecondition("dialogs.npc_stalker") end Чтож, отлично. Можем оставить dialog_manager.script в покое Перейдём к.. dialogs.script(чтобы не лазить туда-сюда по папкам, верно? ) Находим функцию(вроде как она есть в оригинальном файле): Код function npc_army(first_speaker, second_speaker) local npc = who_is_npc(first_speaker, second_speaker) return character_community(npc) == "army" end Копируем её, и вставляем ниже с небольшими изменениями в сторону нашей новой группировки:
Код function npc_padonki(first_speaker, second_speaker) local npc = who_is_npc(first_speaker, second_speaker) return character_community(npc) == "padonki" end Это собственно то, что мы добавляли в таблицу. Наш прикондишн(функция проверяет, что НПС, с которым ведём диалог состоит в нужной группировке, чтобы диалог "Хочу кое о чём у тебя спросить." появился). Отлично, сделали. На этом с "потрошением" папки script - покончено. Переходим к папке misc. Открываем(ну конечно же ) dialog_manager.ltx Видим много всего.. И для начала сразу же добавим в этом списке в списке секции list по анологии с другими по 1 фразе для новой группировки: dm_job_16, dm_anomalies_25 и dm_information_64. Ах да.. если у Вас вылетает при попытке поговорить с одним из бойцов новой группировки, найдите любую секцию dm_hello(а ещё было бы не плохо и dm_help) и допишите к остальным группировкам свою(например npc_community = stalker, padonki). Ну, раз уж я про секции написал, то как вы поняли - нужно добавить новые секции job, anomalies и information. Вот так(в скобках описано что о чём говорит. Это добавлять в файл НЕ НУЖНО): Код [dm_job_16] (из ветви "Кто мог бы предложить работу?" Собственно, точно так же должна именоваться секция с текстом в текстовом файле. category = job (соответствует секции в скобках.) npc_community = padonki (ваша группировка) level = zaton (локация, на которой они будут отсылать вас к работодателю. Можно поставить all) info = -zat_b30_owl_stalker_trader_setup (в данном случае, пока не получен инфопоршень, эта ветка диалога будет появляться. Строку можно удалить, чтобы диалог появлялся всегда)
Код [dm_anomalies_25] (ссылочка на текст) category = anomalies (не трогайте, если соответствует секции) npc_community = padonki (группировка) level = pripyat (локация, на которой встречается диалог) smart = pri_b302 (лично не проверял, но скорее всего говорит о том, что если НПС находится на данном смарте, то диалог может появиться. Иначе никак. Или же это аномалия-смарт, о котором говорится в тексте(dm_anomalies_24 - это информация от НПС об аномалии "Лоза"(ветка между двумя домами с кислотными аномалиями). ) Эту строку тоже можно удалить. ии..
Код [dm_information_64] (текст в текстовом файле) category = information (понятное дело что не менять ) npc_community = padonki (ваша группировочка) level = jupiter (локация диалога. Кстати говоря, можно для информационных секций задавать level = all, чтобы информация была на разных локациях с разных локаций. Так например, можно будет узнать на Затоне об обнаружении НЛО над станцией "Янов") info = +jup_b25_flint_blame_done_to_duty (ну вы поняли. Это можно удалить(хотя тут стоит инфопоршнями манипулировать, чтобы задавать появление информации после определённых событий)
Чтож, и с этим файлом теперь тоже покончено. Дальше мы идём в файл st_dialog_manager.xml. Вписываем наши строки рядом с предыдущими:
Код <string id="dm_information_63"> <text>...</text> текстик долговцев о Флинте в Свободе. Удалил, чтоб место не занимало. </string> <string id="dm_information_64"> (собственно, наша секция из dialog_manager.ltx) <text>Слышал, новая группировка появилась? "Падонки" называется. Ужас.. Ну и названьеце придумали, едрит мадрит!</text> (ну и текст.. не обращайте внимания на мою фантазию) </string> Так же делаем с остальными изменениями:
Код <string id="dm_job_15"> (это оригинал ЗП) <text>Ну, если конкретно бабос нужен - иди к Сычу. Он на «Скадовске» барыгует всем, че пацану нужно - информацией и стволами. То есть, если че интересное в карман лягло - документы какие, или, там, КПК сталкерский - к нему тащи, будет тебе прибуток. Ну и опять, всегда есть маза его за надобности спросить - по личным заказам он вдвойне башляет.</text> </string> <string id="dm_job_16"> (наша секция из менеджера..) <text>Есть один паренёк, Никиткой кличут. Сгоняй к нему, да и спроси у него про работу.</text> (моя текстовая фантазия. Суть поняли? Этот диалог отсылает к работодателю(просто даёт подсказку, но не даёт метку).) </string>
Код <string id="dm_anomalies_24"> (из оригинала ЗП) <text>Про эти места известно немного, в основном, то, что Гарик рассказывал. Говорит, тут есть место, где из кислотной аномалии здоровенный виноград вырос, размером с десятиэтажный дом. Может и привирает, но если нет, то я бы этот виноград на наличие артефактов проверил.</text> </string> <string id="dm_anomalies_25"> (наша новая фраза) <text>Тут аномалия есть, между домами которая.. Похожа на ветки дерева.. Ещё какая-то фиговина мечет туда-сюда. Думаю, там артефакты точно есть.</text> (Прописали, что диалог появляется у персонажей в Припяти? Ну ладно.. Расскажем ГГ о той же аномалии, между домами.) </string> и последнее.. Код <string id="dm_universal_npc_start_3"> <text>Слушаю.</text> </string> <string id="dm_universal_npc_start_4"> (а вот это секция слов от персонажа, которые он ответит после слов ГГ "Хочу кое о чём у тебя спросить.") <text>Спрашивай. Постараюсь ответить.</text> (сами слова. Можете вписать что захотите). ) </string> На этом всё Будут вопросы - пишите в ЛС. Возможно, позже выложу пример создания ветви к диалогу "Подскажи мне насчет одного дела..." (его, кстати говоря, у ваших НПС не будет, ибо он не прописан) [/cut]
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Вт, 26.07.2016, 16:31 |
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
nik19845 | Дата: Пт, 24.07.2020, 22:28 | Сообщение # 62 |
Отмычка
Пользователи
Сообщений: 40
| В отличии от остальных частей Сталкера, Зов Припяти не имеет систему рангов ГГ. Многие вещи из-за этого недоступны. Очень важным является привязка рангов к диалогам разного функционала (Оптовые закупки, Бартер). Ковыряя статистику, пришел к интересной идее. Привязать открытие диалогов к ней. Учет ведется по убитым врагам (можно по аналогии любое привязать). При достижении статистики срабатывает поршень. Пример прописи поршня: <precondition>название скриптового файла.actor_novice</precondition>
Сам фунционал, есть и обратная статистика, которая закрывает диалог при определенном количестве:
[cut]Псевдоранги --новичок function actor_novice() return ((xr_statistic.actor_statistic.killed_stalkers >= 15)) end --опытный function actor_experienced() return ((xr_statistic.actor_statistic.killed_stalkers >= 55)) end --ветеран function actor_veteran() return ((xr_statistic.actor_statistic.killed_stalkers >= 100)) end --мастер function actor_master() return ((xr_statistic.actor_statistic.killed_stalkers >= 200)) end --Обратная проверка, когда не нужно выше статистики --новичок function actor_no_more_novice() return ((xr_statistic.actor_statistic.killed_stalkers < 15)) end --опытный function actor_no_more_experienced() return ((xr_statistic.actor_statistic.killed_stalkers < 55)) end --ветеран function actor_no_more_veteran() return ((xr_statistic.actor_statistic.killed_stalkers < 100)) end[/cut]
Сообщение отредактировал nik19845 - Сб, 25.07.2020, 03:55 |
|
|
Эти 0 пользователя(ей) поблагодарили nik19845 за это полезное сообщение: |
|
|
|