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

serhiyrubin

Известный
396
106
Вот я ловлю сообщения в хуке через RPC_SCRCLIENTMESSAGE
А как ловить клиентские сообщения? Для вывода в свой чатлог
 

Boyenerji

Известный
97
1
Возможно ли сделать автоответчик чекая чат на слово "администратор"? Слово "администратор" выводится при бане/кике красным цветом , что мне не подходит. Можно ли сканировать только ту строку, которая написана оранжевым цветом?
 

Boyenerji

Известный
97
1
Попробуй так
CLEO:
:hook
alloc 4@ 256
memset 4@ 0 256
0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if 1@ == RPC_ScrClientMessage // DWORD color, DWORD strLen, char[] msg
then
0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT // color
0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT // strLen
0C11: memset destination 4@ value 0 size 256
0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
0C0F: array 4@ element 3@ = 0x00

0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B36: samp 30@ = get_player_nickname 29@

if 0C29: 5@ = stristr string1 4@ string2 "для %s[%d]:{FFFFFF} " 30@ 29@
then
free 4@
// code
end
end
0BE0: raknet hook_ret true

Без хука вот так вот заюзать можно?
У меня эта функция на другие слова заточена и стабильно работает, без хука.

CLEO:
0AC8: 11@ = allocate_memory_size 256
0C11: memset destination 11@ value 0x0 size 256
0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B36: samp 30@ = get_player_nickname 29@
for 15@ = 0 to 40
        0B75: samp get_chat_string 98 text_to 11@ prefix_to 0 color_to 0 prefix_color_to 0
        if 0C29: 1@ = stristr string1 11@ string2 "для %s[%d]:{FFFFFF} " 30@ 29@
        then
         0@ = 2
         20@ = 2
        else
         0B75: samp get_chat_string 99 text_to 11@ prefix_to 0 color_to 0 prefix_color_to 0
         if 0C29: 1@ = stristr string1 11@ string2 "для %s[%d]:{FFFFFF} " 30@ 29@
        then
         0@ = 2
         20@ = 2
        end
end
0AB2: ret 1 20@
 

serhiyrubin

Известный
396
106
Без хука вот так вот заюзать можно?
У меня эта функция на другие слова заточена и стабильно работает, без хука.

CLEO:
0AC8: 11@ = allocate_memory_size 256
0C11: memset destination 11@ value 0x0 size 256
0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B36: samp 30@ = get_player_nickname 29@
for 15@ = 0 to 40
        0B75: samp get_chat_string 98 text_to 11@ prefix_to 0 color_to 0 prefix_color_to 0
        if 0C29: 1@ = stristr string1 11@ string2 "для %s[%d]:{FFFFFF} " 30@ 29@
        then
         0@ = 2
         20@ = 2
        else
         0B75: samp get_chat_string 99 text_to 11@ prefix_to 0 color_to 0 prefix_color_to 0
         if 0C29: 1@ = stristr string1 11@ string2 "для %s[%d]:{FFFFFF} " 30@ 29@
        then
         0@ = 2
         20@ = 2
        end
end
0AB2: ret 1 20@
Зачем тебе это, хук лучше.
Если ты из АФК выйдешь, скрипт твой просканирует последние 2 строки
А если с хуком, то просканирует все строки новые строки которые появились пока ты был АФК
Вроде так

Кстати ты end забыл
Код:
0AC8: 11@ = allocate_memory_size 256
0C11: memset destination 11@ value 0x0 size 256
0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B36: samp 30@ = get_player_nickname 29@
for 15@ = 0 to 40
0B75: samp get_chat_string 98 text_to 11@ prefix_to 0 color_to 0 prefix_color_to 0
    if 0C29: 1@ = stristr string1 11@ string2 "для %s[%d]:{FFFFFF} " 30@ 29@
    then
    0@ = 2
    20@ = 2
    else
    0B75: samp get_chat_string 99 text_to 11@ prefix_to 0 color_to 0 prefix_color_to 0
        if 0C29: 1@ = stristr string1 11@ string2 "для %s[%d]:{FFFFFF} " 30@ 29@
        then
         0@ = 2
         20@ = 2
        end
    end
end
0AB2: ret 1 20@
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,967
Возможно ли сделать автоответчик чекая чат на слово "администратор"? Слово "администратор" выводится при бане/кике красным цветом , что мне не подходит. Можно ли сканировать только ту строку, которая написана оранжевым цветом?
Конечно можно. Хук на ClientMessage в котором есть как цвет, длина и сама строка.
 

Quit

Известный
207
52
Можно ли как-то мониторить чат за пределами зоны стрима? Вот на карте я нарисовал точку А и Б, что бы с одного из этих мест можно было видеть чат другого места)
 

Вложения

  • upload_2017-8-29_15-13-38.png
    upload_2017-8-29_15-13-38.png
    286.4 KB · Просмотры: 217

IZDATXXX

Известный
Проверенный
172
251
Пытаюсь найти X угол наклона камеры для актера (по примеру на одном форуме), но в результате - он оказывается неверный
CLEO:
068D: get_camera_position_to 0@ 1@ 2@
00A0: store_actor 10@ position_to 3@ 4@ 5@
0509: 6@ = distance_between_XY 0@ 1@ and_XY 3@ 4@
0063: 2@ -= 5@
0604: get_Z_angle_for_point 6@ 2@ store_to 7@
7@ -= 90.0
0017: 7@ /= 57.2957795
Ответьте, кто знает что не так.
 

Boyenerji

Известный
97
1
Жалуется на строку "0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM" - недостаточно параметров. Ожидалось два параметра


CLEO:
{$CLEO}
0000:NOP


repeat
wait 100
until Samp.Available()


while true
wait 0
    0AC8: 4@ = allocate_memory_size 256
0C11: memset destination 4@ value 0x0 size 256

0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if 1@ == RPC_ScrClientMessage // DWORD color, DWORD strLen, char[] msg
then
0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT // color
0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT // strLen
0C11: memset destination 4@ value 0 size 256
0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
0C0F: array 4@ element 3@ = 0x00

0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B36: samp 30@ = get_player_nickname 29@

if 0C29: 5@ = stristr string1 4@ string2 "??? %s[%d]:{FFFFFF} " 30@ 29@
then
free 4@
// code
end
end
0BE0: raknet hook_ret true
end
 
1,417
1,030
Жалуется на строку "0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM" - недостаточно параметров. Ожидалось два параметра


CLEO:
{$CLEO}
0000:NOP


repeat
wait 100
until Samp.Available()


while true
wait 0
    0AC8: 4@ = allocate_memory_size 256
0C11: memset destination 4@ value 0x0 size 256

0BE5: raknet 0@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 1@ = get_hook_param PARAM_PACKETID
if 1@ == RPC_ScrClientMessage // DWORD color, DWORD strLen, char[] msg
then
0BE7: raknet 2@ = bit_stream_read 0@ type BS_TYPE_INT // color
0BE7: raknet 3@ = bit_stream_read 0@ type BS_TYPE_INT // strLen
0C11: memset destination 4@ value 0 size 256
0BE8: raknet bit_stream 0@ read_array 4@ size 3@ // Text
0C0F: array 4@ element 3@ = 0x00

0B2B: samp 29@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B36: samp 30@ = get_player_nickname 29@

if 0C29: 5@ = stristr string1 4@ string2 "??? %s[%d]:{FFFFFF} " 30@ 29@
then
free 4@
// code
end
end
0BE0: raknet hook_ret true
end
{$INCLUDE SF} после {$CLEO} напиши
 
  • Нравится
Реакции: Boyenerji

LaRossa

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

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Помогите. С проверкой на СФ в скрипте, и когда его нету в игре фризит игра. Вода мерцает, и скорость игры уменьшается. Что делать?
Сначала проверять переменную $707, потом использовать опкоды SF.
 

Daim

Новичок
24
2
Почему не работает при уроне?
CLEO:
While true
   Wait 0
   if 
      21@ = true
   Then
      For 10@ = 0 to 1000 size 1
         if 
            0B20: samp 11@ = actor_handle_by_samp_player_id 10@  
         Then
            //Actor.StorePos(11@, 1@, 2@, 3@)
            0B36: samp 14@ = get_player_nickname 10@
            050A: 13@ = distance_between_XYZ 4@ 5@ 6@ and_XYZ 1@ 2@ 3@  
            0B25: samp 17@ = get_player_health 10@
            jump @gun
            if 16@ == true
            Then
               0AF8: samp add_message_to_chat "Dist: %d, Nick: %s[%d], HP: %d" color 0xFF0000 13@ 14@ 10@ 17@ 
               16@ = false
            End
         End
      End
      Wait 1000
   End                                                                                                  
End

CLEO:
:gun // 15@ 16@ 27@
if
   031D: actor $PLAYER_ACTOR hit_by_weapon 0
Then
   15@v = "hand"
   16@ = true
End
if
   031D: actor $PLAYER_ACTOR hit_by_weapon 5
Then
   15@v = "bat"
   16@ = true
End
if
   031D: actor $PLAYER_ACTOR hit_by_weapon 8
Then
   15@v = "katana"
   16@ = true
End
if
   031D: actor $PLAYER_ACTOR hit_by_weapon 24
Then
   15@v = "desert eagle"
   16@ = true
End
if
   031D: actor $PLAYER_ACTOR hit_by_weapon 25
Then              
   15@v = "shotgun"
   16@ = true
End
if
   031D: actor $PLAYER_ACTOR hit_by_weapon 28
Then
   15@v = "uzi"
   16@ = true
End
if
   031D: actor $PLAYER_ACTOR hit_by_weapon 31
Then
   15@v = "m4"
   16@ = true
End
if
   031D: actor $PLAYER_ACTOR hit_by_weapon 33
Then
   15@v = "rifle"
   16@ = true
End
if
   031D: actor $PLAYER_ACTOR hit_by_weapon 33
Then
   15@v = "rifle"
   16@ = true
End
if
   031D: actor $PLAYER_ACTOR hit_by_weapon 34
Then
    15@v = "sniper"
    16@ = true
    27@ = true
End
 
Последнее редактирование: