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

SR_team

like pancake
BH Team
4,720
6,372
Код:
:get_CWeapon_m_dwState
0A96: 0@ = actor $PLAYER_ACTOR struct
 
0A8E: 1@ = 0@ + 0x0718 // CPed.m_cWeaponSlot
0A8D: 1@ = read_memory 1@ size 1 virtual_protect 0
1@ *= 0x1C // sizeof(cWeaponSlot)
 
0A8E: 2@ = 0@ + 0x5A0 // CPed.m_aclWeaponSlots
005a: 2@ += 1@
2@ += 0x4 // CWeapon.m_dwState
0A8D: 2@ = read_memory 2@ size 4 virtual_protect 0
ret 1 2@

Статус: 0 - ожидание, 1 - стреляет, 2 - перезарядка

стреляет это когда зажата клавиша выстрела или когда вылетает пуля?
 

Lorand

Новичок
2
0
Как прицепить к большому количеству анимаций разные числовые ID, чтобы актёру можно было применять их, ссылаясь на него?
 

hnnssy

Известный
Друг
2,684
2,750
Как прицепить к большому количеству анимаций разные числовые ID, чтобы актёру можно было применять их, ссылаясь на него?
Если я правильно тебя понял, то тебе нужно использовать константы.
 
  • Нравится
Реакции: Lorand

Dean

Новичок
1
0
Кто нибудь киньте полный код /hp -> 100hp просто вообще не получаеться
 

legioner1234

Новичок
32
0
При активации выкидует из игры.
Код:
{$CLEO .cs}
 
0000: NOP
 
wait 0
wait 0
wait 0
wait 1500
 
/* if 8AF7: not samp 31@ = get_base
then 0A93: end_custom_thread
end
repeat
    wait 400
until 0AFA: is_samp_available */
 
0@ = 0
while true
    wait 0
    if 0@ == 0
    then
        if 0ab0: key_down 74
        then
            0AF8: samp add_message_to_chat "[FASTBOT] БОТ ВКЛЮЧЕН, ЧТОБЫ ВЫКЛЮЧИТЬ ЗАЖМИТЕ КЛАВИШУ \"5\"." color 0x66CC33
            print "~Y~CLEO ~G~ACTIVATED" 1500
         
            while 0ab0: key_down 74
                wait 0
            end
         
            0@ = 1
        end
    else
        Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
        call @sendPosOnFootData 3 2230.781 -2285.63 14.3751
        call @sendPosOnFootData 1@ 2@ 3@
        wait 1
        wait 1
 
        if 0ab0: key_down 74
        then
            0AF8: samp add_message_to_chat "[FASTBOT] БОТ ОТКЛЮЧЕН." color 13382400
            print "~Y~CLEO ~R~DEACTIVATED" 1500
         
            while 0ab0: key_down 74
                wait 0
            end
         
            0@ = 0
        end
    end
end
 
:sendPosOnFootData
3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
3@ = SAMP.GetPlayerStruct(3@)
3@ += 55
0AC8: 4@ = allocate_memory_size 68
0C10: memcpy destination 4@ source 3@ size 68
0C0D: struct 4@ offset 6 size 4 = 0@
0C0D: struct 4@ offset 10 size 4 = 1@
0C0D: struct 4@ offset 14 size 4 = 2@
0B3D: raknet 5@ = new_bit_stream
0B40: raknet bit_stream 5@ write 212 type 0 size 1
0B40: raknet bit_stream 5@ write 4@ type 5 size 68
0B42: raknet send bit_stream 5@ priority 1 reliability 7 ordering_channel 0
0B3E: raknet delete_bit_stream 5@
0AC9: free_allocated_memory 4@
0ab2: ret 0
 

san0

Известный
Друг
411
267
При активации выкидует из игры.
Код:
{$CLEO .cs}
 
0000: NOP
 
wait 0
wait 0
wait 0
wait 1500
 
/* if 8AF7: not samp 31@ = get_base
then 0A93: end_custom_thread
end
repeat
    wait 400
until 0AFA: is_samp_available */
 
0@ = 0
while true
    wait 0
    if 0@ == 0
    then
        if 0ab0: key_down 74
        then
            0AF8: samp add_message_to_chat "[FASTBOT] БОТ ВКЛЮЧЕН, ЧТОБЫ ВЫКЛЮЧИТЬ ЗАЖМИТЕ КЛАВИШУ \"5\"." color 0x66CC33
            print "~Y~CLEO ~G~ACTIVATED" 1500
       
            while 0ab0: key_down 74
                wait 0
            end
       
            0@ = 1
        end
    else
        Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
        call @sendPosOnFootData 3 2230.781 -2285.63 14.3751
        call @sendPosOnFootData 1@ 2@ 3@
        wait 1
        wait 1
 
        if 0ab0: key_down 74
        then
            0AF8: samp add_message_to_chat "[FASTBOT] БОТ ОТКЛЮЧЕН." color 13382400
            print "~Y~CLEO ~R~DEACTIVATED" 1500
       
            while 0ab0: key_down 74
                wait 0
            end
       
            0@ = 0
        end
    end
end
 
:sendPosOnFootData
3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
3@ = SAMP.GetPlayerStruct(3@)
3@ += 55
0AC8: 4@ = allocate_memory_size 68
0C10: memcpy destination 4@ source 3@ size 68
0C0D: struct 4@ offset 6 size 4 = 0@
0C0D: struct 4@ offset 10 size 4 = 1@
0C0D: struct 4@ offset 14 size 4 = 2@
0B3D: raknet 5@ = new_bit_stream
0B40: raknet bit_stream 5@ write 212 type 0 size 1
0B40: raknet bit_stream 5@ write 4@ type 5 size 68
0B42: raknet send bit_stream 5@ priority 1 reliability 7 ordering_channel 0
0B3E: raknet delete_bit_stream 5@
0AC9: free_allocated_memory 4@
0ab2: ret 0

Тогда уж лучше сделать так, ничего не понятно, что за клео хочешь сделать.

Код:
{$CLEO}
{$NOSOURCE}
 
repeat
    wait 400
until 0AFA: is_samp_structures_available
 
 
while true
    wait 0
    if 0ab0: key_down 74
    then
        if 0@ == 0
        then
            0AF8: samp add_message_to_chat "[FASTBOT] БОТ ВКЛЮЧЕН, ЧТОБЫ ВЫКЛЮЧИТЬ ЗАЖМИТЕ КЛАВИШУ \"5\"." color 0x66CC33
            print "~Y~CLEO ~G~ACTIVATED" 1500
        else
            0AF8: samp add_message_to_chat "[FASTBOT] БОТ ОТКЛЮЧЕН." color 13382400
            print "~Y~CLEO ~R~DEACTIVATED" 1500
        end
        0B12: 0@ = 0@ XOR 1
    end
    if 0@ == 1
    then   
        Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
        0AB1: call_scm_func @SendOnfootFakePosition 3 Pos_x 12230.781 Pos_y -2285.63 Pos_z 14.3751  // отправляешь ложную позицию, а что дальше ?
        wait 1500  // ждешь 1500 мс
        0AB1: call_scm_func @SendOnfootFakePosition 3 Pos_x 1@ Pos_y 2@ Pos_z 3@ // и отправляешь своюже позицию, зачем ?
    end
end
 
:SendOnfootFakePosition
3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR) // Получаем ид нашего игрока
3@ = SAMP.GetPlayerStruct(3@) // Получаем указатель на локальную структуру
3@ += 55 // Прибавляем смещение на структуру, в которой храниться текущая onfoot data.
0AC8: 4@ = allocate_memory_size 68 // Выделяем память, равную размеру пакета.
0C10: memcpy destination 4@ source 3@ size 68 // Копируем информацию onfoot, чтобы потом изменить только позиции.
0C0D: struct 4@ offset 6 size 4 = 0@ // Изменяем позиции игрока по оси X. Размер 4, так как тип float имеет 4 байта.
0C0D: struct 4@ offset 10 size 4 = 1@ // Offset будет 10, так как 6 + 4 = 10
0C0D: struct 4@ offset 14 size 4 = 2@ // 10 + 4 = 14
0B3D: raknet 5@ = new_bit_stream // Создаем битстрим.
0B40: raknet bit_stream 5@ write PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1 // Вписываем в битстрим название пакета.
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 68 // Вписываем туда переменную, в которой onfoot data, с измененными позициями.
0B8B: raknet send bit_stream 5@ // Отправляем битстрим в котором содержится пакет.
0B3E: raknet delete_bit_stream 5@ // Удаляем битстрим.
0AC9: free_allocated_memory 4@ // Освобождаем память.
0ab2: 0 // Заканчиваем Call функцию.
 

legioner1234

Новичок
32
0
Тогда уж лучше сделать так, ничего не понятно, что за клео хочешь сделать.

Код:
{$CLEO}
{$NOSOURCE}
 
repeat
    wait 400
until 0AFA: is_samp_structures_available
 
 
while true
    wait 0
    if 0ab0: key_down 74
    then
        if 0@ == 0
        then
            0AF8: samp add_message_to_chat "[FASTBOT] БОТ ВКЛЮЧЕН, ЧТОБЫ ВЫКЛЮЧИТЬ ЗАЖМИТЕ КЛАВИШУ \"5\"." color 0x66CC33
            print "~Y~CLEO ~G~ACTIVATED" 1500
        else
            0AF8: samp add_message_to_chat "[FASTBOT] БОТ ОТКЛЮЧЕН." color 13382400
            print "~Y~CLEO ~R~DEACTIVATED" 1500
        end
        0B12: 0@ = 0@ XOR 1
    end
    if 0@ == 1
    then
        Actor.StorePos($PLAYER_ACTOR, 1@, 2@, 3@)
        0AB1: call_scm_func @SendOnfootFakePosition 3 Pos_x 12230.781 Pos_y -2285.63 Pos_z 14.3751  // отправляешь ложную позицию, а что дальше ?
        wait 1500  // ждешь 1500 мс
        0AB1: call_scm_func @SendOnfootFakePosition 3 Pos_x 1@ Pos_y 2@ Pos_z 3@ // и отправляешь своюже позицию, зачем ?
    end
end
 
:SendOnfootFakePosition
3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR) // Получаем ид нашего игрока
3@ = SAMP.GetPlayerStruct(3@) // Получаем указатель на локальную структуру
3@ += 55 // Прибавляем смещение на структуру, в которой храниться текущая onfoot data.
0AC8: 4@ = allocate_memory_size 68 // Выделяем память, равную размеру пакета.
0C10: memcpy destination 4@ source 3@ size 68 // Копируем информацию onfoot, чтобы потом изменить только позиции.
0C0D: struct 4@ offset 6 size 4 = 0@ // Изменяем позиции игрока по оси X. Размер 4, так как тип float имеет 4 байта.
0C0D: struct 4@ offset 10 size 4 = 1@ // Offset будет 10, так как 6 + 4 = 10
0C0D: struct 4@ offset 14 size 4 = 2@ // 10 + 4 = 14
0B3D: raknet 5@ = new_bit_stream // Создаем битстрим.
0B40: raknet bit_stream 5@ write PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1 // Вписываем в битстрим название пакета.
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 68 // Вписываем туда переменную, в которой onfoot data, с измененными позициями.
0B8B: raknet send bit_stream 5@ // Отправляем битстрим в котором содержится пакет.
0B3E: raknet delete_bit_stream 5@ // Удаляем битстрим.
0AC9: free_allocated_memory 4@ // Освобождаем память.
0ab2: 0 // Заканчиваем Call функцию.

Грузчика на отправке пакет для сервера как бы не сильно НубоРП.
А при компилировании выбивает ошибку: "Неверное выражение 3@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR).
Одна из переменных имеет неизвестный тип, либо их типы несовместимы."
 

fiendshadow

3LFhocV726q7pKWWky2vv3W38Dm9sGJV86
Проверенный
455
121
Код:
:AUTOPRESS_1923
if
0C18: 2@ = strstr string1 0@ string2 "H"
else_jump @AUTOPRESS_416
SAMP.SetGameKeyState(*, 255)
wait 30@
SAMP.SetGameKeyState(*, 0)
wait 30@
Подскажите,что нужно прихуярить вместо звездочек,на Y и N подобрал быстро,а на это дерьмо никак.
 

SR_team

like pancake
BH Team
4,720
6,372
Код:
:AUTOPRESS_1923
if
0C18: 2@ = strstr string1 0@ string2 "H"
else_jump @AUTOPRESS_416
SAMP.SetGameKeyState(*, 255)
wait 30@
SAMP.SetGameKeyState(*, 0)
wait 30@
Подскажите,что нужно прихуярить вместо звездочек,на Y и N подобрал быстро,а на это дерьмо никак.

номер игровой клавиши, всего их 19. Все они есть в справке сб