[CLEO] Создание 3D текста - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Alowir, Sanoxxx  
[CLEO] Создание 3D текста
Супер Дата: Четверг, 09.08.2012, 16:23 | Сообщение # 1
Admin
Сообщений: 663
Статус: Offline
{$CLEO .cs}

//-------------MAIN---------------
thread "3D TEXT"
03F0: enable_text_draw 1
gosub @POSIT1_1411 //прыжок на метку перезаписи GXT текста (GXT записи находятся в american.gxt > открывается через GXT editor)

:POSIT1_21
wait 0
if
Player.Defined(0)
jf @POSIT1_21
Model.Load(19308)
038B: load_requested_models
if
Model.Available(19308)
jf @POSIT1_21
actor.StorePos($PLAYER_ACTOR, 13@, 14@, 15@) //записываем место нахождение нашего актёра в переменные 13@,14@,15@
31@ = Object.Create(19308, 13@, 14@, 15@) //создаём объект на сохраненных позициях
0750: set_object 31@ visibility 0 //делаем объект невидимым

:POSIT1_255
wait 0
if
02CC: object 31@ bounding_sphere_visible //если объект находится в видимости экрана, и вы от позиции 13@ 14@ не дальше, чем на 30 метров, то текст выводится
jf @POSIT1_255
0AB1: call_scm_func @POSIT1_775 3 13@ 14@ 15@ 1@ 2@
if
00EC: actor $PLAYER_ACTOR 0 near_point 13@ 14@ radius 30.0 30.0 //условие для того, чтобы текст исчезал, если вы находитесь от текста на расстоянии больше 30.0
jf @POSIT1_255
if and
not 1@ > 640.0
not 2@ > 480.0
1@ >= 4.0
2@ >= 4.0
jf @POSIT1_255
0349: set_text_draw_font 3 //стиль текста, всего их 4, начинает от 0 до 3
0340: set_text_draw_RGBA 255 204 0 255//цвет текста
060D: draw_text_shadow 1 color_RGBA 0 0 0 255 //тени текста
033F: set_text_draw_letter_size 0.3 0.86 //размеры текста (ширина и высота)
0342: enable_text_draw_centered 1 //текст будет в центре
033E: set_draw_text_position 1@ 2@ GXT 'CRED122' // GXT запись, которая будет выведена на экран
jump @POSIT1_255
0000: NOP
03F0: enable_text_draw 1

:POSIT1_587
wait 0
04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 0.0 0.0 1.0
0AB1: call_scm_func @POSIT1_775 3 1@ 2@ 3@ 4@ 5@
0AB1: call_scm_func @POSIT1_896 3 4@ 5@ 1.0 1@ 2@ 3@
0AB1: call_scm_func @POSIT1_775 3 1@ 2@ 3@ 4@ 5@
054C: use_GXT_table 'SWEET6'
0341: unknown_text_draw_flag 0
0342: enable_text_draw_centered 1
0349: set_text_draw_font 2
0340: set_text_draw_RGBA 255 100 100 255
033E: set_draw_text_position 4@ 5@ GXT 'SWE6B34' // ~z~KapЎ ѓ›o¤co¤ - Cќ-ѓ›eћ.
0349: set_text_draw_font 2
0340: set_text_draw_RGBA 255 100 100 255
jump @POSIT1_587

:POSIT1_775
0AB1: call_scm_func @POSIT1_1330 1 0 12@
0AB1: call_scm_func @POSIT1_1330 1 3 13@
0AB1: call_scm_func @POSIT1_1330 1 6 14@
0AB1: call_scm_func @POSIT1_1330 1 9 15@
0AA5: call 7392816 6 pop 6 0 0 15@ 14@ 13@ 12@
0AB1: call_scm_func @POSIT1_1223 2 3@ 4@ 3@ 4@
0AB2: ret 2 3@ 4@

:POSIT1_896
0A8D: 3@ = read_memory 9261112 size 4 virtual_protect 0
3@ *= 0.5
02F6: 4@ = sine 3@ // (float)
02F7: 5@ = cosine 3@ // (float)
0073: 4@ /= 5@ // (float)
6@ = 1.0
0@ /= 320.0
0063: 6@ -= 0@ // (float)
006B: 6@ *= 4@ // (float)
7@ = 1.0
1@ /= 224.0
0063: 7@ -= 1@ // (float)
006B: 7@ *= 4@ // (float)
0A8D: 8@ = read_memory 12840868 size 4 virtual_protect 0
0073: 7@ /= 8@ // (float)
006B: 6@ *= 2@ // (float)
006B: 7@ *= 2@ // (float)
0087: 9@ = 6@ // (float)
0087: 10@ = 2@ // (float)
0087: 11@ = 7@ // (float)
0A8D: 12@ = read_memory 11989052 size 4 virtual_protect 0
0AB1: call_scm_func @POSIT1_1330 1 9 13@
0AA5: call 5883792 3 pop 3 13@ 12@ 13@
12@ += 48
0A8D: 14@ = read_memory 12@ size 4 virtual_protect 0
12@ += 4
0A8D: 15@ = read_memory 12@ size 4 virtual_protect 0
12@ += 4
0A8D: 16@ = read_memory 12@ size 4 virtual_protect 0
005B: 14@ += 9@ // (float)
005B: 15@ += 10@ // (float)
005B: 16@ += 11@ // (float)
0AB2: ret 3 14@ 15@ 16@

:POSIT1_1223
2@ = 640.0
0A8D: 4@ = read_memory 12677188 size 4 virtual_protect 0
0093: 4@ = integer 4@ to_float
0073: 2@ /= 4@ // (float)
006B: 0@ *= 2@ // (float)
3@ = 448.0
0A8D: 5@ = read_memory 12677192 size 4 virtual_protect 0
0093: 5@ = integer 5@ to_float
0073: 3@ /= 5@ // (float)
006B: 1@ *= 3@ // (float)
0AB2: ret 2 0@ 1@

:POSIT1_1330
0A9F: 1@ = current_thread_pointer
0@ *= 4
0A8E: 2@ = 1@ + 220 // int
if
2@ == 1
jf @POSIT1_1388
0@ += 10783072
jump @POSIT1_1403

:POSIT1_1388
005A: 0@ += 1@ // (int)
0@ += 60

:POSIT1_1403
0AB2: ret 1 0@

:POSIT1_1411
0A9F: 1@ = current_thread_pointer
1@ += 16
0A8D: 1@ = read_memory 1@ size 4 virtual_protect 0
1@ -= @1
1@ += 3
0AA8: call_function_method 6946896 12694336 num_params 1 pop 0 1@ 0@
1@ += 12
0AA5: call 7439872 2 pop 2 0@ 1@
return

:1
0900: unknown_set_object 'CRED122'//вводим название GXT записи
0900: unknown_set_object "TEST" //записываем текст который хотим видеть
0000: NOP
MelomanCool Дата: Вторник, 05.03.2013, 16:48 | Сообщение # 2
Советник
Сообщений: 757
Статус: Offline
Я, конечно, археолог, но мне интересно, кто писал код, ибо метки POSIT1_587 и POSIT1_896 можно смело выкинуть вместе с содержимым - они вообще не используются.

Добавлено (05.03.2013, 16:48)
---------------------------------------------
Нашел исходник функции для получения координат:
Этот код очень длинный, да и непонятный, однако я совершенно случайно недавно наткнулся на более короткий и простой вариант, который я немного изменил и превратил в функцию:
Ну, и чтобы вы не расслаблялись, вот вам пример использования - 3D-кубик из чисел, который прикрепляется к актеру

Прикрепления: 5624881.png (524.7 Kb)


Ушел

Сообщение отредактировал MelomanCool - Вторник, 05.03.2013, 18:07
mgmoldova Дата: Вторник, 05.03.2013, 18:22 | Сообщение # 3
Боец
Сообщений: 95
Статус: Offline
Вот так будет еще красивее. Добавил рандомные цифры, рандомного цвета.
Код
{$CLEO}  
0000:  
while true  
       wait 0  
       04C4: store_coords_to 0@ 1@ 2@ from_actor $PLAYER_ACTOR with_offset 0 1.0 0  
       03F0: enable_text_draw 1  
       for 9@ = 0 to 3  
           for 8@ = 0 to 3  
               for 7@ = 0 to 3  
                   0209: 17@ = random_int_in_ranges 0 255  
                   0209: 18@ = random_int_in_ranges 0 255  
                   0209: 19@ = random_int_in_ranges 0 255  
                   0209: 20@ = random_int_in_ranges 0 9  
                   0AB1: call_scm_func @getScreenXYFrom3DCoords 3 3D_coords_X 0@ Y 1@ Z 2@ store_screen_X_to 3@ Y_to 4@  
                   0342: set_text_draw_centered 1  
                   081C: draw_text_outline 1 RGBA 0 17@ 18@ 19@  
                   033F: set_text_draw_letter_size 0.3 1.1  
                   045A: draw_text_1number 3@ 4@ GXT 'NUMBER' number 20@  
                   0@ += 0.1  
               end  
               0@ -= 0.4  
               1@ += 0.1  
           end  
           1@ -= 0.4  
           2@ += 0.1  
       end  
end  

:getScreenXYFrom3DCoords  
0AA7: call_function 0x70CE30 num_params 6 pop 6 clipNear 1 clipFar 1 yMult 7@s xMult 6@s outVector 2@s inVector 0@s result 29@  
0073: 2@ /= 6@  
0073: 2@ /= 4@  
0073: 3@ /= 7@  
0073: 3@ /= 4@  
2@ *= 640.0  
3@ *= 448.0  
0AB2: ret 2 2@ 3@




Мой скайп взломан
_Rock_ Дата: Вторник, 05.03.2013, 19:08 | Сообщение # 4
Советник
Сообщений: 606
Статус: Offline
MelomanCool, с меня + biggrin
Lichinka Дата: Воскресенье, 24.03.2013, 18:03 | Сообщение # 5
Новичок
Сообщений: 27
Статус: Offline
mgmoldova, Прикольно получается, спасибки.
AlexRAzor Дата: Среда, 04.12.2013, 13:45 | Сообщение # 6
Боец
Сообщений: 89
Статус: Offline
Вы меня простите,но я еще только учусь.И мне не сильно это понятно.Как поставить 3д текст например у мерии с надписью мэрия.Плюсика не пожелею.Зачем мне это нужно?У меня есть одна хорошая идея.(Зарание извеняюсь за граматику писал с планшета)
darkes Дата: Среда, 04.12.2013, 22:38 | Сообщение # 7
Боец
Сообщений: 188
Статус: Offline
Цитата AlexRAzor ()
Вы меня простите,но я еще только учусь.И мне не сильно это понятно.Как поставить 3д текст например у мерии с надписью мэрия.Плюсика не пожелею.Зачем мне это нужно?У меня есть одна хорошая идея.(Зарание извеняюсь за граматику писал с планшета)

В СФ 2.6 есть специальный опкод. Не поднимай темы, которым практически год.
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума