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

SeJIya

Новичок
45
2
Такой вопрос: где взять структуры в виде:
адресс, оффсет, поиснение, по типу:

Код:
0x9788C0 - Начало блока пикапов. Количество элементов - 620. Размер одного элемента - 32 байта.
 
+0 = [float] Текущая стоимость
+4 = [dword] Указатель на CObject
+8 = [dword] Количество денег/патронов
+12 = [dword] Время восстановления
+16 = [word] Позиция X * 8
+18 = [word] Позиция Y * 8
+20 = [word] Позиция Z * 8
+22 = [word] Количество денег за день
+24 = [word] ID модели
+26 = [word] Уникальный индекс
+28 = [byte] Тип
3 - Подковы, ракушки
4 - Оружие, которое оставляют педы после смерти
8 - Деньги, которые оставляют педы после смерти
20 - Фотокамеры
+29 = [byte] Флаги
+30 = [byte] Неизвестно
+31 = [byte] Неизвестно
Если нет инфы, то как их получить самостоятельно, просто хотелось бы разобраться в данном вопросе. // p.s поправте если где - то ошибся.

Ну либо такой вопрос: Как получить sPos кара с /dl ?.
 

SeJIya

Новичок
45
2
И ещё один вопрос:
Код:
:getNumberPlate
// 0ab1: call @getNumberPlate 1 car_id 0@ retr_to 1@
1@ = SAMP.Base()
1@ += 0x212A80 // SAMP_INFO_OFFSET
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x3D9 // Pools
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x18 // stVehiclePool
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
 
0@ *= 4
005a: 1@ += 0@ // pSAMP_Vehicle[0@]
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x8F
0ab2: ret 1 1@

Параметры:
in: 0@ - ид авто, находящиеся в зоне стрима
out: 1@ - указатель на строку
Указатель на строку возвращается, но строки по этому указателю нет.
"Может я дурак или лыжи не едут" Как правильно получить строку по указателю ?
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Попробуй так.
Код:
{$CLEO}
if 
not 29@ = samp.Base()
then
end_thread
else
    while not samp.Available()
    wait 100
    end
end
while not actor.Driving($player_Actor)
wait 0                                
end
03C0: 0@ = actor $player_Actor car
0@ = samp.GetSAMPVehicleIDByCarHandle(0@)
0ac8: 1@ = 256
call @getNumberPlate 1 0@ to 1@
message "%s" -1 1@
0ac9: 1@
end_thread
:getNumberPlate
// 0ab1: call @getNumberPlate 1 car_id 0@ retr_to 1@
1@ = SAMP.Base()
1@ += 0x212A80 // SAMP_INFO_OFFSET
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x3D9 // Pools
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x18 // stVehiclePool
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
 
0@ *= 4
005a: 1@ += 0@ // pSAMP_Vehicle[0@]
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x8F
0ab2: ret 1 1@
 
  • Нравится
Реакции: SeJIya

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Код:
0ab2: ret 1 1@
Указатель на строку возвращает функция, при попытке вывести строку в чат:
Код:
"STR: %s" 1@
Ноль реакции, выводится только "STR: "
//надеюсь так понятнее. Как быть ?

Ты б код скинул и ип сервера.
 
  • Нравится
Реакции: SeJIya

SeJIya

Новичок
45
2
Ты б код скинул и ип сервера.
Я обычно тестирую на моде Grand Larceny
Address: ОДИН93.26.217.71:960ВОСЕМЬ
Там не работает, хотя номера XYZSR998, зашёл на другой серевр, там норм.
Вопрос можно закрыть, т.к играю на GF сервере, там всё работает.
 

АндрейЧотак

Известный
80
10
Ответит кто? Почему не работает?

Код:
{$CLEO .cs}
{$include /includes/RakNetDefines.txt}
thread "lalala"

if not 0@ = SAMP.Base()
then 0A93: end_custom_thread
end
while not SAMP.Available()
wait 100
end

0B34: samp register_client_command "tttest" to_label @lyl
0B34: samp register_client_command "tttest_off" to_label @lyl_off

while true
wait 0
if 12@ == 1
then
wait 500
if 0611: actor $PLAYER_ACTOR performing_animation "Sword_4"
then
actor.PutAt($PLAYER_ACTOR, -1866.97, -1612.11, 21.76)
end
end
end

:lyl
12@ = 1
actor.putat($PLAYER_ACTOR, -1859.57 -1626.59 -79.22)
Samp.CmdRet()

:lyl_off
12@ = 0
Samp.CmdRet()
 

Enjoy

Новичок
Проверенный
164
11
Короче нашел какой-то открытый код с аимом по скину, ну и хочу понять че да как.
Единственное, что я понимаю из этого - смещение камеры к скину, ини файлы и всяк херня.
Мне непонятны приравнивания цифр и, кстати, какая переменная отвечает за радиус захвата скина.

Код:
// This file was decompiled using SASCM.ini published by GTAG (http://gtag.gtagaming.com/opcode-database) on 14.6.2013
{$CLEO .cs}
 
//-------------MAIN---------------
0000: NOP
thread "aimka"
call @aimka_1273 0
 
:aimka_21
wait 0
call @aimka_1148 0 16@ 17@
if
key_down 17@
else_jump @aimka_550
printf "AimBot ~g~enabled" 1200
 
:aimka_82
wait 0
  not key_down 17@
else_jump @aimka_82
 
:aimka_98
wait 0
call @aimka_1148 0 16@ 17@
if and
056D:  actor $PLAYER_ACTOR defined
  not Actor.Driving($PLAYER_ACTOR)
else_jump @aimka_496
if
0AD2: 0@ = player $PLAYER_CHAR targeted_actor //IF and SET
else_jump @aimka_496
if
  not Actor.Dead(0@)
else_jump @aimka_496
if and
key_down 16@
056D:  actor 0@ defined
  not Actor.Dead(0@)
  not Actor.Driving(0@)
else_jump @aimka_496
068D: get_camera_position_to 1@ 2@ 3@
Actor.StorePos(0@, 4@, 5@, 6@)
Actor.StorePos($PLAYER_ACTOR, 7@, 8@, 9@)
0063: 1@ -= 4@ // (float)
0063: 2@ -= 5@ // (float)
1@ = Math.Abs(1@)
2@ = Math.Abs(2@)
0087: 10@ = 1@ // (float)
0087: 11@ = 2@ // (float)
006B: 10@ *= 10@ // (float)
006B: 11@ *= 11@ // (float)
005B: 10@ += 11@ // (float)
01FB: 10@ = square_root 10@
0087: 11@ = 1@ // (float)
0087: 12@ = 10@ // (float)
0073: 11@ /= 12@ // (float)
12@ = Math.Arcsine(11@)
13@ = Math.Arccosine(11@)
if
call @aimka_1048 0 16@
else_jump @aimka_496
if
call @aimka_614 7 4@ 5@ 7@ 8@ 12@ 13@ 16@ 15@
else_jump @aimka_496
if
call @aimka_557 6 4@ 5@ 6@ 7@ 8@ 9@
else_jump @aimka_496
15@ += 0.0389
0A8C: write_memory 11989592 size 4 value 15@ virtual_protect 0
 
:aimka_496
key_down 17@
else_jump @aimka_98
printf "AimBot ~r~disabled" 1200
 
:aimka_534
wait 0
  not key_down 17@
else_jump @aimka_534
 
:aimka_550
jump @aimka_21
 
:aimka_557
if
06BD:  no_obstacles_between 3@ 4@ 5@ and 0@ 1@ 2@ solid 1 car 0 actor 0 object 1 particle 0
else_jump @aimka_607
0485:  return_true
jump @aimka_609
 
:aimka_607
059A:  return_false
 
:aimka_609
ret 0
 
:aimka_614
if
  6@ == 5
else_jump @aimka_679
7@ = 0.01
8@ = 0.01
9@ = 1.5607
10@ = 1.5807
jump @aimka_784
 
:aimka_679
if
  6@ == 6
else_jump @aimka_744
7@ = 0.018
8@ = 0.02
9@ = 1.5507
10@ = 1.5907
jump @aimka_784
 
:aimka_744
7@ = 0.0
8@ = 0.0
9@ = 1.5707
10@ = 1.5707
 
:aimka_784
if and
0025:  2@ > 0@ // (float)
0025:  3@ > 1@ // (float)
else_jump @aimka_827
0063: 5@ -= 8@ // (float)
0087: 15@ = 5@ // (float)
 
:aimka_827
if and
0025:  2@ > 0@ // (float)
8035:  not  3@ >= 1@ // (float)
else_jump @aimka_880
5@ *= -1.0
0063: 5@ -= 7@ // (float)
0087: 15@ = 5@ // (float)
 
:aimka_880
if and
8035:  not  2@ >= 0@ // (float)
0025:  3@ > 1@ // (float)
else_jump @aimka_923
005B: 4@ += 9@ // (float)
0087: 15@ = 4@ // (float)
 
:aimka_923
if and
8035:  not  2@ >= 0@ // (float)
8035:  not  3@ >= 1@ // (float)
else_jump @aimka_976
4@ *= -1.0
0063: 4@ -= 10@ // (float)
0087: 15@ = 4@ // (float)
 
:aimka_976
0A8D: 11@ = read_memory 11989592 size 4 virtual_protect 0
0063: 11@ -= 15@ // (float)
if and
  not 11@ >= 0.18
  11@ > -0.18
else_jump @aimka_1038
0485:  return_true
jump @aimka_1040
 
:aimka_1038
059A:  return_false
 
:aimka_1040
ret 1 15@
 
:aimka_1048
0A96: 0@ = actor $PLAYER_ACTOR struct
0@ += 1816
0A8D: 1@ = read_memory 0@ size 1 virtual_protect 0
if or
  1@ == 2
  1@ == 3
  1@ == 4
  1@ == 5
  1@ == 6
  1@ == 7
else_jump @aimka_1138
0485:  return_true
jump @aimka_1140
 
:aimka_1138
059A:  return_false
 
:aimka_1140
ret 1 1@
 
:aimka_1148
0AF0: 0@ = get_int_from_ini_file "CLEO\set\aimbotsettings.ini" section "Settings" key "keyaiming"
0AF0: 1@ = get_int_from_ini_file "CLEO\set\aimbotsettings.ini" section "Settings" key "keyactivation"
ret 2 0@ 1@
 
:aimka_1273
if
8AE4:  not directory_exists "CLEO\set"
else_jump @aimka_1319
 
:aimka_1296
wait 0
0AE5: create_directory "CLEO\set" // IF and SET
else_jump @aimka_1296
 
:aimka_1319
if
8AAB:  not file_exists "CLEO\set\aimbotsettings.ini"
else_jump @aimka_1473
0AF1: write_int 1 to_ini_file "CLEO\set\aimbotsettings.ini" section "Settings" key "keyaiming"
0AF1: write_int 121 to_ini_file "CLEO\set\aimbotsettings.ini" section "Settings" key "keyactivation"
 
:aimka_1473
ret 0
 

iAmerican

Известный
Друг
615
257
Код:
00A0: store_actor $PLAYER_ACTOR position_to 7@ 8@ 9@
for 0@ = 0 to 1000
    if 0B23:  samp is_player_connected 0@
    then
        if
        0B20: samp 1@ = actor_handle_by_samp_player_id 0@
        then
            00A0: store_actor 1@ position_to 2@ 3@ 4@
            050A: 5@ = distance_between_XYZ 7@ 8@ 9@ and_XYZ 2@ 3@ 4@
            if
            5@ <= 20.0 // Тут радиус
            then
                0B36: samp 6@ = get_player_nickname 0@
                msg "%s[%d]" -1 6@ 0@
            end
        end
    end
end

Можно ли к этому коду добавить блок по ID'у \ Нику ? То есть стоят 5 человек с идами 1 2 3 4 5 , и что бы блочил к примеру 5 ID . И не высвечивал его .
Или это привязать к нику игрока .
 

TheMonstercat

Известный
75
11
This?
Код:
{$CLEO}
 
0000:
0662: "by legend2360"
0662: "BlastHack - cheating is art"
 
while not SAMP.Available()
    wait 400
end
         
0b34: reg_cmd "showtagname" @cmd
0b34: reg_cmd "stn" @cmd
 
1@ = SAMP.Base()
1@ += 0x212A80
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x3D5
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ += 0x38
 
0@ = true
 
while true
    wait 0
end
 
:cmd
0B12: 0@ = 0@ XOR 1
0A8C: write_memory 1@ size 1 value 0@ virtual_protect 0
0b43: cmdret


Yeah thats what im loocking for thanks man :)
 

hnnssy

Известный
Друг
2,684
2,748
Код:
00A0: store_actor $PLAYER_ACTOR position_to 7@ 8@ 9@
for 0@ = 0 to 1000
    if 0B23:  samp is_player_connected 0@
    then
        if
        0B20: samp 1@ = actor_handle_by_samp_player_id 0@
        then
            00A0: store_actor 1@ position_to 2@ 3@ 4@
            050A: 5@ = distance_between_XYZ 7@ 8@ 9@ and_XYZ 2@ 3@ 4@
            if
            5@ <= 20.0 // Тут радиус
            then
                0B36: samp 6@ = get_player_nickname 0@
                msg "%s[%d]" -1 6@ 0@
            end
        end
    end
end

Можно ли к этому коду добавить блок по ID'у \ Нику ? То есть стоят 5 человек с идами 1 2 3 4 5 , и что бы блочил к примеру 5 ID . И не высвечивал его .
Или это привязать к нику игрока .
Да, можно.
 
  • Нравится
Реакции: SeJIya

SeJIya

Новичок
45
2
Код:
00A0: store_actor $PLAYER_ACTOR position_to 7@ 8@ 9@
for 0@ = 0 to 1000
    if 0B23:  samp is_player_connected 0@
    then
        if
        0B20: samp 1@ = actor_handle_by_samp_player_id 0@
        then
            00A0: store_actor 1@ position_to 2@ 3@ 4@
            050A: 5@ = distance_between_XYZ 7@ 8@ 9@ and_XYZ 2@ 3@ 4@
            if
            5@ <= 20.0 // Тут радиус
            then
                0B36: samp 6@ = get_player_nickname 0@
                msg "%s[%d]" -1 6@ 0@
            end
        end
    end
end

Можно ли к этому коду добавить блок по ID'у \ Нику ? То есть стоят 5 человек с идами 1 2 3 4 5 , и что бы блочил к примеру 5 ID . И не высвечивал его .
Или это привязать к нику игрока .
Простейшее ветвление же.
ЛОГИКА: Если переменная цикла равна иду который необходимо не выводить, просто нечего не делаем.
Аналогично с ником, если ник игрока в цикле равен тому который надо не выводить, просто нечего не делаем.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
  • Нравится
Реакции: hnnssy

Dim@}{od

Известный
102
11
Это скрипт на автоматический tid. Уже 5 день жду пока кто то сделает, сделали а он не работает, помогите пожалуйста почему команду /zaebal вводил и нихуя он не работает
Код:
{$CLEO}
0000:   
//^ начало всех скриптов                     
thread "warp"
//^ метка которая будет применяться при декомпеляции скрипта
if not 0@ = SAMP.Base()      // подключаем SF
then 0a93:
end
repeat                          //даем прогрузиться ГТА, при использование сф лучше использовать
wait 600                        //задержка для проверки загруженности
until SAMP.Available()          //выход если гта загружена
0B34: samp register_client_command "zaebal" to_label @cmd //регистрируем команду, в данном случае включения
 
while true                  //цикл в котором код скрипта
wait 0                      //wait 0 что не закрашило/зависло
if                          //начало условия
30@ == 1                    //само условие: скрипт активирован? почему 1 активация чуть позже
then                        //да-акивирован, идем дальше, если не активирован то пропускает эту часть ниже и цикл идет снова
0AC8: 3@ = allocate_memory_size 128    //выделяем память под переменную, в ней будет содержаться текст
0AC8: 5@ = allocate_memory_size 64      // аналогично, тому что выше
0B75: samp get_chat_string 99 text_to 3@ prefix_to 5@ color_to 4@ prefix_color_to 0@    //получаем тест(3@), цвет(4@), префикс(5@) и т.д. у 99 строки
if                                                                //начало условия
0C18: 2@ = strstr string1 3@ string2 "Загружено"                //если в тексте строки есть слово "Загружено"-пишем учитывая регист
then                                                            //тогда
Actor.StorePos($PLAYER_ACTOR, 4@ 5@ 6@)                          // получаем координаты актера(тебя)
if                                                              //условие
0AE2: 0@ = random_vehicle_near_point 4@ 5@ 6@ in_radius 250.0 find_next 0 pass_wrecked 1  //ищем рандомный кар в радиусе 250 от твоих координат, в 0@  записывается хэнгл кара
then  //если нашли
repeat      //цикл
wait 0        //чтоб не крашнуло
if or //2е условие, оно выполняется если из нескольких условий 1 = правде         
car.Model(0@) == 584 //получаем модель найденого кара и сразу сравниваем с нужной нам моделью, модель прицепа с бензом 584
car.Model(0@) == 450 // 450 прицеп с углев и деревом вроде
then          //если выполнилось 1 из условий
0B2C: samp 2@ = get_vehicle_id_by_car_handle 0@ // то, получаем ид кара из хэнгла
wait 100                                      //ждем 0.1 секунду
0AD3: string 4@ format "/tid %d" 2@ //создаем текст где будет использоваться наш ид
0B79: samp set_chat_input_enabled 1 //открываем чат
0B76: samp set_chat_input_text 4@  //пишем туда наш текст
0AB1: call @keyPress 2 key 13 time 10 //вызываем функция эмуляции нажатия клавиши Ентре на 10 мс
0AF8: samp add_message_to_chat "Загрузили прицеп с идом: %d" /*можешь писать любой текст*/ color 0x007bff /*любой цвет что хочешь можншь сделать*/ 2@ //2@- указатель на ид машины || относительно этого опкода он пишет в чат текст который будешь видеть только ты, он не особо нужен написал чтоб знал
end                                            //завершаем
until 8AE2: not 0@ = random_vehicle_near_point 4@ 5@ 6@ in_radius 250.0 find_next 0 pass_wrecked 1 //выходим из цикла если нету каров больше
end
end                                                                                              //завершаем
0ac9: 3@                                                                                          //удаляем выделеную память
0ac9: 5@                                                                                          //аналогично тому что выше
end
end
 
:cmd        //метка
0b12: 30@ = 30@ xor 1 // изменяем 30@ отновистельно 1, т.е. будет равно или 1 или 0, по условию 1 у нас активация, можно там заменит на 0 и тогда будет автовключение
samp.CmdRet() //завершаем команду чтобы вернуться к основному коду скрипта
 
:keyPress //отсюда начинается функция эмуляции нажатия клавиши, обьяснять не буду, если дальше понадобилться тупо копируй
if 0AA2: 2@ = load_library "User32.dll"
then
if 0AA4: 2@ = get_proc_address "keybd_event" library 2@
then
0AA5: call 2@ num_params 4 pop 0 0 0 0 0@
wait 1@
0AA5: call 2@ num_params 4 pop 0 0 0x02 0 0@
end
end
0AB2: ret 0