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

01EG

Известный
Проверенный
630
344
Куда блядь подробнее? Хочешь, что бы тебе пряямо сказали, что хуевый из тебя математик?
Та ебана, ты же охуенный скриптер, просто скажи нахуя делают математические операции с числом, чтоб получить его адресс, если его сразу получают в существующих программах анализа памяти. Или откуда блядь берут эти числа на которые нужно проводить математические операции.
maxresdefault.jpg
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,965
1) Я мб не понимаю еще, но часто стал встречать, что с переменной делают какие-то невъебенные изменения. То умножают, то прибавляют, то опять умножают. Для чего ?
Вот пример
CLEO:
1@ = 25
1@ += 36
1@ *= 112
1@ += 13150904
1@ += 56
0A8C: write_memory 1@ size 4 value 100.0 virtual_protect 0
Получается: 13154992 (можете пересчитать). Почему бы сразу не посчитать в калькуляторе и не использовать число, нахуя выебываться ? Ок, я понимаю, что проще, чтоб SB сам посчитал, но откуда тогда берут значения на которые нужно умножать и прибавлять. Если еще адресс памяти я понимаю, но это откуда.

2) Чаще всего в клео используют 0x000000(такого типа адресса), как я понимаю это смещение и это значение hex?
А иногда простое целое число, как адресс.

Знающие обьясните пожалуйста по-этому поводу.
В твоем примере высчитывают структуру weapon.dat, насколько из кода я помню. Если не сделать таких вычислений, то циклом for ты не пройдешь по всем значениям и будешь вынужден вписывать значение в каждый адрес самостоятельно, что в итоге у тебя займет огромное количество кода, сил и времени. Если нужно записать всего одно значение, то конечно удобнее будет посчитать самому и уже записать, но если значений дохуя...
 
  • Нравится
Реакции: 01EG

hnnssy

Известный
Друг
2,684
2,752
В твоем примере высчитывают структуру weapon.dat, насколько из кода я помню. Если не сделать таких вычислений, то циклом for ты не пройдешь по всем значениям и будешь вынужден вписывать значение в каждый адрес самостоятельно, что в итоге у тебя займет огромное количество кода, сил и времени. Если нужно записать всего одно значение, то конечно удобнее будет посчитать самому и уже записать, но если значений дохуя...
дак тут 1@ присваивается константное значение 25
 

woksonal

Известный
Проверенный
268
154
1) Я мб не понимаю еще, но часто стал встречать, что с переменной делают какие-то невъебенные изменения. То умножают, то прибавляют, то опять умножают. Для чего ?
Вот пример
CLEO:
1@ = 25
1@ += 36
1@ *= 112
1@ += 13150904
1@ += 56
0A8C: write_memory 1@ size 4 value 100.0 virtual_protect 0
Получается: 13154992 (можете пересчитать). Почему бы сразу не посчитать в калькуляторе и не использовать число, нахуя выебываться ? Ок, я понимаю, что проще, чтоб SB сам посчитал, но откуда тогда берут значения на которые нужно умножать и прибавлять. Если еще адресс памяти я понимаю, но это откуда.

2) Чаще всего в клео используют 0x000000(такого типа адресса), как я понимаю это смещение и это значение hex?
А иногда простое целое число, как адресс.

Знающие обьясните пожалуйста по-этому поводу.

1@ = 25 айди гана возможн
1@ += 36 "скилл" (0 – низкое, 25 – нормальное, 36 – высокое, 47 – копы)
1@ *= 112 оффсет в структуре weapon.dat - spread http://gtamodding.ru/wiki/%C0%E4%F0%E5%F1%E0_%CF%E0%EC%FF%F2%E8_(SA)#WEAPON.DAT
1@ += 13150904 адрес начала структуры weapon.dat
1@ += 56 - так и не понял нахуй здесь
0A8C: write_memory 1@ size 4 value 100.0 virtual_protect 0

потыкай ctrl+h в саннике на числах
 
  • Нравится
Реакции: 01EG

SR_team

like pancake
BH Team
4,721
6,377
  • Нравится
Реакции: 01EG и woksonal

01EG

Известный
Проверенный
630
344
Играюсь со строками и вот. Допустим: я ввожу /satiety , потом опкод 0B75: записывает все об этой строке. Сам текст строки записался в переменную 0@.
Как вам известно, когда вводишь /satiety на Samp-Rp, выводиться строка: Ваша «Сытость»: 99 / 100 ( то есть 0@ : String получается)
Так вот, как мне отформатировать строку,чтоб записать число перед / 100 в переменную, а именно 99 ?
Я думаю, что нужно разделить строку, на подстроки и записать их в переменные. Я думал делать это через 0C16 , но не совсем понятно, как заполнять переменные в ней и куда потом сохраниться поделенная строка.
 

iTz_WEEZY

Известный
298
85
Помогите мне нихуя не пойму Ракнет перехват или прием входящих хуй его как там наз.ся
крч.. если в чате появилась строка любая не важно напр. Здарова
и я ему резко автоматом отвечаю то что написал в скрипте напр. Соси до пол второго..
покажите пример так я хоть пойму а то то что в Вики написано ни хуя не понял
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,260
1,742
Играюсь со строками и вот. Допустим: я ввожу /satiety , потом опкод 0B75: записывает все об этой строке. Сам текст строки записался в переменную 0@.
Как вам известно, когда вводишь /satiety на Samp-Rp, выводиться строка: Ваша «Сытость»: 99 / 100 ( то есть 0@ : String получается)
Так вот, как мне отформатировать строку,чтоб записать число перед / 100 в переменную, а именно 99 ?
Я думаю, что нужно разделить строку, на подстроки и записать их в переменные. Я думал делать это через 0C16 , но не совсем понятно, как заполнять переменные в ней и куда потом сохраниться поделенная строка.
CLEO:
0AD4: 4@ = scan_string 0@v format "%d + %d = %d" 5@ 6@ 7@ //IF and SET
для лохов?
 

01EG

Известный
Проверенный
630
344
Помогите мне нихуя не пойму Ракнет перехват или прием входящих хуй его как там наз.ся
крч.. если в чате появилась строка любая не важно напр. Здарова
и я ему резко автоматом отвечаю то что написал в скрипте напр. Соси до пол второго..
покажите пример так я хоть пойму а то то что в Вики написано ни хуя не понял
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

wait 2000

alloc 4@ 256
memset 4@ 0 256

0BE3: raknet setup_incoming_rpc_hook @ClientMessage

while true
wait 0
end

:ClientMessage
0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if
1@ == RPC_ScrClientMessage // DWORD color, DWORD strLen, char[] msg
then
    0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT  // color
    0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT  // strLen
    0C11: memset destination 4@ value 0 size 256
    0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
    0C0F: array 4@ element 3@ = 0x00
    if
    0C18: 7@ = strstr string1 4@ string2 "Привет"
    then
        say "И вам"
    end                                                  
end
0BE0: raknet hook_ret true
Код не мой, используй как пример.

0AD4: 4@ = scan_string 0@v format "%d + %d = %d" 5@ 6@ 7@ //IF and SET
Я читал про этот Опкод на вики и там сказано, что "Данный опкод не поддерживает сохранения какого-либо просканированного текста в выделенный буфер. Для сохранения используйте локальные переменные(1@s, 1@v), но не забывайте о том, что они имеют лимит(15-16 символов)" и подумал, что он не подойдет.
Допусти: 0AD4: 30@ = = scan_string 0@ format "Ваша «Сытость»: %i / 100" 2@
То %i запишется в 2@ ?
 

Dark_Knight

Me, me and me.
Друг
4,067
2,082
Да. Но юзай %d. %i крайне редко используют. Разницы между ними нет.
 

iTz_WEEZY

Известный
298
85
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

wait 2000

alloc 4@ 256
memset 4@ 0 256

0BE3: raknet setup_incoming_rpc_hook @ClientMessage

while true
wait 0
end

:ClientMessage
0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if
1@ == RPC_ScrClientMessage // DWORD color, DWORD strLen, char[] msg
then
    0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT  // color
    0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT  // strLen
    0C11: memset destination 4@ value 0 size 256
    0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
    0C0F: array 4@ element 3@ = 0x00
    if
    0C18: 7@ = strstr string1 4@ string2 "Привет"
    then
        say "И вам"
    end                                                 
end
0BE0: raknet hook_ret true
Код не мой, используй как пример.
Пишет не известная команда memset
и скажи как мне настроить на цвет напр. Нажмите [Левый ALT]{FF0000} ".ALT"