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

SR_team

like pancake
BH Team
4,720
6,372
Идея годная, но сунуть там его никак. Буду работать https://drive.google.com/file/d/0B7EnJtlOGUiDakl2bWd2YTVwVXM/edit?usp=sharing
PHP:
{$CLEO}
0@ = 75.0
 
1@ = 0
2@ = 0
:Start
while true
    wait 0
    if 0ADC: test_cheat "CARDL"
    then
        if 1@ == 0
        then
            0ACD: show_text_highpriority "On" time 1337
            1@ = 1
        else
            0ACD: show_text_highpriority "Off" time 1337
            1@ = 0
        end
    end
 
    if 1@ == 1
    then
:s1
wait 0
00A0: store_actor $PLAYER_ACTOR position_to 14@ 15@ 16@
00D6: if
0AE2: $ACTOR_CAR = random_vehicle_near_point 14@ 15@ 16@ in_radius 3600.0 find_next 0 pass_wrecked 0
004D: jump_if_false @s2 
gosub @draw_text
:s2
for 2@ = 1 to 101 
00A0: store_actor $PLAYER_ACTOR position_to 14@ 15@ 16@
if 0AE2: $ACTOR_CAR = random_vehicle_near_point 14@ 15@ 16@ in_radius 3600.0 find_next 1 pass_wrecked 0
then gosub @draw_text
else
gosub @draw_text
jump @Start
end
end
            end
        end
    end
end
:draw_text
wait 0
if
2@ < 100
then
    0B2C: samp 5@ = get_vehicle_id_by_car_handle 31@
    0B44: samp 15@ = create_3d_text "Custom Text" color 0xFFFFFFFF position 0.0 0.0 0.0 view_distance 0@ show_behind_walls true attached_to_player -1 attached_to_vehicle 5@
else
    gosub @remove_text
end
return
 
:remove_text
for 2@ = 0 to 101
    if
    0B46: samp 3d_text 2@ defined
        then
        0B45: samp destroy_3d_text 2@
        end
    end
return

Говнокод 100ый лвл! С ним я могу все!
 

Dark_Knight

Me, me and me.
Друг
4,065
2,079
What, do you have best idea?


В переменную записывается ID, перемення в потоке ограничена 33@(text3D то у меня дохренище), поэтому я решил брать и искать рандомом :). Проблема как бЭ в том, что во второй раз оно игнорирует ограничение в 100, идет до 2048 и крашит

У тебя текст хранится в переменной 15, а удаляешь ты в переменной 3. Для такой хери лучше юзать массив.
0B44: samp 15@ = create_3d_text "Custom Text" color 0xFFFFFFFF position 0.0 0.0 0.0 view_distance 0@ show_behind_walls true attached_to_player -1 attached_to_vehicle 5@
 

Dark_Knight

Me, me and me.
Друг
4,065
2,079
Понт от той 15@ мне главное ид, а оно идет по порядку 1,2,3.... Моим способом перебора все прекрасно удаляется и так. Проблема в другом, я попробавал кучу разных шняг и понял что проблема в ядре, скрипт тупо в определенное время зависает. Тупые разрабы CLEO жаба давила сделать нормальные людские условия {}

Как по мне лучше хранить их иды в массиве и потом удалять, когда нужно.
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
Трандец блин draw_text поставил в цикл, когда к-ство надписей становится больше 100 они все очищаются, но когда снова накапливается 100 надписей цикл очищения почему-то не срабатывает
PHP:
1@ = 0
2@ = 0
 
:draw_text
wait 0
if
2@ < 100
then
    0B2C: samp 5@ = get_vehicle_id_by_car_handle 31@
    0B44: samp 15@ = create_3d_text "Custom Text" color 0xFFFFFFFF position 0.0 0.0 0.0 view_distance 0@ show_behind_walls true attached_to_player -1 attached_to_vehicle 5@
    2@++
else
    gosub @remove_text
end
return
 
:remove_text
2@ = 0
3@ = 0
while 3@ < 100
    if
    0B46: samp 3d_text 3@ defined
    then
        0B45: samp destroy_3d_text 3@
        3@++
    else
        3@++
    end
end
return
а захрен 3D текст? :wall:
почему бы не рисовать уже рендером от сф или даже от самой игры?
 

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460


Код:
{$CLEO}
 
wait 0
 
repeat
    wait 400
until 0AFA:
 
0@ = 75.0
0B6D: render 1@ = create_font "Arial" height 12 flags 0x0
 
while true
    wait 0
    // FOR ALL CARS
    0A8D: 29@ = read_memory 0xB74494 size 4 virtual_protect 0
    000A: 29@ += 0x4
    0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
    for 30@ = 0 to 0x6D00 step 0x100
        0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
        000A: 29@ += 0x1
        if and
            0029: 31@ >= 0x00
            001B: 0x80 > 31@
        then
            005A: 31@ += 30@
            if 056E: car 31@ defined
            then gosub @draw_text
            end
        end
    end
    // FOR ALL CARS END
       
end
 
:draw_text
00AA: store_car 31@ position_to 25@ 26@ 27@ 
if and                                     
    00EC:  actor $PLAYER_ACTOR sphere 0 near_point 25@ 26@ radius 0@ 0@
    00C2:  sphere_onscreen 25@ 26@ 27@ radius 0.0
then
    0B2C: samp 2@ = get_vehicle_id_by_car_handle 31@ // Will show car ID later
 
    0B55: convert_3D_coords 25@ 26@ 27@ to_screen 4@ 5@
 
    // ---------------------------1------------------------
    28@ = 0
    0AC7: 3@ = var 28@ offset
    format 3@ = "%d" 2@
    0B6F: render font 1@ draw_text 3@ pos 4@ 5@ color 0xFFFFFFFF
    // ----------------------------------------------------
 
    // ---------------------------2------------------------
    //03F0: enable_text_draw 1
    //0B5F: convert_window_screen_coords 4@ 5@ to_game_screen_coords 6@ 7@
    //045A: draw_text_1number 6@ 7@ GXT 'NUMBER' number 2@
    // ----------------------------------------------------
end
return
 
  • Нравится
Реакции: PedroSantiago

itsLegend

Фонд борьбы за жуков 🐞
Администратор
2,696
1,460
GJ, thx
Можешь объяснить для чего это?
00EC: actor $PLAYER_ACTOR sphere 0 near_point 25@ 26@ radius 0@ 0@
Если авто находится в радиусе 0@

00C2: sphere_onscreen 25@ 26@ 27@ radius 0.0
Координаты "видны" на экране(т.е. не за спиной). Если убрать, то получится так, что будет отображаться текст по двум сторонам(некий эффект от зеркала).
 
  • Нравится
Реакции: PedroSantiago

SR_team

like pancake
BH Team
4,720
6,372
Как узнать скорость поворота машины (вообщем знаете ситуации когда врезаешься в фонарь и тебя вертит на 360 градусов)

http://www.gtamodding.com/?title=Memory_Addresses_(SA)#Cars
Spin - верчение машины
  • +80 = [float] X (NS) Spin
  • +84 = [float] Y (EW) Spin
  • +88 = [float] Z (NW) Spin
===========================================================
Как определить кол-во хп у другого игрока? Я юзал опкод 0226: 2@ = actor 1@ health, если 1@ - Handle, то всегда возращает 1000хп, а если id, то 0хп.
 

Dark_Knight

Me, me and me.
Друг
4,065
2,079
Как определить кол-во хп у другого игрока? Я юзал опкод 0226: 2@ = actor 1@ health, если 1@ - Handle, то всегда возращает 1000хп, а если id, то 0хп.

А СФ тебе нахуя? П.С: Если у игрока больше 100 ХП то 0B25 вернет сто.
 
  • Нравится
Реакции: artF

Dark_Knight

Me, me and me.
Друг
4,065
2,079
Толку не вижу в этом, оно мне показывает то положительное значение 885463435413, то отрицательное -9546514217, хрен логику пойми
эти пробуй.
Код:
For each vehicle in the pool:
+20 = [byte] Contains a pointer to the rotation/position matrix (84 bytes):
+0 = [float] X-axis Rotation (Grad)
+4 = [float] Y-axis Rotation (Grad)
+8 = [float] Z-axis Rotation (Grad)
+16 = [float] X-axis Rotation (Looking)
+20 = [float] Y-axis Rotation (Looking)
+24 = [float] Z-axis Rotation (Looking)
+48 = [float] X-axis Position
+52 = [float] Y-axis Position
+56 = [float] Z-axis Position
 

ma_za_xa_ka

Известный
42
0
Как сделать проверку игрока онлайн он или нет по нику? Если онлайн то выполнять одно, если нет то дургое?
 

MISTER_GONWIK

Всефорумный гонщик
Всефорумный модератор
1,260
1,740
1)Или у меня руки из жопы :wall: , или там статические данные, я склоняюсь к первому
2)Есть ли опкод/функция чтобы проверить если машина столкнулась с объектом(н-р фонарь)

небось ты "%d" выводишь, хотя там блять написано [float]