Модостроение. Общие вопросы и ответы
|
|
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 за это полезное сообщение: |
|
|
CBO6ODA | Дата: Вт, 25.11.2014, 20:06 | Сообщение # 751 |
Отмычка
Пользователи
Сообщений: 30
| sergej5500, Прописал, туда... путь такой scripts\logic_soldier1.ltx
в файле: [cut noguest=Тут текст][logic@esc_b1_commander_1] active = walker@esc_b1_commander_1 suitable = {=check_npc_name(esc_b1_commander_1)} true prior = 300
[walker@esc_b1_commander_1] path_walk = commander_1_walk path_look = commander_1_look gather_items_enabled = false help_wounded_enabled = false corpse_detection_enabled = false meet = meet on_info = {!actor_friend} %=actor_friend%
[meet] use = {!actor_enemy !actor_has_weapon !has_enemy} true, false allow_break = false trade_enable = true [/cut]
Игра не вылетает - однако НПС ГГ враг... И он почему то ходит, хотя наверно из-за ГГ, так как он для ГГ враг..
SGM 2.2 CBO6ODA EDITION - 32% (24.04.2017)
|
|
|
Эти 0 пользователя(ей) поблагодарили CBO6ODA за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 25.11.2014, 20:14 | Сообщение # 752 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| CBO6ODA,
Возможно, что непись не принял свою логику. Попробуй поменять отношение всей группировки killer к ГГ в game_relations. Поставь нейтрала или друга. Непись перестанет обращать на игрока внимание. Если он не будет стремиться занять свое место, тогда он не принял логику.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
makdm | Дата: Вт, 25.11.2014, 20:16 | Сообщение # 753 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата sergej5500 ( ) Изучите спавн нового НПС. Там хорошо написано, как спавнить неписей. sergej5500, с этого и надо было начинать. Я об этом ещё здесь написал
http://sigerous.ru/forum/17-4972-1316719-16-1416749861
Товарищу нужно сначала самому приложить усилие, чтобы понять основы модинга. А ему лень. Вынь да подай всё на блюдечке. Вы так и будете здесь весь мод рисовать?
Устроили тут Ромашка: Помогло - Не помогло. Для таких переговоров есть система Л.С.
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
CBO6ODA | Дата: Вт, 25.11.2014, 22:32 | Сообщение # 754 |
Отмычка
Пользователи
Сообщений: 30
| sergej5500, Извольте, а где этот файл находится ? Добавлено (25.11.2014, 22:32) --------------------------------------------- Так, всё нашел. Всё теперь норм, но вот... НПС не слушает логику, а так-же... ходит Теперь мне он нейтрал, а всё равно ходит, может я что с логикой не правильно делаю ?
SGM 2.2 CBO6ODA EDITION - 32% (24.04.2017)
|
|
|
Эти 0 пользователя(ей) поблагодарили CBO6ODA за это полезное сообщение: |
|
|
suhar_ | Дата: Вт, 25.11.2014, 22:49 | Сообщение # 755 |
Бывалый
Пользователи
Сообщений: 106
| Цитата denis2000 ( ) Решить проблемму этого вылета можно двумя способами Вы так говорите, будто правка движка - это дело пяти минут.. Первый способ очевиден, но нежелателен, т.к. мои бустеры имеют бОльшие физические размеры, нежели аптечки или жратва, и нужно, чтобы в инвентаре они тоже выглядели внушительно. Дело в том, что это не совсем бустеры, а инвентарные комплексы, по типу мешочков денег в SGM. При их использовании в рюкзаке гг появляются некоторые вещи. Т.е. сам предмет не имеет стандартных параметров бустера типа boost_health_restore или eat_satiety. Была мысль изменить класс S_FOOD на какой-нибудь другой (может быть даже ввести свой). Ставлю класс S_PDA, тогда пропадает возможность вызова контекстного меню со строкой "использовать". Можно ли в скриптах прописать классу возможность вызова такого контекстного меню или это тоже в движке зашито? Кстати, в SGM1.7 эта проблема тоже остаётся нерешённой. Некоторые предметы-бустеры имеют класс II_ANTIR, но сути это не меняет, предмет все так же остаётся бустером, который можно перетащить в ячейку быстрого доступа (после чего получить вылет).
з.ы.: Проще говоря, хочется сделать так, чтобы предмет можно было использовать только из рюкзака, вызвав нажатием на него меню со строкой "использовать" без возможности перетаскивания предмета в быстрые ячейки.
Сообщение отредактировал suhar_ - Вт, 25.11.2014, 23:03 |
|
|
Эти 0 пользователя(ей) поблагодарили suhar_ за это полезное сообщение: |
|
|
denis2000 | Дата: Вт, 25.11.2014, 23:02 | Сообщение # 756 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата suhar_ ( ) Вы так говорите, будто правка движка - это дело пяти минут Это вы по особому сочетанию цветов шрифта в моем посте поняли? Так вот я такого не говорил! Цитата suhar_ ( ) Можно ли в скриптах прописать классу возможность вызова такого контекстного меню или это тоже в движке зашито? Да движковые классы зашиты .... барабанная дробь .... в движке. Или вы считаете, что мой пост про два варианта шутка?
"Съедобные" классы (именно у них есть возможность использования в инвентаре): [table][tr][td]Идентификаторы класса[/td][td]Движковый класс[/td][td]Скриптовый класс[/td][/tr][tr][td]S_MEDKI[/td][td]CMedkit[/td][td]obj_medkit_s[/td][/tr][tr][td]S_BANDG[/td][td]CMedkit[/td][td]obj_bandage_s[/td][/tr][tr] [td]S_ANTIR[/td][td]CAntirad[/td][td]obj_antirad_s[/td][/tr][tr][td]S_FOOD[/td][td]CFoodItem[/td][td]obj_food_s[/td][/tr] [tr][td]S_BOTTL[/td][td]CBottleItem[/td][td]obj_bottle_s[/td][/tr][/table]
II_ANTIR - это устаревший идентификатор класса антирада (еще с ТЧ и ЧН) и использовать его можно, но я бы не рекомендовал.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
sergej5500 | Дата: Вт, 25.11.2014, 23:12 | Сообщение # 757 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| Цитата denis2000 ( ) Теперь мне он нейтрал, а всё равно ходит, может я что с логикой не правильно делаю ?
Гадать тут можно бесконечно. Выложите все свои правки и секции, относящиеся к этому НПС.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
suhar_ | Дата: Вт, 25.11.2014, 23:18 | Сообщение # 758 |
Бывалый
Пользователи
Сообщений: 106
| denis2000, в ваших словах улавливается сарказм. Цитата denis2000 ( ) Или вы считаете, что мой пост про два варианта шутка? Не шутка, но грамотно поправить, а потом ещё и скомпилить движковые файлы - для меня задача нерешаемая. Во всяком случае пока. Си владею только на уровне простейших операций.
Вот теперь вы правильно уловили смысл моих слов. Варианта действительно два, но у вас и у меня (как у подавляющего большинства) есть только один. denis2000
|
|
|
Эти 0 пользователя(ей) поблагодарили suhar_ за это полезное сообщение: |
|
|
asd123 | Дата: Ср, 26.11.2014, 02:24 | Сообщение # 759 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Хотелось бы разобрать on_info. Вот у Сидоровича нашел вызов функции при торговле. В ней три строки запускающие разные функции: on_info = {=trading =trade_exchanged} mob_trader@new_trade_exchanged on_info2 = {!trading =trade_exchanged} mob_trader@new_trade_good on_info3 = {!trading !trade_exchanged} mob_trader@new_trade_bad
Теперь вопрос: чем они различаются? То есть: как влияют = и ! ?
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Ср, 26.11.2014, 02:24 |
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
Дизель | Дата: Ср, 26.11.2014, 02:52 | Сообщение # 760 |
Сталкер
Разработчики
Сообщений: 260
| new_trade_bad, new_trade_good, new_trade_exchanged влияют в комплеткте пакета, а так вообще не влияют. Это всего лишь название пакета, контейнера. mob_trader - это скриптовая часть, вызывающая функцию.
andreyholkin
|
|
|
Эти 0 пользователя(ей) поблагодарили Дизель за это полезное сообщение: |
|
|
Сахар | Дата: Ср, 26.11.2014, 03:25 | Сообщение # 761 |
Гражданский
Пользователи
Сообщений: 2
| asd123, Доброго здравия. По поводу твоего вопроса в скобках приписываются проверочные условия, например для перехода на другую схему, запуска скрипта и т.д. Всего существует 2 типа проверки.
[cut=Описание всех проверок + примеры]+ Проверка выдан ли инфопоршень. Пример: on_info = {+tset_info} walker@2 Пояснение: То есть при получений инфопоршня tset_info НПС перейдёт на схему поведения walker@2 - Проверка то что инфопоршень не был выдан. Пример: on_info = {-tset_info} walker@1 = С помощью этого символа проверяются разные скриптовые проверки весь список можно посмотреть xr_conditions.script . Пример: on_info = {=is_day} walker@3 Пояснение: то есть если ты пропишешь эту проверку НПС то он будет днём он прейдёт на схему walker@3. ! Тоже что и = только на, оборот. Пример: on_info = {!is_day} walker@4 Пояснение: Вроде тоже самое, но только НПС перейдёт на схему walker@4 ночью.[/cut]
Сообщение отредактировал Сахар - Ср, 26.11.2014, 06:06 |
|
|
Эти 0 пользователя(ей) поблагодарили Сахар за это полезное сообщение: |
|
|
asd123 | Дата: Ср, 26.11.2014, 14:45 | Сообщение # 762 |
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
| Цитата Сахар ( ) asd123, Доброго здравия. По поводу твоего вопроса в скобках приписываются проверочные условия, например для перехода на другую схему, запуска скрипта и т.д. Всего существует 2 типа проверки. [ Описание всех проверок + примеры ]+ Проверка выдан ли инфопоршень. Пример: on_info = {+tset_info} walker@2 Пояснение: То есть при получений инфопоршня tset_info НПС перейдёт на схему поведения walker@2 - Проверка то что инфопоршень не был выдан. Пример: on_info = {-tset_info} walker@1 = С помощью этого символа проверяются разные скриптовые проверки весь список можно посмотреть xr_conditions.script . Пример: on_info = {=is_day} walker@3 Пояснение: то есть если ты пропишешь эту проверку НПС то он будет днём он прейдёт на схему walker@3. ! Тоже что и = только на, оборот. Пример: on_info = {!is_day} walker@4 Пояснение: Вроде тоже самое, но только НПС перейдёт на схему walker@4 ночью. Большое спасибо. А вот если on_info = %+agr_b2_commander_death%? Какое различие между скобками и процентами?
Ну и еще вопрос: Как сделать бесконечную выдачу работы от работодателей? В ошибках СГМа мне написали что заданий 8, а 8 для меня.. маловато.
У мутантов тоже есть группировки. © Движок X-Ray
Сообщение отредактировал asd123 - Ср, 26.11.2014, 15:09 |
|
|
Эти 0 пользователя(ей) поблагодарили asd123 за это полезное сообщение: |
|
|
sergej5500 | Дата: Ср, 26.11.2014, 17:52 | Сообщение # 763 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| asd123,
Цитата asd123 ( ) Какое различие между скобками и процентами?
В скобках пишут условие, при котором наступает действие. Если написано
on_info = {+test_info_1}, то действие запустится после выдачи инфопорции test_info_1.
Если написана on_info = {=test_info}, то действие запустится, если функция test_info примет значение true. Функция прописывается в xr_conditions.
В процентах пишут исполняемые функции.
Написано on_info = %+test_info%, значит выдается инфопорция. Написано on_info = %=test_info%, значит сработает функция, прописанная в xr_effects
Цитата asd123 ( ) Как сделать бесконечную выдачу работы от работодателей?
Каждый квест прописывается индивидуально. Исключение - квесты Бороды на артефакты. Изучите уроки Геонезиса. Тогда вы сможете прописать работодателям сколько угодно квестов.
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
CBO6ODA | Дата: Ср, 26.11.2014, 19:49 | Сообщение # 764 |
Отмычка
Пользователи
Сообщений: 30
| Помогите найти причину вылета, логов нет.
У меня подозрения на мой первый диалог...
И так: Я добавил в файл st_dialogs_zaton.xml вот этот [cut noguest=Текст] <string id="Mod_RealPasan_give_actor_dialog_0"> <text>Неужели! Я вижу Пулю... Ты у нас в легендах, слушай тут Кастет с тобой поговорить хотел...Я мало чё понял из его разговора....Сходи... к нему...</text> </string> <string id="Mod_RealPasan_actor_dialog_1"> <text>Привет,да было чем прославится...Хорошо пойду поговорю.</text> </string> <string id="Mod_RealPasan_give_actor_dialog_2"> <text>Хорошо, ты ток...Это про меня...слово Кастету замолви, окей?</text> </string> <string id="Mod_RealPasan_actor_dialog_3"> <text>Ладно,бывай.</text> </string>[/cut] Потом добавил в файл: dialogs_zaton.xml этот [cut noguest=Текст]<phrase id="0"> <text>Mod_RealPasan_give_actor_dialog_0</text> <next>1</next> <next>2</next> <next>3</next> </phrase>[/cut]
Сразу скажу, в моддинге я новичёк, найти проблему не могу. Кто поможет жди +1 В репутацию.
SGM 2.2 CBO6ODA EDITION - 32% (24.04.2017)
Сообщение отредактировал CBO6ODA - Ср, 26.11.2014, 19:50 |
|
|
Эти 0 пользователя(ей) поблагодарили CBO6ODA за это полезное сообщение: |
|
|
sergej5500 | Дата: Ср, 26.11.2014, 20:16 | Сообщение # 765 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| CBO6ODA,
Для создания диалогов лучше пользоваться программой DialogEditor. Входит в комплект СДК для ЗП. Теперь по диалогу.
1. Непонятно, кто начинает диалог. Актор или непись. Так как после нулевой фразы разветвление, то предполагаю, что это стартовый диалог НПС.
2. Диалог должен выглядеть примерно так.
[cut=st_dialogs_zaton] <string id="Mod_RealPasan_give_actor_dialog_2"> <text>Неужели! Я вижу Пулю... Ты у нас в легендах, слушай тут Кастет с тобой поговорить хотел...Я мало чё понял из его разговора....Сходи... к нему...</text> </string> <string id="Mod_RealPasan_give_actor_dialog_3"> <text>Привет,да было чем прославится...Хорошо пойду поговорю.</text> </string> <string id="Mod_RealPasan_give_actor_dialog_4"> <text>Хорошо, ты ток...Это про меня...слово Кастету замолви, окей?</text> </string> <string id="Mod_RealPasan_give_actor_dialog_5"> <text>Ладно,бывай.</text> </string>[/cut]
[cut=dialogs_zaton] <dialog id="Mod_RealPasan_give_actor_dialog"> <phrase_list> <phrase id="0"> <text></text> <next>1</next> </phrase> <phrase id="1"> <text></text> <next>2</next> </phrase> <phrase id="2"> <text>Mod_RealPasan_give_actor_dialog_2</text> <next>3</next> <next>4</next> <next>5</next> </phrase> <phrase id="3"> <text>Mod_RealPasan_give_actor_dialog_3</text> </phrase> <phrase id="4"> <text>Mod_RealPasan_give_actor_dialog_4</text> </phrase> <phrase id="5"> <text>Mod_RealPasan_give_actor_dialog_5</text> </phrase> </phrase_list> </dialog>[/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
|