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

OWSLA

Новичок
32
0
Не получается сделать так, чтобы активация шла с нажатия кнопок и дальше не приходилось ничего делать.
(То есть нажал - скрипт начал свою работу. В данном случае, находить и ТПшить по маркерам).
В этом скрипте приходиться зажимать сочетание кнопок, что не очень удобно.
PHP:
{$CLEO}
 
0000: NOP
Thread "Buldozer"
 
var
0@ : integer
1@ : integer
30@ : integer
31@ : integer
32@ : integer
end
 
:start
wait 0
if and
  0AB0: key_precced 105 // np 9
  0AB0: key_precced 104 // np 8
jf @start
 
:Buldozer1
wait 0
Actor.StorePos($PLAYER_ACTOR, 10@, 11@, 12@) // Находит позицию игрока и записывает в 0, 1, 2
 
30@ = 5000.0 // Далность нахождения маркера
31@ = -1 // Номер блока ближайшего маркера
 
for 0@ = 0 to 32
1@ = 0@
1@ *= 56
1@ += 0xC7F158
0A8E: 2@ = 1@ + 16 // Нахождение X координаты
0A8D: 20@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 20 // Нахождение Y координаты
0A8D: 21@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 24 // Нахождение Z координаты
0A8D: 22@ = read_memory 2@ size 4 virtual_protect 0
0509: 32@ = distance_between_XY 10@ 11@ and_XY 20@ 21@
0A8E: 2@ = 1@ + 4
0A8D: 8@ = read_memory 2@ size 4 virtual_protect 0
 
if and
32@ < 30@
8@ <> 0
then
30@ = 32@
31@ = 0@
end
 
:End
wait 0
if
31@ <> -1
jf @End
1@ = 31@
1@ *= 56
1@ += 0xC7F158
0A8E: 2@ = 1@ + 16 // Нахождение X координаты
0A8D: 20@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 20 // Нахождение Y координаты
0A8D: 21@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 24 // Нахождение Z координаты
0A8D: 22@ = read_memory 2@ size 4 virtual_protect 0
22@ -= 2.0
 
:Buldozer2
wait 0
Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
jump @Buldozer3
 
:Buldozer3
wait 0
if and
  0AB0: key_precced 105 // np 9
  0AB0: key_precced 104 // np 8
jf @Buldozer3
jump @Buldozer1
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Не получается сделать так, чтобы активация шла с нажатия кнопок и дальше не приходилось ничего делать.
(То есть нажал - скрипт начал свою работу. В данном случае, находить и ТПшить по маркерам).
В этом скрипте приходиться зажимать сочетание кнопок, что не очень удобно.

Код:
{$CLEO}
 
0000: NOP
Thread "Buldozer"
 
var
0@ : integer
1@ : integer
30@ : integer
31@ : integer
32@ : integer
end
 
:start
wait 0
if and
  0AB0: key_precced 105 // np 9
  0AB0: key_precced 104 // np 8
else_jump @start
wait 300
jump @Buldozer1
 
:Buldozer1
wait 0
Actor.StorePos($PLAYER_ACTOR, 10@, 11@, 12@) // Находит позицию игрока и записывает в 0, 1, 2
 
30@ = 5000.0 // Далность нахождения маркера
31@ = -1 // Номер блока ближайшего маркера
 
for 0@ = 0 to 32
    1@ = 0@
    1@ *= 56
    1@ += 0xC7F158
    0A8E: 2@ = 1@ + 16 // Нахождение X координаты
    0A8D: 20@ = read_memory 2@ size 4 virtual_protect 0
    0A8E: 2@ = 1@ + 20 // Нахождение Y координаты
    0A8D: 21@ = read_memory 2@ size 4 virtual_protect 0
    0A8E: 2@ = 1@ + 24 // Нахождение Z координаты
    0A8D: 22@ = read_memory 2@ size 4 virtual_protect 0
    0509: 32@ = distance_between_XY 10@ 11@ and_XY 20@ 21@
    0A8E: 2@ = 1@ + 4
    0A8D: 8@ = read_memory 2@ size 4 virtual_protect 0
    
    if and
        32@ < 30@
        8@ <> 0
    then
        30@ = 32@
        31@ = 0@
    end
 
    if
        gosub @check_cp
    then
        Actor.PutAt($PLAYER_ACTOR, 20@, 21@, 22@)
    end
 
    if
        gosub @check_keys_off
    then
        wait 300
        jump @start
    end  
end
jump @Buldozer1
 
:check_cp
if
    31@ <> -1
then
    1@ = 31@
    1@ *= 56
    1@ += 0xC7F158
    0A8E: 2@ = 1@ + 16 // Нахождение X координаты
    0A8D: 20@ = read_memory 2@ size 4 virtual_protect 0
    0A8E: 2@ = 1@ + 20 // Нахождение Y координаты
    0A8D: 21@ = read_memory 2@ size 4 virtual_protect 0
    0A8E: 2@ = 1@ + 24 // Нахождение Z координаты
    0A8D: 22@ = read_memory 2@ size 4 virtual_protect 0
    22@ -= 2.0
    0485: return_true
else
    059A: return_false
end
return
 
:check_keys_off
if and
    0AB0: key_precced 105 // np 9
    0AB0: key_precced 104 // np 8
then
    0485: return_true
else
    059A: return_false
end
return

Как-то так...
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Как получить координаты машины/телепортировать машину с помощью "изменения" её структуры?
Пример для "актера"(от FYP):
Код:
:cheat_actor_teleport
0A96: 4@ = actor 0@ struct
4@ += 20
0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
4@ += 48 // X
0A8C: write_memory 4@ size 4 value 1@ virtual_protect 0 // X
4@ += 4 // Y
0A8C: write_memory 4@ size 4 value 2@ virtual_protect 0 // Y
4@ += 4 // Z
0A8C: write_memory 4@ size 4 value 3@ virtual_protect 0 // Z
ret 0
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как найти хендл ближайшего игрока в определенном радиусе?
В цикле получаешь хендлы всех игроков через id (1-1000) проверяешь существование игрока по хендлу (те что в радиусе прорисовки), затем проверять их в радисе и увеличивать его на маленькие интервалы (от 0) до нужного радиуса, если проверка верна, то это будет ближайший игрок.

Как получить координаты машины/телепортировать машину с помощью "изменения" её структуры?
Пример для "актера"(от FYP):
Код:
:cheat_actor_teleport
0A96: 4@ = actor 0@ struct
4@ += 20
0A8D: 4@ = read_memory 4@ size 4 virtual_protect 0
4@ += 48 // X
0A8C: write_memory 4@ size 4 value 1@ virtual_protect 0 // X
4@ += 4 // Y
0A8C: write_memory 4@ size 4 value 2@ virtual_protect 0 // Y
4@ += 4 // Z
0A8C: write_memory 4@ size 4 value 3@ virtual_protect 0 // Z
ret 0

Этот же код, только получаешь структуру авто, а не игрока. У них несколько общих структур. Бля почему когда я искал этот код для телепортации игрока через структуру никто не выложил, пришлось эту херню самому копать :/
 
  • Нравится
Реакции: itsLegend

Thomas_Johnson

Известный
Проверенный
183
21
Как узнать ид текущего диалога? Раньше видел что-то, но не обращал внимание, не интересуюсь диалогами, а сейчас не могу найти
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Как узнать ид текущего диалога? Раньше видел что-то, но не обращал внимание, не интересуюсь диалогами, а сейчас не могу найти

Код:
0B4E: samp 0@ = get_current_dialog_id
0@ - переменная, куда будет сохранятся id текущего диалога.
Нужен SAMPFUNCS.

FYP написал(а):
0B4E: samp 0@ = get_current_dialog_id // Возвращает ИД текущего диалога // Выходные данные: 0@ - ИД диалога.
 

mauvais_ton

Известный
77
39
Объясните, пожалуйста, что такое хендл пикапа? Либо ткните в статью.
 

FYP

Известный
Администратор
1,758
5,741
ну вообще-то хендл - это уникальный ид, что-то вроде номера элемента из пула. структура объекта это уже другое, это прямой адрес на все данные об объекте, хранящиеся в памяти.
 
  • Нравится
Реакции: willpower и mauvais_ton

ViRuS00_

Новичок
19
0
Установил Клео 4.1, но когда я качаю невидимку от MelomanCool (Там нужен Сампфанкс 2.3) меня крашает.
Все делаю как сказано. Качаю все от туда же, но становиться темный экран и все...
Заранее спасибо.
 

Yahoo*

Известный
7
1
Я решил не много изменить скрипт, но при комплировании вышла ошибка "Не возможно загрузить инклуд RakNetDefines.txt".
Что мне делать, где взять этот инклуд и куда его кинуть?

P.S. Я новичок и это моя первая работа.
 

Thomas_Johnson

Известный
Проверенный
183
21
Иногда, ну как иногда, каждые 2-3 минуты, отключаются все скрипты, немного напрягает, с чем может быть связано?
 
  • Нравится
Реакции: hnnssy