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

checkdasound

Известный
Проверенный
963
410
В чём проблема? Работает только на великах, на мото не работает.
CLEO:
{$CLEO}
0000:
:bikeshack_0
wait 0
0B61:  samp is_local_player_spawned
jf @bikeshack_0
:bikeshack_1
wait 0
if and
047A:   actor $PLAYER_ACTOR driving_bike
not SAMP.IsCursorActive
key_down 16
jf @bikeshack_1
if or
0@ = Actor.CurrentCar($PLAYER_ACTOR)
Car.Model(0@) == 481
Car.Model(0@) == 509
Car.Model(0@) == 510
jf @bikeshack_2
SAMP.SetGameKeyState(16,255)
wait 30
SAMP.SetGameKeyState(16,0)
jump @bikeshack_1
:bikeshack_2
SAMP.SetGameKeyState(1,-128)
wait 100
SAMP.SetGameKeyState(1,0)
jump @bikeshack_1
Может потому что модель транспорта, на которой ты проверяешь не равна 481, 509, 510
 
D

deleted-user-224036

Гость
key down (0ab0) это зажатие
а key pressed (0c89 key just pressed) - однократное нажатие

Ну если про кейворды, то второго нет вообще
Я только что проверял, понял, что вобще различий нет

ну вот, а ты добавь еще туда иды мотоциклов
Смотри, в скрипте стоит проверка на езду на байке, к байкам относятся и мото, и велики. Скрипт проверяет твоё нахождение на велике, если это неправда, то тебя кидает и скрипт начинает жать стрелочку верх (баг, который работает только на мото). Т.е, если это не велик, то это по-любому мотоцикл.
 

astap_

Известный
Всефорумный модератор
626
601
0@ = Actor.CurrentCar($PLAYER_ACTOR)
это надо вынести из условия
SAMP.SetGameKeyState(16,0)
это работать не будет. Нет статуса "0".

У тебя в коде: если актёр на велике, значит жмякую на клавишу ускорения (шифт/пробел). В транспорте эта клавиша вообще не работает
 

Skelerll

Известный
154
8
Зависает гташка через некоторое время наметво, после чего "прекрашена работа программы". Что не так?
CLEO:
{$CLEO}
{$INCLUDE SF}
0000:

REPEAT
wait 0
UNTIL 0AFA:  is_samp_available

0BE3: raknet setup_incoming_rpc_hook @hook
alloc 4@ 512

WHILE TRUE
wait 0     
            IF AND                                           
            0C18: 0 = strstr string1 4@ string2 "1"         
            THEN                                               
                say "1"
            END     
END

:hook
0BE5: raknet 0@ = get_hook_param {PARAM_BITSTREAM}0
0BE5: raknet 1@ = get_hook_param {PARAM_PACKETID}1
IF 1@ == 93
THEN
    0BE7: raknet 2@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    0BE7: raknet 3@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    alloc 4@ 256
    0C11: memset destination 4@ value 0 size 256
  
    0BE8: raknet bit_stream 0@ read_array 4@ size 3@
    0C0F: array 4@ element 3@ = 0x00                   
END
0BE0: raknet hook_ret true
 

Romelo

dev.
Проверенный
540
626
Ну а зачем ты переобъявляешь, и зачем тебе проверка в цикле? Омагад..
В хуке и работай, если тебе нужно моментально выполнить какое-то действие.
И зачем ты пихаешь if and в одно условие?

CLEO:
0BE3: raknet setup_incoming_rpc_hook @hook
0BDE: pause_thread 0

:hook
0BE5: raknet 0@ = get_hook_param {PARAM_BITSTREAM}0
0BE5: raknet 1@ = get_hook_param {PARAM_PACKETID}1
if 1@ == 93
then
    0BE7: raknet 2@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    0BE7: raknet 3@ = bit_stream_read 0@ type {BS_TYPE_INT}3
    alloc 4@ 256
    0C11: memset destination 4@ value 0 size 256
    0BE8: raknet bit_stream 0@ read_array 4@ size 3@
        if                                          
            0C18: 0 = strstr string1 4@ string2 "1"        
            then                                              
                say "1"
            end    
    0C0F: array 4@ element 3@ = 0x00
    free 4@
end
0BE0: raknet hook_ret true
 
  • Нравится
Реакции: D3.Pheonix