.
Главная | Регистрация | Вход Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум » Скриптинг » Скриптинг в играх серии GTA » .::Разные трюки в скриптах::. (Поддержите тему, напишите ваши хитрости...)
.::Разные трюки в скриптах::.
444andrei444Дата: Пятница, 16.09.2011, 18:22 | Сообщение # 1

Майор
Сообщений: 84
[ 2 ]
Offline
Ну пожалуй начну. итак управление мышью. однажды мне в голову пришла идея сделать управление как в стратегиях с помощью курсора. Отдельное спасибо Voron295. он мне подсказал покод которому я раньше не придавал значения
Code
0A4A: store_joystick_X_offset_to 1@ Y_offset_to 2@
он записывает в переменную перемещение мышки. это не координаты экрана а перемещение по осям за считанные милисекунды.
Ну что ж посмотрим как вывести курсор
Code
{$CLEO}
0000:
3@ = 320.0
4@ = 390.0
wait 5000
0390: load_txd_dictionary 'newlife1' //âìåñòî NAME ïîäñòàâüòå èìÿ âàøåãî txd àðõèâà
038F: load_texture "mouse" as 2  // Load dictionary with 0390 first
wait 100
:00
wait 0
if
0AB0:  key_pressed 0x75
jf @00
0A92: create_custom_thread "megamenu.3d"
wait 500
:0
wait 0   
0A4A: store_joystick_X_offset_to 1@ Y_offset_to 2@  
005B: 3@ += 1@ // (float)  
005B: 4@ += 2@ // (float)   
if
3@ > 0.0
jf @1
if
4@ > 0.0
jf @2
if
not 3@ > 640.0
jf @3
if
not 4@ > 480.0
jf @4
0088: $SPECIAL_AXIS_X = 3@ // (float)  
0088: $SPECIAL_AXIS_Y = 4@ // (float)  
03F0: enable_text_draw 1
038D: draw_texture 2 position $SPECIAL_AXIS_X $SPECIAL_AXIS_Y size 16.00 16.13 RGBA 255 255 255 255// images.bmp
if
0AB0:  key_pressed 0x75
jf @0
wait 500
jump @00

:1
3@ = 0.0
jump @0
:2
4@ = 0.0
jump @0
:3
3@ = 640.0
jump @0
:4
4@ = 480.0
jump @0
             

обьясняю: загружаем архив с курсором. теперь записываем в переменные координаты перемещения мышки и складываем к предыдущим значениям. Обратите внимание я использовал глобальные переменные, которые не рекомендуется использовать в скриптах. Метки :1 :2 :3 :4 не требуют обьяснения, они не дают курсору вылазить за пределы экрана. Ниже напишу как использовать его в своих менюшках


gtaempire.3dn.ru фото о GTA 5
444andrei444Дата: Пятница, 16.09.2011, 18:34 | Сообщение # 2

Майор
Сообщений: 84
[ 2 ]
Offline
теперь напишу как использовать это в своих менюшках. высчитываем левый верхний угол и правый нижний. все что между устраивыет условие. Вот пример щелкая на деньги рядом создается пикап с деньгами
Code


{$CLEO}
wait 5000
5@ = 0
:0
wait 0
if and
010A:   player $PLAYER_CHAR money > 10
$SPECIAL_AXIS_X > 510.0
not $SPECIAL_AXIS_X  > 620.0
$SPECIAL_AXIS_Y > 90.0
not $SPECIAL_AXIS_Y  > 100.0
jf @0
IF  or
0AB0:  key_pressed 0x01
00E1: key_pressed 0 17
JF @0
04C4: store_coords_to 1@ 2@ 3@ from_actor $PLAYER_ACTOR with_offset 2.0 2.0 1.0  
02E1: 0@ = create_cash_pickup 10 at 1@ 2@ 3@ permanence_flag 1  
0109: player $PLAYER_CHAR money += -10
wait 1000
jump @0  


ниже напишу как использовать курсор в 3d пространстве игры


gtaempire.3dn.ru фото о GTA 5
444andrei444Дата: Пятница, 16.09.2011, 18:40 | Сообщение # 3

Майор
Сообщений: 84
[ 2 ]
Offline
так пришло время описать как это использовать в 3д пространстве. Будем юзать код wesser а
я не буду обьяснять что выполняет каждая процедура.
Code


итак это внешний скрипт чтобы он работал с начала игры уберите .s в начале скрипта. Теперь можно спаунить машины где угодно на крышах домов и просто в небе. А хотите строительство обьектов сделайте.
ну как?[code]
{$CLEO .s}
wait 1000

const
WIDTH = 640.0
HEIGHT = 448.0
HALF_WIDTH = 320.0
HALF_HEIGHT = 224.0
end
:0
wait 0
if
0AB0: key_pressed 13
jf @1
0A93: end_custom_thread
:1
IF
00E1: key_pressed 0 17
JF @0
0089: 4@ = $SPECIAL_AXIS_X // (float)
0089: 5@ = $SPECIAL_AXIS_Y // (float)
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 @getScreenXYFrom3DCoords 3 coords_XYZ 1@ 2@ 3@ store_to 4@ 5@
0AB1: call_scm_func @get3DCoordsFromScreenXY 3 coords_XY 4@ 5@ distance 30.0 store_to 1@ 2@ 3@
03C5: create_random_car_for_carpark 1@ 2@ 3@ z_angle 89.6383
wait 1000
jump @0
:getScreenXYFrom3DCoords
{
Parameters:
Passed:
0@ - position X
1@ - position Y
2@ - position Z
Result:
3@ - screen X
4@ - screen Y

Example:
0AB1: call_scm_func @getScreenXYFrom3DCoords 3 coords_XYZ 2488.562 -1666.865 12.8757 store_to 1@ 2@
}
0AB1: call_scm_func @getLocalVarOffset 1 var 0 store_to 12@
0AB1: call_scm_func @getLocalVarOffset 1 var 3 store_to 13@
0AB1: call_scm_func @getLocalVarOffset 1 var 6 store_to 14@
0AB1: call_scm_func @getLocalVarOffset 1 var 9 store_to 15@
0AA5: call 0x70CE30 num_params 6 pop 6 bNearClip 0 bFarClip 0 pMultY 15@ pMultX 14@ pScreen 13@ pCoords 12@
0AB1: call_scm_func @getFullScreenXY 2 coords_XY 3@ 4@ store_to 3@ 4@
0AB2: ret 2 3@ 4@

:get3DCoordsFromScreenXY
{
Parameters:
Passed:
0@ - screen X
1@ - screen Y
2@ - distance
Result:
14@ - position X
15@ - position Y
16@ - position Z

Example:
0AB1: call_scm_func @get3DCoordsFromScreenXY 3 coords_XY 320.0 224.0 distance 1.0 store_to 1@ 2@ 3@
}
0A8D: 3@ = read_memory 0x8D5038 size 4 virtual_protect 0 // field of view
3@ *= 0.5
02F6: 4@ = sine 3@
02F7: 5@ = cosine 3@
0073: 4@ /= 5@
6@ = 1.0
0@ /= HALF_WIDTH // half screen X
0063: 6@ -= 0@
006B: 6@ *= 4@
7@ = 1.0
1@ /= HALF_HEIGHT // half screen Y
0063: 7@ -= 1@
006B: 7@ *= 4@
0A8D: 8@ = read_memory 0xC3EFA4 size 4 virtual_protect 0 // screen aspect ratio
0073: 7@ /= 8@
006B: 6@ *= 2@
006B: 7@ *= 2@
0087: 9@ = 6@
0087: 10@ = 2@
0087: 11@ = 7@
0A8D: 12@ = read_memory 0xB6F03C size 4 virtual_protect 0 // camera matrix
0AB1: call_scm_func @getLocalVarOffset 1 var 9 store_to 13@
0AA5: call 0x59C790 num_params 3 pop 3 pOffsets 13@ pMatrix 12@ pResult 13@ // CPlaceable__getMatrixAbsOffsets
12@ += 0x30
0A8D: 14@ = read_memory 12@ size 4 virtual_protect 0 // camera X position
12@ += 0x4
0A8D: 15@ = read_memory 12@ size 4 virtual_protect 0 // camera Y position
12@ += 0x4
0A8D: 16@ = read_memory 12@ size 4 virtual_protect 0 // camera Z position
005B: 14@ += 9@
005B: 15@ += 10@
005B: 16@ += 11@
0AB2: ret 3 14@ 15@ 16@

:getFullScreenXY
{
Parameters:
Passed:
0@ - full screen X
1@ - full screen Y
Result:
0@ - screen X
1@ - screen Y

Example:
0AB1: call_scm_func @getFullScreenXY 2 coords_XY 320.0 224.0 store_to 1@ 2@
}
2@ = WIDTH // screen X
0A8D: 4@ = read_memory 0xC17044 size 4 virtual_protect 0 // full screen X
0093: 4@ = integer 4@ to_float
0073: 2@ /= 4@
006B: 0@ *= 2@
3@ = HEIGHT // screen Y
0A8D: 5@ = read_memory 0xC17048 size 4 virtual_protect 0 // full screen Y
0093: 5@ = integer 5@ to_float
0073: 3@ /= 5@
006B: 1@ *= 3@
0AB2: ret 2 0@ 1@


gtaempire.3dn.ru фото о GTA 5

Сообщение отредактировал 444andrei444 - Пятница, 16.09.2011, 18:42
444andrei444Дата: Пятница, 16.09.2011, 18:40 | Сообщение # 4

Майор
Сообщений: 84
[ 2 ]
Offline
продолжение кода
Code
:getLocalVarOffset
{
Parameters:
Passed:
0@ - thread pointer (offset)
Result:
0@ - var pointer (offset)

Example:
0AB1: call_scm_func @getLocalVarOffset 1 var 0 store_to 1@
}
0A9F: 1@ = current_thread_pointer
0@ *= 0x4
0A8E: 2@ = 1@ + 0xDC // mission flag
if
2@ == 1
then
0@ += 0xA48960
else
005A: 0@ += 1@
0@ += 0x3C
end
0AB2: ret 1 0@


gtaempire.3dn.ru фото о GTA 5

Сообщение отредактировал 444andrei444 - Пятница, 16.09.2011, 18:41
444andrei444Дата: Пятница, 16.09.2011, 18:55 | Сообщение # 5

Майор
Сообщений: 84
[ 2 ]
Offline
если плохо написал так и скажите. Ну в смысле непонятно

gtaempire.3dn.ru фото о GTA 5
GTAshnikДата: Пятница, 16.09.2011, 20:17 | Сообщение # 6

Генералиссимус
Сообщений: 75
[ 10 ]
Offline
444andrei444, надо опробовать...мне лично всё понятно. А классно придумал кстати...

444andrei444Дата: Воскресенье, 18.09.2011, 14:03 | Сообщение # 7

Майор
Сообщений: 84
[ 2 ]
Offline
Ну напишу еще про текстуры немного. А конкретно вот что
Code
038F  load_texture "DOWN", как 1 / / Загружаем словарь с 0390 первый

параметр 1 указывает на номер текстуры для последующего использования в цикле. Так вот загрузя текстуру в n слот ее можно использовать в любом скрипте и тогда уже не нужна загрузка. То есть в каждом скрипте должен быть отдельный слот под текстуры.


gtaempire.3dn.ru фото о GTA 5

Сообщение отредактировал 444andrei444 - Воскресенье, 18.09.2011, 14:04
OptimusДата: Воскресенье, 18.09.2011, 14:31 | Сообщение # 8

Лейтенант
Сообщений: 108
[ 0 ]
Offline
444andrei444, о напиши о текстурах,я замучался пробовать их выводить
приведи пример как вывести в середину экрана текстуру и побольше что бы в неё могла поместиться карта штата сан-андреаса
и напиши какого размера должны быть текстуры
444andrei444Дата: Воскресенье, 18.09.2011, 14:44 | Сообщение # 9

Майор
Сообщений: 84
[ 2 ]
Offline
хорощо
// Загружаем текстуры
0390: load_txd_dictionary 'NAME' //вместо NAME подставьте имя вашего txd архива
038F: load_texture "8" as 1 // здесь пишем название текстуры из txd архива
03F0: enable_text_draw 1 этой командой мы обьявляем вывод текстур, если не ставить то текстуры не будут стираться и игра вылетит
// следующую команду надо употреблять в цикле. Например так
33@ = 0
:1
wait 0
if
not 33@ 3000
jf @2
038D: draw_texture 1 position 327.00 264.13 size 600.00 560.00 RGBA 255 255 255 255
jump @1
в данном случае текстура будет выводится 3 секунды
// Поставьте это после вашего цикла
03F0: enable_text_draw 0
0391: release_txd_dictionary
разберем параметры опкода вывода текстур
038D: draw_texture 1 position 327.00 264.13 size 600.00 560.00 RGBA 255 255 255 255
1 номер текстуры
2 позиция по оси x
3 позиция по оси у
4 размер текстуры в горизонтальном положении
5 в вертикальном
6,7,8 цвет текстуры в rgb значения можно найти в фотошопе
9 прозрачность
// вывод карты реализован в моем мультимоде


gtaempire.3dn.ru фото о GTA 5

Сообщение отредактировал 444andrei444 - Воскресенье, 18.09.2011, 14:45
OptimusДата: Воскресенье, 18.09.2011, 14:49 | Сообщение # 10

Лейтенант
Сообщений: 108
[ 0 ]
Offline
444andrei444, а теперь в полном порядке без комментариев напиши,а то я ни фига не понял
444andrei444Дата: Воскресенье, 18.09.2011, 14:54 | Сообщение # 11

Майор
Сообщений: 84
[ 2 ]
Offline
Code
{$cleo}
0390: load_txd_dictionary 'NAME'
038F: load_texture "1" as 1   
wait 3000
33@ = 0
03F0: enable_text_draw 1

:3
wait 0
if   
not 33@ == 3000
jf @4
038D: draw_texture 1 position 327.00 264.13 size 600.00 560.00 RGBA 255 255 255 255
jump @3
:4
03F0: enable_text_draw 0
0391: release_txd_dictionary
0a93:


gtaempire.3dn.ru фото о GTA 5

Сообщение отредактировал 444andrei444 - Воскресенье, 18.09.2011, 14:54
OptimusДата: Воскресенье, 18.09.2011, 14:56 | Сообщение # 12

Лейтенант
Сообщений: 108
[ 0 ]
Offline
444andrei444, а какого размера должна быть текстура например 500х500
или как я понял size 600.00 560.00
отвечает за размер значит текстура должна быть 600х560?
444andrei444Дата: Воскресенье, 18.09.2011, 20:34 | Сообщение # 13

Майор
Сообщений: 84
[ 2 ]
Offline
size это масштаб текстуры. размер может отличатся от масштаба

gtaempire.3dn.ru фото о GTA 5
444andrei444Дата: Среда, 21.09.2011, 21:19 | Сообщение # 14

Майор
Сообщений: 84
[ 2 ]
Offline
писал скрипт мп3 шки с автосканированием треков, но он вылетает в магазинах одежды. Может пригодится кто использует очищенный мейн. Вылеты связаны с ошибками в опкоде поиска файла, но не в скрипте
Code
{$CLEO}
wait 1000
:start
wait 0
if
0AB0: key_pressed 122
jf @start
wait 30
:1
wait 0
0AE6: 0@ = find_first_file "files\*.mp3" get_filename_to 9@v //IF and SET
wait 100
0A99: chdir "files"
// Поставьте это после вашего цикла
0AAC: 3@ = load_audiostream 9@v //IF and SET
wait 50
0AAD: set_audiostream 3@ perform_action 1
0ACA: show_text_box 9@v
:2
0AB9: get_audiostream 3@ state_to 7@
wait 0
if or
7@ == -1
0AB0: key_pressed 121
jf @3
0AAD: set_audiostream 3@ perform_action 0
0AAE: release_audiostream 3@
0AE7: 9@v = find_next_file 0@ //IF and SET
0A99: chdir "files"
0AAC: 3@ = load_audiostream 9@v //IF and SET
wait 500
0ACA: show_text_box 9@v
0AAD: set_audiostream 3@ perform_action 1
jump @2
:3[code]


gtaempire.3dn.ru фото о GTA 5

Сообщение отредактировал 444andrei444 - Среда, 21.09.2011, 21:20
OptimusДата: Среда, 21.09.2011, 21:22 | Сообщение # 15

Лейтенант
Сообщений: 108
[ 0 ]
Offline
Покажи ещё какие нибудь трюки в скриптинге
Форум » Скриптинг » Скриптинг в играх серии GTA » .::Разные трюки в скриптах::. (Поддержите тему, напишите ваши хитрости...)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright MyCorp © 2024
Бесплатный хостинг uCoz