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

Thomas_Johnson

Известный
Проверенный
183
21
Телепортирует в машину и выкидывает на крышу, как сделать, чтобы не выкидывало на крышу. С мопедов, мотоциклов не выкидывает
CLEO:
{$CLEO}
0000:

repeat
wait 0
until SAMP.Available()

0B34: samp register_client_command "ts" to_lab

while true
    wait 0
end
                                                     
:ts
0B35: samp 1@ = get_last_command_params
if
0AD4: 1@ = scan_string 1@ format "%d" 2@
then
if
0AFF: samp 1@ = car_handle_from_samp_carid 2@
then
0B30: samp send_enter_vehicle 2@ as_passenger 0
wait 1000
072A: task_warp_char_into_car_as_driver $PLAYER_ACTOR car 1@
end
end
Samp.CmdRet()
Вместо 072A используй 036A. Так же проблема м.б. в том, что машина просто закрыта.
 

Vovich

HOT
Проверенный
717
197
Делай XOR переменной в теле команды, а в теле основного потока уже используй все опкоды с задержками.
Метки нигде использовать не нужно, если это не требуется конкретно.

if or
a == "aaa"
b == "bbb"
then ...

if a == "aaa"
then ....
if b == "bbb
then ...

Ну надеюсь идею понял.
ты ему сказал бы, что при использовании if , закрывать нужно условие end прежде чем использовать повторно if на другую фразу, ибо если они будут идти один за одним, и только после последней фразы - окончание условий, то действия будут происходит только если фразы будут по порядку. (если вообще будут)
 

ShadowBroker

Известный
110
27
Подскажите пожалуйста как сделать так что бы draw всегда находился в правом нижнем углу вне зависимости от разрешения?

CLEO:
{$CLEO }
0000:

repeat
wait 400
until samp.Available()

while true
wait 0
if 8AB0: not key_pressed 121
then
5@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
4@ = samp.GetPlayerColor(5@)
0B69: render draw_box_pos 1260 1004 size 30 30 color 4@
end
end
 

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,962
Получить разрешение экрана и с помощью математических опкодов рассчитать нужную позицию.


0B5A: get_screen_resolution 1@ 2@
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,260
1,740
Подскажите пожалуйста как сделать так что бы draw всегда находился в правом нижнем углу вне зависимости от разрешения?

CLEO:
{$CLEO }
0000:

repeat
wait 400
until samp.Available()

while true
wait 0
if 8AB0: not key_pressed 121
then
5@ = SAMP.GetSAMPPlayerIDByActorHandle($PLAYER_ACTOR)
4@ = samp.GetPlayerColor(5@)
0B69: render draw_box_pos 1260 1004 size 30 30 color 4@
end
end
Получить разрешение экрана и с помощью математических опкодов рассчитать нужную позицию.


0B5A: get_screen_resolution 1@ 2@
узнаешь позицию правого нижнего угла в игровых координатах (макс 640x448 вроде)
и переводишь опкодом в текущее разрешение
CLEO:
0B60: convert_game_screen_coords 1@ 2@ to_window_screen_coords 3@ 4@
это то что тебе нужно, опкод будет всегда выдавать позицию правого нижнего угла, независимо от разрешения
 
  • Нравится
Реакции: ShadowBroker

DarkP1xel

Сила воли наше всё.
BH Team
3,635
4,962
узнаешь позицию правого нижнего угла в игровых координатах (макс 640x448 вроде)
и переводишь опкодом в текущее разрешение
CLEO:
0B60: convert_game_screen_coords 1@ 2@ to_window_screen_coords 3@ 4@
это то что тебе нужно, опкод будет всегда выдавать позицию правого нижнего угла, независимо от разрешения
К сожалению не на всех разрешениях он работает корректно :sad_frog:
 

XyJluraH_J

Потрачен
116
26
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Вместо 072A используй 036A. Так же проблема м.б. в том, что машина просто закрыта.
Mашина не закрыта, пробывал и с 036A все равно выкидывает
CLEO:
{$CLEO}
0000:

repeat
wait 0
until SAMP.Available()

0B34: samp register_client_command "ts" to_label @ts

while true
    wait 0
end
                                                          
:ts
0B35: samp 1@ = get_last_command_params
if
0AD4: 1@ = scan_string 1@ format "%d" 2@
then
0AFF: samp 1@ = car_handle_from_samp_carid 2@ 
SAMP.WriteSAMPMemory(0x146E0, 0xC390, 2)
SAMP.WriteSAMPMemory(0x146E0, 0xC390, 2)
0B30: samp send_enter_vehicle 2@ as_passenger 0   
036A: put_actor $PLAYER_ACTOR in_car 1@
end 
Samp.CmdRet()
 
Последнее редактирование:

Thomas_Johnson

Известный
Проверенный
183
21
Mашина не закрыта, пробывал и с 036A все равно выкидывает
CLEO:
{$CLEO}
0000:

repeat
wait 0
until SAMP.Available()

0B34: samp register_client_command "ts" to_label @ts

while true
    wait 0
end
                                                         
:ts
0B35: samp 1@ = get_last_command_params
if
0AD4: 1@ = scan_string 1@ format "%d" 2@
then
0AFF: samp 1@ = car_handle_from_samp_carid 2@
SAMP.WriteSAMPMemory(0x146E0, 0xC390, 2)
SAMP.WriteSAMPMemory(0x146E0, 0xC390, 2)
0B30: samp send_enter_vehicle 2@ as_passenger 0  
036A: put_actor $PLAYER_ACTOR in_car 1@
end
Samp.CmdRet()
Сервер?
 

01EG

Известный
Проверенный
631
345
Mашина не закрыта, пробывал и с 036A все равно выкидывает
CLEO:
{$CLEO}
0000:

repeat
wait 0
until SAMP.Available()

0B34: samp register_client_command "ts" to_label @ts

while true
    wait 0
end
                                                         
:ts
0B35: samp 1@ = get_last_command_params
if
0AD4: 1@ = scan_string 1@ format "%d" 2@
then
0AFF: samp 1@ = car_handle_from_samp_carid 2@
SAMP.WriteSAMPMemory(0x146E0, 0xC390, 2)
SAMP.WriteSAMPMemory(0x146E0, 0xC390, 2)
0B30: samp send_enter_vehicle 2@ as_passenger 0  
036A: put_actor $PLAYER_ACTOR in_car 1@
end
Samp.CmdRet()
Исходник моего скрипта Tp or Take Car. Скачай посмотри, что к чему и как он тпшит актера в кар.
 

Thomas_Johnson

Известный
Проверенный
183
21
ПОМОГИТЕ! Как сделать чтобы игрок не скользил 05D3:
Замена встроенного опкода ходьбы (применяется в Botter). Цикл можно вынести за пределы функции, чтобы сделать её прерываемой.

PHP:
0AB1: call @char_goto 4 XYZ 1234.0 4321.0 1243.0 sprint true

:char_goto
repeat
    wait 0
    00A0: store_actor $PLAYER_ACTOR position_to 4@ 5@ 2@
    0063: 0@ -= 4@
    0063: 1@ -= 5@
    0604: get_Z_angle_for_point 0@ 1@ store_to 2@
    005B: 0@ += 4@
    005B: 1@ += 5@
    2@ *= 0.01745
    0A96: 4@ = actor $PLAYER_ACTOR struct
    4@ += 0x558
    0A8C: write_memory 4@ size 4 value 2@ virtual_protect 0
    0373: set_camera_directly_behind_player
    if
        3@ == false
    then
        4@ = 0xB73458
        4@ += 0x20
        0A8C: write_memory 4@ size 1 value 0 virtual_protect 0
        4@ = 0xB73458
        4@ += 0x3
        0A8C: write_memory 4@ size 1 value 255 virtual_protect 0
    else
        4@ = 0xB73458
        4@ += 0x20
        0A8C: write_memory 4@ size 1 value 255 virtual_protect 0
        4@ = 0xB73458
        4@ += 0x3
        0A8C: write_memory 4@ size 1 value 255 virtual_protect 0
    end
until 00ED: actor $PLAYER_ACTOR 0 near_point 0@ 1@ radius 0.4 0.4 on_foot
0AB2: ret 0