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

Редактирование и создание скриптов

Редактирование и создание скриптов на языке LUA

Если у вас появились вопросы по применению скриптов в игре. Задавайте их в этой теме - умные головы,
модосторители и просто разбирающиеся в программировании люди вам ответят.


Много интересного материала здесь (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)", ее и надо расскомментировать, должно получиться вот так:
Code
function abort(fmt, ...)
                             local reason = string.format(fmt, ...)
                             error_log(reason)
end

Вот для примера два одинаковых вылета, первый с функцией по умолчанию, второй - с поправленной функцией

Первый:
Code
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)

Второй:
Code
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 по ссылке из шапки и соседнюю тему "Курс молодого бойца",
возможно Ваш вопрос уже рассматривался.


Если произошел вылет - выкладываем лог! Вопрос ставим четко, не забываем указывать версию игры, установленные моды их версии, установленные фиксы модов и подробно ваши правки.
Помните чем подробнее вопрос, тем точнее ответ.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
sergej5500Дата: Пн, 17.03.2014, 20:08 | Сообщение # 451
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

makdm,
Понятие группа в данном случае условное. Монстры спавнятся функциями zat_monster_w1_2_spawned по 10-11 штук. Отслеживается только кол-во убитых мутантов. Параметр zat_monster_w1_deaths при убийстве мутанта увеличивается на 1. По мере увеличения числа убитых зверей спавнятся следующие. Можно было сделать так, как задумал автор. Спавнить зверей через таймер. Но если игрок не успеет выбить группу за 20 секунд, то отреспится следующая и т.д. Многочисленные монстры тормозят систему. Данная схема ограничивает кол-во зверей в районе баржи.
Прочее аналогично авторскому замыслу. При определенном числе убитых зверей происходит автосейв и спавнятся контролер. Поэтому я отслеживаю число убитых монстров в ходе выполнения квеста.
 
makdmДата: Пн, 17.03.2014, 20:35 | Сообщение # 452
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

sergej5500, тогда как-то так

function zat_monster_w1_1_killed(actor, npc, p)
if p and p [ 1 ] then
local count = tonumber( p[ 1 ] )
if sgm_functions.read_variable("zat_monster_w1_deaths")~=nil and sgm_functions.read_variable("zat_monster_w1_deaths")>=count then
return true
end
return false
end
end

Вызов функции

{=zat_monster_w1_1_killed(9)} или {=zat_monster_w1_1_killed(18)}


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


Сообщение отредактировал makdm - Пн, 17.03.2014, 20:40
 
strelok200Дата: Вт, 18.03.2014, 19:25 | Сообщение # 453
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

Почему нельзя заспавнить мину через скрипт, как аномалию? Или там другая структура нет-пакета?
 
denis2000Дата: Вт, 18.03.2014, 20:35 | Сообщение # 454
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

strelok200, А кто сказал, что нельзя? Именно так они и спавняться.

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
strelok200Дата: Ср, 19.03.2014, 10:28 | Сообщение # 455
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

Цитата denis2000 ()
strelok200, А кто сказал, что нельзя? Именно так они и спавняться.

Нет, при попытке заспавнить аномалию класса Z_MBALD происходит вылет
[cut noguest=лог][error]Expression : assertion failed
[error]Function : CCustomZone::CalcDistanceTo
[error]File : D:\prog_repository\sources\trunk\xrGame\CustomZone.cpp
[error]Line : 1469
[error]Description : nearest_s[/cut]
 
denis2000Дата: Ср, 19.03.2014, 15:25 | Сообщение # 456
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата strelok200 ()
при попытке заспавнить аномалию класса Z_MBALD происходит вылет

ЧТО!? Вы же просили мину!
Спавн работает без вопросов:
Код
alife():create("zat_mine_trap",vector():set(-126.5,-25.9,-463.8),129275,1936)


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
strelok200Дата: Ср, 19.03.2014, 19:09 | Сообщение # 457
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

Цитата denis2000 ()
ЧТО!? Вы же просили мину!
Спавн работает без вопросов:

Ну так мины и относятся к этому классу (zone_mine_field)
 
denis2000Дата: Ср, 19.03.2014, 20:02 | Сообщение # 458
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

Цитата strelok200 ()
Ну так мины и относятся к этому классу (zone_mine_field)


Не смущает, что это класс аномальной зоны гравитационного типа, а мина это объект класса физический-разрушаемый?


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
alex_xp_77Дата: Ср, 19.03.2014, 21:56 | Сообщение # 459
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

Добрый вечер всем!!Насчет аномалий, очень удобно проделано на движке тч, ставишь аномалию, затем шейп, атач, и без всяких сюрпризов, и скриптов аномалия готова!!Почему бы разработчикам не сделать на все версии, ну да ладно я не об этом, вопрос однозначно редкостный, но как мы все помним агропром начало его, когда гг бежит на помощь Кроту, в один момент поднимается камера и несет нас на обзор всех солдатиков, и смотр обьекта, у меня вопрос, есть ли там логика? Или все очень просто бежишь, тыкаешь невидимую камеру она нам показывает все с верху???Навряд-ли, и если и есть логика на камеру , то где бы мне ее найти ??Помогите пожалуста разобраться в этом вопросе, решил сделать видеоанимацию
A в sdk рестиктор создать то можно??Дело в том что через all.spavnне работаю да и не умею!!




Сообщение отредактировал alex_xp_77 - Чт, 20.03.2014, 14:25
 
denis2000Дата: Ср, 19.03.2014, 23:02 | Сообщение # 460
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

alex_xp_77, В all.spawn рестриктор по имени agr_space_restrictor_0001

"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
FantomICWДата: Чт, 20.03.2014, 00:49 | Сообщение # 461
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

Доброй ночи!
Хотел бы узнать, можно ли скриптом закрыть окно обыска трупа?
Пока что на ум приходят две идеи:
1. Через actor_menu.script. Но вот не помню, работу функций скрипта...Ими только проверку и отслеживание делать можно или также осуществлять сам контроль над окнами?
2. Через действие:
Код
get_hud():HideActorMenu()

Но это еще более сомнительно. Не уверен, что считается самим меню актера...



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

FantomICW,
1. actor_menu.script не осуществляет управление окнами, а только отслеживает их состояние (используй его для отслеживания открытия окна обыска)
2. get_hud():HideActorMenu() - самое то, более того я в той-же ситуации его бес проблем использовал (закрытие окна обыска скриптом) - скрывает все видимые окна на ХУД-е (диалог, торговля, обыск, апгрейд и т.д.), кроме специфического интерфейса ПДА: get_hud():HidePdaMenu()


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
alex_xp_77Дата: Чт, 20.03.2014, 14:52 | Сообщение # 463
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

Добрый День Люди добрые!!У меня просьба, обьясните как в Тени Чернобыля прописать выброс, не знаю где даже и искать, помогите разобраться !!И еще очень заманчиво было бы создать в шопе карту действия радиационного поля от выброса, некая шкала, которая будет показывать силу выброса по той, или иной локации, новинки даются оч тяжело, надеюсь более грамотные коллеги отзовутся, и прояснят тему???

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

Цитата alex_xp_77 ()
У меня просьба, обьясните как в Тени Чернобыля прописать выброс, не знаю где даже и искать

Скриптами нужно прописать. А лучше всего взять классический от АМК или изначально делать АМК-base.


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
alex_xp_77Дата: Чт, 20.03.2014, 18:17 | Сообщение # 465
Научный сотрудник.
Ученые сталкеры
Сообщений: 242
Награды: 6
Репутация: [ 41 ]

Я не скриптер Денис, не сочтите за наглость, подскажите где мне искать скрипты на выброс, мне сложно соорентироватся в том чего не понимаю, но то что необходимо сделать, у меня старых карт не будет, будут все новые!!Темный лес uhm

 
Поиск: