касарь.Парни,мне нужно клео сделать,если кто сможет отпишите в Лс пожалуйста.Клео довольно-таки сложное,а конкретнее это как 'универсальный бот транспортных средств' но не в машине а пешком.
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 // Тест... поедет ли он туда
Не используй глобальные переменные в клеоПомогите с определением координат чекпоинта(гоночных маркеров)...
Вот тут накидал(с урока маркеров могайки... но так и не определяет координаты чекпоинтов...):
Код: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 // Тест... поедет ли он туда
Причина в том, что он получает координаты по нулям, но чекпоинт находит...Не используй глобальные переменные в клео
: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
{$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
Можно впокажет диалог с текстом красного цвета. цвет должен указываться в шеснадцатиричной с/с без альфа-канала.Код: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 символов? Диалог нужно сделать длиннымКод:0AD3: string 0@ format "%cFF0000%cColored dialog" 123 125
Начал совмещать, в начале диалога всё отлично, а потом перестаёт работать перенос, то есть %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
3 способ Фипа.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
1@ = label @redColor offset
string 0@ format "%sText" 1@
:redColor
hex
7B "FF0000" 7D 00
end
Да, и работу в целом упрощает.Молдова, насколько я тебя понял, я в hex end могу писать строку без лимита символов?