Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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]
 
asd123Дата: Вт, 23.12.2014, 13:03 | Сообщение # 886
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата sergej5500 ()
Судя по логу, вероятна ошибка в скрипте. Выложите свои правки.

Только вертолет в alife_agroprom добавил.. Вот:
Код
[11838]

; cse_abstract properties
section_name = helicopter
name = agr_heli_1    
position = -131.696075439453, 10.9820022583008, 43.781810760498
direction = 0, 0, 0
version = 128
script_version = 12

; cse_alife_object properties
game_vertex_id = 1501
distance = 0
level_vertex_id = 55710
object_flags = 0xffffffb2
custom_data = <<END
[story_object]    
story_id = agr_heli_1
[logic]    
cfg = scripts\agroprom\helicopters\stalker_heli.ltx    
END

; cse_visual properties
visual_name = dynamics\vehicles\mi24\veh_mi24_u_02

; cse_motion properties

; cse_ph_skeleton properties
skeleton_name = idle    

; cse_alife_helicopter properties
cse_alife_helicopter__unk1_sz = idle    
engine_sound = vehicles\helicopter\helicopter


Добавлено (23.12.2014, 13:03)
---------------------------------------------
Как сделать smart_cover анимацию для персонажа? Как у меня на аватарке например. Имею ввиду: что именно вписывать в alife


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Вт, 23.12.2014, 13:04
 
sergej5500Дата: Вт, 23.12.2014, 13:35 | Сообщение # 887
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

asd123,

Вертолет вполне обычный. Если он спавнится над поверхностью земли, то проблем быть не должно.

Что написано в логике вертолета?
 
asd123Дата: Вт, 23.12.2014, 19:35 | Сообщение # 888
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата sergej5500 ()
Что написано в логике вертолета?

Код
[logic]  
active = heli_move@idle  

[heli_move@idle]  
path_move = agr_heli_move  
path_look = agr_heli_look  
engine_sound = true  
max_velocity = 100
combat_use_rocket = true  
combat_use_mgun = true  
rocket_delay = 3000  
combat_safe_altitude = -50  
mute = false

Добавлено (23.12.2014, 15:11)
---------------------------------------------

Цитата sergej5500 ()
Если он спавнится над поверхностью земли, то проблем быть не должно.

Странно.. кажется, Вы сами писали, что вертолет нужно спавнить за локацией. biggrin

Добавлено (23.12.2014, 19:35)
---------------------------------------------
Подскажите.. Можно ли создавать smart_cover`ы на локациях? Видел такую возможность в видео обучалке по СДК, но будет ли такое возможно через распакованный all.spawn? И, можно ли ковер делать стартовой анимацией?


У мутантов тоже есть группировки. © Движок X-Ray


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

asd123, Частично касается этого вопроса КМБ Урок 18, для продвинутых есть КМБ Урок 60...

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Вт, 23.12.2014, 23:45 | Сообщение # 890
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
Частично касается этого вопроса КМБ Урок 18, для продвинутых есть КМБ Урок 60...

А можете ли Вы мне объяснить: Вертолет можно спавнить не за локацией, или нет? К примеру: Над блокпостом Кордона

Добавлено (23.12.2014, 23:45)
---------------------------------------------
Вновь создал вертолет в alife, но all.spawn опять не хочет запаковываться. Вот такую ошибку выдает постоянно:
Код
Died at stkutils/ini_file.pm line 52, <GEN12> line 47961.

Я тут подумал: А может в номере секции проблема? Просто, в alife_agroprom последний объект это укрытие от выброса. Оно имеет номер 11837, а мой вертолет имеет номер 16154. Этот номер вписал потому что 16153 есть в alife_marsh, а 54 соответственно нет.


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Вт, 23.12.2014, 23:49
 
denis2000Дата: Вт, 23.12.2014, 23:53 | Сообщение # 891
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата asd123 ()
Вертолет можно спавнить не за локацией, или нет? К примеру: Над блокпостом Кордона

Можно, конечно.

Цитата asd123 ()
А может в номере секции проблема?

Ид секции может быть любое целое число (вроде до 2^64), главное чтобы уникальное.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Вт, 23.12.2014, 23:59 | Сообщение # 892
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Эх, все равно не получается.. Вот такой у меня текст в alife_agroprom:
Код

[22222888888888888]

; cse_abstract properties
section_name = helicopter
name = agr_heli_1    
position = -155,-2.8292653560638,-381
direction = 0, 0, 0
version = 128
script_version = 12

; cse_alife_object properties
game_vertex_id = 96936
distance = 0
level_vertex_id = 1953
object_flags = 0xffffffb2
custom_data = <<END    
[story_object]       
story_id = agr_heli_1       

[logic]    
cfg = scripts\agroprom\helicopters\stalker_heli.ltx    
END

; cse_visual properties    
visual_name = dynamics\vehicles\mi24\veh_mi24_u_01    

; cse_motion properties    

; cse_ph_skeleton properties    
skeleton_name = idle       

; cse_alife_helicopter properties    
cse_alife_helicopter__unk1_sz = idle       
engine_sound = vehicles\helicopter\helicopter


Вроде бы всё нормально, но запаковываться наше "чудо" не хочет.


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Ср, 24.12.2014, 00:00
 
denis2000Дата: Ср, 24.12.2014, 00:11 | Сообщение # 893
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата asd123 ()
Died at stkutils/ini_file.pm line 52, <GEN12> line 47961.

Этот лог говорит о том, что компилятор не видит концовку контейнера custom_data. УБИРАЙТЕ ЛИШНИЕ СИМВОЛЫ В КОНЦОВКАХ СТРОК! В том числе пробелы.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Ср, 24.12.2014, 23:15 | Сообщение # 894
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
Цитата asd123 ()Died at stkutils/ini_file.pm line 52, <GEN12> line 47961. Этот лог говорит о том, что компилятор не видит концовку контейнера custom_data.

Хм.. а после END не должно быть пробелов?

УБИРАЙТЕ ЛИШНИЕ СИМВОЛЫ В КОНЦОВКАХ СТРОК! В том числе пробелы. Скрипт критичен к этому. Более комментариев у меня нет. denis2000

Хотел лишь убедиться.. стёр один пробел после <<END и all.spawn запаковался. Спасибо Вам огромное.

Пожалуйста. denis2000

Добавлено (24.12.2014, 23:15)
---------------------------------------------
Начал новую игру, но при загрузке локации игра вылетела с таким логом:
Код
0023:021EB7ED lua.JIT.1.1.4.dll, lua_yield()


О чем он говорит?

p.s. после внедрения вертолета вчера не заходил. Вот сегодня зашел и поймал новую проблему

Похоже, у меня не получается с вертолетами "поладить". Можете мне скинуть all.spawn с уже внедренным спавном вертолета? Собственно, координаты и логику я предоставлял выше.


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Ср, 24.12.2014, 23:38
 
denis2000Дата: Чт, 25.12.2014, 19:54 | Сообщение # 895
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата asd123 ()
О чем он говорит?

Кроме программиста движка, никому ничего не говорит.

Проблема не в спавне и не в логике. Или в путях или вообще не в вертолете.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Чт, 25.12.2014, 20:33 | Сообщение # 896
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
Кроме программиста движка, никому ничего не говорит. Проблема не в спавне и не в логике. Или в путях или вообще не в вертолете.

Вы знаете, у меня чудо-лог.. он постоянно выдает разные ошибки. Я вновь попытался начать новую игру, но уже получил новую ошибку. Вот такую:
Код
[error]Expression    : !m_error_code
[error]Function      : raii_guard::~raii_guard
[error]File          : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
[error]Line          : 748
[error]Description   : ... - Зов Припяти\gamedata\scripts\smart_terrain.script:171: attempt to index field 'board' (a nil value)


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Чт, 25.12.2014, 20:34
 
denis2000Дата: Чт, 25.12.2014, 22:55 | Сообщение # 897
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

asd123, Как же вы такого добились?

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
asd123Дата: Чт, 25.12.2014, 23:13 | Сообщение # 898
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Цитата denis2000 ()
Как же вы такого добились?

lol Сам не знаю. Все началось после того, как я научился распаковывать all.spawn laugh


У мутантов тоже есть группировки. © Движок X-Ray




Сообщение отредактировал asd123 - Чт, 25.12.2014, 23:14
 
suhar_Дата: Пт, 26.12.2014, 20:33 | Сообщение # 899
Бывалый
Пользователи
Сообщений: 106
Награды: 0
Репутация: [ 0 ]

Можно ли в условном операторе использовать конструкцию или (or)?
Вот [cut=кусок скрипта]if (item_name=="ammo_bag_01") or (item_name=="ammo_bag_02") or (item_name=="ammo_bag_03") or (item_name=="ammo_bag_04") then
param_m = math.random(1,16)
if (param_m == 1) or (param_m == 2) then
give_object_to_actor("ammo_5.45x39_fmj", 3)
give_object_to_actor("ammo_5.45x39_ap", 2)
give_object_to_actor("ammo_5.45x39_7h39", 2)
end
if (param_m == 3) or (param_m == 4) then
give_object_to_actor("ammo_5.56x45_ss190", 3)
give_object_to_actor("ammo_5.56x45_ap", 2)
give_object_to_actor("ammo_5.56x45_mk262", 2)
end
if param_m == 5 then
give_object_to_actor("ammo_9x39_pab9", 2)
give_object_to_actor("ammo_9x39_ap", 2)
give_object_to_actor("ammo_9x39_sp5", 2)
end
if param_m == 6 then
give_object_to_actor("ammo_9x39_ap", 3)
give_object_to_actor("ammo_9x39_sp5", 4)
end
if param_m == 7 then
give_object_to_actor("ammo_pkm_100", 2)
give_object_to_actor("ammo_7.62x54_ap", 5)
end
if param_m == 8 then
give_object_to_actor("ammo_7.62x54_7h1", 4)
give_object_to_actor("ammo_7.62x54_7h14", 3)
give_object_to_actor("ammo_7.62x54_ap", 3)
end
if (param_m == 9) or (param_m == 10) then
give_object_to_actor("ammo_12x70_buck", 4)
give_object_to_actor("ammo_12x76_zhekan", 4)
give_object_to_actor("ammo_12x76_dart", 3)
end
if param_m == 11
give_object_to_actor("ammo_11.43x23_fmj", 7)
give_object_to_actor("ammo_11.43x23_hydro", 6)
give_object_to_actor("ammo_5.7x28", 4)
end
if param_m == 12
give_object_to_actor("ammo_9x19_fmj", 7)
give_object_to_actor("ammo_9x19_pbp", 7)
give_object_to_actor("ammo_9x19_hp", 7)
end
if param_m == 13
give_object_to_actor("ammo_9x18_fmj", 9)
give_object_to_actor("ammo_9x18_pmm", 8)
give_object_to_actor("ammo_9x18_pbp", 8)
end
if param_m == 14
give_object_to_actor("ammo_vog-25", 20)
end
if param_m == 15
give_object_to_actor("ammo_m209", 20)
end
if param_m == 16
give_object_to_actor("grenade_f1", 5)
give_object_to_actor("grenade_rgd5", 5)
give_object_to_actor("grenade_gd-05", 3)
end
end[/cut]
При тесте вылет со ссылкой на файл, содержащий этот скрипт. Задумка такая. При использовании ящика (4 разных типа), в рюкзак спавнится рандомный набор боеприпасов. Чтобы отрегулировать вероятность появления тех или иных предметов ввожу дополнительный параметр or (param_m == 2), как например с припасами 5.45x39
[cut=Лог]Expression : !m_error_code
Function : raii_guard::~raii_guard
File : D:\prog_repository\sources\trunk\xrServerEntities\script_storage.cpp
Line : 748
Description : ...mes\stalker cop\gamedata\scripts\bind_stalker.script:187: attempt to index global 'lex_inventory' (a nil value)[/cut]
 
makdmДата: Пт, 26.12.2014, 20:55 | Сообщение # 900
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

suhar_, у вас куча ошибок в строках

Цитата suhar_ ()
if param_m == 11

Цитата suhar_ ()
f param_m == 12

Цитата suhar_ ()
if param_m == 13

Цитата suhar_ ()
if param_m == 14

Цитата suhar_ ()
f param_m == 15

Цитата suhar_ ()
if param_m == 16


А где THEN ?


Терпение......
И все получится!
 
Поиск: