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


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


"Он ловко выхватил из-под себя табуретку и очень метко и сильно бросил ее в докладчика..."
(Чугунный всадник)
 
makdmДата: Пн, 13.01.2014, 19:12 | Сообщение # 391
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

strelok200, а в чём выражается неработоспособность?
У вас, что вылет?

Возможно вот здесь 

act_pos:distance_to_sqr(npc_pos) < 40

вы имели ввиду расстояние в 40 м?

Если так, то в игре это будет не 40 м, а корень квадратный из 40, т.е. примерно 6, 32 м.


Терпение......
И все получится!
 
denis2000Дата: Пн, 13.01.2014, 19:40 | Сообщение # 392
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

strelok200,
1. Написали функцию controller, а вызываете функцию controller_xray
2. Какой такой npc передается в функцию из логики рестриктора?
3. Что возвращает функция distance_to_sqr?


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

NIV, ты скажи, для начала, что хочешь поправить...Может и без правки движка обойтись можно. Ведь достаточно отследить открытие элемента через actor_menu.script и функцию проверки, и можно новый элемент запустить.


 
strelok200Дата: Вт, 14.01.2014, 19:49 | Сообщение # 394
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

Цитата denis2000 ()
1. Написали функцию controller, а вызываете функцию controller_xray
С вызовом все верно, это я на форум просто закинул аналогичную ф-цию
Цитата denis2000 ()
2. Какой такой npc передается в функцию из логики рестриктора?
Не совсем понял к чему этот вопрос
Цитата denis2000 ()
3. Что возвращает функция distance_to_sqr?

Можно и без проверки на расстояние, все равно не работает
Цитата makdm ()
strelok200, а в чём выражается неработоспособность?У вас, что вылет?
Нет, не выполняется функция gar_message, прописанная в xr_effects


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

Цитата strelok200 ()
Не совсем понял к чему этот вопрос

Это ключевой вопрос работоспособности вашей функции. Что за параметр npc, который ВЫ используете в ВАШЕЙ функции?

Цитата strelok200 ()
Можно и без проверки на расстояние, все равно не работает

Можно и бес проверки, тем более, что вы не понимаете примененную функцию. distance_to_sqr возвращает КВАДРАТ расстояния!

Цитата strelok200 ()
не выполняется функция gar_message, прописанная в xr.effects

Это от того, что condition-функция всегда дает false.


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

Переделал ф-цию, теперь все работает
Цитата denis2000 ()
distance_to_sqr возвращает КВАДРАТ расстояния!
Спасибо. А то я думал, что здесь возвращается обычное расстояние
 
denis2000Дата: Вт, 14.01.2014, 22:15 | Сообщение # 397
Полевой исследователь
Ученые сталкеры
Сообщений: 2399
Награды: 35
Репутация: [ 1918 ]

strelok200, Она конечно работает, но это ужас! Я бы писал так:
Код
function controller(actor, obj, p)  
  local story_id = p[1]
  if story_id == nil then
   return false
  end
  local npc_id = get_story_object_id(story_id)
  if npc_id == nil then
   return false
  end
  local object = level.object_by_id(npc_id)
  if object then
   return npc_in_actor_frustrum(obj)
  else
   return false
  end  
end


А вызов так:
Код
on_info   = {=controller(esc_polkovnik)}


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

Цитата denis2000 ()
но это ужас!
Если вызывать не через логику, то ничего ужасного

А если под водку с огурцом, то ваще ништяк smile denis2000
 
sergej5500Дата: Сб, 01.02.2014, 21:02 | Сообщение # 399
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

Добрый вечер. В СГМ реализовано выпадение частей тел мутантов при их гибели. В результате много запчастей для монстров валяется на локации. Никто, кроме игрока их не подбирает. Это тормозит игру. Как сделать, чтобы сталкеры подбирали их с земли и забирали их при обыске трупов?
 
makdmДата: Сб, 01.02.2014, 22:37 | Сообщение # 400
Рожденный в СССР
Разработчики
Сообщений: 1294
Награды: 29
Репутация: [ 1909 ]

sergej5500, если требуется только увеличение производительности, то сделайте уборщик конечностей. Можете взять за основу уборщик оружия, заменив секции:

http://sigerous.ru/forum/17-3149-1122703-16-1368886466

Если вопрос стоит именно в подборе конечностей сталкерами, то потребуется написание схемы поведения. Я бы взял за основу скрипт xr_corpse_detection.script и переписал его под подбор конечностей.


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


Сообщение отредактировал makdm - Сб, 01.02.2014, 22:37
 
by_gangsterДата: Вс, 02.02.2014, 23:54 | Сообщение # 401
Научный сотрудник Бункера
Ученые сталкеры
Сообщений: 233
Награды: 6
Репутация: [ 171 ]

Здравствуйте господа. Мне нужно вызвать вылеты X-Ray с разным текстом... Например с "Out of memory. Memory request: XXX K"

Вроде это можно сделать вписав в script. Но что я не знаю. Прошу помочь.

error_log("LOG"). XOBAH
 
FantomICWДата: Пн, 03.02.2014, 00:32 | Сообщение # 402
Лидер «Свободы»
Свобода
Сообщений: 4438
Награды: 44
Репутация: [ 1340 ]

by_gangster, привет.
Цитата by_gangster ()
Вроде это можно сделать вписав в script.
Хех, давно таких заказов не было.
Как это сделать:
1. Открываешь любой файл игры блокнотом.
2. Начинаешь долбить по клавиатуре.
3. Сохраняешь.
4. Тестируешь.
Но зачем, если на АМК есть целый сборник вылетов + оффлайн версия? А еще и сборник Хована.
Вылет о нехватки памяти можно вызвать текстурами, ошибками в скриптах Гуи-окон, наваленным апдейтом в bind_stalker.script...Вопрос только, зачем? smile
[off]Нет, правда, зачем? Тут мистики примерно столько, сколько в истории билда 1666 (кстати, погуглите biggrin ).[/off]



 
strelok200Дата: Пн, 03.02.2014, 13:33 | Сообщение # 403
Бывалый
Свобода
Сообщений: 126
Награды: 0
Репутация: [ 33 ]

Цитата FantomICW ()
Нет, правда, зачем? Тут мистики примерно столько, сколько в истории билда 1666 (кстати, погуглите biggrin ).
smile   Помню как мы запугивали на ап-про некоторых товарищей этой историей, а они верили  yes

Цитата F ()
Здравствуйте господа. Мне нужно вызвать вылеты X-Ray с разным текстом... Например с "Out of memory. Memory request: XXX K"Вроде это можно сделать вписав в script. Но что я не знаю. Прошу помочь.
Может вы имеете ввиду, чтобы стандартные вылеты выводились в лог с другим текстом? Если так, то все эти "тексты" заложены в xrGame.dll


Сообщение отредактировал strelok200 - Пн, 03.02.2014, 13:36
 
asd123Дата: Ср, 05.02.2014, 00:47 | Сообщение # 404
Mr. «Магма»
Военные сталкеры
Сообщений: 1386
Награды: 10
Репутация: [ 423 ]

Всем доброго времени суток! Вообщем, я тут по поводу диалога "Чем сейчас занимаешься?", или "dm_traveler_dialog"..

Ситуация: Решил я создать сквады военных для СоР и у меня это получилось.. добавил их в спавн-мод, то, сё... но тут у меня возникла такая петрушка... у них из диалогов только: "Расскажи какую-нибуть историю"

Подскажите, что нужно сделать, чтобы военнные (а так же наёмный спецназ, рассвет, наёмники и прочие группировки) имели такие же диалоговые окна как у сталкеров.

за ранее - спасибо.


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




Сообщение отредактировал asd123 - Ср, 05.02.2014, 00:55
 
sergej5500Дата: Ср, 05.02.2014, 01:18 | Сообщение # 405
Полевой Исследователь
Ученые сталкеры
Сообщений: 3793
Награды: 29
Репутация: [ 1355 ]

asd123
Файл scripts\travel_manager.script

Функция uni_traveler_precond.  Минифункция типа

if npc:character_community() == "army" then
  return false
 end


блокирует у военных возможность водить ГГ по локации.

Наемный спецназ, наемники враждебны ГГ.  Рассвет на Армейских складах диалоговые окна имеет.  Рассвет на Юпитере состоит из несквадовых НПС. Такие неписи водить ГГ не могут.
 
Поиск: