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

LUCHARE

Известный
Друг
545
700
Как отправлять нажатие по любому существующему текстдраву?
 

k0lenval

Известный
133
113
Скажите, а есть ли опкод, чтобы отследить появление сообщений, которые идут не в чат, а встроены в оригинальную игру. К примеру, такие сообщения появляются при смерти игрока или когда миссия выполнена.
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Какой опкод узнает id ближайшего игрока ?
 

romacaddy

Известный
Проверенный
235
206
Какой опкод узнает id ближайшего игрока ?

Описание:
Возвращает дистанцию и ид ближайшего игрока.​

Код:
Код:
:get_id_nearest_player
// FOR ALL PEDS
3@ = 1000.0 // Max. distance
4@ = 0xFFFFFF // Nearest player handle / id

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@ // LOCAL_PLAYER == REMOTE_PLAYER
            856D: NOT actor 2@ defined // REMOTE PLAYER IS NOT DEFINED
        then continue
        end
    
        0AB1: call @distanceBetweenActor 1 remote_player_handle 2@ retr_dist_to 5@
        if 0025: 3@ > 5@ // Max. dist > cur.
        then
            0087: 3@ = 5@ // Max. dist = cur.
            0085: 4@ = 2@ // Save remote player handle
        end
    end
end

if 4@ = SAMP.GetSAMPPlayerIDByActorHandle(4@)
then
    0485:  return_true
else
    059A:  return_false
end
0AB2: ret 2 3@ 4@

:distanceBetweenActor
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@

Использование:
Код:
{$CLEO}

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

while not SAMP.Available()
    wait 400
end

while true
    wait 0
    if 0AB1: call @get_id_nearest_player 0 retr_to fdist 0@ sid 1@
    then
        0AD1: show_formatted_text_highpriority "Player %d ; dist %.2f" 0 1@ 0@
    end
end

UPD 24.11: Перезаписал функу, лучше так, чем через пул сампа :)
 

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Почему не срабатывает на ближайший id ?

Код:
:0000: NOP
Noname_2
0001: wait 150 ms
0AFA:  is_samp_available
004D: jump_if_false @Noname_2
0002: jump @2

:2
wait 0
0AB0:   key_pressed 82
004D: jump_if_false @23
0002: jump @Noname_30

:Noname_30
0001: wait 0 ms
00A0: store_actor $PLAYER_ACTOR position_to 7@ 8@ 9@
0006: 0@ = 0

:Noname_73
0B23:  samp is_player_connected 0@
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
00A0: store_actor 1@ position_to 2@ 3@ 4@
050A: 5@ = distance_between_XYZ 7@ 8@ 9@ and_XYZ 2@ 3@ 4@
8021:   not  5@ > 3.0
0AF9: samp say_msg "/healon %d 100" 0@
0001: wait 2000 ms
jump @5

:5
wait 0
jump @23

:Noname_281
0002: jump @2

:23
jump @2
 
Последнее редактирование:

BlackKnigga

Известный
BH Team
922
447
Почему не срабатывает на ближайший id ?

Код:
:0000: NOP
Noname_2
0001: wait 150 ms
0AFA:  is_samp_available
004D: jump_if_false @Noname_2
0002: jump @2

:2
wait 0
0AB0:   key_pressed 82
004D: jump_if_false @23
0002: jump @Noname_30

:Noname_30
0001: wait 0 ms
00A0: store_actor $PLAYER_ACTOR position_to 7@ 8@ 9@
0006: 0@ = 0

:Noname_73
0B23:  samp is_player_connected 0@
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
00A0: store_actor 1@ position_to 2@ 3@ 4@
050A: 5@ = distance_between_XYZ 7@ 8@ 9@ and_XYZ 2@ 3@ 4@
8021:   not  5@ > 3.0
0AF9: samp say_msg "/healon %d 100" 0@
0001: wait 2000 ms
jump @5

:5
wait 0
jump @23

:Noname_281
0002: jump @2

:23
jump @2
Потому что ты херню написал. Чекаешь только ид 0, непонятно как используешь 0B23 и другие условные опкоды.
Воспользуйся функцией выше, там и пример хороший есть который тебе нужен.
 

hnnssy

Известный
Друг
2,684
2,768
байты узнать...
в самп.луа есть структуры всех рпц и пакетов
 

hnnssy

Известный
Друг
2,684
2,768
чтобы посмотреть структуру пакета, луа знать не надо.
 

romanblinov2013

RB_PRO
Проверенный
212
196
Дорогие модеры!
Есть 1 вопрос... Как узнать "object handle" моей лодки, если я в ней сижу?
Заранее спасибо)
 

romanblinov2013

RB_PRO
Проверенный
212
196
CLEO:
03C0: 0@ = actor $PLAYER_ACTOR vehicle_handle
Благодарю! Мои мысли были верны... Меня смутил мой куратор(учитель), что нужен не 03C0. Но теперь все стало на свои места и я могу продолжить модернизировать свой скрипт.
 
  • Нравится
Реакции: SYXA