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

Forus

Известный
54
12
Вопрос.Как работает gosub @Noname_1
Читает скрипт сверху вниз и снизу вверх?Если так,то если я использую jump на метку в середине скрипта когда gosub будет работать снизу вверх,он так и продолжит работать снизу вверх?
Т.е. например :
Код:
:Noname_1
chatmsg "Скрипт начал работу"
wait 500
chatmsg "Скрипт работает"
:Noname_2
wait 500
chatmsg "Скрипт закончил работу"
wait 100
jump @Noname_2 // Прыгнет к метке и скрипт пойдёт вверх или вниз?
 
  • Нравится
Реакции: zwhoz

san0

Известный
Друг
411
267
Вопрос.Как работает gosub @Noname_1
Читает скрипт сверху вниз и снизу вверх?Если так,то если я использую jump на метку в середине скрипта когда gosub будет работать снизу вверх,он так и продолжит работать снизу вверх?
Т.е. например :
Код:
:Noname_1
chatmsg "Скрипт начал работу"
wait 500
chatmsg "Скрипт работает"
:Noname_2
wait 500
chatmsg "Скрипт закончил работу"
wait 100
jump @Noname_2 // Прыгнет к метке и скрипт пойдёт вверх или вниз?
gosub @label

:label
// this is gosub construction
return

Иное использование gosub неверно
 
  • Нравится
Реакции: Forus

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,964
Подскажите адрес памяти который ключает свернутый режим
CLEO:
0A8C: write_memory 0x747FB6 size 1 value 0x1010101 virtual_protect 1
0A8C: write_memory 0x74805A size 1 value 0x1010101 virtual_protect 1
0A8C: write_memory 0x74542B size 8 value -0x6F6F6F70 virtual_protect 1
 
  • Нравится
Реакции: Forus и Vadim.dll

zwhoz

Известный
106
11
Есть какой-то опкод который включает простой бег вперёд, при нажатии на клавишу?
 
  • Нравится
Реакции: Forus

Forus

Известный
54
12
Есть какой-то опкод который включает простой бег вперёд, при нажатии на клавишу?
Только эмуляция клавиши.
либо SF способ

Код:
0C72: set_virtual_key 87 down true // зажмёт клавишу "W"
0C72: set_virtual_key 87 down false // отожмёт клавишу "W"(если нужно через некоторое время отжать)

либо какой-то из преисподнии
Код:
:Emul1 // Функция зажатия клавиши
if
0AA2: 2@ = load_library "User32.dll" // IF and SET
jf @ProverkaEmul4
if 
0AA4: 2@ = get_proc_address "keybd_event" library 2@ // IF and SET
jf @ProverkaEmul4
0AA5: call 2@ num_params 4 pop 0 0 0 0 0@ 

:ProverkaEmul4
ret 0

:Emul2 // Функция отжатии клавиши
if
0AA2: 2@ = load_library "User32.dll" // IF and SET
jf @ProverkaEmul3
if
0AA4: 2@ = get_proc_address "keybd_event" library 2@ // IF and SET
jf @ProverkaEmul3
0AA5: call 2@ num_params 4 pop 0 0 2 0 0@ 

:ProverkaEmul3
ret 0

-------------
В скрипте использовать
call @Emul1 1 87 // Зажал клавишу " W "
call @Emul2 1 87 // Отжал клавишу " W "
 
  • Нравится
Реакции: zwhoz

Forus

Известный
54
12
UP!
Такой вопрос как в начале цикла поставить проверку подключён ли игрок?И если не подключён то прыгнуть к метке где он выполнит действия описанные в ней?
Собственно как сделал я :
Код:
:Noname_11
wait 0
if not 20@ == 1
then
код
код
код
end
20@ = 1

:Noname_1 // Главная метка в которой весь цикл
call @Noname_2 // Вызвал проверку подключён ли игрок в самом начале цикла
код
код
код

:Noname_2 // Метка с проверкой
wait 0
0B2B: samp 2@ = get_player_id_by_actor_handle $PLAYER_ACTOR // получаем handle игрока ну и выводим ID что ли..
0B23:  samp is_player_connected 2@ // проверяем подключён ли игрок по его ид полученный ранее
jf @Noname_4 // но если игрок не подключён то прыгаем на метку 4

:Noname_4 //

jump @Noname_318 // Прыгнет на метку отключения скрипта
20@ = 0 // обнулит переменную 20(поставить ей значение 0)
jump @Noname_81 // прыгнет к метке перезахода
:Noname_81
wait 20000 // подождёт 20 секунд
0B38: samp connect_to_server "111.111.11.11" port 7777 // присоединиться к серверу
wait 10000 // подождёт 10 секунд
0B4C:  samp is_dialog_active 2 // если активен диалог 2
jf @Noname_81 // но если он не активен тогда прыгаем к метке 81
0B4B: samp set_current_dialog_editbox_text "132" // вводим в чат пароль
wait 500 // ждём
call @Noname_90 1 13 // нажимаем enter
wait 100 // ждём
call @Noname_100 1 13 // отжимаем enter
wait 100 // ждём
jump @Noname_83 // прыгаем к метке 83
:Noname_83
call @Noname_120 1 16 // нажимаем Shift
wait 100 // ждём
call @Noname_130 1 16 // отжимаем Shift
wait 2000 // ждём
jump @Noname_263 // Телепортируемся на метку включения скрипта
Всё закомментировал что бы было понятнее . Может подскажете где согрешил в коде..У меня просто цикл повторяется и не смотрит на проверку если например кикнуло .
 
  • Нравится
Реакции: zwhoz

AWRage

Активный
642
141
Вот есть .asi скрипт - IntarfaceEditor, с помощью него можно редактировать позицию радара, денег, ХП, бронь и прочее. Каким образом он меняет координаты радара? Методом редактирования памяти? Если да, то как узнать какой участок памяти необходимо редактировать ?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,462
Вот есть .asi скрипт - IntarfaceEditor, с помощью него можно редактировать позицию радара, денег, ХП, бронь и прочее. Каким образом он меняет координаты радара? Методом редактирования памяти? Если да, то как узнать какой участок памяти необходимо редактировать ?
Чёт бля бесишь. Потратил 40 минут своей жизни ради тебя. Через Cheat Engine реверсил память, хотя я этого делать нихуя не умею.
В клео сейчас попробую перезаписать один из этих адресов.
Блять.

CLEO:
{$CLEO}
{$INCLUDE SF}

0001: wait 0 ms
0662: "by legend2360"
0662: "BlastHack - cheating is art"

0AC6: 0@ = label @font_size offset
0A8C: write_memory 0x0718D14 size 4 value 0@ virtual_protect 1 // записываем новый адрес памяти откуда будет читаться значение
// (gta_sa.exe+318D12 - D8 0D 108A8500        - fmul dword ptr [gta_sa.exe+458A10] | gta_sa.exe+458A10 заменяем на адрес "лейбла")
0A8C: write_memory 0x0858A10 size 4 value 100.0 virtual_protect 1 // Меняем позицию радара

while true
   wait 0
end

:font_size // standart
hex
    00 00 20 42 // 40.0
end
 
Последнее редактирование:
  • Нравится
Реакции: AWRage

AWRage

Активный
642
141
Чёт бля бесишь. Потратил 40 минут своей жизни ради тебя. Через Cheat Engine реверсил память, хотя я этого делать нихуя не умею.
В клео сейчас попробую перезаписать один из этих адресов.
Блять.

CLEO:
{$CLEO}
{$INCLUDE SF}

0001: wait 0 ms
0662: "by legend2360"
0662: "BlastHack - cheating is art"

0AC6: 0@ = label @font_size offset
0A8C: write_memory 0x0718D14 size 4 value 0@ virtual_protect 1 // записываем новый адрес памяти откуда будет читаться значение
// (gta_sa.exe+318D12 - D8 0D 108A8500        - fmul dword ptr [gta_sa.exe+458A10] | gta_sa.exe+458A10 заменяем на адрес "лейбла")
0A8C: write_memory 0x0858A10 size 4 value 100.0 virtual_protect 1 // Меняем позицию радара

while true
   wait 0
end

:font_size // standart
hex
    00 00 20 42 // 40.0
end
Работает все, спасибо огромное. Постараюсь не задавать глупые вопросы.
 

mac

HEY DARLING
1,317
911
Как определить расстояние от КРАЕВ машины до КРАЕВ ближайшей машины?
Не от центра, а именно от КРАЕВ
 

Вложения

  • sa-mp-202.png
    sa-mp-202.png
    257.4 KB · Просмотры: 197

Forus

Известный
54
12
Как сделать что бы когда цикл прошёл 3 раза то он например останавливался ?
 

AWRage

Активный
642
141
Ребят, как в переменную 0, указать хэндл любого игрока? Т.е. если мой игрок прицелился в любого другого игрока, то условие выполнится.