[CLEO] Как сделать Спидометр - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Alowir, Sanoxxx  
[CLEO] Как сделать Спидометр
Sedance Дата: Пятница, 19.07.2013, 23:17 | Сообщение # 1
Боец
Сообщений: 69
Статус: Offline
[l]

Всем привет меня зовут Sedance и в этом моём 1 уроке,я покажу как сделать СПИДОМЕТОР для Автомобилей GTA SA.
Крч будем привязывать к тачке спидометор.

-------------------------------------------------------------------------------------------------------------------------------------------- ------------------
Первым шагом будет поиск нужных текстур. (Найдёте в интернете их много) И так я нашел подходящие картинки для спидометра. Эти картинки я закинул в новый TXD-архив SPEED, который вы можете скачать (по сыллке ниже) и поместил в папку models/txd.
Запускаем наш Санни Билдер, и создаём новый документ. Проверим, сначала, если игрок не найден, то завершим наш поток:
Код

{$CLEO}
0000:     
thread 'SPEED'

if
Player.Defined($PLAYER_CHAR)
jf @SPEED_END

// // //

:SPEED_END
wait 0
0A93: end_custom_thread


Если всё Сработало, то создаём новый бесконечный цикл. В нём напишем проверку: "Актёр $PLAYER_ACTOR в транспорте". Если этот так, то загружаем наш архив текстур и сами картинки,
которые она содержит.

Код
while true
        if
        Actor.Driving($PLAYER_ACTOR)
        then
        0390: load_txd_dictionary 'SPEED'
        038F: load_texture "CIRCLE" as 1     
        038F: load_texture "STRELK" as 2       
           
        // // // // //
            
        0391: release_txd_dictionary      
        end
wait 0
end


Крч далее выгружаем это из памяти И на месте комментариев, нам понадобится ещё один цикл while. Проверка будет такая-же, как и в условие IF, в которого вложен цикл:

Код
while Actor.Driving($PLAYER_ACTOR)
                    03F0: enable_text_draw 1     

            wait 0
            end              


Cледующий пункт - рисование текстур это наверное самое фигня из Фигни.. Обе картинки у нас имеют размер 256х256, Думаю это мнаговато. По-этому рисовать текстуры мы будем размером 128х128.
Первую текстуру мы будем рисовать опкодом 038D, так как мы не собираемся её привязывать к скорости. А вот вторую(стрелку) рисуем опкодом 074B, так как он может вращать картинки на экране. В нас получится следующее:
Код

       while Actor.Driving($PLAYER_ACTOR)
                    03F0: enable_text_draw 1     
                    03E3: set_texture_to_be_drawn_antialiased 1     
                    038D: draw_texture 1 position 540.0 280.0 size 128.0 128.0 RGBA 255 255 255 200     
                    03E3: set_texture_to_be_drawn_antialiased 1                  
                    074B: draw_texture 2 position 540.0 280.0 scale 128.0 128.0 angle 2@ color_RGBA 255 255 255 128     
            wait 0
            end


Всё, что нам осталось - определить переменную 2@. Что-бы сделать скорость реалистичнее, и спидометр показывал более-менее правильные данные, мы должны перевести скорость машины(юниты) в километры. Я подсчитал, что для данного спидометра нужно умножить скорость машины на 4.0. Так как выбранная машина едет со скоростью 40 юнитов(в игре по ровной трассе), а в handling.cfg указано 160.0 км( или миль), юниты должны быть умножены на 160 / 40 = 4. Следовательно, мы получим:

Код
03C0: 1@ = Actor $PLAYER_ACTOR car     
                    02E3: 2@ = car 1@ speed     
                    2@ *= 4.0


(Самая Тежёлая работа) Мы получили скорость машины. Нам осталось отобразить её на спидометре. Если так запустить скрипт, то стрелка будет в начале смотреть в низ, где никаких цифр не указано. Следовательно нам нужно сместить угол поворота стрелки на какой-то градус. Я вычислил, что для данного спидометра смещение должно быть на54.0 градуса:



Ну вот наш код:

Код
{$CLEO}
0000:     

thread 'SPEED'
if
Player.Defined($PLAYER_CHAR)
jf @SPEED_END

while true
        if
        Actor.Driving($PLAYER_ACTOR)
        then
        0390: load_txd_dictionary 'SPEED'
        038F: load_texture "CIRCLE" as 1     
        038F: load_texture "STRELK" as 2       
            while Actor.Driving($PLAYER_ACTOR)
                    03F0: enable_text_draw 1     
                    03E3: set_texture_to_be_drawn_antialiased 1     
                    038D: draw_texture 1 position 540.0 280.0 size 128.0 128.0 RGBA 255 255 255 200     
                    03E3: set_texture_to_be_drawn_antialiased 1     
                    03C0: 1@ = Actor $PLAYER_ACTOR car     
                    02E3: 2@ = car 1@ speed     
                    2@ *= 4.0 // Переводим скорость с юнитов в километры
                    2@ += 54.0 // Поворачиваем текстуру стрелки на 54 градуса                  
                    074B: draw_texture 2 position 540.0 280.0 scale 128.0 128.0 angle 2@ color_RGBA 255 255 255 128     
            wait 0
            end               
        0391: release_txd_dictionary      
        end
wait 0
end

:SPEED_END
wait 0
0A93: end_custom_thread


Оее, теперь всё готова, можно отдыхать.

Вот результат


Думаю помог.

SPEED:
http://rghost.ru/47537049

Если что то не правильно, пишите исправлю.
Прикрепления: 5873545.png (35.0 Kb) · 5530078.png (254.0 Kb)


Приму в дар аккаунты на Samp-Rp 3+
Собейт в разработке.

СКАЙП ZLO.AC взломан не ведитесь на кидалово.


Сообщение отредактировал Sedance - Суббота, 20.07.2013, 00:45
Toplivo Дата: Суббота, 20.07.2013, 00:26 | Сообщение # 2
Советник
Сообщений: 728
Статус: Offline
Код
Cheat.Driving($PLAYER_CHEAT)

Cheat.Driving? $PLAYER_CHEAT? :O Первый раз такое вижу



Дурак дает,умный берет.


Сообщение отредактировал egor7878 - Суббота, 20.07.2013, 00:26
Sedance Дата: Суббота, 20.07.2013, 00:30 | Сообщение # 3
Боец
Сообщений: 69
Статус: Offline
egor7878, Там помойму Actor.Driving($PLAYER_ACTOR) Точно не помню.

Приму в дар аккаунты на Samp-Rp 3+
Собейт в разработке.

СКАЙП ZLO.AC взломан не ведитесь на кидалово.


Сообщение отредактировал Sedance - Суббота, 20.07.2013, 00:31
Toplivo Дата: Суббота, 20.07.2013, 00:32 | Сообщение # 4
Советник
Сообщений: 728
Статус: Offline
Цитата (Sedance)
Там помойму Actor.Driving($PLAYER_ACTOR) Точно не помню.

Ага.Исправь в уроке. Держи +



Дурак дает,умный берет.
Nikkei001 Дата: Среда, 21.05.2014, 17:38 | Сообщение # 5
Новичок
Сообщений: 12
Статус: Offline
Файл speed txd удален. Я не знаю где его взять(
RAKSHA1337 Дата: Среда, 21.05.2014, 18:30 | Сообщение # 6
Советник
Сообщений: 784
Статус: Offline
Где-то это я уже видел

В казино рандом. Но рандом в программах - это генератор псевдослучайных чисел, который написан ручками человека. А значит есть формула! Есть алгоритм! Есть тактика!
Кто не согласен - ставьте минус, после того как докажете обратное. https://habrahabr.ru/post/196442/
Sano Дата: Суббота, 24.05.2014, 23:18 | Сообщение # 7
Любитель
Сообщений: 48
Статус: Offline
Цитата RAKSHA1337 ()
Где-то это я уже видел

Присвоил за свою чужую тему


/*============RAMPAGE=============*/
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума