dll?

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / dll?

Страницы: 1 2 Next>> новая тема

Автор Сообщение

частый гость
Группа: Участники
Сообщений: 24
Добавлено: 29-11-2006 14:49
Я делал dll'ки в Delphi для своих прог! Но как сделать dll'ку для gm(для игры?)и как после из gm к dll'ки обращатся?

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 29-11-2006 15:12
У меня такая же просьба.

мастер
Группа: Сообщество GM
Сообщений: 111
Добавлено: 29-11-2006 15:13
ДЛЛ'ки для того и сделали, чтоб не беспокоиться на чём ты сделал, где и для чего! А как обращаться, поищи примеры с использованием DLL'ок. Здесь их порядочное кол-во.

гроссмейстер
Группа: Сообщество GM
Сообщений: 130
Добавлено: 29-11-2006 15:41
Помоему в хелпе довольно подробно расписано как работать с длл-ками в ГМ.
По поводу примеров, если будет время, то мот напишу.

маэстро
Группа: Сообщество GM
Сообщений: 501
Добавлено: 29-11-2006 17:56
Дай мне исходник(дельфи) длл.
Я тебе впишу,как надо и пример сделаю к ней

частый гость
Группа: Участники
Сообщений: 24
Добавлено: 07-12-2006 19:46
Все разобрался!!!

маэстро
Группа: Сообщество GM
Сообщений: 501
Добавлено: 08-12-2006 15:16
И посмотреть не даш?

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 09-12-2006 08:02
А как обращаться, поищи примеры с использованием DLL'ок.

вот именно это я и хотел бы поискать!

мастер
Группа: Сообщество GM
Сообщений: 111
Добавлено: 09-12-2006 14:57
Вот!
Плейер, очень даже неплохой. Используеться длл'ka, причём жирная.
Вот чего незнаю - это если дллка чужая и ты не знаешь, какие названия функций, там есть, как их узнать?

маэстро
Группа: Сообщество GM
Сообщений: 501
Добавлено: 09-12-2006 15:01
спроси у автора
и жми урл!
вот

маэстро
Группа: Сообщество GM
Сообщений: 501
Добавлено: 09-12-2006 15:10
и почему мне кажется,что длл не твоя и плеер(взможно)
да потому что по-моему
это
=
этому

мастер
Группа: Сообщество GM
Сообщений: 111
Добавлено: 09-12-2006 16:26
Где я сказал, что это МОЙ плейер?
P.S.: урл не нажиметься. :) приходиться вручную теги писать.

маэстро
Группа: Сообщество GM
Сообщений: 501
Добавлено: 09-12-2006 17:46
Это падразумивается....

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 10-12-2006 13:09
Вот!
Плейер, очень даже неплохой. Используеться длл'ka, причём жирная.
Вот чего незнаю - это если дллка чужая и ты не знаешь, какие названия функций, там есть, как их узнать?

большое спасибо! А есть что-нибудь попроще?

мастер
Группа: Сообщество GM
Сообщений: 111
Добавлено: 10-12-2006 14:24
Ща попробую объяснить на пальцах.
Дано:
1)GameMaker 6.1
2)DLL
3)Наша СУПЕР игра
4)Наш мозг

Задача:
Задействовать внешнюю DLL в нашей игре.

Решение:
Сначала надо назначить ID нашей функций в ДЛЛ.
global.fff = external_define(dll,name,calltype,restype,argnumb,arg1type,arg2type, ...);
Возращает этот ID.
dll - имя дллки(например,'MyDll.dll'),
name - имя функций в длл(например,функция MyMin в твоём длл, которая считает минимум),
calltype - тип вызова(беспонятия чем они различаются, кто знает подскажите. dll_stdcall и dll_cdecl),
restype - какой тип переменной возращает твоя функция MyMin(ty_real,ty_string, надеюсь объяснять здесь ненадо).
argnumb - сколько входящих аргументов(MyMin(argument0,argument1) - 2 входящих аргумента),
arg1type - arg11type - типы входящих аргументов(В случае с MyMin - оба ty_real).

Всё теперь функция в GM называеться global.fff и её уже можно вызывать.Для этого нужна вторая функция external_call(id,arg1,arg2,...);
id - названия функций в GM (у нас global.fff)
arg1 - arg11 - входящие элементы(у нас действительные числа).
Вызываем её - external_call(global.fff,argument0,argument1);

Для упрощения можно сделать скрипт(c каким-нибудь понятным названием, например DLL_MyMin):
return(external_call(global.fff,argument0,argument1));

теперь, чтоб воспользоваться твоей функцией, ненадо каждый раз писать external_call(...);, а достаточно просто написать DLL_MyMin(my_speed,comp_speed); (естественно аргументы любые, НО real).

У кого вопросы по красивой реализаций,рассмотри в плеере скрипты: objMain_create,jbfmod_init, ну и к примеру jbfmod_get_info. Этого будет достаточно, остальные очень похожие.

гроссмейстер
Группа: Сообщество GM
Сообщений: 130
Добавлено: 10-12-2006 15:18
stdcall и cdecl отличаются порядком считывания параметров, и тем, кто очищает стек.
Cdecl-Параметры помещаются в стек справа налево (вызывающий очищает стек)
Stdcall-параметры помещаются в стек справа налево (вызываемый очищает стек)

Поидее надо юзать stdcall

частый гость
Группа: Участники
Сообщений: 24
Добавлено: 10-12-2006 15:50
Вот пример,но dll'ка не моя Скачать(~96кб)

мастер
Группа: Сообщество GM
Сообщений: 111
Добавлено: 10-12-2006 17:25
Поидее надо юзать stdcall


Наверно да, я в DirectX и в OpenGL, в заголовочных файлах везде stdcall видел.

Володька
Группа: Сообщество GM
Сообщений: 1648
Добавлено: 10-12-2006 17:34
Ща попробую объяснить на пальцах.
Дано:
1)GameMaker 6.1
2)DLL
3)Наша СУПЕР игра
4)Наш мозг

Задача:
Задействовать внешнюю DLL в нашей игре.

Решение:
Сначала надо назначить ID нашей функций в ДЛЛ.
global.fff = external_define(dll,name,calltype,restype,argnumb,arg1type,arg2type, ...);
Возращает этот ID.
dll - имя дллки(например,'MyDll.dll'),
name - имя функций в длл(например,функция MyMin в твоём длл, которая считает минимум),
calltype - тип вызова(беспонятия чем они различаются, кто знает подскажите. dll_stdcall и dll_cdecl),
restype - какой тип переменной возращает твоя функция MyMin(ty_real,ty_string, надеюсь объяснять здесь ненадо).
argnumb - сколько входящих аргументов(MyMin(argument0,argument1) - 2 входящих аргумента),
arg1type - arg11type - типы входящих аргументов(В случае с MyMin - оба ty_real).

Всё теперь функция в GM называеться global.fff и её уже можно вызывать.Для этого нужна вторая функция external_call(id,arg1,arg2,...);
id - названия функций в GM (у нас global.fff)
arg1 - arg11 - входящие элементы(у нас действительные числа).
Вызываем её - external_call(global.fff,argument0,argument1);

Для упрощения можно сделать скрипт(c каким-нибудь понятным названием, например DLL_MyMin):
return(external_call(global.fff,argument0,argument1));

теперь, чтоб воспользоваться твоей функцией, ненадо каждый раз писать external_call(...);, а достаточно просто написать DLL_MyMin(my_speed,comp_speed); (естественно аргументы любые, НО real).

У кого вопросы по красивой реализаций,рассмотри в плеере скрипты: objMain_create,jbfmod_init, ну и к примеру jbfmod_get_info. Этого будет достаточно, остальные очень похожие.

большое спасибо! а где почитать про типы данных?

мастер
Группа: Сообщество GM
Сообщений: 111
Добавлено: 10-12-2006 17:57
большое спасибо! а где почитать про типы данных?

Как же ты собираешься делать ДЛЛки, если незнаешь типы данных?
В любом учебнике по программированию с этого и начинаеться обучение.

Страницы: 1 2 Next>> новая тема
Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / dll?

Отвечать на темы в данном разделе могут только зарегистрированные пользователи

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU