.::Разные трюки в скриптах::.
|
|
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
| Покажи ещё какие нибудь трюки в скриптинге
|
|
| |