000171. Контроль за перемещениями мыши
Контроль за перемещениями мыши|Всем доброго дня! На связи SanKing и это мой второй урок скриптинга. На этот раз мы с вами рассмотрим опкод, возвращающий силу движения мыши и всё, что с этим опкодом можно сделать.|SanKing|SanKing||||Собственно, сам опкод:
1
0A4A: store_joystick_X_offset_to [email protected] Y_offset_to [email protected]
Copied!
Здесь: [email protected] - смещение по оси X, то есть влево-вправо. [email protected] - смещение по оси Y, то есть вперёд-назад.
Перейдём к наглядному примеру. Я написал мини-игру с использованием опкода 0A4A, смысл которой заключается в том, что нужно очень быстро дёргать мышкой вверх-вниз. Давайте разберём код скрипта!
1
{$CLEO}
2
0000:
3
4
while true
5
if
6
Key.Pressed(90) //Z
7
then
8
$POLOSA = 40 // задаём начальное значение статус-текста
9
04F7: status_text $POLOSA type 1 line 1 GXT 'DUMMY' // создаём статус-текст
10
11
while true // бесконечный цикл
12
0A4A: store_joystick_X_offset_to [email protected] Y_offset_to [email protected] // получаем смещение мыши
13
if or // проверяем, как сильно двинулась мышь вперёд или назад
14
[email protected] > 1050000000
15
-1050000000 > [email protected]
16
then // если достаточно сильно, то полоса увеличивается на десять единиц
17
$POLOSA += 10
18
end
19
$POLOSA -= 5 // но сразу же уменьшается на пять, так что за одну итерацию полоска может увеличиться только на 10-5=5 единиц
20
if // если полоска достигла нуля
21
1 > $POLOSA
22
then // тогда флаг принимает значение 1 (провал) и осуществляется выход из цикла
24
break
25
end
26
if // а если же она заполнилась полностью
27
$POLOSA > 99
28
then // то флаг становится равным 2, то есть успех, и игра выходит из цикла
30
break
31
end
32
wait 250
33
end
34
35
0151: remove_status_text $POLOSA // убираем статус-текст
36
if // если задание провалено
38
then
39
00BA: show_text_styled GXT "M_FAIL" time 2500 style 1 // показываем текст "Миссия провалена"
40
wait 2500
41
end
42
if // если же выполнено
44
then
45
0394: play_music 2 // играет музыка завершения миссии
46
wait 2500
47
end
48
end
49
wait 0
50
end
Copied!
Отмечу несколько моментов. При проверке значения переменной [email protected] можно использовать и другие числа. Например: 1000000000 (миллиард). Удивительно, но это число считается минимальным сдвигом мыши в GTA SA! Если вставить в код его, то выиграть не составит никакого труда. 1100000000 - с этим значением игра станет ОЧЕНЬ сложной, я лично не мог пройти ни разу. В своём примере я использовал среднее значение ( 1050000000 ). Так играть тоже сложно, но пройти вполне реально.
Также нужно запомнить, что хэндл статус-текста может быть только глобальной переменной.
Осталось навести косметические правки, а именно добавить больше текста и анимацию. Зелёным отмечены новые строки:
1
{$CLEO}
2
0000:
3
054C: use_GXT_table 'SMOKE1'
4
Animation.Load("BOMBER")
5
6
while true
7
if
8
Key.Pressed(90) //Z
9
then
10
$POLOSA = 40
11
04F7: status_text $POLOSA type 1 line 1 GXT 'DUMMY'
12
0605: actor $PLAYER_ACTOR perform_animation "BOM_PLANT_LOOP" IFP "BOMBER" framedelta 4.0 loop 1 lockX 0 lockY 0 lockF 0 time -1
13
14
while true
15
0A4A: store_joystick_X_offset_to [email protected] Y_offset_to [email protected]
16
if or
17
[email protected] > 1050000000
18
-1050000000 > [email protected]
19
then
20
$POLOSA += 10
21
end
22
$POLOSA -= 5
23
if
24
1 > $POLOSA
25
then
27
break
28
end
29
if
30
$POLOSA > 99
31
then
33
break
34
end
35
wait 250
36
end
37
38
0151: remove_status_text $POLOSA
39
0605: actor $PLAYER_ACTOR perform_animation "BOM_PLANT_CROUCH_OUT" IFP "BOMBER" framedelta 4.0 loop 0 lockX 0 lockY 0 lockF 0 time -1
40
if
42
then
43
00BA: show_text_styled GXT "M_FAIL" time 2500 style 1
44
00BC: show_text_highpriority GXT 'SMO1_FC' time 2500 flag 1 // реплика Фредди из миссии OG Loc
45
wait 2500
46
end
47
if
49
then
50
00BC: show_text_highpriority GXT 'DNC_020' time 2500 flag 1 // похвала в танцах
51
0394: play_music 2
52
wait 2500
53
end
54
end
55
wait 0
56
end
Copied!
На этом всё, желаю удачи в скриптинге, цените GTA San Andreas!|1329|48|0||kontrol_za_peremeshhenijami_myshi|1504602503
Copy link
Edit on GitHub