Войти на сайт Регистрация Лента форума Пользователи Правила сайта Поиск по форуму
Модератор форума: 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]
 
Ay49MihasДата: Пт, 18.07.2014, 12:07 | Сообщение # 541
Полевой исследователь
Ученые сталкеры
Сообщений: 218
Награды: 9
Репутация: [ 83 ]

Цитата denis2000 ()
Где там такое сказано?

А, получается, там два анимпоинта в первой логике, чтобы стоять и проигрывать звук/анимацию, потом переход на вторые звук/анимацию, и потом только волкер включается. Теперь понятнее стало, спасибо!
 
a4927860Дата: Пт, 18.07.2014, 12:56 | Сообщение # 542
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

Цитата a4927860 ()
Именение параметров в ltx скриптом. Если конкретнее - мне нужно в зависимости от наличия в рюкзаке предмета определенной категории менять переносимый ГГ ве


На всякий случай уточню - конечно мне нужно не изменение файла ltx а изменение текущих параметров actor отвечающих за переносимый вес, максимальную высоту прыжка, максимальное количество хп и т.д. - если есть какая то статья которую я внезапно пропустил - можете меня смело послать её читать (но желательно чтобы там эти параметры были написаны ^^)
 
denis2000Дата: Пт, 18.07.2014, 13:21 | Сообщение # 543
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

a4927860,
1. Прямой возможности повлиять из скриптов на эти параметры нет (даже в нетпакете актора они отсутствуют).
2. Есть только возможность увеличить вес рюкзака путем добавления невидимого предмета с определенной массой (темная материя).
3. Есть исходники движка версии 1.0007 вот там можете реализовать все что хотите (даже свой доходный дом с преферансом и куртизанками biggrin ).


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
a4927860Дата: Пт, 18.07.2014, 14:03 | Сообщение # 544
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

Цитата denis2000 ()
1. Прямой возможности повлиять из скриптов на эти параметры нет (даже в нетпакете актора они отсутствуют).

казалось бы что может быть проще - основные параметры ГГшечки, ан нет...

Цитата denis2000 ()
2. Есть только возможность увеличить вес рюкзака путем добавления невидимого предмета с определенной массой (темная материя).

А отрицательной эта масса может быть?

Цитата denis2000 ()
3. Есть исходники движка версии 1.0007 вот там можете реализовать все что хотите (даже свой доходный дом с преферансом и куртизанками ).

Спасибо, но я как то пасс... Если нет прямой дороги значит нужен костыль... Хотя я если честно думал что уж эта то схема должна сканать...
Где можно посмотреть ВСЕ параметры actor которые можно менять скриптами?

Добавлено (18.07.2014, 14:03)
---------------------------------------------
Чтото подумалось - а можно сделать артефакт активным не вставляя его в слот а храня в рюкзаке (вставлять в 6й слот невидимый артефакт например?)

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

Цитата a4927860 ()
казалось бы что может быть проще

Это только казалось. У Дмитрия Ясенева было другое мнение.
Цитата a4927860 ()
А отрицательной эта масса может быть?

Нет.
Цитата a4927860 ()
Где можно посмотреть ВСЕ параметры actor которые можно менять скриптами?

lua_help.script
Код

property bleeding;
property health;
property power;
property psy_health;
property radiation;


Цитата a4927860 ()
а можно сделать артефакт активным не вставляя его в слот а храня в рюкзаке

Нет.
Цитата denis2000 ()
вставлять в 6й слот невидимый артефакт например?

Слот 6 - болт, Слот 11 - артефакт в руках ГГ, Слоты в костюмах совершенно отдельная песня! Нет прямого пути вставить в слот какой либо предмет.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
a4927860Дата: Пт, 18.07.2014, 15:38 | Сообщение # 546
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

какой же кромешный мрак однако...
ок пойдем другим путем - сумка с ограниченным максимальным весом - можно ли создать такую сумку?
тоесть сумка имеет свой собственный вес (5кг предположим) но он не меняется - однако в нее влазит не больше опредленного веса (25 кг предположим)
ну и как это можно заставить работать?..

Добавлено (18.07.2014, 15:38)
---------------------------------------------
На сколько я понимаю нужно будет:
1) создать контейнер
2) создать предмет его имитирующий (хоть щас)
3) создать скрипт при активации предмета перетаскивающий контейнер герою под ноги

проблемы которые я вижу:
1) переход по локациям (контейнер придеться таскать за актором - а как собственно?)
2) ограничение по весу (только не говорите что нет параметра отвечающего за максимальный вес вместимости у контейнера)
3) ктоб за меня все это написал?..

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

Цитата a4927860 ()
переход по локациям

Телепортировать контейнер возможно будет только в пределах локации, но вероятно будет достаточно иметь один контейнер для хранения на любой локации, плюс спавнить временный контейнер под ноги ГГ и перетаскивать предметы между ними.
Цитата a4927860 ()
ограничение по весу

И не буду говорить раз сами догадались.
Цитата a4927860 ()
ктоб за меня все это написал?

Делайте заказ в соответствующей теме, кто захочет тот поможет.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
a4927860Дата: Пн, 21.07.2014, 15:33 | Сообщение # 548
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

Доброе утро всем...
Телохранители мрут редиски...
Как они мрут - они не успевают перейти в состаяние wounded, если медленно из пма стрелять им в ноги то можно поймать момент когда они падают. Иногда даже в бою такое бывает (но очень редко). В основном же - они вылетают за угол, получают очередь, и склеивают ласты.
Ну и собственно вопрос - как сделать так чтобы они ВСЕГДА падали при получении повреждений больше 50% хп а не умирали. Ну и собственно как сделать чтобы этого хп у них было х2 для симуляции.

Добавлено (21.07.2014, 15:33)
---------------------------------------------
Не ужто вопрос сложный =) ?

Не стоит торопиться - люди освободятся в реале и Вам ответят.
Лохматый.


Сообщение отредактировал a4927860 - Пн, 21.07.2014, 09:20
 
FantomICWДата: Пн, 21.07.2014, 23:49 | Сообщение # 549
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Цитата a4927860 ()
хп у них было х2

Поясни, пожалуйста, что имеешь ввиду.
1. Телохранитель может перейти в wounded два раза?
2. У телохранителя в два раза больше иммунитета, чем у остальных НПС? (это очень относительно, кстати)

Цитата a4927860 ()
падали при получении повреждений больше 50%

Код
...
on_info = {=health_le(0.5)} схема@wounded

[схема@wounded]
...
wounded = wounded

[wounded]
...



 
a4927860Дата: Вт, 22.07.2014, 09:19 | Сообщение # 550
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

FantomICW,
На самом деле все что я хочу - чтобы он не умирал когда его текущее здоровье меньше наносимого ему урона, а получал состояние wounded и валялся дожидаясь помощи гг.
Сейчас он либо умирает с первого выстрела - либо бегает неуязвимый. В старой моей схеме он падал - и был бессмертным но только если очень повезет.

Добавлено (22.07.2014, 09:19)
---------------------------------------------
Доброе утро. Вопрос - если в bind stalker добавить скрипт с таким примерно содержанием
npc получает hit
имя npc содержит bodyguard then
if hit > текущего хп then
hp = hit+20 (если хит все равно будет нанесен)
npc - бессмертен..
получиться ли или нпс умрет раньше обработки скрипта?

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

a4927860, bind_stalker.script не работает на НПС, на них работает xr_motivator.script. Ничего не получиться, поскольку на момент вызова колбека на хит, этот хит уже получен, а значит НПС будет уже мертв.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
a4927860Дата: Вт, 22.07.2014, 18:59 | Сообщение # 552
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

denis2000, и как быть? не ужели нет нормального варианта для выполнения этой задачи?

Добавлено (22.07.2014, 18:59)
---------------------------------------------
Кстати да - если нпс неуязвим то хит по нему отловить же все равно можно?
Или он всегда будет = 0 ?

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

Цитата a4927860 ()
Кстати да - если нпс неуязвим то хит по нему отловить же все равно можно? Или он всегда будет = 0 ?

Самое прикольное колбеки на хиты приходят, сами хиты то нулевые, но они приходят даже тогда когда например ГГ стреляет просто рядом с этим НПС!

Цитата a4927860 ()
не ужели нет нормального варианта для выполнения этой задачи?

Таковые мне не известны. Свой вариант я вам предложил, но он имеет недостатки о которых я кстати сразу и сказал: пока идет переключение на схему раненого, НПС может получить хит (в том числе смертельный) и привет, к тому-же есть далеко не маленькая вероятность, что НПС может получить хит на всю катушку с одной очереди или даже выстрела, также с летальным исходом. Прописывая НПС свою индивидуальную секцию wounded можно поднять порог перехода в состояние раненого - это снижает вероятность выноса тела, но при этом НПС будет падать и вопить об аптечке от любой царапины. Делая НПС изначально бессмертным и вручную управляя уровнем здоровья при хитах, попадаем с ситуацию что НПС хитов не получает (ГГ просто стрелял рядом), а здоровье падает, к тому-же НПС в состоянии бессмертия не хочет переходить в схему раненого (возможно исправимо, а может и нет).
Так, что я готов выслушать ваши предложения и обсудить их реальность.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
a4927860Дата: Вт, 22.07.2014, 20:13 | Сообщение # 554
Новичок
Пользователи
Сообщений: 81
Награды: 0
Репутация: [ 22 ]

denis2000, предложение
сделать бессмертным, отлавливать хит и ставить хп =
в логике при хп = делать ваунд
или
в скрипте делать проигрывание анимации раненый
при хп > ваунд анимацию соответственно убирать

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

Цитата a4927860 ()
сделать бессмертным, отлавливать хит и ставить хп =
в логике при хп = делать ваунд

Уже говорил по этому поводу: попадаем с ситуацию что НПС хитов не получает (ГГ просто стрелял рядом), а здоровье падает, к тому-же НПС в состоянии бессмертия не хочет переходить в схему раненого.

Цитата a4927860 ()
в скрипте делать проигрывание анимации раненый при хп > ваунд анимацию соответственно убирать

Опять таки в случае бессмертия приходят ложные колбеки на хиты! В НПС никто не стреляет, а он упадет с ранением? Как оценивать валидность колбека и по какому критерию проигрывать анимации раненного НПС.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
Поиск: