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

serhiyrubin

Известный
396
106
Код:
{$CLEO .cs}
0000: NOP

:NONAME_2
   not SAMP.Available
else_jump @NONAME_22
wait 0
jump @NONAME_2

:NONAME_22
wait 0
if
0ADC:   test_cheat "P"
else_jump @NONAME_73
0C8F: samp process_chat_input "/setweather 7"
0C8F: samp process_chat_input "/settime 7"

:NONAME_73
jump @NONAME_22

Можете добавить что бы не срабатывал когда чат открыт?

Код:
{$CLEO .cs}
0000: NOP

:NONAME_2
   not SAMP.Available
else_jump @NONAME_22
wait 0
jump @NONAME_2

:NONAME_22
wait 0
if and
8B21:     samp is_chat_opened
0ADC:   test_cheat "P"
else_jump @NONAME_73
0C8F: samp process_chat_input "/setweather 7"
0C8F: samp process_chat_input "/settime 7"

:NONAME_73
jump @NONAME_22
 

cover

Известный
Проверенный
245
273
Как узнать координаты пикапа в зоне стрима по его модель ид?
Код:
{$CLEO}
0000:

REPEAT
0001: 0
UNTIL 0AFA:
0BB9: samp 0@ = get_pickup_pool_ptr

WHILE TRUE
0001: 0
    FOR 1@ = 0 TO {MAX_PICKUPS}4096 [STEP = 1]
        IF 0B51: samp 2@ = pickup_handle_by_id 1@
        THEN
        0A90: 2@ = 1@ * 20
        000A: 2@ += 61444
        000A: 2@ += 0@ // stPickup
        0A8D: 3@ = read_memory 2@ size 4 virtual_protect TRUE // iModelID
            IF 0039:   3@ == 19320
            THEN
            0C0C: 3@ = struct 2@ offset 8 size 4 // X
            0C0C: 4@ = struct 2@ offset 12 size 4 // Y
            0C0C: 5@ = struct 2@ offset 16 size 4 // Z
                IF 00C2:   sphere_onscreen 3@ 4@ 5@ radius 5.0
                THEN
                0B55: convert_3D_coords 3@ 4@ 5@ to_screen 3@ 4@
                00A0: store_actor $PLAYER_ACTOR position_to 5@ 6@ 7@
                0B55: convert_3D_coords 5@ 6@ 7@ to_screen 5@ 6@
                0B68: render draw_line_point1 5@ 6@ point2 3@ 4@ width 1 color 0xFFFFA500
                END
            END
        END
    END
END
 

Goldfish

Известный
106
22
Пытаюсь прочитать id модели с которой прикасается ГГ
upload_2017-8-24_21-13-7.png

---------
upload_2017-8-24_21-13-31.png


Правильно ли я делаю?

Код:
0A96: 0@ = actor $PLAYER_ACTOR struct
0@ += 0x584
while true
    wait 0
    0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
    1@ += 0x18 // int
    0A8D: 1@ = read_memory 1@ size 2 virtual_protect 0 
    0AD1:  "id %i" time 100 1@
end

в результате значение неверное, это со статичными объектами тоже будет работать?
 

BlackKnigga

Известный
BH Team
922
445
Пытаюсь прочитать id модели с которой прикасается ГГ
Посмотреть вложение 8734
---------
Посмотреть вложение 8735

Правильно ли я делаю?

Код:
0A96: 0@ = actor $PLAYER_ACTOR struct
0@ += 0x584
while true
    wait 0
    0A8D: 1@ = read_memory 0@ size 4 virtual_protect 0
    1@ += 0x18 // int
    0A8D: 1@ = read_memory 1@ size 2 virtual_protect 0
    0AD1:  "id %i" time 100 1@
end

в результате значение неверное, это со статичными объектами тоже будет работать?
Почему +=0x18, если оффсет модели 0x22? :monkey:

Можно ли открыть .sf файл?
Достать исходник - нет.
 

romanblinov2013

RB_PRO
Проверенный
212
196
Как заставить актёра в лодке смотреть в координату, дабы потом он плыл в неё через эмуляцию?
 

IZDATXXX

Известный
Проверенный
172
251
CLEO:
{$CLEO}
0000:
repeat
wait 0
until 0AFA:
0BE4: raknet setup_incoming_packet_hook @Hook
0BDE: 0

:Hook
0BE5: raknet 0@ = get_hook_param 1
IF 0039:   0@ == 208
THEN
0BE5: raknet 0@ = get_hook_param 0
0BF2: raknet 33@ = bit_stream 0@ get_read_offset

0BED: raknet bit_stream 0@ set_read_offset 72 //Bit offset + 8 bit
0BE7: raknet 1@ = bit_stream_read 0@ type 2   //playerID
0BE7: raknet 2@ = bit_stream_read 0@ type 2   //sPosX
0BE7: raknet 3@ = bit_stream_read 0@ type 2   //sPosY
0BE7: raknet 4@ = bit_stream_read 0@ type 2   //sPosZ
0BED: raknet bit_stream 0@ set_read_offset 200 //Bit offset + 8 bit
0BE7: raknet 5@ = bit_stream_read 0@ type 1   //bIsPlayerActive

0AF8: "playerID: %i | sPosX: %i | sPosY: %i | sPosZ: %i | bIsPlayerActive: %i" 0xFF0000 1@ 2@ 3@ 4@ 5@

0BED: raknet bit_stream 0@ set_read_offset 33@
END
0BE0: raknet hook_ret TRUE
При проверке playerID изменяется из крайности в крайность, почему ?
 

serhiyrubin

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

SumJest

Известный
31
12
Привет, человек подсказал мне, что опкоды анимации не поддерживают форматирование. Пример:
CLEO:
04ED: load_animation "%s" 2@
0A1A: actor 4@ perform_animation "%s" IFP "%s" framedelta 4.0 loop 1 lockX 0 lockY 0 lockF 0 time -1 3@ 2@
04EF: release_animation "%s" 2@

Проблема в том, что все анимации пишутся правильно, ID игрока тоже, но при этом анимация не воспроизводится. Есть ли метод, который решит эту проблему? Потому что, мне нужно получать название анимации и файл из вводимой игроком команды.
 

Romelo

dev.
Проверенный
540
624
делаю бота, хочется чтобы можно было сделать игру в окно, и нажатие на альт отправлялось ракнетом или как то, но не эмуляцией
т.к. перестает работать если мышка не в окне (антипауза есть)
CLEO:
0AC8: alloc 0@ 68
0C11: memset destination 0@ value 0 size 68 
1@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
0BBA: samp store_player 1@ onfoot_data 0@
0C0D: struct 0@ offset 36 size 1 = 1 // https://sampwiki.blast.hk/wiki/Keys
0BC0: samp send_onfoot_data 0@
0AC9: free_allocated_memory 0@
 

SumJest

Известный
31
12
CLEO:
alloc 1@ 64
format 1@ = "%s" 2@
04ED: load_animation 1@
// ...
Теоретически правильно, я не уверен, но лучше попробуй.

Вот код:

CLEO:
:2                                              
alloc 2@ 128
alloc 3@ 128
IF 0B35: samp 0@ = get_last_command_params
THEN
    0AA5: call 0x8220AD num_params 5 pop 5 params 3@ 2@ 1@v "%d %s %s" 0@
00D6: if and
0B23:  samp is_player_connected 1@
8B64:  not samp is_player 1@ npc
004D: jump_if_false @CMDError1
0B20: samp 4@ = actor_handle_by_samp_player_id 1@
056D:   actor 4@ defined
004D: jump_if_false @CMDError2  
alloc 5@ 24
alloc 6@ 24
format 5@ = "%s" 2@
format 6@ = "%s" 3@
04ED: load_animation 5@
wait 1000    
chatmsg "[TESTCMD]: ID: %d FILE: %s ANIMATION: %s" -1 1@ 2@ 3@       
0A1A: actor 4@ perform_animation 6@ IFP 5@ framedelta 4.0 loop 1 lockX 0 lockY 0 lockF 0 time -1
04EF: release_animation 5@
ELSE
0AF8: samp add_message_to_chat "{ffffff}Ââîäèòå /anim [id] [file] [animation]" color 0xFFFFFF
END
0AC9: free_allocated_memory 2@
0AC9: free_allocated_memory 3@
0AC9: free_allocated_memory 5@
0AC9: free_allocated_memory 6@
SAMP.CmdRet()

А вот то, что получается:

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:23] Warning(s007): Exception 0xC0000005 at 0x0

[14:39:55] Warning(s007): Exception 0xC00000FD at 0xF717937

[14:39:56] Warning(s007): Exception 0xC0000005 at 0xF717937

Я конечно не знаю. Но надеюсь это я где-то накосячил.
 

serhiyrubin

Известный
396
106
Вот код:

CLEO:
:2                                             
alloc 2@ 128
alloc 3@ 128
IF 0B35: samp 0@ = get_last_command_params
THEN
    0AA5: call 0x8220AD num_params 5 pop 5 params 3@ 2@ 1@v "%d %s %s" 0@
00D6: if and
0B23:  samp is_player_connected 1@
8B64:  not samp is_player 1@ npc
004D: jump_if_false @CMDError1
0B20: samp 4@ = actor_handle_by_samp_player_id 1@
056D:   actor 4@ defined
004D: jump_if_false @CMDError2 
alloc 5@ 24
alloc 6@ 24
format 5@ = "%s" 2@
format 6@ = "%s" 3@
04ED: load_animation 5@
wait 1000   
chatmsg "[TESTCMD]: ID: %d FILE: %s ANIMATION: %s" -1 1@ 2@ 3@      
0A1A: actor 4@ perform_animation 6@ IFP 5@ framedelta 4.0 loop 1 lockX 0 lockY 0 lockF 0 time -1
04EF: release_animation 5@
ELSE
0AF8: samp add_message_to_chat "{ffffff}Ââîäèòå /anim [id] [file] [animation]" color 0xFFFFFF
END
0AC9: free_allocated_memory 2@
0AC9: free_allocated_memory 3@
0AC9: free_allocated_memory 5@
0AC9: free_allocated_memory 6@
SAMP.CmdRet()

А вот то, что получается:



Я конечно не знаю. Но надеюсь это я где-то накосячил.
Под 0B35: samp 0@ = get_last_command_params память выделена?

CLEO:
0AC8: alloc 0@ 68
0C11: memset destination 0@ value 0 size 68 
1@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
0BBA: samp store_player 1@ onfoot_data 0@
0C0D: struct 0@ offset 36 size 1 = 1 // https://sampwiki.blast.hk/wiki/Keys
0BC0: samp send_onfoot_data 0@
0AC9: free_allocated_memory 0@
Проверял у банкомата на нубо сервре
На альт должно открыть меню, не робит
 
Последнее редактирование модератором: