Модостроение. Общие вопросы и ответы
|
|
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 за это полезное сообщение: |
|
|
dendjdnk2010 | Дата: Чт, 25.07.2013, 13:33 | Сообщение # 136 |
Гражданский
Пользователи
Сообщений: 21
| Ребята, доброго времени суток! Вопрос такой (Сталкер ТЧ): Создал локу, на ней только актор, мусор, деревья с травой, почти голая, скомпилил, все хорошо. С ним идет all.spawn. Начал делать урок по созданию телепорта Урок9. Когда распаковал all.spawn, то там лежали файлы : alife, all и section2. Я по уроку добавил секции, и создал отдельно файл way, которого не было. Содержимое файлов: [cut noguest=Содержимое alife_terr_fin3.ltx] [0]
; cse_abstract properties section_name = climable_object name = clmbl#0 position = -108.259414672852, -0.974719047546387, -66.5460968017578 direction = 0.23450979590416, -0.03410255163908, 1.7377096414566 id = 65535 version = 118 script_version = 6 spawn_id = 0
; cse_alife_object properties game_vertex_id = 0 level_vertex_id = 99908 object_flags = 0xffffffbf
; cse_shape properties shapes = 1 shape_0:type = box shape_0:axis_x = 1.61000061035156,0,0 shape_0:axis_y = 0,0.518585205078125,0 shape_0:axis_z = 0,0,0.00787734985351563 shape_0:offset = 0,0,0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[1]
; cse_abstract properties section_name = climable_object name = clmbl#1 position = -108.598098754883, -2.5601863861084, -73.3677978515625 direction = -0.232187181711197, 3.09417653083801, -1.74088048934937 id = 65535 version = 118 script_version = 6 spawn_id = 1
; cse_alife_object properties game_vertex_id = 0 level_vertex_id = 99908 object_flags = 0xffffffbf
; cse_shape properties shapes = 1 shape_0:type = box shape_0:axis_x = 1.60995388031006,0,0 shape_0:axis_y = 0,0.518505096435547,0 shape_0:axis_z = 0,0,0.00124740600585938 shape_0:offset = 0,0,0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[2]
; cse_abstract properties section_name = actor name = level_prefix_actor position = 96.6579208374023, 0.038212776184082, 44.9444808959961 direction = 0, 1.4940003156662, 0 id = 65535 s_flags = 0x29 version = 118 script_version = 6 spawn_id = 2
; cse_alife_object properties game_vertex_id = 2 distance = 16.799999 level_vertex_id = 94740 object_flags = 0xffffffbf custom_data = <<END
[game_info] END
; cse_visual properties visual_name = actors\hero\stalker_novice
; cse_alife_creature_abstract properties g_team = 0 g_squad = 0 g_group = 0 dynamic_out_restrictions = dynamic_in_restrictions =
; cse_alife_trader_abstract properties money = 40 trader_flags = 0 character_profile = default
; cse_ph_skeleton properties
; cse_alife_creature_actor properties upd:health = 1 upd:timestamp = 0x20 upd:creature_flags = 0x50 upd:position = 96.6579208374023, 0.038212776184082, 44.9444808959961 upd:o_torso = 1.4940003156662, 0, 0 upd:actor_state = 0x5720 upd:actor_accel = 0, 0, 0 upd:actor_velocity = 0, 0, 0 upd:actor_weapon = 176
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[3] ; cse_abstract properties section_name = space_restrictor name = tf3_sh_1_teleport position = 66.112,-0.0008,39.318 direction = 0,0,0 id = 65535 version = 118 script_version = 6 spawn_id = 3
; cse_alife_object properties game_vertex_id = 5 distance = 0 level_vertex_id = 83192 object_flags = 0xffffff3e custom_data = <<END [logic] cfg = scripts\tp\tf3_sh_1_teleport.ltx END ; ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 4.24460601806641 ; ; cse_alife_space_restrictor properties restrictor_type = 3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[4] ;visual ; cse_abstract properties section_name = zone_teleport name = tf3_b20_teleport_horiz position = 66.112,-0.0008,39.318 direction = 0,0,0 id = 65535 version = 118 script_version = 6 spawn_id = 4
; ; cse_alife_object properties game_vertex_id = 5 distance = 49 level_vertex_id = 83192 object_flags = 0xffffff3e ; ; cse_shape properties shapes = shape0 shape0:type = sphere shape0:offset = 0,0,0 shape0:radius = 5.5254921913147 ; ; cse_alife_space_restrictor properties restrictor_type = 3 ; ; cse_alife_custom_zone properties max_power = 0 ; ; cse_alife_anomalous_zone properties offline_interactive_radius = 30 artefact_spawn_count = 32 artefact_position_offset = 0x1ac0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; [/cut]
[cut noguest=Содержимое all.ltx] [header] ; don't touch these graph_version = 8 guid = bdc173958095d0429f02bb05db036ab9 graph_guid = 48cafc693ca1464289d063a0733eef08 level_count = 1 flags = 16
[alife] source_files = <<END alife_terr_fin_3.ltx END
[way] source_files = <<END way_terr_fin_3.ltx END
[section2] binary_files = section2.bin
[/cut]
[cut noguest=Содержимое way_terr_fin_3] [zat_sh_1_teleport_walk] points = p0 p0:name = wp00 p0:position = -52.595,-0.0099,3.4078 p0:game_vertex_id = 4 p0:level_vertex_id = 31922
[zat_sh_1_teleport_look] points = p0 p0:name = wp00 p0:position = -0.735,-0.014,0.239 p0:game_vertex_id = 4 p0:level_vertex_id = 54852
[/cut]
Когда пакую, то вылетает такая ошибка:
[cut noguest=Содержимое ошибки] Universal ACDC v.1.32 importing alife objects... importing alife objects from file alife_terr_fin_3.ltx...
FATAL ERROR! Function: stkutils::scan::get_class Line: 1916 Description: cannot find clsid for class space_restrictor [/cut]
Подскажите пожалуйста, в чем проблема, и как её исправить.
Добавлено (25.07.2013, 13:33) --------------------------------------------- Файлы, которые надо запаковать: Файлы для запаковки
Сообщение отредактировал dendjdnk2010 - Чт, 25.07.2013, 13:36 |
|
|
Эти 0 пользователя(ей) поблагодарили dendjdnk2010 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 25.07.2013, 13:39 | Сообщение # 137 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (dendjdnk2010) Description: cannot find clsid for class space_restrictor Компилятору не известен clsid (идентификатор класса) для объекта класса space_restrictor. Нужно добавить.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
dendjdnk2010 | Дата: Чт, 25.07.2013, 15:52 | Сообщение # 138 |
Гражданский
Пользователи
Сообщений: 21
| denis2000, а как это сделать?
Читайте мануал/readme к используемой программе - там все написано. denis2000Добавлено (25.07.2013, 15:52) --------------------------------------------- Не получается. Я добавил в clsids.ini сет: SPC_RS_S = space_restrictor .
Ошибка все та же: Description: cannot find clsid for class space_restrictor.
|
|
|
Эти 0 пользователя(ей) поблагодарили dendjdnk2010 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 25.07.2013, 17:12 | Сообщение # 139 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (dendjdnk2010) а как это сделать?
Правьте в файле scan.pm таблицу section_to_clsid, там нужен пункт: Код 'space_restrictor' => 'SPC_RS_S',
Очень странно, что эта версия не знает секции space_restrictor, может она вообше не настроена?
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
dendjdnk2010 | Дата: Чт, 25.07.2013, 18:15 | Сообщение # 140 |
Гражданский
Пользователи
Сообщений: 21
| denis2000, Пункт на месте, все есть.
Дело в том, что когда создавал локацию, я туда добавил только актора и все, больше ничего на ней нет. Сейчас я хочу туда добавить телепорт, но он ругается.
Цитата Очень странно, что эта версия не знает секции space_restrictor, может она вообше не настроена?
А что значит настроить?
|
|
|
Эти 0 пользователя(ей) поблагодарили dendjdnk2010 за это полезное сообщение: |
|
|
denis2000 | Дата: Чт, 25.07.2013, 19:02 | Сообщение # 141 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| dendjdnk2010, А в файле scan.pm таблице clsid_to_class есть пункт: Код SPC_RS_S => 'cse_alife_space_restrictor',
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
dendjdnk2010 | Дата: Пт, 26.07.2013, 15:15 | Сообщение # 142 |
Гражданский
Пользователи
Сообщений: 21
| Вставил этот пункт, теперь кидает ошибку:
Description: cannot find clsid for class zone_teleport
Я добавил новый пункт в scan.pm в таблицу clsid_to_class :
Z_MBALD => 'zone_teleport',
все равно, ошибка не исчезла. Может надо как-то по-другому написать пункт.
Сообщение отредактировал dendjdnk2010 - Пт, 26.07.2013, 15:17 |
|
|
Эти 0 пользователя(ей) поблагодарили dendjdnk2010 за это полезное сообщение: |
|
|
denis2000 | Дата: Пт, 26.07.2013, 20:35 | Сообщение # 143 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (dendjdnk2010) cannot find clsid for class zone_teleport
Вот это я и понимаю "вообще не настроена". Или добавьте все возможные секции и clsid или пользуйтесь другой программой/версией.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
Xecator | Дата: Сб, 27.07.2013, 09:12 | Сообщение # 144 |
Отмычка
Пользователи
Сообщений: 31
| Всем привет. Небольшая проблема в ЗП. Создал предмет, при использовании которого выдаётся инфопоршень (при использовании предмета прорабатывается скрипт в sgm_callbacks, по типу уже существующей флешки из квеста), а при повторном использовании отключается этот же инфопоршень. Всё работает, но вот не задача - в быстрый слот предмет не поставить, а хотелось бы, используется часто. При попытке вылетает игра с логом: [cut=Лог]Expression : error handler is invoked! Function : invalid_parameter_handler File : D:\prog_repository\sources\trunk\xrCore\xrDebugNew.cpp Line : 815 Description :[/cut] Иконка на одну клетку. Тип предмета - identity_immunities (лежит в sgm_devices.ltx, по типу gps-проводника сделал). Пробовал сделать device_pda (как та же флешка) - то же самое. Пробовал уж совсем крайность: gps-проводник спокойно в слот залазит, создавал такой-же, только id изменял. Вылетает. Что я делаю не так? Помогите, пожалуйста.
|
|
|
Эти 0 пользователя(ей) поблагодарили Xecator за это полезное сообщение: |
|
|
makdm | Дата: Сб, 27.07.2013, 14:58 | Сообщение # 145 |
Рожденный в СССР
Разработчики
Сообщений: 1294
| Цитата (Xecator) создавал такой-же, только id изменял. Вылетает. Xecator, Ради интереса поменял иконку проводника на 1 клеточную. Правда никаких id не менял. Всё отлично вставляется в слот и никаких вылетов нет.
Ищите ошибку в секции предмета.
Терпение...... И все получится!
|
|
|
Эти 0 пользователя(ей) поблагодарили makdm за это полезное сообщение: |
|
|
Xecator | Дата: Сб, 27.07.2013, 21:07 | Сообщение # 146 |
Отмычка
Пользователи
Сообщений: 31
| makdm, у меня у проводника и так давно уже 1-клеточная иконка, как раз для этого. А проблему нашёл - дело в том, что у моего нового предмета был слишком длинный id, и движку это почему-то не нравилось. Укоротил - и всё работает. Добавлено (27.07.2013, 21:07) --------------------------------------------- Можно ли как-нибудь сделать так, чтобы при апгрейде оружия на настильность увеличивался и урон? Попробовал прописывать hit_power = +[сколько-то], не работает, урон меняется только когда прописываешь hit_power = [конкретное число]. Но так не подходит, так как апгрейдов на настильность несколько в ветке, и тогда один будет закрывать другой, они не будут складываться. Можно ли тут что-нибудь придумать?
|
|
|
Эти 0 пользователя(ей) поблагодарили Xecator за это полезное сообщение: |
|
|
denis2000 | Дата: Сб, 27.07.2013, 21:33 | Сообщение # 147 |
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
| Цитата (Xecator) Можно ли тут что-нибудь придумать? Сделать эти апгрейды зависимыми друг от друга и тогда будет возможность наращивать убойную силу с каждым последующим. Ну или движок переделать.
"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..." (Чугунный всадник)
|
|
|
Эти 0 пользователя(ей) поблагодарили denis2000 за это полезное сообщение: |
|
|
avn1975 | Дата: Ср, 07.08.2013, 20:45 | Сообщение # 148 |
Гражданский
Пользователи
Сообщений: 15
| Всем привет не подскажите как зделать метку на враждебного НПС для квеста?
Причина редактирования: Нарушение П.4.4. Наказание! прочитайте внимательно правила сайта! больше предупреждений не будет!. orfeich™
|
|
|
Эти 0 пользователя(ей) поблагодарили avn1975 за это полезное сообщение: |
|
|
MrFocusnik | Дата: Ср, 07.08.2013, 20:51 | Сообщение # 149 |
Лекарь «Свободы»
Свобода
Сообщений: 391
| Добрый День, хотел спросить, что мне нужно что бы убрать [cut noguest=Это (Выделено красными кружками)][/cut]
+каким образом можно удалить/убрать надписи квестов, которые выскакивают по центру с верху
Если не сложно напишите в личку
Сообщение отредактировал MrFocusnik - Ср, 07.08.2013, 20:52 |
|
|
Эти 0 пользователя(ей) поблагодарили MrFocusnik за это полезное сообщение: |
|
|
sergej5500 | Дата: Ср, 07.08.2013, 21:56 | Сообщение # 150 |
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
| avn1975, Квестовая метка задается в строке target в секции квеста. В этой строке прописан story_id квестового предмета или объекта. Соответственно, чтобы на НПС можно было повесить отметку, в его спавн-секции должен быть story_id. Пример: [cut=Касилов из СГМ][pri_army_kasilov]:quest_stalker_medium $spawn = "respawn\pri_army_kasilov" character_profile = pri_army_kasilov spec_rank = master community = army story_id = pri_army_kasilov corpse_money = 1200 can_be_wounded = false custom_data = scripts\SGM\pripyat\pri_army_kasilov.ltx[/cut]
[cut=Квест на Касилова][sgm_pri_necessary_kill_kasilov] icon = ui_inGame2_Necessary_Kill_Kasilov prior = 6 storyline = false title = {+pri_necessary_kill_kasilov_in_zone +pri_necessary_kill_kasilov_kill =pri_has_kasilov_pda} pri_necessary_kill_kasilov_title3,{+pri_necessary_kill_kasilov_in_zone +pri_necessary_kill_kasilov_kill !pri_has_kasilov_pda} pri_necessary_kill_kasilov_title2,{+pri_necessary_kill_kasilov_in_zone -pri_necessary_kill_kasilov_kill +pri_army_kasilov_hit} pri_necessary_kill_kasilov_title4,{+pri_necessary_kill_kasilov_in_zone -pri_necessary_kill_kasilov_kill -pri_army_kasilov_hit} pri_necessary_kill_kasilov_title1,{-pri_necessary_kill_kasilov_in_zone} pri_necessary_kill_kasilov_title0 descr = {+pri_necessary_kill_kasilov_in_zone +pri_necessary_kill_kasilov_kill =pri_has_kasilov_pda} pri_necessary_kill_kasilov_text3,{+pri_necessary_kill_kasilov_in_zone +pri_necessary_kill_kasilov_kill !pri_has_kasilov_pda} pri_necessary_kill_kasilov_text2,{+pri_necessary_kill_kasilov_in_zone -pri_necessary_kill_kasilov_kill +pri_army_kasilov_hit} pri_necessary_kill_kasilov_text4,{+pri_necessary_kill_kasilov_in_zone -pri_necessary_kill_kasilov_kill -pri_army_kasilov_hit} pri_necessary_kill_kasilov_text1,{-pri_necessary_kill_kasilov_in_zone} pri_necessary_kill_kasilov_text0 target = {+pri_necessary_kill_kasilov_in_zone +pri_necessary_kill_kasilov_kill =pri_has_kasilov_pda} pri_monolit_base_leader,{+pri_necessary_kill_kasilov_in_zone +pri_necessary_kill_kasilov_kill !pri_has_kasilov_pda} pri_army_kasilov,{+pri_necessary_kill_kasilov_in_zone -pri_necessary_kill_kasilov_kill} pri_army_kasilov,{-pri_necessary_kill_kasilov_in_zone} pri_army_chasovoy condlist_0 = {+pri_necessary_kill_kasilov_reward} complete condlist_1 = {=sid_thinks_actor_is_enemy(pri_monolit_base_leader)} fail condlist_2 = {=sid_is_dead(pri_monolit_base_leader)} fail condlist_3 = {+pri_necessary_kill_kasilov_fail} fail on_fail = %+pri_necessary_kill_kasilov_fail% on_complete = %=add_actor_rank(10) =inc_faction_goodwill_to_actor(monolith:200) =increase_counter(stat_kvestov)%[/cut]
|
|
|
Эти 0 пользователя(ей) поблагодарили sergej5500 за это полезное сообщение: |
|
|
|