.0 Us 14383616 Bytes
Данная библиотека, реализует функции работы с опкодами, с их парметрами и т.п. Теперь написать простой опкод, более-менее оптыному программисту не составит никакого труда. Поддерживаемые версии gtasa.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, но только с измененным расширением) которые при своей загрузке вызывают из родителской библиотеки (этой библотеки) функции регистрации опкодов, в которые передают номера опкодов и адреса процедур, которые должны выполнятся при их вызове. Также данная библиотека содержит в себе функции чтения/записи всех типов параметров в опкоде, которые используют плагины в процессе обработки и выполнения опкода. Функции библиотеки: Все функции применяются последовательно по мере чтения/записи информации в опкоде, порядок чтения параметров слева-направо. (всё преведено на, примером использования является исходник ini-плагина) function FUNCREADVALUE(TP: Char): Variant; Читает int/float значение параметра опкода, для чтения int, установите TP в 'i', для float - 'f'.


Теоретически, чтобы использовать это в других языках программирования, не поддерживающих тип, аналогичный Variant, нужно объявлять эту функцию несколько раз, тоесть первая будет иметь тип int, а вторая float. Function FUNCWRITEVALUE(TP: Char; Value: Variant): Boolean; stdcall; Записывает i/f значение в переменную опкода, TP тоже самое, что и в предыдущем, Value - i/f значение, опять же, если Variant не поддерживается, то надо объявлять i/f отдельно друг от друга. Function FUNCREADPOINTER(TP: Char): Integer; Читает указатель на переменную. В данном случае TP может принимать значения 'g' - для получения указателя на глоабльную скриптовую переменную или 'l' - соттвественно для локального типа переменной.
Функция сделана для того, что если необходимо что-либо записывать уже в первую переменную (арифметические операции итп), то единственным вариантом будет взять указатель на нее, а после получения результата просто записать его по адресу, взятого из указателя. Function FUNCREADOPCODESTRING: String; Читает строку из опкода, поддерживаются типы строк 'str' и 'str'. Function FUNCALLOCSTRING(str: string): Integer; Размещает в памяти указанную строку и возвращает указатель на неё, с опкодами никак не связана. Function FUNCREADALLOCATEDSTRINGBYHANDLE: string; Читает из опкода переменную, в которой хранится указатель на строку и возвращает саму строку. Procedure MAINREGOPCODE(Opcode: Word; ProcedureAddress: Integer); stdcall; Процедура, отвечающая за регистрацию опкода в `QuickOpcode` библиотеке.
Opcode - сам опкод, 2 байта, ProcedureAddress - адрес процедуры, которая будет вызываться, при вызове игрой данного опкода. Если что-либо не совсем ясно, то смотрите исходник ini-плагина.
Каждый раз, когда включаю выбивает: Sorry, but this version of gta_sa.exe is not supported Supported versions: -1.0us (14383616 bytes) -1.0us compact (5189632 bytes). Посмотрев на форумы, увидел, что необходимо переустановить файл gtasa.exe, все пошло на 'Ура! ', но каждый раз когда перезапускаю игру, опять же выбивает ошибка, приходится заново устанавливать файл. Чистый gta_sa.exe US 1.0. Тема в разделе 'Другое', создана пользователем MogAika, 24 июл 2013.