Вопросы по CLEO-скриптингу

SaMMpeR Cheats

Новичок
49
5
Короче сделал автообнову создал сайт на Ucoz залил туда update.txt | changelog.txt - в update.txt я так понял нужно залить сам код скрипта который в дальнейшем можно будет изменять.
Заполнил все поля как нужно в FileZila открыл update.txt закинул код , зашел в игру работает написано auto_upd версия 1 . Ну крч все как нужно потом решил вместо SCRIPT_VERSION = 1 в update.txt изменить на SCRIPT_VERSION = 2 по идее это и есть обновление сохранил файл был обновлен в FileZila. Захожу в игру мне нечего не выскакивает типа обновить до версии 2 там ну и.т.д. Что делать?

Возможно Я ДАУН ПРОСТО
CLEO:
{$CLEO}

0000:

const // Константы для определения названий файлов и версии скрипта
    SCRIPT_VERSION = 1

    UPDATEINFO_FILE = "update.txt"
    CHANGELOG_FILE = "changelog.txt"
end

repeat
    wait 400
until 0AFA:  is_samp_available

0AF8: samp add_message_to_chat "Скрипт auto_upd. Версия №%d" color -1 SCRIPT_VERSION

0AB1: call_scm_func @check_updates 1 current_version SCRIPT_VERSION

while true
    wait 0
end

:download_check_status // Для проверки статуса загрузки(т.к. эта часть будет использоваться более, чем 1 раз)
// call @download_check_status 1 download_n 0@
1@ = -1
while 1@ == -1 // Скачивание всё ещё в процессе
    wait 0
    0C66: 1@ = get_download 0@ state // Получаем статус загрузки
end
0AB2: ret 1 1@ // Возвращаем статус зарузки

:url_fileupdateinfo // Т.к. в Sanny Builder иначе никак не подружиться со слешами в строках, придется как нить так
// Здесь хранится URL на данные с обновлением
hex
    "http:" "/" "/" "sammper.clan.su/DevelStudio/CLEO_UPDATE/update.txt" 00
end

:check_updates
// call @check_updates 1 current_version 0@
0AC6: 1@ = label @url_fileupdateinfo offset // Сделаем грешок и переопределим переменную
0C65: 1@ = download_url 1@ to_file UPDATEINFO_FILE // Начинаем скачивание файла
0AB1: call_scm_func @download_check_status 1 download_n 1@ status_to 2@
0C7D: release_download 1@ // Освобождаем, т.к. скачивание завершено

if 2@ <> 0 // Если статус НЕ равен 0(т.е. загрузка завершена неудачно), то
then
    0AF8: samp add_message_to_chat "Произошла ошибка во время загрузки. Ошибка %p" color -1 2@ // Выводим сообщение об ошибке
else // иначе
    0AF8: samp add_message_to_chat "Загрузка успешно завершена." color -1 // Выводим сообщение об успешном скачивании

    if 0AAB: file_exists UPDATEINFO_FILE // Мало ли файл не был создан в необходимом нам месте, проверим это на всякий случай
    then
        0AF0: 3@ = get_int_from_ini_file UPDATEINFO_FILE section "UPDATE" key "version" // Читаем номер версии в скаченном файле обновления
        if 001D: 3@ > 0@ // Если текущая версия скрипта меньше, чем указанная в файле обновления, то
        then
            0AF8: samp add_message_to_chat "Доступна новая версия обновления №%d для {FFFF00}auto_upd" color -1 3@ // Оповещаем

            0AC8: 4@ = allocate_memory_size 260 // Выделяем память под URL загрузки файла
            0C11: memset destination 4@ value 0 size 260 // Очищаем от ненужных символов(на всякий случай)

            0AF4: 4@ = read_string_from_ini_file UPDATEINFO_FILE section "UPDATE" key "http:" "/" "/" "sammper.clan.su/DevelStudio/CLEO_UPDATE/changelog.txt" // Читаем URL загрузки списка изменений
            0C65: 1@ = download_url 4@ to_file CHANGELOG_FILE // Скачиваем список изменений
            0AB1: call_scm_func @download_check_status 1 download_n 1@ status_to 2@ // ждем окончание загрузки
            0C7D: release_download 1@ //

            if 2@ == 0
            then
                0AB1: call_scm_func @show_changelog 0

            end

            // -------
            0C11: memset destination 4@ value 0 size 260 //
            0AF4: 4@ = read_string_from_ini_file UPDATEINFO_FILE section "UPDATE" key "http:" "/" "/" "sammper.clan.su/DevelStudio/CLEO_UPDATE/update.txt" //
            0C65: 1@ = download_url 4@ to_file "cleo/auto_upd.cs" // Скачиваем новую версию скрипта и заменяем текущий скрипт
            0AB1: call_scm_func @download_check_status 1 download_n 1@ status_to 2@ //
            0C7D: release_download 1@ //

            if 2@ == 0
            then
                0AF8: samp add_message_to_chat "Обновление завершено." color -1
            else
                0AF8: samp add_message_to_chat "Произошла ошибка при обновлении." color -1
            end

            0AC9: free_allocated_memory 4@
        end
    end
end
0AB2: ret 0
 
Последнее редактирование:

IZDATXXX

Известный
Проверенный
172
252
Скрипт считает любого пассажира за водителя, а их надо различить.
Вот код, подскажите пожалуйста что добавить:

CLEO:
if
0449:   actor 1@ in_a_car
then
    if
    00DF:   actor 1@ driving
    then    //Водитель

    else    //Пассажир
  
    end
end
 

itsOkke

Потрачен
86
38
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Скрипт считает любого пассажира за водителя, а их надо различить.
Вот код, подскажите пожалуйста что добавить:

CLEO:
if
0449:   actor 1@ in_a_car
then
    if
    00DF:   actor 1@ driving
    then    //Водитель

    else    //Пассажир
 
    end
end
046C: 125@ = car 42@ driver
получает водителя указанного авто
 

itsOkke

Потрачен
86
38
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я уже пытался сравнивать id водителя и id текущего актера. Не работает.
попробуй
CLEO:
:isDriver
if 00DF:   actor 0@ driving
then
    03C0: 1@ = actor 0@ car
    046C: 2@ = car 1@ driver
    if 2@ == 0@
    then 0AB2: ret 1 1
    end
end
0AB2: ret 1 0
 
  • Нравится
Реакции: IZDATXXX

cheatsampdrp

Участник
57
3
Как сделать привязку для скрипта на Hard Disk например или на что то дургое
 

hnnssy

Известный
Друг
2,684
2,769
Как сделать привязку для скрипта на Hard Disk например или на что то дургое
с подключением
уже не один десяток раз это обсуждалось здесь, позови дашу-следопыта и отыщите решение, воспользовавшись поиском
 

IZDATXXX

Известный
Проверенный
172
252
Как сделать привязку для скрипта на Hard Disk например или на что то дургое
Вот это до привязки:
CLEO:
{$CLEO}
0AB1: call_scm_func @GetVolumeInformationA 0 | Serial_TO 0@
0AC8: 1@ = allocate_memory_size 16
0AD3: 1@ = format "%X" 0@
0AF5: write_string 1@ to_ini_file "CLEO\IDENTIFICATOR.INI" section "Main" key "HDDSerial"
0AC9: free_allocated_memory 1@
0A93: end_custom_thread
:GetVolumeInformationA
0AA2: 25@ = load_library "Kernel32.DLL"
0AA4: 26@ = get_proc_address "GetVolumeInformationA" library 25@
0AC7: 27@ = var 27@ offset
0AA7: call_function 26@ num_params 8 pop 0 nFileSystemNameSize 0 lpFileSystemNameBuffer 0 lpFileSystemFlags 0 lpMaximumComponentLength 0 lpVolumeSerialNumber 27@ nVolumeNameSize 0 lpVolumeNameBuffer 0 lpRootPathName 0 28@
0AA3: free_library 25@
0AB2: ret 1 27@
CLEO:
{$CLEO}
0000:
repeat
wait 0
until 0AFA:
jump @Check
:Check
wait 0
0AB1: call_scm_func @GetSystemInfo 0 | STRUCT_TO 0@
0AC7: 25@ = var 0@ offset
0A8D: 1@ = read_memory 25@ size 2 virtual_protect 0  //wProcessorArchitecture
0AC8: 10@ = allocate_memory_size 16
0AD3: 10@ = format "%X" 1@
0AF5: write_string 10@ to_ini_file "CLEO\IDENTIFICATOR.INI" section "Main" key "wProcessorArchitecture"
0AC9: free_allocated_memory 10@
0A93: end_custom_thread
:GetSystemInfo
0AA2: 0@ = load_library "Kernel32.DLL"
0AA4: 1@ = get_proc_address "GetSystemInfo" library 0@
0AC7: 10@ = var 10@ offset
0AA5: call 1@ num_params 1 pop 0 *lpSystemInfo 10@
0AA3: free_library 0@
0AB2: ret 1 10@
Вот это после:
CLEO:
{$CLEO}
0000:
repeat
wait 0
until 0AFA:
jump @Check
:Check
wait 0
0AB1: call_scm_func @GetSystemInfo 0 | STRUCT_TO 0@
0AC7: 25@ = var 0@ offset
0A8D: 1@ = read_memory 25@ size 2 virtual_protect 0  //wProcessorArchitecture
0AB1: call_scm_func @GetVolumeInformationA 0 | SERIAL_TO 0@
0AC8: 10@ = allocate_memory_size 24
0AD3: 10@ = format "%X" 0@
0AD4: 5@ = scan_string 10@ format "%c%c%c%c%c%c%c%c" 11@ 12@ 13@ 14@ 15@ 16@ 17@ 18@//SerialNumber
0AC9: free_allocated_memory 10@
0AD4: 10@ = char 11@ format "%X" to_hex 11@
0AD4: 10@ = char 12@ format "%X" to_hex 12@
0AD4: 10@ = char 13@ format "%X" to_hex 13@
0AD4: 10@ = char 14@ format "%X" to_hex 14@
0AD4: 10@ = char 15@ format "%X" to_hex 15@
0AD4: 10@ = char 16@ format "%X" to_hex 16@
0AD4: 10@ = char 17@ format "%X" to_hex 17@
0AD4: 10@ = char 18@ format "%X" to_hex 18@
if
{
wProcessorArchitecture:
0xffff = PROCESSOR_ARCHITECTURE_UNKNOWN
0x00 = PROCESSOR_ARCHITECTURE_INTEL(x86)
0x06 = PROCESSOR_ARCHITECTURE_IA64(Intel Itanium-based)
0x05 = PROCESSOR_ARCHITECTURE_ARM(ARM)
0x09 = PROCESSOR_ARCHITECTURE_AMD64(x64 (AMD or Intel))
}
1@ == 0x00 //Проверяем id архитектуры
then
    if and //Проверяем серийник методом HexSerialNumber -> char -> hex (побайтово)
    11@ == 0x32
    12@ == 0x34
    13@ == 0x34
    14@ == 0x41
    15@ == 0x37
    16@ == 0x37
    17@ == 0x46
    18@ == 0x31
    then
        0AF8: "VALID KEY" 0x00FFAA
    else
        0AF8: "INVALID KEY" 0x00FFAA
    end
else
end
0A93: end_custom_thread
:GetSystemInfo
0AA2: 0@ = load_library "Kernel32.DLL"
0AA4: 1@ = get_proc_address "GetSystemInfo" library 0@
0AC7: 10@ = var 10@ offset
0AA5: call 1@ num_params 1 pop 0 *lpSystemInfo 10@
0AA3: free_library 0@
0AB2: ret 1 10@
:GetVolumeInformationA
0AA2: 0@ = load_library "Kernel32.DLL"
0AA4: 1@ = get_proc_address "GetVolumeInformationA" library 0@
0AC7: 10@ = var 10@ offset
0AA7: call_function 1@ num_params 8 pop 0 nFileSystemNameSize 0 lpFileSystemNameBuffer 0 lpFileSystemFlags 0 lpMaximumComponentLength 0 lpVolumeSerialNumber 10@ nVolumeNameSize 0 lpVolumeNameBuffer 0 lpRootPathName 0 5@
0AA3: free_library 0@
0AB2: ret 1 10@
 

DarkP1xel

Сила воли наше всё.
BH Team
3,637
5,026
Вот это до привязки:
CLEO:
{$CLEO}
0AB1: call_scm_func @GetVolumeInformationA 0 | Serial_TO 0@
0AC8: 1@ = allocate_memory_size 16
0AD3: 1@ = format "%X" 0@
0AF5: write_string 1@ to_ini_file "CLEO\IDENTIFICATOR.INI" section "Main" key "HDDSerial"
0AC9: free_allocated_memory 1@
0A93: end_custom_thread
:GetVolumeInformationA
0AA2: 25@ = load_library "Kernel32.DLL"
0AA4: 26@ = get_proc_address "GetVolumeInformationA" library 25@
0AC7: 27@ = var 27@ offset
0AA7: call_function 26@ num_params 8 pop 0 nFileSystemNameSize 0 lpFileSystemNameBuffer 0 lpFileSystemFlags 0 lpMaximumComponentLength 0 lpVolumeSerialNumber 27@ nVolumeNameSize 0 lpVolumeNameBuffer 0 lpRootPathName 0 28@
0AA3: free_library 25@
0AB2: ret 1 27@
CLEO:
{$CLEO}
0000:
repeat
wait 0
until 0AFA:
jump @Check
:Check
wait 0
0AB1: call_scm_func @GetSystemInfo 0 | STRUCT_TO 0@
0AC7: 25@ = var 0@ offset
0A8D: 1@ = read_memory 25@ size 2 virtual_protect 0  //wProcessorArchitecture
0AC8: 10@ = allocate_memory_size 16
0AD3: 10@ = format "%X" 1@
0AF5: write_string 10@ to_ini_file "CLEO\IDENTIFICATOR.INI" section "Main" key "wProcessorArchitecture"
0AC9: free_allocated_memory 10@
0A93: end_custom_thread
:GetSystemInfo
0AA2: 0@ = load_library "Kernel32.DLL"
0AA4: 1@ = get_proc_address "GetSystemInfo" library 0@
0AC7: 10@ = var 10@ offset
0AA5: call 1@ num_params 1 pop 0 *lpSystemInfo 10@
0AA3: free_library 0@
0AB2: ret 1 10@
Вот это после:
CLEO:
{$CLEO}
0000:
repeat
wait 0
until 0AFA:
jump @Check
:Check
wait 0
0AB1: call_scm_func @GetSystemInfo 0 | STRUCT_TO 0@
0AC7: 25@ = var 0@ offset
0A8D: 1@ = read_memory 25@ size 2 virtual_protect 0  //wProcessorArchitecture
0AB1: call_scm_func @GetVolumeInformationA 0 | SERIAL_TO 0@
0AC8: 10@ = allocate_memory_size 24
0AD3: 10@ = format "%X" 0@
0AD4: 5@ = scan_string 10@ format "%c%c%c%c%c%c%c%c" 11@ 12@ 13@ 14@ 15@ 16@ 17@ 18@//SerialNumber
0AC9: free_allocated_memory 10@
0AD4: 10@ = char 11@ format "%X" to_hex 11@
0AD4: 10@ = char 12@ format "%X" to_hex 12@
0AD4: 10@ = char 13@ format "%X" to_hex 13@
0AD4: 10@ = char 14@ format "%X" to_hex 14@
0AD4: 10@ = char 15@ format "%X" to_hex 15@
0AD4: 10@ = char 16@ format "%X" to_hex 16@
0AD4: 10@ = char 17@ format "%X" to_hex 17@
0AD4: 10@ = char 18@ format "%X" to_hex 18@
if
{
wProcessorArchitecture:
0xffff = PROCESSOR_ARCHITECTURE_UNKNOWN
0x00 = PROCESSOR_ARCHITECTURE_INTEL(x86)
0x06 = PROCESSOR_ARCHITECTURE_IA64(Intel Itanium-based)
0x05 = PROCESSOR_ARCHITECTURE_ARM(ARM)
0x09 = PROCESSOR_ARCHITECTURE_AMD64(x64 (AMD or Intel))
}
1@ == 0x00
then
    if and
    {HexSerialNumber -> char -> hex}
    11@ == 0x32
    12@ == 0x34
    13@ == 0x34
    14@ == 0x41
    15@ == 0x37
    16@ == 0x37
    17@ == 0x46
    18@ == 0x31
    then
        0AF8: "VALID KEY" 0x00FFAA
    else
        0AF8: "INVALID KEY" 0x00FFAA
    end
else
end
0A93: end_custom_thread
:GetSystemInfo
0AA2: 0@ = load_library "Kernel32.DLL"
0AA4: 1@ = get_proc_address "GetSystemInfo" library 0@
0AC7: 10@ = var 10@ offset
0AA5: call 1@ num_params 1 pop 0 *lpSystemInfo 10@
0AA3: free_library 0@
0AB2: ret 1 10@
:GetVolumeInformationA
0AA2: 0@ = load_library "Kernel32.DLL"
0AA4: 1@ = get_proc_address "GetVolumeInformationA" library 0@
0AC7: 10@ = var 10@ offset
0AA7: call_function 1@ num_params 8 pop 0 nFileSystemNameSize 0 lpFileSystemNameBuffer 0 lpFileSystemFlags 0 lpMaximumComponentLength 0 lpVolumeSerialNumber 10@ nVolumeNameSize 0 lpVolumeNameBuffer 0 lpRootPathName 0 5@
0AA3: free_library 0@
0AB2: ret 1 10@
Зачем столько говнокода?
GetSystemInfo: 0x81E56E
GetVolumeInformationA: 0x81E532
 

Freym

Известный
489
204
CLEO:
{$CLEO .cs}
0000:

while true
    077E: get_active_interior_to 0@
    if
        not 0@ == 0
    then
        04BB: select_interior 0
    end
end

Как сделать так что бы после проверки на интерьер шел сам скрипт , например , я стою в интерьере и активирую этот скрипт,затем выхожу и скрипт начинает работать , вот скрипт (Взял примером) :

CLEO:
say "/mask"
say "/usedrugs 3"
8@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
wait 250
say "/sellgun deagle 1 5 %d" @8
 
  • Нравится
Реакции: Vintik

Vintik

Через тернии к звёздам
Проверенный
1,565
1,037
CLEO:
{$CLEO .cs}
0000:

while true
    077E: get_active_interior_to 0@
    if
        not 0@ == 0
    then
        04BB: select_interior 0
    end
end

Как сделать так что бы после проверки на интерьер шел сам скрипт , например , я стою в интерьере и активирую этот скрипт,затем выхожу и скрипт начинает работать , вот скрипт (Взял примером) :

CLEO:
say "/mask"
say "/usedrugs 3"
8@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
wait 250
say "/sellgun deagle 1 5 %d" @8

Привет, вот тебе твой скрипт (сделал с активацией на команду "/activate", если её нужно убрать - удаляй четвертую строку, метку и IF в цикле):

CLEO:
{$CLEO .cs}
0000: NOP
2@ = false
0B34: samp register_client_command "activate" to_label @noname

repeat
wait 0
until SAMP.Available()

while true
wait 0

if 2@ == true // Скрипт активирован (можно убрать)
then

077E: get_active_interior_to 0@
    if 0@ > 0 // Значит, что наш персонаж в интерьере
    then
        while 0@ > 0 // Ждём, пока выйдем из интерьера
        wait 0
        077E: get_active_interior_to 0@
        end
        // Отсюда начинает работать наш скрипт
        0AF9: samp say_msg "/mask"
        0AF9: samp say_msg "/usedrugs 3"
        0B2B: samp 1@ = get_player_id_by_actor_handle $PLAYER_ACTOR
        wait 250
        0AF9: samp say_msg "/sellgun deagle 1 5 %d" 1@
    end

end // Конец IF, который отвечает за активация скрипта

end

:noname
wait 0
    if 2@ == false
    then
    2@ = true
    else
    2@ = false
    end
0B43: samp cmd_ret

Привет хочу написать клео скрипт типу чекер риелтокри подскажите как сделать так что б скрипт наживал кнопки например есть табличка и там есть далее и при активации он нажимает это и действия повторяютса а если появитса какойто новый елемент то скрипт напише что появилось

Скриншот риэлторского агентства покажи, так же расскажи точнее, что требуется от скрипта.
 
Последнее редактирование модератором:
  • Нравится
Реакции: Freym

cheatsampdrp

Участник
57
3
Скриншот риэлторского агентства покажи, так же расскажи точнее, что требуется от скрипта.
ну смотри я кину видос
что б он чекал страницы и если появилось что то новое писал например "Дом эконом класса[53]" и играла музыка что то тип этого
 

Vintik

Через тернии к звёздам
Проверенный
1,565
1,037
ну смотри я кину видос
что б он чекал страницы и если появилось что то новое писал например "Дом эконом класса[53]" и играла музыка что то тип этого

А теперь покажи работу без скрипта, нечего не понятно)
 

cheatsampdrp

Участник
57
3
А теперь покажи работу без скрипта, нечего не понятно)
Ну смотри скрипт чекает диалог окна и если в диалоге появляетса что то новое тогда он пишет в чат что появилост и играет музыка вот как то так должен работать скрипт
 

Andreyss

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