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

SR_team

like pancake
BH Team
4,720
6,374
Ситуация:
Вы находитесь в патруле. Преследуете нарушителя, который в транспортном средстве.
Необходимо определить название его авто и id авто, которое в /dl.
Что бы крикнуть в мегафон:
/m Водитель ТС "название авто" с гос. номером "id авто" немедленно остановитесь!!!
Возможно ли это реализовать? С учётом того, что нет таких опкодов, чтобы определяли это при наведении прицела. Или может быть возможно как то определить ближайшее авто и таким образом определить его id и хендл. А из хендла как то узнать название авто
можно
 

k1sher

Известный
201
4
Кто нибудь знает по какой причине может зависать и далее вылетать игра из-за этого клео?

Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:
   
repeat
wait 400
until 0AFA: is_samp_structures_available

alloc 5@ 256
0C11: memset destination 5@ value 0 size 256

chatmsg "{ff0000}[AutoWelcome] {ebebeb}ыфвфы." 0xffffff
0BE3: raknet setup_incoming_rpc_hook @cmsg

while true
    wait 0
end

:cmsg
0BE5: raknet 6@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 7@ = get_hook_param PARAM_PACKETID
if
7@ == RPC_ScrClientMessage
then
    0BE7: raknet 9@ = bit_stream_read 6@ type BS_TYPE_INT
    0BE7: raknet 10@ = bit_stream_read 6@ type BS_TYPE_INT
    0C11: memset destination 5@ value 0 size 256
    0BE8: raknet bit_stream 6@ read_array 5@ size 10@
    0C0F: array 5@ element 10@ = 0x00
    if
    0C18: 8@ = strstr string1 5@ string2 "фывфы."
    then
        say "/f фывфывф"
    end                                                  
end
0BE0: raknet hook_ret true
 

azdsfbzxv

Новичок
73
6
Кто нибудь знает по какой причине может зависать и далее вылетать игра из-за этого клео?

Код:
{$CLEO .cs}
{$INCLUDE SF}
0000:

repeat
wait 400
until 0AFA: is_samp_structures_available

alloc 5@ 256
0C11: memset destination 5@ value 0 size 256

chatmsg "{ff0000}[AutoWelcome] {ebebeb}ыфвфы." 0xffffff
0BE3: raknet setup_incoming_rpc_hook @cmsg

while true
    wait 0
end

:cmsg
0BE5: raknet 6@ = get_hook_param PARAM_BITSTREAM
0BE5: raknet 7@ = get_hook_param PARAM_PACKETID
if
7@ == RPC_ScrClientMessage
then
    0BE7: raknet 9@ = bit_stream_read 6@ type BS_TYPE_INT
    0BE7: raknet 10@ = bit_stream_read 6@ type BS_TYPE_INT
    0C11: memset destination 5@ value 0 size 256
    0BE8: raknet bit_stream 6@ read_array 5@ size 10@
    0C0F: array 5@ element 10@ = 0x00
    if
    0C18: 8@ = strstr string1 5@ string2 "фывфы."
    then
        say "/f фывфывф"
    end                                             
end
0BE0: raknet hook_ret true

Вот другой пример авто ответа. Видит "Привет" в рацию. Нажимаешь кнопку "Z" происходит ответ
CLEO:
{$CLEO .cs}

//-------------MAIN---------------
0000: NOP
0001: wait 2500 ms
0AC8: 1@ = allocate_memory_size 64
0AC8: 2@ = allocate_memory_size 64

:Noname_49
0001: wait 2500 ms
00D6: if
0AFA:  is_samp_available
004D: jump_if_false @Noname_49

:Noname_67
0001: wait 0 ms
0B75: samp get_chat_string 99 text_to 1@ prefix_to 2@ color_to 3@ prefix_color_to 4@
00D6: if and
0C18: 7@ = strstr string1 1@ string2 "Привет"
0AB0:   key_pressed 90
004D: jump_if_false @Noname_67
0001: wait 1000 ms
0AF9: samp say_msg "/f Привет"
0001: wait 5000 ms
0002: jump @Noname_67
 
Последнее редактирование:

kennex

Известный
69
25
Как узнать id игрока по нику и вписать его в чат при этом что бы окно чата оставалось открытым?


CLEO:
{$CLEO .cs}
0000:

while not samp.Available()
wait 2000
end

cmd "cmd" @cmd
0BDE: pause_thread 0@

:cmd
0B35: samp 0@ = get_last_command_params
  0AD4: 3@ = scan_string 0@ format "%d" 2@
  if 3@ > 0
  then
  if SAMP.IsPlayerConnected(2@)
  then
  0B20: samp 3@ = actor_handle_from_samp_playerid 2@
  0B79: samp set_chat_input_enabled 1
  0B76: samp set_chat_input_text "%d" 2@
  end
  end   
samp.CmdRet()
 

azdsfbzxv

Новичок
73
6
Всё таки доделал. Вот только название т/с капсом. Как то надо поменять на маленькие буквы
CLEO:
{$CLEO .cs}

0000: NOP

:Noname_2
0001: wait 0 ms
0AFA:  is_samp_available
004D: jump_if_false @Noname_2

:Noname_39
0001: wait 0 ms
0A8E: 0@ = 0 + 0 // int

:Noname_52
0A8E: 0@ = 0@ + 1 // int
8039:   not  0@ == 1001
004D: jump_if_false @Noname_39
0B23:  samp is_player_connected 0@
004D: jump_if_false @Noname_52
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
056D:   actor 1@ defined
004D: jump_if_false @Noname_52
02CB:   actor 1@ bounding_sphere_visible
004D: jump_if_false @Noname_52
00DF:   actor 1@ driving
004D: jump_if_false @Noname_52
03C0: 27@ = actor 1@ car
0441: 20@ = car 27@ model
0ADB: 26@ = car_model 20@ name
0B2C: samp 21@ = get_vehicle_id_by_car_handle 27@
00D6: if or
0202:   actor $PLAYER_ACTOR near_car 27@ radius 50.0 50.0 sphere 0
0204:   actor $PLAYER_ACTOR near_car 27@ radius 50.0 50.0 sphere 0 in_car
004D: jump_if_false @Noname_52

:Noname_54
0001: wait 0 ms
00D6: if
0AB0:   key_pressed 116
004D: jump_if_false @Noname_52
0AF9: samp say_msg "/m Водитель т/с «%s» с гос. номером «%i-USA»!" 26@ 21@
0001: wait 1000 ms
0AF9: samp say_msg "/m Немедленно остановитесь или мы откроем огонь на поражение!"
0001: wait 2000 ms
0002: jump @Noname_52
 

hnnssy

Известный
Друг
2,684
2,750
Всё таки доделал. Вот только название т/с капсом. Как то надо поменять на маленькие буквы
CLEO:
{$CLEO .cs}

0000: NOP

:Noname_2
0001: wait 0 ms
0AFA:  is_samp_available
004D: jump_if_false @Noname_2

:Noname_39
0001: wait 0 ms
0A8E: 0@ = 0 + 0 // int

:Noname_52
0A8E: 0@ = 0@ + 1 // int
8039:   not  0@ == 1001
004D: jump_if_false @Noname_39
0B23:  samp is_player_connected 0@
004D: jump_if_false @Noname_52
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
056D:   actor 1@ defined
004D: jump_if_false @Noname_52
02CB:   actor 1@ bounding_sphere_visible
004D: jump_if_false @Noname_52
00DF:   actor 1@ driving
004D: jump_if_false @Noname_52
03C0: 27@ = actor 1@ car
0441: 20@ = car 27@ model
0ADB: 26@ = car_model 20@ name
0B2C: samp 21@ = get_vehicle_id_by_car_handle 27@
00D6: if or
0202:   actor $PLAYER_ACTOR near_car 27@ radius 50.0 50.0 sphere 0
0204:   actor $PLAYER_ACTOR near_car 27@ radius 50.0 50.0 sphere 0 in_car
004D: jump_if_false @Noname_52

:Noname_54
0001: wait 0 ms
00D6: if
0AB0:   key_pressed 116
004D: jump_if_false @Noname_52
0AF9: samp say_msg "/m Водитель т/с «%s» с гос. номером «%i-USA»!" 26@ 21@
0001: wait 1000 ms
0AF9: samp say_msg "/m Немедленно остановитесь или мы откроем огонь на поражение!"
0001: wait 2000 ms
0002: jump @Noname_52
в сф есть опкод для перевода стринга в нижний регистр, поищи на вики
 

Garrus

Известный
159
20
Столкнулся с такой проблемой. После выхода с паузы/разворачивания игры, игра подвисает на минуту-две. В своем скрипте я использую хуки. Знаю, что это из-за накопившихся пакетов, которые обрабатываются после выхода с паузы, но можно как то решить/смягчить данную проблему?
 

SR_team

like pancake
BH Team
4,720
6,374
Столкнулся с такой проблемой. После выхода с паузы/разворачивания игры, игра подвисает на минуту-две. В своем скрипте я использую хуки. Знаю, что это из-за накопившихся пакетов, которые обрабатываются после выхода с паузы, но можно как то решить/смягчить данную проблему?
Используй asm, на нем хуки моментально отрабатывают
 

SR_team

like pancake
BH Team
4,720
6,374
А есть какие-то туториалы/вики?
да, т.к. клео не поддерживает asm вставки, то тебе придется вставлять hex вставки и скорее всего модифицировать их перед инжектом. туториалы посмотри по auto assemble для CheatEngine, т.к. там можно сразу поставить хук на асме и скопировать его байты ( hex )
 
  • Нравится
Реакции: Garrus

azdsfbzxv

Новичок
73
6
в сф есть опкод для перевода стринга в нижний регистр, поищи на вики
Всё таки доделал. Вот только название т/с капсом. Как то надо поменять на маленькие буквы
CLEO:
{$CLEO .cs}

0000: NOP

:Noname_2
0001: wait 0 ms
0AFA:  is_samp_available
004D: jump_if_false @Noname_2

:Noname_39
0001: wait 0 ms
0A8E: 0@ = 0 + 0 // int

:Noname_52
0A8E: 0@ = 0@ + 1 // int
8039:   not  0@ == 1001
004D: jump_if_false @Noname_39
0B23:  samp is_player_connected 0@
004D: jump_if_false @Noname_52
0B20: samp 1@ = actor_handle_by_samp_player_id 0@
056D:   actor 1@ defined
004D: jump_if_false @Noname_52
02CB:   actor 1@ bounding_sphere_visible
004D: jump_if_false @Noname_52
00DF:   actor 1@ driving
004D: jump_if_false @Noname_52
03C0: 27@ = actor 1@ car
0441: 20@ = car 27@ model
0ADB: 26@ = car_model 20@ name
0B2C: samp 21@ = get_vehicle_id_by_car_handle 27@
00D6: if or
0202:   actor $PLAYER_ACTOR near_car 27@ radius 50.0 50.0 sphere 0
0204:   actor $PLAYER_ACTOR near_car 27@ radius 50.0 50.0 sphere 0 in_car
004D: jump_if_false @Noname_52

:Noname_54
0001: wait 0 ms
00D6: if
0AB0:   key_pressed 116
004D: jump_if_false @Noname_52
0AF9: samp say_msg "/m Водитель т/с «%s» с гос. номером «%i-USA»!" 26@ 21@
0001: wait 1000 ms
0AF9: samp say_msg "/m Немедленно остановитесь или мы откроем огонь на поражение!"
0001: wait 2000 ms
0002: jump @Noname_52
В общем. Проблема возникла. Так скрипт работает. Но если рядом авто. проезжает, а я сворачиваю игру и разворачиваю, то игра вылетает. Или если АФ К и возвращаюсь в игру спустя время, то видимо от того что авто какое то проехало, вылетает.
 
Последнее редактирование:

93Region

Известный
3
0
Подскажите пж, как сделать автоответчик, если вижу строку и там тип написал привет, то я бы прописал /pm id привет?
 

hnnssy

Известный
Друг
2,684
2,750
В общем. Проблема возникла. Так скрипт работает. Но если рядом авто. проезжает, а я сворачиваю игру и разворачиваю, то игра вылетает. Или если АФ К и возвращаюсь в игру спустя время, то видимо от того что авто какое то проехало, вылетает.
так сделай чтобы искало машину по нажатию клавиши только, а не всегда

Подскажите пж, как сделать автоответчик, если вижу строку и там тип написал привет, то я бы прописал /pm id привет?
это обсуждали здесь сорок раз, полистай
 
Последнее редактирование модератором: