GTA San Andreas Quick Opcode Library v1.0

Данная библиотека, реализует функции работы с опкодами, с их парметрами и т.п. Теперь написать простой опкод, более-менее оптыному программисту не составит никакого труда.

Поддерживаемые версии gta_sa.exe:
- 1.0us (14383616 bytes)
- 1.0us compact (5189632 bytes)

Установка:
1) Если хотите поставить, как cleo-плагин, то переименуйте `QuickOpcode.asi` в `QuickOpcode.cleo`, поместите его в папку `\CLEO` и создайте тамже папку `QuickOpcode`, из которой будут грузиться плагины.
2) Можно оставить плагин в его первоначальной позиции и поставить как `ASI`, для этого скопируйте `QuickOpcode.asi` в корневую папку игры , если же у Вас не стоит ASI Loader, то распакуйте его из этого архива в папку с игрой, на запрос о замене `vorbisFile.dll` естественно отвечать `да`.

Обыкновенные пользователи:
Можете нажать на крестик в верхнем правом углу.

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

Функции библиотеки:
Все функции применяются последовательно по мере чтения/записи информации в опкоде, порядок чтения параметров слева-направо.

(всё преведено на Delphi, примером использования является исходник ini-плагина)

function FUNC_READ_VALUE(TP : Char) : Variant;
Читает int/float значение параметра опкода, для чтения int, установите TP в 'i', для float - 'f'. Теоретически, чтобы использовать это в других языках программирования, не поддерживающих тип, аналогичный Variant, нужно объявлять эту функцию несколько раз, тоесть первая будет иметь тип int, а вторая float .

function FUNC_WRITE_VALUE(TP : Char; Value : Variant) : Boolean; stdcall;
Записывает i/f значение в переменную опкода, TP тоже самое, что и в предыдущем, Value - i/f значение, опять же, если Variant не поддерживается, то надо объявлять i/f отдельно друг от друга.

function FUNC_READ_POINTER(TP : Char) : Integer;
Читает указатель на переменную . В данном случае TP может принимать значения 'g' - для получения указателя на глоабльную скриптовую переменную или 'l' - соттвественно для локального типа переменной . Функция сделана для того, что если необходимо что-либо записывать уже в первую переменную (арифметические операции итп), то единственным вариантом будет взять указатель на нее, а после получения результата просто записать его по адресу, взятого из указателя.

function FUNC_READ_OPCODE_STRING : String;
Читает строку из опкода , поддерживаются типы строк 'str' и "str".

function FUNC_ALLOC_STRING(str : string) : Integer;
Размещает в памяти указанную строку и возвращает указатель на неё, с опкодами никак не связана .

function FUNC_READ_ALLOCATED_STRING_BY_HANDLE: string;
Читает из опкода переменную , в которой хранится указатель на строку и возвращает саму строку .

procedure MAIN_REG_OPCODE(Opcode : Word; ProcedureAddress : Integer); stdcall;
Процедура, отвечающая за регистрацию опкода в `QuickOpcode` библиотеке.
Opcode - сам опкод, 2 байта, ProcedureAddress - адрес процедуры, которая будет вызываться, при вызове игрой данного опкода.

Если что-либо не совсем ясно, то смотрите исходник ini-плагина.



Просмотров: 7605
2.09.2015, 11:46 -

Категория: Grand Theft Auto: San Andreas » Скрипты для Grand Theft Auto: San Andreas