Пишем свои скрипты

Автор LongShad, 08 декабря 2010 18:36:53

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

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

LongShad

Начнем полегоньку.
Я понял следующее. В Thief скрипты - это динамически загружающиеся модули, DLL-библиотеки, но с расширением OSM. У них есть только 1 экпортируемая функция ScriptModuleInit. Она первой запускается при загрузки модуля и игра узнает список всех доступных скриптов, аргументы, адреса соот-их функций. То бишь программисту не надо знать жесктопрошитые адреса переменных и функций в движке - все это спрашивает скрипт во время работы.
Пишется на Си++, с исп-ем классов и технологией, похожей на COM. Требуется подключить какие-то header-библиотеки:
#include <lg/types.h>
#include <lg/interface.h>
#include <lg/scrservices.h>
Компилируется в Windows на Visual C++, хотя можно и в Linux на gсс.

Это все, что я понял. На Си++ программировал только public, private, protect и конструкторы-деструкторы, в основном писал на Си.
Вся информация - на английском и telliamed в своем туторе не слишком то объясняет - что делает та или иная строчка.

Если кто-нибудь знает об этом человеке, просьба позвонить на номер...
Есть ли исходники оригинальных скриптов? Хоть их разобрать будет легче.

Shadowhide

ЦитироватьВ DarkMod скрипты - это динамически загружающиеся модули, DLL-библиотеки, но с расширением OSM
чего ? каой даркмод ? OSM скрипты это сс2,Т1 и Т2

LongShad

Пфуты, замучался я уже с вами  :mad:
Щас исправлю.

Shadowhide

[off]
Цитироватькаой даркмод
я тоже чего -то :) [/off]

Shadowhide

а зачем писать свои скрипты ? тебе что 3 кастумных скриптовых модулей не хватает? (я уже не говорю что на дефолтных скриптах можно чудеса творить)

LongShad

Логичный вопрос. Если я начал тему, значит мне это нужно.
А может это не так сложно. Или слишком сложно?

winter cat

Полный список скриптов, спасибо Клирингу. Есть также подробное описание скриптов от Теллиамеда. 

LongShad

#7
Не то, я имел ввиду вот это:
http://whoopdedo.org/pubscripts21-final.zip
Есть convict.h и gen.h, видно что автор пытался анализировать работу скриптов. Так что если не найдете описание какого-нибудь скрипта, можете посмотреть здесь.
И еще где-то был туториал от Telliamed, никак ссылку не найду. Помню что это была какая-то желто-оранжевая страница с ссылками на PyNumbra и Amnesia.

Нашел страницу:
http://www.thiefmissions.com/telliamed/
Ссылка:
http://www.thiefmissions.com/telliamed/osmdemo.zip

Блин, видать это очень сложное колдунство.

Chuzhoi

Забавно. Я всегда считал, что скрипты пишутся на скриптовых языках (общепринятых или специально под данный движок созданных).
А тут C++. Не ожидал.

LongShad

ЦитироватьЗабавно. Я всегда считал, что скрипты пишутся на скриптовых языках (общепринятых или специально под данный движок созданных).
Так делают в большинстве случаев сейчас. Раньше не сильно думали о приемственности движка и его развитии. Потом, сейчас компы быстрые и даже интерпретируемые скрипты будут работать быстро. В нашем случае скрипт чуть ли не ставится на один уровень с движком игры, расширяя его возможности.

Zontik

Может, я что-то не так понимаю... тогда проясните.
Мне всегда казалось, что скрипты не могут научить движок делать то, чего он не умеет изначально, а могут только заставить делать то, чего он по каким-то причинам не хочет.
Скажем, те же зеркала в Temple Of The Tides (вращаются, пока держишь мышь; отпустишь - вращение прекращается). Вроде бы какое-то новое действие, но ведь в точности так же работают отмычки. То есть процедура уже имеется, скрипт просто позволяет подключить ее иначе.
Другими словами, возможности движка никаким образом не расширяются - расширяется только доступ к ним. Создать что-то принципиально новое невозможно (хотя можно создать нечто, что будет казаться принципиально новым). Я не прав?
Скажем, создать скрипт, который бы позволил убрать кристалл видимости на какое-то время, чтобы он появился на экране не сразу, а по ходу дела, скажем, когда игрок его отыщет. Это ведь невозможно в принципе? По крайней мере, в Mission X это сделать не удалось никаким скриптописанием.
Дайте глазам отдохнуть! Тёмное место

LongShad

ЦитироватьМне всегда казалось, что скрипты не могут научить движок делать то, чего он не умеет изначально, а могут только заставить делать то, чего он по каким-то причинам не хочет.
Ну да, скрипты играют по правилам движка. Используют разрешенные им способы обращения к процедурам, сигналам, связям и объектам. Я имею ввиду, что с помощью скриптов можно добавить новую функциональность и сделать то, чего в движке нет. Например...

Chuzhoi

Я не знаю тонкостей движка, но мне кажется, что создатели движка просто слегка облегчили жизнь себе, при этом слегка усложнив жизнь тем, кто будет писать скрипты. То есть вместо встроенного транслятора, понимающего напрямую текстовые файлы со скриптами, нужно устанавливать среду разработки С++ и компилировать DLL-ки. Хотя возможности, в принципе, те же.

Кстати, покопавшись на задворках памяти, я вспомнил еще пару игр с таким же подходом - Quake 2 (и, возможно, Quake 3) и Serious Sam.

LongShad

Ну вот, просил оригинальные скрипты. Вот вам, пожалуйста - вышли исходники.
Только эти скрипты все-таки не совсем оригинальные.  ;)

Zontik

ЦитироватьНу вот, просил оригинальные скрипты. Вот вам, пожалуйста - вышли исходники.
LongShad, давно бы тебе озаботиться этим вопросом. Сколько времени зря пропало...
Дайте глазам отдохнуть! Тёмное место