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

yamych

Новичок
20
0
Парни,мне нужно клео сделать,если кто сможет отпишите в Лс пожалуйста.Клео довольно-таки сложное,а конкретнее это как 'универсальный бот транспортных средств' но не в машине а пешком.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Помогите с определением координат чекпоинта(гоночных маркеров)...
Вот тут накидал(с урока маркеров могайки... но так и не определяет координаты чекпоинтов...):
Код:
wait 0
0@ = 13
0@ *= 56
0@ += 0xC7F158
0@ += 16
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0 
 
1@ = 2
1@ *= 56
1@ += 0xC7F158
0A8E: 2@ = 1@ + 16
008A: $COORD_X = 2@
0A8D: 20@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 20
008A: $COORD_Y = 2@
0A8D: 21@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 24
008A: $COORD_Z = 2@
0A8D: 22@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 4
0A8D: 8@ = read_memory 2@ size 4 virtual_protect 0
0AF8: samp add_message_to_chat "Coords: %f %f %f" color 0xFF61BB $COORD_X $COORD_Y $COORD_Z
 
03C0: 3@ = actor $PLAYER_ACTOR car
02C2: car 3@ drive_to $COORD_X $COORD_Y $COORD_Z // Тест... поедет ли он туда
 

hnnssy

Известный
Друг
2,684
2,748
Помогите с определением координат чекпоинта(гоночных маркеров)...
Вот тут накидал(с урока маркеров могайки... но так и не определяет координаты чекпоинтов...):
Код:
wait 0
0@ = 13
0@ *= 56
0@ += 0xC7F158
0@ += 16
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
 
1@ = 2
1@ *= 56
1@ += 0xC7F158
0A8E: 2@ = 1@ + 16
008A: $COORD_X = 2@
0A8D: 20@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 20
008A: $COORD_Y = 2@
0A8D: 21@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 24
008A: $COORD_Z = 2@
0A8D: 22@ = read_memory 2@ size 4 virtual_protect 0
0A8E: 2@ = 1@ + 4
0A8D: 8@ = read_memory 2@ size 4 virtual_protect 0
0AF8: samp add_message_to_chat "Coords: %f %f %f" color 0xFF61BB $COORD_X $COORD_Y $COORD_Z
 
03C0: 3@ = actor $PLAYER_ACTOR car
02C2: car 3@ drive_to $COORD_X $COORD_Y $COORD_Z // Тест... поедет ли он туда
Не используй глобальные переменные в клео
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Не используй глобальные переменные в клео
Причина в том, что он получает координаты по нулям, но чекпоинт находит...
Сделал заново, по уроку могайки(с комментариями :) ):
Код:
:2
wait 0
06D5: 27@ = create_racing_checkpoint_at 155.55 166.66 6.66 point_to 100.00 110.15 6.66 type 0 radius 6.0 
30@ = 10000.0 //Тут храним дальность до ближайшего маркера 
31@ = -1 //Тут храним номер блока ближайшего маркера 
 
0@ = 13 
0@ *= 56 //Умножаем 13, а не 14, т.к. нумерация маркеров должна идти с нуля 
0@ += 0xC7F158 
0@ += 16 //Приплюсовываем ко всему этому смещение координаты X 
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0  
 
for 0@ = 0 to 32//Начало цикла 
0085: 1@ = 0@ 
1@ *= 56//Находим смещение от начала блоков маркера 
1@ += 0xC7F158 //Прибавляем начало пула маркеров 
0A8E: 2@ = 1@ + 16//Находим адрес Х координаты
0A8D: 20@ = read_memory 2@ size 4 virtual_protect 0 //Читаем его 
0A8E: 2@ = 1@ + 20
0A8D: 21@ = read_memory 2@ size 4 virtual_protect 0 
0A8E: 2@ = 1@ + 24
0A8D: 22@ = read_memory 2@ size 4 virtual_protect 0 
0A8E: 2@ = 1@ + 4 //Находим SCM хэндл, если он не равен 0, то маркер существует 
0A8D: 8@ = read_memory 2@ size 4 virtual_protect 0 //читаем его
 
if and 
    001D: 30@ > 32@//Если маркер ближе, чем ближайший маркер 
    8@ <> 0//И если маркер существует 
then 
    0085: 30@ = 32@ 
    0085: 31@ = 0@ //То этот маркер становится ближайшим 
end 
 
if 
    31@<>-1 //Если найден хотябы один маркер, то читаем его координаты 
else_jump @1 
0085: 1@ = 31@ 
1@ *= 56 
1@ += 0xC7F158
 
0A8E: 2@ = 1@ + 16
0085: 3@ = 2@  
0A8D: 20@ = read_memory 2@ size 4 virtual_protect 0
 
0A8E: 2@ = 1@ + 20 
0085: 4@ = 2@ 
0A8D: 21@ = read_memory 2@ size 4 virtual_protect 0 
 
0A8E: 2@ = 1@ + 24
0085: 5@ = 2@ 
0A8D: 22@ = read_memory 2@ size 4 virtual_protect 0
 
0AF8: samp add_message_to_chat "Coords: %f %f %f" color 0xFF61BB 3@ 4@ 5@
jump @1
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Вот я не внимательный... :(
Всё. Сделал:
Код:
{$VERSION 3.1.0027}
{$CLEO .cs}
 
0000:
thread 'BOT'
 
:1
wait 0
if and
    not SAMP.ChatInputOpened
    0ADC: test_cheat "BUS"
    //Actor.Driving($PLAYER_ACTOR)
else_jump @1
jump @2
 
:2
wait 0
06D5: 27@ = create_racing_checkpoint_at 155.55 166.66 6.66 point_to 100.00 110.15 6.66 type 0 radius 6.0 
30@ = 10000.0 //Тут храним дальность до ближайшего маркера 
31@ = -1 //Тут храним номер блока ближайшего маркера 
 
0@ = 13 
0@ *= 56 //Умножаем 13, а не 14, т.к. нумерация маркеров должна идти с нуля 
0@ += 0xC7F158 
0@ += 16 //Приплюсовываем ко всему этому смещение координаты X 
0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0  
 
for 0@ = 0 to 32//Начало цикла 
0085: 1@ = 0@ 
1@ *= 56//Находим смещение от начала блоков маркера 
1@ += 0xC7F158 //Прибавляем начало пула маркеров 
0A8E: 2@ = 1@ + 16//Находим адрес Х координаты
0A8D: 20@ = read_memory 2@ size 4 virtual_protect 0 //Читаем его 
0A8E: 2@ = 1@ + 20
0A8D: 21@ = read_memory 2@ size 4 virtual_protect 0 
0A8E: 2@ = 1@ + 24
0A8D: 22@ = read_memory 2@ size 4 virtual_protect 0 
0A8E: 2@ = 1@ + 4 //Находим SCM хэндл, если он не равен 0, то маркер существует 
0A8D: 8@ = read_memory 2@ size 4 virtual_protect 0 //читаем его
0AF8: samp add_message_to_chat "SCM Handle(memory): %d , 1@ = %d, SCM Handle = %d" color 0xFF61BB 8@ 1@ 2@
 
if and 
    001D: 30@ > 32@//Если маркер ближе, чем ближайший маркер 
    8@ > 0//И если маркер существует 
then 
    0085: 30@ = 32@ 
    0085: 31@ = 0@ //То этот маркер становится ближайшим 
end 
 
if 
    31@ > -1 //Если найден хотябы один маркер, то читаем его координаты
then
    0085: 1@ = 31@ 
    1@ *= 56 
    1@ += 0xC7F158
    
    0A8E: 2@ = 1@ + 16 
    0A8D: 20@ = read_memory 2@ size 4 virtual_protect 0
     
    0A8E: 2@ = 1@ + 20 
    0A8D: 21@ = read_memory 2@ size 4 virtual_protect 0 
    
    0A8E: 2@ = 1@ + 24
    0A8D: 22@ = read_memory 2@ size 4 virtual_protect 0
    
    0AF8: samp add_message_to_chat "Coords: %f %f %f" color 0xFF61BB 20@ 21@ 22@
else
    0AF8: samp add_message_to_chat "Чекпоинт не найден" color 0xFF61BB
    jump @1
end 
jump @1

Может кому нужно :)
 

hnnssy

Известный
Друг
2,684
2,748
Код:
0AC8: 0@ = allocate_memory_size 128
0AD3: string 0@ format  "%cFF0000%cColored dialog" 123 125
0B3B: samp show_dialog id 3 caption "Test" text 0@ button_1 "OK" button_2 "" style DIALOG_STYLE_MSGBOX
покажет диалог с текстом красного цвета. цвет должен указываться в шеснадцатиричной с/с без альфа-канала.
Можно в
Код:
0AD3: string 0@ format  "%cFF0000%cColored dialog" 123 125
записать более 255 символов? Диалог нужно сделать длинным
 

hnnssy

Известный
Друг
2,684
2,748
Попробуй совмещать строки.
Начал совмещать, в начале диалога всё отлично, а потом перестаёт работать перенос, то есть %c
Код:
0AC8: 4@ = allocate_memory_size 128
0AD3: string 4@ format "__________________________________%cУровень: 30%cРеспекты: 47/80" 10 10
0AC8: 5@ = allocate_memory_size 128
0AD3: string 5@ format "%cЦена следующего уровня: 20000 %cПол: мужчина" 10 10
0AC8: 6@ = allocate_memory_size 128
0AD3: string 6@ format "%cВозраст: 18" 10 10
0AC8: 7@ = allocate_memory_size 128
0AD3: string 7@ format "%cМестонахождение: Los Santos" 10 10
0AC8: 8@ = allocate_memory_size 128
0AD3: string 8@ format "%cПредупреждения: 0/3" 10 10
0AC8: 9@ = allocate_memory_size 128
0AD3: string 9@ format "%cHP при респавне: 75.0" 10 10
0AC8: 10@ = allocate_memory_size 128
0AD3: string 10@ format "%сVIP аккаунт: Gold VIP" 10 10
0AC8: 11@ = allocate_memory_size 128
0AD3: string 11@ format "%сVIP осталось: Бесконечный" 10 10
0AC8: 30@ = allocate_memory_size 128
0AD3: string 30@ format "%s %s %s %s %s %s %s %s" 4@ 5@ 6@ 7@ 8@ 9@ 10@ 11@
0B3B: samp show_dialog id 1 caption "[name]" text 30@ button_1 "*" button_2 "" style 0
5875fafe5cbd25fcaf5308d4df7e1870.jpg
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
1 cпособ бай фура:
0AF8: samp add_message_to_chat "dver %cFF0000%czapili" 0x8080 123 125

2 способ by mgmoldova:
0AC8: 0@ = allocate_memory_size 128
0AD3: string 0@ format "{$ Dver {FF00000}zapili"
0@ += 2
0AF8: samp add_message_to_chat 0@ 0x8080
3 способ Фипа.
Код:
1@ = label @redColor offset
string 0@ format "%sText" 1@

:redColor
hex
7B "FF0000" 7D 00
end
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Может кто-нибудь знает как заморозить функцию или убрать лимит -100.0 по z координате, когда игрока возвращает на ближайшие пути? И еще может сейчас есть способы вывести нормальный 2d текст на экране в указанных координатах? Хочется полноценный админчекер на cleo.
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Молдова, насколько я тебя понял, я в hex end могу писать строку без лимита символов?
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Если получить указатель на hex...end, то туда ведь можно записывать и считавать данные опкодами read/write памяти?
 

alfazlo

Потрачен
128
36
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как сделать в одном .cs файле несколько параллельных потоков? У меня возникла только идея из этого скрипта перезапускать самого себя с каким то параметром определяющим в начале переход на какую-то определенную метку.