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

Помощь тем кто хочет знать больше о игре и модах

Если у вас появились вопросы по модостроению в игре 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]
 
dendjdnk2010Дата: Чт, 25.07.2013, 13:33 | Сообщение # 136
Гражданский
Пользователи
Сообщений: 21
Награды: 0
Репутация: [ 0 ]

Ребята, доброго времени суток!
Вопрос такой (Сталкер ТЧ):
Создал локу, на ней только актор, мусор, деревья с травой, почти голая, скомпилил, все хорошо. С ним идет 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
 
denis2000Дата: Чт, 25.07.2013, 13:39 | Сообщение # 137
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (dendjdnk2010)
Description: cannot find clsid for class space_restrictor

Компилятору не известен clsid (идентификатор класса) для объекта класса space_restrictor. Нужно добавить.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dendjdnk2010Дата: Чт, 25.07.2013, 15:52 | Сообщение # 138
Гражданский
Пользователи
Сообщений: 21
Награды: 0
Репутация: [ 0 ]

denis2000,
а как это сделать?

Читайте мануал/readme к используемой программе - там все написано. denis2000

Добавлено (25.07.2013, 15:52)
---------------------------------------------
Не получается.
Я добавил в clsids.ini сет:
SPC_RS_S = space_restrictor .

Ошибка все та же: Description: cannot find clsid for class space_restrictor.

 
denis2000Дата: Чт, 25.07.2013, 17:12 | Сообщение # 139
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата (dendjdnk2010)
а как это сделать?


Правьте в файле scan.pm таблицу section_to_clsid, там нужен пункт:
Код
'space_restrictor' => 'SPC_RS_S',


Очень странно, что эта версия не знает секции space_restrictor, может она вообше не настроена?


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dendjdnk2010Дата: Чт, 25.07.2013, 18:15 | Сообщение # 140
Гражданский
Пользователи
Сообщений: 21
Награды: 0
Репутация: [ 0 ]

denis2000,
Пункт на месте, все есть.

Дело в том, что когда создавал локацию, я туда добавил только актора и все, больше ничего на ней нет. Сейчас я хочу туда добавить телепорт, но он ругается.

Цитата
Очень странно, что эта версия не знает секции space_restrictor, может она вообше не настроена?


А что значит настроить?
 
denis2000Дата: Чт, 25.07.2013, 19:02 | Сообщение # 141
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

dendjdnk2010, А в файле scan.pm таблице clsid_to_class есть пункт:
Код
SPC_RS_S => 'cse_alife_space_restrictor',


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
dendjdnk2010Дата: Пт, 26.07.2013, 15:15 | Сообщение # 142
Гражданский
Пользователи
Сообщений: 21
Награды: 0
Репутация: [ 0 ]

Вставил этот пункт, теперь кидает ошибку:

Description: cannot find clsid for class zone_teleport

Я добавил новый пункт в scan.pm в таблицу clsid_to_class :

Z_MBALD => 'zone_teleport',

все равно, ошибка не исчезла. Может надо как-то по-другому написать пункт.


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

Цитата (dendjdnk2010)
cannot find clsid for class zone_teleport


Вот это я и понимаю "вообще не настроена". Или добавьте все возможные секции и clsid или пользуйтесь другой программой/версией.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
XecatorДата: Сб, 27.07.2013, 09:12 | Сообщение # 144
Отмычка
Пользователи
Сообщений: 31
Награды: 0
Репутация: [ 14 ]

Всем привет.
Небольшая проблема в ЗП.
Создал предмет, при использовании которого выдаётся инфопоршень (при использовании предмета прорабатывается скрипт в 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 изменял. Вылетает.
Что я делаю не так? Помогите, пожалуйста.
 
makdmДата: Сб, 27.07.2013, 14:58 | Сообщение # 145
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

Цитата (Xecator)
создавал такой-же, только id изменял. Вылетает.

Xecator, Ради интереса поменял иконку проводника на 1 клеточную. Правда никаких id не менял.
Всё отлично вставляется в слот и никаких вылетов нет.

Ищите ошибку в секции предмета.



Терпение......
И все получится!
 
XecatorДата: Сб, 27.07.2013, 21:07 | Сообщение # 146
Отмычка
Пользователи
Сообщений: 31
Награды: 0
Репутация: [ 14 ]

makdm, у меня у проводника и так давно уже 1-клеточная иконка, как раз для этого. А проблему нашёл - дело в том, что у моего нового предмета был слишком длинный id, и движку это почему-то не нравилось. Укоротил - и всё работает.

Добавлено (27.07.2013, 21:07)
---------------------------------------------
Можно ли как-нибудь сделать так, чтобы при апгрейде оружия на настильность увеличивался и урон? Попробовал прописывать hit_power = +[сколько-то], не работает, урон меняется только когда прописываешь hit_power = [конкретное число]. Но так не подходит, так как апгрейдов на настильность несколько в ветке, и тогда один будет закрывать другой, они не будут складываться. Можно ли тут что-нибудь придумать?

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

Цитата (Xecator)
Можно ли тут что-нибудь придумать?

Сделать эти апгрейды зависимыми друг от друга и тогда будет возможность наращивать убойную силу с каждым последующим. Ну или движок переделать.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
avn1975Дата: Ср, 07.08.2013, 20:45 | Сообщение # 148
Гражданский
Пользователи
Сообщений: 15
Награды: 0
Репутация: [ 0 ]

Всем привет не подскажите как зделать метку на враждебного НПС для квеста?

Причина редактирования: Нарушение П.4.4. Наказание! прочитайте внимательно правила сайта! больше предупреждений не будет!. orfeich™
 
MrFocusnikДата: Ср, 07.08.2013, 20:51 | Сообщение # 149
Лекарь «Свободы»
Свобода
Сообщений: 391
Награды: 7
Репутация: [ 45 ]

Добрый День, хотел спросить, что мне нужно что бы убрать
[cut noguest=Это (Выделено красными кружками)][/cut]

+каким образом можно удалить/убрать надписи квестов, которые выскакивают по центру с верху

Если не сложно напишите в личку




Сообщение отредактировал MrFocusnik - Ср, 07.08.2013, 20:52
 
sergej5500Дата: Ср, 07.08.2013, 21:56 | Сообщение # 150
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

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]
 
Поиск: