Заработай на своем сайте Купите рекламу от 5 центов за клиента!
GTA Скриптинг
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта

Научись скриптить

Реклама

Главная » Статьи » Учения скриптингу » Уроки

CLEO 2 CODE LIBRARY

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

Более того, функционал данной библиотеки практически неограничен, поскольку может быть расширен при помощи плагинов. Подробнее о плагинах CLEO читайте ниже.

Какие версии игры поддерживаются ?

CLEO 2 поддерживает версию 1.0 и 1.01. Абсолютно точно CLEO 2 работает на американских версиях (US). Если вы имеете европейскую или немецкую версии игры, сообщите о том, как там работает CLEO 2.

Как установить CLEO 2 ?

Способ 1: через asi loader
Вы можете использовать SA ASI plugin loader, написанный JernejL. Он позволяет загружать библиотеки, имеющие расширение .ASI. Для того чтобы использовать этот способ, установите asi loader, следуя инструкциям, указанным в readme файле к нему. После этого переименуйте файл CLEO.DLL в CLEO.ASI и поместите его в корневую папку игры. Это все. Вы можете использовать новые опкоды и устанавливать плагины.
SA ASI plugin loader :  http://www.gtatools.com/filedb/action.php?action=file&id=19
Этот способ лучше чем второй, но требует замены оригинального файла vorbisfile.dll

Способ 2: через main.scm
Во-первых, вы должны вставить следующий код в самое начало исходника main.scm. Обычно первым опкодом в исходнике идет опкод

03A4: name_thread 'MAIN'

Вы должны вставить приведенный код ПЕРЕД данным опкодом.

:CLEO2_RUN
0@ = -429566 
&0(0@,1i) == 4611680
jf @CLEO2_v2 // 1.0
0@ = -429539
&0(0@,1i) == 0xFFFF
jf @CLEO2_Continue
0@ = -429863
&0(0@,1i) = 0xA49960
&0(0@,1i) += @__CLEO2_v1
jump @CLEO2_Load

:CLEO2_v2
0@ = -430793
&0(0@,1i) == 0xFFFF
jf @CLEO2_Continue
0@ = -431117
&0(0@,1i) =  0xA4BFE0
&0(0@,1i) += @__CLEO2_v2

:CLEO2_Load   
0572: 1
&0(0@,1i) = 0
jump @CLEO2_Continue

:__CLEO2_Dll
hex
 "CLEO\CLEO.DLL" 00
end

:__CLEO2_v1
hex
 BF 60 99 A4 00         // mov edi, 0xA49960
 81 C7 @__CLEO2_Dll     // add edi, label
 57                     // push edi
 FF 15 70 80 85 00      // call LoadLibraryA
 C3                     // ret
end

:__CLEO2_v2
hex
 BF E0 BF A4 00         // mov edi, 0xA4BFE0
 81 C7 @__CLEO2_Dll     // add edi, label
 57                     // push edi
 FF 15 70 90 85 00      // call LoadLibraryA
 C3                     // ret
end

:CLEO2_Continue

После этого создайте в корневой папке игры папку CLEO и скопируйте туда файл CLEO.DLL. Скачать его можно тут : http://cleo.sannybuilder.com/cleo2.rar , если какая-то ссылка не работает , то ищем её
тут  http://sannybuilder.com
Теперь вы можете свободно использовать новые опкоды в ваших скриптах, а также устанавливать плагины.

Какие опкоды добавлены ? (v 2.0.0.32)

Список опкодов (с указанием параметров):

0A8C: write_memory [dword] size [byte] value [dword] virtual_protect [bool]
0A8D: [var] = read_memory [int32] size [byte] virtual_protect [bool]
0A8E: [var] = [valA] + [valB] // int
0A8F: [var] = [valA] - [valB] // int
0A90: [var] = [valA] * [valB] // int
0A91: [var] = [valA] / [valB] // int
 
0A96: [var] = actor [handle] struct
0A97: [var] = car [handle] struct   
0A98: [var] = object [handle] struct

0A99: chdir [flag]
0A9A: [var] = openfile "path" mode [dword]
0A9B: closefile [hFile]  
0A9C: [var] = file [hFile] size
0A9D: readfile [hFile] size [dword] to [var] 
0A9E: writefile [hFile] size [dword] from [var]

0A9F: [var] = current_thread_address
0AA0: gosub_if_false [label]
0AA1: return_if_false

0AA2: [var] = load_library "path"
0AA3: free_library [hLib]
0AA4: [var] = get_proc_address "name" library [hLib]

0AA5: call [address] num_params [byte] pop [byte] [param1, param2...]
0AA6: call_method [address] struct [address] num_params [byte] pop [byte] [param1, param2...]
0AA7: call_function [address] num_params [byte] pop [byte] [param1,param2...] result [var]
0AA8: call_function_method [address] num_params [byte] pop [byte] [param1,param2...] result [var]
0AA9:   is_game_version_original

0AAB:  file_exists "path"


Нужно ли менять SASCM.INI ?

Да, для компиляции новых опкодов вам потребуется добавить следующие строки в файл SASCM.INI (он лежит в папке sanny builder\data\sa). На момент времени , в который Вы читаете мой мануал
данные строки могут уже быть включены в SASCM.INI .

; CLEO 2 Opcodes
0A8C=4,write_memory %1d% size %2d% value %3d% virtual_protect %4d%
0A8D=4,%4d% = read_memory %1d% size %2d% virtual_protect %3d%
0A8E=3,%3d% = %1d% + %2d% ; int
0A8F=3,%3d% = %1d% - %2d% ; int
0A90=3,%3d% = %1d% * %2d% ; int
0A91=3,%3d% = %1d% / %2d% ; int
0A96=2,%2d% = actor %1d% struct
0A97=2,%2d% = car %1d% struct
0A98=2,%2d% = object %1d% struct
0A99=1,chdir %1b:userdir/rootdir%
0A9A=3,%3d% = openfile %1s% mode %2d%
0A9B=1,closefile %1d%
0A9C=2,%2d% = file %1d% size
0A9D=3,readfile %1d% size %2d% to %3d%
0A9E=3,writefile %1d% size %2d% from %3d%
0A9F=1,%1d% = current_thread_pointer
0AA0=1,gosub_if_false %1p%
0AA1=0,return_if_false
0AA2=2,%2h% = load_library %1s%
0AA3=1,free_library %1h%
0AA4=3,%3d% = get_proc_address %1s% library %2d%
0AA5=-1,call %1d% num_params %2h% pop %3h%
0AA6=-1,call_method %1d% struct %2d% params %3h% pop %4h%
0AA7=-1,call_function %1d% params %2h% pop %3h%
0AA8=-1,call_function_method %1d% struct %2d% params %3h% pop %4h%
0AA9=0,  is_game_version_original
0AAB=1,  file_exists %1s%

Что там насчет плагинов ?

Плагины - это обычные DLL-файлы, имеющие расширение .CLEO. При запуске библиотека CLEO 2 ищет в той папке, где она расположена (GTA SA\CLEO\), файлы с данным расширением и пытается загрузить их. После удачной загрузки плагин начинает работать и выполнять те функции, для которых он написан.

Процедура установки плагина очень проста: просто скопируйте файл в папку с основной библиотекой (CLEO.DLL). Чтобы прекратить пользование плагином - удалите файл.

Вы можете скачать первый, пробный плагин тут:
http://cleo.sannybuilder.com/plugins/scmlog.rar
 Это плагин SCMLog, который позволяет отследить, какие опкоды выполняются скриптом. ScmLog создает файл scmlog.log в папке, где он расположен, и записывает туда какой опкод выполняется в настоящий момент и его позиция в файле main.scm.

Пример лога:

************ SCM LOG ************
> Logging started: 14:06:08
*********************************

> parsing thread noname
00000794: opcode 0004,
0000079F: opcode 0002,
000007DA: opcode 03A4,

> parsing thread main
000007E5: opcode 01F0,
000007E9: opcode 0111,


Автор библиотеки CLEO 2 - Seemann. Автор не несет никакой ответственности за возможные негативные последствия, вызванные использованием данного продукта. Используйте его на свой страх и риск.
Автор также благодарит Станислава Головина (aka listener) за поддержку и полезную информацию.
                                                                         

Категория: Уроки | Добавил: gtascript (11.08.2007)
Просмотров: 2293 | Комментарии: 1 | Рейтинг: 5.0/1 |

Всего комментариев: 1
1 Drage  
0
спс!!!!

Имя *:
Email *:
Код *:
Форма входа

Часы

Скорость интернета

Друзья сайта

eServer.ru :: Хостинг-оператор #1 Сайт полностью посвящен мультфильму
САЙТ КАМРАНА!!!! Бесплатные игры, программы, МР3, новости и многое другое Только на сайте КАМРАНА!!!!! Все о Mafia 2 GTAIV Портал Только русские файлы для gta san andreas Софт для gta sanandreas Лада-тюнинг-эксклюзивные тюнингованые авто для GTA:SA


Статистика

Dating.ru Топ100 - Игры RusTusovka.COM - ТОП 100 Русско-Язычных Сайтов Русский Топ Рейтинг Топ GamerPro SERP: gta скрипты программы миссии


Copyright MyCorp © 2025 Конструктор сайтов - uCoz