Здравствуйте, гость ( Вход | Регистрация )

> [PureBasic] Пример плагина, Пример простого плагина для UO Pilot на языке PureBasic
Linker
сообщение 15.6.2022, 17:07
Сообщение #1


*

Registred
Сообщений: 3
Регистрация: 15.6.2022
Группа: Пользователи
Наличность: 0
Пользователь №: 20.281
Возраст: 30



Пример плагина на одном из самых простых языков - бейсике.
Код
Код
#CountFunct = 4; Число фукнций плагина.

Structure InitStruct
  FunctionCount.l
  Array FunctionNames.s(#CountFunct-1)
EndStructure

Structure ParamStruct
  WindowHandle.i
  WindowPID.i
  Reserved.i
  ParamString.s
  ParamStringOrig.s
  Result.s{1048576}
EndStructure

EnableExplicit; Обязательная декларация переменных.

Global InitStruct.InitStruct

ProcedureDLL InitPlugin(App, Scr, *Version.Double)
  
  With InitStruct
    If *Version\d >= 2.37
      \FunctionCount = #CountFunct
      \FunctionNames(0) = "Function1"; Имена экспортируемых фунукций плагина.
      \FunctionNames(1) = "Function2"
      \FunctionNames(2) = "Function3"
      \FunctionNames(3) = "Function4"
    Else
      \FunctionCount = 0;
      *Version\d = 2.37
    EndIf
  EndWith
  
  ProcedureReturn InitStruct
EndProcedure

ProcedureDLL Function1(*ParamStruct.ParamStruct)
  Protected r
  r=Val(StringField(*ParamStruct\ParamString, 1, ",")) + Val(StringField(*ParamStruct\ParamString, 2, ","))
  *ParamStruct\Result = "Param1 + Param2 = " + r
EndProcedure

ProcedureDLL Function2(*ParamStruct.ParamStruct)
  *ParamStruct\Result = "Выполнена функция 2"
EndProcedure

ProcedureDLL Function3(*ParamStruct.ParamStruct)
  *ParamStruct\Result = "Выполнена функция 3"
EndProcedure

ProcedureDLL Function4(*ParamStruct.ParamStruct)
  *ParamStruct\Result = "Выполнена функция 4"
EndProcedure

ProcedureDLL DonePlugin()
EndProcedure
Код довольно прост и основан на примере из справки.
Чтобы процедура была доступна вне dll ее нужно объявлять с DLL в конце ключевого слова, т. е. ProcedureDLL.
Первая фукнция (Function1) складывает числа переданные в 2 параметрах и возращает результат. Остальные только сообщают номер своей фукнции.

Для компиляции необходима среда программирвоания PureBasic версии не выше 5.24. В версиях новее
выпилен ascii (остался только юникод, который не поддерживает UO Pilot). Из-за чего код будет сложнее из-за необходимости конвертирования с ascii в unicode иобратно.
Скачать версию 5.24 https://www.upload.ee/files/14232929/PureBa...Win_x86.7z.html
Это portable версия и после распаковки архива готова к работе. Запускается с помощью PureBasic Portable.exe
В редактор кода нужно скопировать исходник dll и открыть окно настроек компилятора из меню Компилятор -> Настроки компилятора. В нем выбрать формт исполняемого файла "Shared dll". Настройки сохранятся в исходнике на текущей вкладке.
После скомпилировать dll через меню Компилятор -> Создать приложение.

Прикрепленное изображение

Тестовый скрипт
Код
Msg PB_Plug.Function1(2, 8)
Msg PB_Plug.Function2()
Msg PB_Plug.Function3()
Msg PB_Plug.Function4()
exit


Прикрепленные файлы
Прикрепленный файл  PB_TestPlugin.7z ( 4,7 килобайт ) Кол-во скачиваний: 126
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения



Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 11.5.2024, 14:26
Designed by Nickostyle