Скрипты для NewDark

Автор Chuzhoi, 26 марта 2017 17:56:19

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Chuzhoi

Цитата: Zontik от 28 марта 2017 09:56:50
1. Что означает return true? Что все прошло успешно? А если нет (как такое вообще возможно?), тогда return что?
Если не написать return true, то, очевидно, функция вернет некое пустое значение, эквивалентное false. Во всех примерах, данных для lgscript, в обработчиках сообщений есть это return true, но никаких комментариев по этому поводу я не нашел. Возможно, это означает, вызвать ли последующие обработчики для данного сообщения, если они имеются (в других скриптах), или завязать с этим делом. Поскольку я не знаю толком, то обычно просто пишу return true (но надо бы все-таки поразбираться с этим делом).

Цитата: Zontik от 28 марта 2017 09:56:50
2. А вот сама переменная определяется где?
Переменную придумал я. Определена она в скрипте (local frobCount = 0 в Lua и frobCount = 0; в белке). Назвать ее можно было как угодно.

Цитата: Zontik от 28 марта 2017 09:56:50
message().to
message() - это функция, возвращающая сообщение, которое в данный момент послано нашему игровому объекту и которое мы обрабатываем. Само сообщение представляет собой объект с несколькими свойствами, которые могут различаться в зависимости от типа сообщения, при этом есть несколько стандартных свойств: from - ID игрового объекта (я специально буду говорить "игровой объект", чтобы отличить его от объектов, с которыми мы имеем дело в скриптах), который послал сообщение; to - ID игрового объекта, который получил сообщение (т. е. именно того объекта, к которому мы прицепили скрипт), message - имя сообщения и т. д. (остальное можно найти в API-reference_messages.txt, где описан базовый класс sScrMsg и его производные классы).

В Lua немножко другая схема - сообщение передается в виде Lua-таблицы через аргумент msg, но все остальное аналогично. ("Таблица" в Lua - это понятие, в общих чертах аналогичное объектам в Squirrel, хотя это не совсем одно и то же).

Цитата: Zontik от 28 марта 2017 09:56:50
FrobWorldBegin - хоть что-то знакомое. Это передающийся сигнал. Но в двух версиях он почему-то называется по-разному. С какой стати?
Так решили авторы данных инструментов. В LGScript функции, обрабатывающие сообщения, называются точно так же, как и сами сообщения, а в белкоскрипте к этим именам еще нужно добавлять On. Мне больше нравится второй вариант, т. к. сразу понятно, что мы имеем дело с обработчиком сообщений, а не с какой-то обычной функцией (Или мы будем говорить "сигнал"? Я не против, нужно только определиться).

Цитата: Zontik от 28 марта 2017 09:56:50
Ну и в заключение. Коней на переправе не меняют, так что до завершения кампании я объявляю мораторий на белку.
Совершенно правильное решение. Даже я, если ты попросишь написать еще какой-нибудь скрипт, напишу его на Lua. Незачем плодить инструменты и подпапки. Если, конечно, тебе в будущем не вздумается управлять погодой...

HellRaiser

Короч, нарыл на просторах ютуба:
Базовый курс лекций по сям/крестам. Будет интересно как студентам (или начинающим программерам), так и опытным гуру: чувак в процессе объяснения простых истин параллельно вещает очень много полезных нюансов, которые профессионалам хотя бы неплохо освежить в памяти (а тех, кто про эти нюансы не в курсах - запишем в первую категорию).

Короч, у кого достаточно времени -  наслаждайтеся  ;) Курс состоит из 21 лекции, в среднем по 1.5 часа каждая.
Сцылочка на плейлист.

goodman

Цитата: Прихвостень от 15 марта 2025 20:16:07miss16.osm действительно подтягивается, это нормально - на него есть ссылки во всех картах этой ФМ'ки (miss22.mis, miss23.mis, miss24.mis)

script-t2.osm это тот-же script.osm (побайтово идентичны), в каких-то отдельных ФМ'ках может использоваться такое его имя (посему и присутствует в T2Fix)

Судя по логу в текущий момент подхватываются древние версии скриптов, которые шли в комплекте с "HoC - The Dragon's claw" на момент её выхода.
Если NVScript.osm + script.osm + script-t2.osm + tnhScript.osm + version.osm лежат в корне игры, то это вполне себе вариант конфига, но для морально готовых к потенциальным сложностям)
В этом конфиге работает приоритет у скриптов, которые лежат в распакованной ФМ. Скрипт в корне игры будет подхватываться, только если файл скрипта не найден в папке распакованной ФМ. Т.е. это вариант для тех, кто готов держать новые версии скриптов в корне игры, регулярно отслеживать лог с каждой новой ФМ и в случае проблемы удалять неподхватившийся скрипт в папке ФМ, дабы оно наконец заработало с новой версией из корня. Либо самостоятельно заменять скрипт в папке ФМ на новую версию.

Ну такоое себе, всё же проще сделать стандартный чистый 1,27+T2Fix - перечисленные выше 5 скриптов актуальных версий только в папке OSM и имеется строка
uber_mod_path .\OSM
в файле  cam_mod.ini


у меня так:;uber_mod_path mods\UpToDateOSMs+MyGemMod


Спойлер
; ----------
; FM options
; ----------

; FM selection can also be done with command-line options (which override mod.ini)
;   -fm        : to start the FM Selector
;   -fm=name   : to start game with 'name' as active FM

; always start the FM Selector (if one is present)
fm

; start game with FM (the name is the FM's directory name, located in the FM path)
;fm TheDarkMansion

; to specify a path other than the default "FMs" (the specified path must exist or
; it won't be accepted and the game falls back to the default path)
;fm_path .\FMs

; a single relative path name to override the FM movie directory
; default is "Movies" for Thief and "cutscenes" for Shock
;fm_movie_dir Movies

; define the library name of an alternative FM Selector, the default is "fmsel.dll"
;fm_selector fmsel.dll

; prevent the FM Selector DLL to be unloaded when continuing to main game (can be useful
; if you experience crashes when FM Selector closes)
;no_unload_fmsel

; an FM Selector is a separate library (DLL) containing a utility, usually a UI based
; application that lists the available FMs and lets the user pick which one to run.
; A selector could range from a simple list box with the FM names to a full blown
; manager with extended info, last played timestamps, sorting/filtering etc.

; ---------
; Mod paths
; ---------

; the max path count is 63 for "uber_mod_path" and "mod_path" combined
; (avoid an excessive amount of paths, it can make file handling slower)
;
; the full path search order is (starting with highest priority)
;     uber_mod_path -> FM dir (if active) -> mod_path -> resname_base(/movie_path/etc.)

; these are mod paths that override the active FM in the search order
;uber_mod_path mods\UpToDateOSMs+MyGemMod

; these are normal mod paths which are applied after the active FM in the search order
;mod_path MyBowMod+.\TexturePack
mod_path .\MODS\t2water+.\MODS\t2skies
[свернуть]

Прихвостень

1) точка с запятой в начале строки используется для игнора этой строки ("закоменчено"), т.е. строки
; these are mod paths that override the active FM in the search order
;uber_mod_path mods\UpToDateOSMs+MyGemMod
в любом случае игнорируются

2) после установки актуального T2Fix тут должно не две строки, а три  :suspect:

; these are mod paths that override the active FM in the search order
;uber_mod_path mods\UpToDateOSMs+MyGemMod
uber_mod_path .\OSM


Последняя строка без точки с запятой в начале, т.е. не игнорируется и учитывается что в первую очередь файлы берутся из папки OSM

goodman

более чем понятно, :up:  попробую.

goodman

#35
работает. положил в OSM NVScript.osm + script.osm + gen.osm + tnhScript.osm + version.osm , в ФМ все скрипты автора, теперь в LOG картина такая: "NVscript.osm" и "script.osm" подгружается более свежие, хотя в фм есть поздней версии

: Loaded script module "NVscript.osm" [FileVer=1.2.4.0 ; ProductVer=1.2.4.0 ; FileModDate=2015-Aug-21]
: Loaded script module "miss16.osm" [FileModDate=2023-Jul-01]
: Loaded script module "gen.osm" [FileModDate=2000-Mar-27]
: Loaded script module "convict.osm" [FileModDate=2000-Mar-27]
: Loaded script module "tnhscript.osm" [FileVer=2.1.0.0 ; ProductVer=2.1.0.0 ; FileModDate=2009-Apr-10]
: Loaded script module "script.osm" [FileVer=2.1.0.0 ; ProductVer=2.1.0.0 ; FileModDate=2009-Aug-18]

с ошибкой: -----------------------------------------------------------------------------------------------

: Loaded script module "NVscript.osm" [FileVer=1.1.0.0 ; ProductVer=1.0.0.0 ; FileModDate=2008-Aug-16]
: Loaded script module "miss16.osm" [FileModDate=2023-Jul-01]
: Loaded script module "gen.osm" [FileModDate=2000-Mar-27]
: Loaded script module "convict.osm" [FileModDate=2000-Mar-27]
: Failed to load script module "tnhscript.osm" (error code 998)
: Loaded script module "script.osm" [FileModDate=2003-Nov-23]

без OVS папки, всё .osm в корне, с удалённым "tnhscript.osm" в папке ФМ автора -----------

: Loaded script module "NVscript.osm" [FileVer=1.1.0.0 ; ProductVer=1.0.0.0 ; FileModDate=2008-Aug-16]
: Loaded script module "miss16.osm" [FileModDate=2000-Mar-27]
: Loaded script module "gen.osm" [FileModDate=2000-Mar-27]
: Loaded script module "convict.osm" [FileModDate=2000-Mar-27]
: Loaded script module "tnhscript.osm" [FileVer=2.1.0.0 ; ProductVer=2.1.0.0 ; FileModDate=2009-Apr-10]
: Loaded script module "script.osm" [FileModDate=2003-Nov-23]