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

Сэнд

Известный
Проверенный
436
212
В чём ошибка?
CLEO:
{$CLEO}
0000:

0AC8: 21@ = allocate_memory_size 256
0B6D: render 22@ = create_font "Arial" height 23 flags 5

while true
    wait 0
    call @nearid 0 0@ 1@
    Actor.StorePos(0@, 11@, 12@, 13@)
    0B55: convert_3D_coords 11@ 12@ 13@ to_screen 14@ 15@
    0AD3: 21@ = format "%d" 1@
    0B6F: render font 22@ draw_text 21@ pos 14@ 15@ color 0xAAFFFFFF
end

:nearid
3@ = 1000.0
4@ = 0xFFFFFF
0A8D: 0@ = read_memory 0xB74490 size 4 virtual_protect 0
0@ += 4
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
for 1@ = 0 to 35584 step 0x100
    0A8D: 2@ = read_memory 0@ size 1 virtual_protect 0
    0@++
    if and
        2@ >= 0x00
        2@ < 0x80
    then
        005A: 2@ += 1@
        if or
            003C: $PLAYER_ACTOR == 2@
            856D: NOT actor 2@ defined
        then continue
        end
   
        0AB1: call @dist 1 remote_player_handle 2@ retr_dist_to 5@
        if 0025: 3@ > 5@
        then
            0087: 3@ = 5@
            0085: 4@ = 2@
        end
    end
end
if 4@ = SAMP.GetSAMPPlayerIDByActorHandle(4@)
then
    0485:  return_true
else
    059A:  return_false
end
0AB2: ret 2 3@ 4@
:dist
Actor.StorePos(0@, 1@, 2@, 3@)
Actor.StorePos($PLAYER_ACTOR, 4@, 5@, 6@)
050A: 7@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 1@ 2@ 3@
0AB2: ret 1 7@
 

VADE

Новичок
36
1
Знаменитости CLEO скриптинга, как вы делаете защиту для приваток? Чтобы их не сливали тип.
 

hnnssy

Известный
Друг
2,684
2,748
В чём ошибка?
CLEO:
{$CLEO}
0000:

0AC8: 21@ = allocate_memory_size 256
0B6D: render 22@ = create_font "Arial" height 23 flags 5

while true
    wait 0
    call @nearid 0 0@ 1@
    Actor.StorePos(0@, 11@, 12@, 13@)
    0B55: convert_3D_coords 11@ 12@ 13@ to_screen 14@ 15@
    0AD3: 21@ = format "%d" 1@
    0B6F: render font 22@ draw_text 21@ pos 14@ 15@ color 0xAAFFFFFF
end

:nearid
3@ = 1000.0
4@ = 0xFFFFFF
0A8D: 0@ = read_memory 0xB74490 size 4 virtual_protect 0
0@ += 4
0A8D: 0@ = read_memory 0@ size 4 virtual_protect 0
for 1@ = 0 to 35584 step 0x100
    0A8D: 2@ = read_memory 0@ size 1 virtual_protect 0
    0@++
    if and
        2@ >= 0x00
        2@ < 0x80
    then
        005A: 2@ += 1@
        if or
            003C: $PLAYER_ACTOR == 2@
            856D: NOT actor 2@ defined
        then continue
        end
  
        0AB1: call @dist 1 remote_player_handle 2@ retr_dist_to 5@
        if 0025: 3@ > 5@
        then
            0087: 3@ = 5@
            0085: 4@ = 2@
        end
    end
end
if 4@ = SAMP.GetSAMPPlayerIDByActorHandle(4@)
then
    0485:  return_true
else
    059A:  return_false
end
0AB2: ret 2 3@ 4@
:dist
Actor.StorePos(0@, 1@, 2@, 3@)
Actor.StorePos($PLAYER_ACTOR, 4@, 5@, 6@)
050A: 7@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 1@ 2@ 3@
0AB2: ret 1 7@
call @nearid 0 0@ 1@
Actor.StorePos(0@, 11@, 12@, 13@)
0@ - расстояние до ближайшего игрока, 1@ - его хэндл
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
попробовал изменить, щедро угостило варнингами
Что ты изменил?
Он имел ввиду то, что ты пытаешься получить позицию из несуществующего хендла, а именно - расстояния.
 
  • Нравится
Реакции: iAmerican и hnnssy

RedBoxWhite

Известный
337
27
Какой опкод может устанавливать радиус и проверять игроков в зоне стрима?
 

azdsfbzxv

Новичок
73
6
Какой опкод может устанавливать радиус и проверять игроков в зоне стрима?
Этот видимо:
00F2: actor 1@ near_actor 2@ radius 5.0 5.0 sphere 0
Актер 1@ возле актера 2@ в радиусе 5.0 5.0 ( X Y ) и типом отображения сферы: флаг 1 [1- Видна, 0- Не видна]
00F2: actor $PLAYER_ACTOR near_actor 2@ radius 20.0 20.0 sphere 0
 
  • Нравится
Реакции: RedBoxWhite

RedBoxWhite

Известный
337
27
Как в опкод 0С18 засунуть строку с кавычками? Пример строки:
CLEO:
0C18: 0 = strstr string1 10@ string2 ""test""
 

4el0ve4ik

Известный
Всефорумный модератор
1,548
1,338
Как сканировать строку чата, что бы допустим после того как написалось в чат "купил маску" началось бы выполнение определенной команды,
мне только опкод скана, остальное сам попытаюсь, хочу научиться :D
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,695
1,448
Sanny Builder: Ctrl + Alt + 2 -> "scan"

0AD4: 1@ = scan_string 0@ format "%d + %d = %d" 2@ 3@ 4@
 
  • Нравится
Реакции: 4el0ve4ik

RedBoxWhite

Известный
337
27
Как сделать так, чтобы выдавало ID всех игроков в радиусе, но при этом игнорило игрока, который записан в текстовом документе?
Сделал так, но оно крашит:
CLEO:
0AD7: read_string_from_file "cleo\nick.txt" to 4@v size 15
0B36: samp 5@ = get_player_nickname 0@
if 8C21: not stricmp string1 5@ string2 4@
then 
0AF8: "%d" -1 0@
end
 

Vovich

HOT
Проверенный
717
197
Как сделать так, чтобы выдавало ID всех игроков в радиусе, но при этом игнорило игрока, который записан в текстовом документе?
Сделал так, но оно крашит:
CLEO:
0AD7: read_string_from_file "cleo\nick.txt" to 4@v size 15
0B36: samp 5@ = get_player_nickname 0@
if 8C21: not stricmp string1 5@ string2 4@
then
0AF8: "%d" -1 0@
end
Код:
for 0@ = 0 to 1000
0AF4: 15@ = read_string_from_ini_file "CLEO\setting.ini" section "Name" key "NamePlayer"
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
00A0: store_actor $PLAYER_ACTOR position_to 10@ 11@ 12@
00A0: store_actor 1@ position_to 13@ 14@ 15@
0509: 17@ = distance_between_XY 10@ 11@ and_XY 13@ 14@
  if 17@ < 150.0
  then
  0B36: samp 2@ = get_player_nickname 1@
    if 0C29: not 20@ = stristr string1 2@ string2 15@  // F0 EF EB
    then
    chatmsg "Nick: %s | ID: %d" -1 2@ 0@
    end
  end
end
 
  • Нравится
Реакции: RedBoxWhite