Rambler's Top100
  Навигация :
  Оглавление
  Новости (Архив)
  Об этом проекте
  О программе GM
  Скачать
  Документация
  Русский Help
  Обучение
  Примеры
  Ресурсы
  Ссылки
  Прямая связь
 Русский Help 4.0 :
  Раздел 1
  Раздел 2
  Раздел 3
  Раздел 4
  Статистика :
Рейтинг@Mail.ru


The Game Maker Language

Использование DLL (Динамически загружаемых библиотек)

В тех случаях когда функциональные возможности GML - не достаточны для твоих грандиозных планов, ты можешь реально расширить данные возможности, используя плагины. Плагины должны быть в форме DLL файла (Динамически загружаемых библиотек). В таком DLL файле ты можешь определить функции. Такие функции могут быть написаны на любом языке программирования, которые поддерживают создание DLL (например. Delphi, Visual C++, Visual Basic, и т.д.) Для этого тебе необходимо как минимум знать один из таких языков и иметь навык программирования. Плагины с функциями должны иметь специфический формат. Они могут содержать ноль (zero), один или два параметра, каждый из которых может быть вещественным числом (с плавающей точкой) или строкой с нулевым символом в конце. Они должны возвращать либо вещественную строку, либо строку с нулевым символом в конце.

В Delphi ты создаешь DLL сначала выбрав, New из меню File и затем выбрав DLL. Далее приводится пример DLL, который ты можете использовать с Game Maker, написанный в Delphi. (Обрати внимание, что это - Delphi код, а не GML код)!

  library MyDLL;

  uses SysUtils, Classes;

  function MyMin(x,y:real):real; cdecl;
  begin
     if x<y then Result := x else Result := y;
  end;

  var res : array[0..1024] of char;

  function DoubleString(str:PChar):PChar; cdecl;
  begin
     StrCopy(res,str);
     StrCat(res,str);
     Result := res;
  end;

  exports MyMin, DoubleString;

  begin
  end.

Эта DLL определяет две функции: MyMin, который берет два реальных параметра и возвращают минимальный из этих двух, и DoubleString, который удваивает строку. Обрати внимание, что нужно быть внимательным использованием памяти. Именно поэтому я объявил результирующей глобальную строковую. Также обрати внимание на использование cdecl соглашений о вызовах. Это важно. Как только ты создал DLL в Delphi, у тебя получается файл MyDLL.DLL. Этот файл должен быть помещен в каталог с твоей игры. (Или иное место, где окна могут найти его.)

Чтобы использовать данный DLL в Game Maker, сначала ты должен определить внешние функции, которые хочешь использовать и какой тип параметров они берут. Для этого в GML имеются следующие функции:

    external_define0(dll,name,restype) - Определяет внешнюю функцию без параметров. dll - название dll файла. name - название функций. И restype - тип результата. Для этого используй либо ty_real, либо ty_string.
    external_define1(dll,name,arg1type,restype) - Определяет внешнюю функцию с одним параметром. Так же точно как и в функции приведенной выше, только теперь arg1type - тип первого параметра. Для него опять используй либо ty_real либо ty_string.
    external_define2(dll,name,arg1type,arg2type,restype) - Определяет внешнюю функцию с двумя параметрами.
Каждая из этих функций возвращает идентификатор внешней функции, которая должна использоваться для его вызова. Так в вышеприведенном примере, в начале игры ты использовал бы следующий GML код:
    {
       global.mmm =
         external_define2('MYOWN.DLL','MyMin',ty_real,ty_real,ty_real);
       global.ddd =
         external_define1('MYOWN.DLL',DoubleString,ty_string,ty_string);
    }
Теперь всякий раз, когда тебе нужно вызывать функции, используй пример.
    {
       aaa = external_call2(global.mmm,x,y);
       sss = external_call1(global.ddd,'Hello');
    }
Далее приводятся вызывающие функции:
    external_call0(id) - Вызывает внешнюю функцию с данным идентификатором, который не имеет никаких параметров.
    external_call1(id,arg1) - Вызывает внешнюю функцию с данным идентификатором, который имеет один параметр.
    external_call2(id,arg1,arg2) - Вызывает внешнюю функцию с данным идентификатором, который имеет два параметра.
Обрати внимание, что DLL не может использоваться в безопасном (secure) режиме. Использование внешних DLL - чрезвычайно мощная функция. Но пожалуйста используй их, только если ты действительно уверен в том что делаешь. Некоторые обучающие программы повествующие о плагинах Game Maker возможно появятся в будущем.

  Предыдущая страница   В начало  

© 2001 Simple Life & World

купить рюкзак, сумки рюкзаки