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

Boss_Driver

Новичок
5
0
Как сделать проверку, находится ли актер на пассажирском/водительском месте?
 

Lightkiller

Известный
Всефорумный модератор
557
398
Как сделать проверку, находится ли актер на пассажирском/водительском месте?

:proverka
wait 0
if
0449: actor $PLAYER_ACTOR in_a_car
jf @proverka
0811: $CAR = actor $PLAYER_ACTOR car
046C: 8@ = car $CAR driver
if and
Actor.InCar($PLAYER_ACTOR, $CAR)
803C: not $PLAYER_ACTOR == 8@
jf @proverka
 

SR_team

like pancake
BH Team
4,722
6,380
Я себе весь мозг вынес, теперь хочу что бы и вы вынесли его себе :)

Почему игрок дохнет при достижении нужной высоты?
PHP:
{$CLEO .cs}
thread "AutoPara"
0001: 3000 
while true
wait 0
if 056D:  actor $PLAYER_ACTOR defined
    then
    if and
    80DF:  actor $PLAYER_ACTOR driving 
    02D8:  actor $PLAYER_ACTOR current_weapon == 46
        then
        0AB1: call_scm_func @dist 0 4@
        if and
        4@ > 48.056
        4@ < 58.84562
            then
            0AB1: call_scm_func @Open 0 true
            0af8: "Парашют раскрыт" 0xFFFFFF
            else
            if 4@ > 58.84562
                then
                4@ -= 58.84562
                0af8: "Парашют откроется через %.2f м" 0xFFFFFF 4@
                end
            end
        end
    end
end   
 
:dist
00A0: store_actor $PLAYER_ACTOR position_to 0@ 1@ 2@
02CE: 3@ = ground_z_at 0@ 1@ 2@
050A: 4@ = distance_between_XYZ 0@ 1@ 2@ and_XYZ 0@ 1@ 3@
0AB2: ret 1 4@
 
:Open
0AA2: 31@ = load_library "User32.dll"
0AA4: 30@ = get_proc_address "keybd_event" library 31@
0AA5: call 30@ num_params 4 pop 0 0 0 0 1
wait 40   
0AA5: call 30@ num_params 4 pop 0 0 2 0 1 
0af8: "Клавиша нажата" 0xFFFFFF
ret 0
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
0AB1: call_scm_func @Open 0 true
Параметров то передается нуль... зачем так делать? :(
 

SR_team

like pancake
BH Team
4,722
6,380
Это в первой функе, во второй - ничего не возвращается и не требует параметров.

делал без true, и пробовал подгружать функу в начале и далее вызывать только 0AA5, умирать игрок перестал, но парашют так и не раскрылся
 

churkabes

Новичок
7
0
Код:
0ac8: 1@ = 32
0B39: samp get_current_server_address 1@ port 2@
0af8: "%s %d" 0xFFFFFF 1@ 2@
0ac9: 1@
Ребят такой вопрос, юзаю я SF 3.0 хочу узнать где находяться такие опкоды? 0b39,0af8,0ac9? какая версия сф?
И можно ли объеденить опкоды из SF 3.0 , 3.1 в 1 целое?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Ребят такой вопрос, юзаю я SF 3.0 хочу узнать где находяться такие опкоды? 0b39,0af8,0ac9? какая версия сф?
Справка, читай внимательнее тему SAMPFUNCS.

И можно ли объеденить опкоды из SF 3.0 , 3.1 в 1 целое?

Чё?
Опкоды не удаляются в новых версиях сами по себе, зачем объединять?
 

churkabes

Новичок
7
0
Забудь, уже помогли.
Теперь проблемма являеться в том что я пытаюсь нарисовать текст
если я рисую его в цикле то все мерцает и текста всеравно нет, позиция нормальная.
а если рисую с метками то ужас, вместо текста появляеться "Радужная" лежащая модель бомжа по центру экрана.
как мне нарисовать правильно текст?
p.s Шрифт создал если что.
Жду пример когда где на центре будет написано что нибудь.
Урок по Render опкодам мне не помог.
 

churkabes

Новичок
7
0
Написал новый быдлокод
Код:
{$CLEO .cs}
0000: NOP
:0
if not 0@ = SAMP.Base()
then 0A93: end_custom_thread
end
while not SAMP.Available()
wait 100
03F0: enable_text_draw 1
10@ = Render.CreateFont("Arial", 10, 0)
end
 
goto @1
:1 
wait 5000
 
 
0AF8: samp add_message_to_chat "GO" color 2@
Render.DrawText(10@, "LOOOOOl", 500, 600, 0xFFFF6600)
goto @0
Текст показываеться на 0.0001 секунды и пропадает, как мне отрендерить его 1 раз что бы он там остался и обновлялся? допустим вместо LOOOOl будет хп актера.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,463
Написал новый быдлокод
Код:
{$CLEO .cs}
0000: NOP
:0
if not 0@ = SAMP.Base()
then 0A93: end_custom_thread
end
while not SAMP.Available()
wait 100
03F0: enable_text_draw 1
10@ = Render.CreateFont("Arial", 10, 0)
end
 
goto @1
:1
wait 5000
 
 
0AF8: samp add_message_to_chat "GO" color 2@
Render.DrawText(10@, "LOOOOOl", 500, 600, 0xFFFF6600)
goto @0
Текст показываеться на 0.0001 секунды и пропадает, как мне отрендерить его 1 раз что бы он там остался и обновлялся? допустим вместо LOOOOl будет хп актера.


Код:
{$CLEO}
 
const
    FCR_NONE = 0x0
    FCR_BOLD = 0x1
    FCR_ITALICS = 0x2
    FCR_BORDER = 0x4
    FCR_SHADOW = 0x8
    FCR_UNDERLINE = 0x10
    FCR_STRIKEOUT = 0x20
end
 
0000:
 
repeat
    wait 400
until 0AFA: is_samp_structures_available
 
30@ = Render.CreateFont("Tahoma", 12, FCR_BORDER) // Подготавливаем шрифт для рендера
SAMP.GetScreenResolution(0@, 1@) // Получаем разрешение экрана
0@ /= 2 // Делим на 2 ось X разрешения
1@ /= 2 // Делим на 2 ось Y разрешения
 
while true
    wait 0
    3@ = Render.FontDrawLength(30@, "Text") // Получаем длину текста(в пикселях или в чём там...)
    3@ /= 2 // Больше точности
    0A8F: 2@ = 0@ - 3@ // Отнимаем от половины разрешения экрана длину текста.
    Render.DrawText(30@, "Text", 2@, 1@, 0xFFffffff) // Рисуем текст по середине экрана
end
 

ma_za_xa_ka

Известный
42
0
Объясните почему данный код не работает на 0.3z? Все опкоды проверил, проде бы ничего в новой версии sf не изменилось
Код:
:SendFakePosOnFoot
 
0B2B: samp 3@ = get_player_id_by_actor_handle $PLAYER_ACTOR
0B24: samp 3@ = get_player_ptr 3@
3@ += 109
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 PACKET_PLAYER_SYNC type BS_TYPE_BYTE size 1
0B40: raknet bit_stream 5@ write 4@ type BS_TYPE_ARRAY size 68
0B42: raknet send bit_stream 5@ priority PRIORITY_HIGH reliability UNRELIABLE_SEQUENCED ordering_channel 0
0B3E: raknet delete_bit_stream 5@
0AC9: free_allocated_memory 4@
0AB2: 0