Заработай на своем сайте Купите рекламу от 5 центов за клиента!
GTA Скриптинг
Приветствую Вас Гость | RSS
Главная | Каталог статей | Регистрация | Вход
Меню сайта

Научись скриптить

Реклама

Главная » Статьи » Учения скриптингу » Уроки

КЛАВИШИ

либо действие. Клавиши делятся на 2 типа : стандартные (к примеру в GTA нет такой клавиши,как "Shift",а есть клавиша "Спринт",короче от настроек самой игры зависит то,на какую вам кнопку на клавиатуре прийдётся нажимать) и не стандартные (нажатие любой кнопки) .

Когда игрок едет в к-л транспортном средстве,то стандартные клавиши означают одно,но когда игрок вне транспортного средства,то эти же самые клавиши означают совсем другое,заметьте,что где-бы не находился игрок каждая клавишя постоянно сохраняет свой номер.

Стандартные клавиши :

Вот номера стандартных клавиш в игре,они разделены на "пешком" и "в транспортном средстве":

Номер Пешком В транспортном средстве

------------------------------------------------------------------------------------------------------------------------------------

0 | влево/вправо влево/вправо

1 | вперёд/назад наклон вертолёта(самолёта) вверх/вниз

2 | особый CTRL влево/вправо особый CTRL влево/вправо

3 | особый CTRL вперёд/назад особый CTRL вперёд/назад

4 | действие вторичная атака

5 | предыдущее оружее/цель смотреть влево

6 | прицел ручной тормоз

7 | следущее оружее/цель смотреть вправо

8 | группа вперёд следующая радио станйия

9 | группа назад предыдущая радио станйия

10 | ответ-нет ответ-нет

11 | ответ-да пропустить слежку

12 | не существует не существует

13 | изменить камеру изменить камеру

14 | прыжок тормоз/задний ход

15 | войти в машину выход из машины

16 | быстрый бег газ

17 | огонь огонь

18 | присесть гудок

19 | смотреть назад подмиссия

------------------------------------------------------------------------------------------------------------------------------------

Проверка на нажатость клавиши выглядит вот так:

00E1: key_pressed 0 19 , параметр 0,всегда должен равнятся 0,а вот 19 - номер клавиши.

Проверка на не нажатость клавиши выглядит вот так:

80E1: not key_pressed 0 19 , параметр 0,всегда должен равнятся 0,а вот 19 - номер клавиши.

Если надо сделать проверку для одной клавиши,то вот так:

if

00E1: key_pressed 0 19

jf @XXX

А если надо сделать проверку на нажатость сразу нескольких клавиш,то:

if and // условие с выполнением всех подусловий.

00E1: key_pressed 0 19

00E1: key_pressed 0 16

00E1: key_pressed 0 17

00E1: key_pressed 0 N

jf @XXX

Бывает,что надо сделать проверку на нажатость одной из нескольких клавиш,она выглядит так:

if or // условие с выполнением хотя бы одного подусловия.

00E1: key_pressed 0 19

00E1: key_pressed 0 16

00E1: key_pressed 0 17

00E1: key_pressed 0 N

jf @XXX

 

Нестандартные клавиши :

Вы можете проверять в скриптах нажатие абсолютно любой кнопки на клавиатуре (за исключением ESC и PrintScreen ).

Для проверки нажатия нужно прочитать область памяти по указанному в таблице индексу.

(Смотрите примеры !!!)

Таблица клавиш :

________________________

Index | KeyLo | KeyHi

________________________

304474 Insert

304475 Delete Home

304476 End PageUp

304477 PageDown ArrowUp

304478 ArrowDown Arrow Left

304479 ArrowRight Scroll Lock

304480 Pause Numlock

304481 Num / Num *

304482 Num - Num +

304483 NumEnter NumDel

304484 Num 1 Num 2

304485 Num 3 Num 4

304486 Num 5 Num 6

304487 Num 7 Num 8

304488 Num 9 Num 0

304489 Backspace Tab

304490 CapsLock Enter

304491 LeftShift Right Shift

304492 Left Ctrl

304493 Right Ctrl Left Alt

304494 Right Alt Left Windows

304495 Right Menu

304496 F1 F2

304497 F3 F4

304498 F5 F6

304499 F7 F8

304500 F9 F10

304501 F11 F12

304518 Space

304521 '

304524 , -

304525 . /

304526 0 1

304527 2 3

304528 4 5

304529 6 7

304530 8 9

304531 ;

304532 =

304534 A

304535 B C

304536 D E

304537 F G

304538 H I

304539 J K

304540 L M

304541 N O

304542 P Q

304543 R S

304544 T U

304545 V W

304546 X Y

304547 Z [

304548 \ ]

304550 `

©2007 by Seemann

http://sannybuilder.com/dev/keycodes.htm

 

Примеры :

Стандартные клавиши :

1) Давайте напишем скрипт,в котором по нажатию "прицел" и "спринт",когда игрок не в машине,

перед вами появляется Монстр,большой такой джип,если кто не знает.

create_thread @Monster // создаём поток с именем Monster

:Monster // начинаем поток

wait 0 // ждём 0 мс,не напищем-вылетит

model.load(#MONSTER) // объявляем нужную для загрузки модель #MONSTER

038B: load_requested_models // загружаем ранее объявленые модели

:Monster_2 // создаём второй label

wait 0 // ждём 0 мс,не напищем-вылетит

if and // условие с выполнением всех подусловий

player.Defined($PLAYER_CHAR) // подусловие(игрок уже создался и существует)

model.Available(#MONSTER) // подусловие(модель #MONSTER уже загружена в память)

not actor.Driving($PLAYER_ACTOR) // подусловие(если игрок не в машине)

00E1: key_pressed 0 6 // подусловие(если нажата клавиша "прицел")

00E1: key_pressed 0 16 // подусловие(если нажата клавиша "спринт")

jf @Monster_2 // если хотя бы одно из подусловий не выполнилось,то идём к началу label'a

04C4: create_coordinate $X_1 $Y_1 $Z_1 from_actor $PLAYER_ACTOR offset 0.0 10.0 3.0

// создаём координаты напротив игрока

car.create($Car,#MONSTER,$X_1,$Y_1,$Z_1) // создаём машину по этим координатам

car.removereferences($Car) // удаляем все сведения о машине

wait 5000 // ждём 5 секунд,если бы мы не ждали,то на месте машины появилась бы другая,но

// первая всё равно осталась бы и они застряли бы

jump @Monster_2 // прыгаем в начало label'a.

2) Вот ещё простенький,но полензный скрипт с использованием клавиш :

По нажатию "Спринт" + "Сесть в машину" к игровому времени прибавляется один час:

create_thread @TimeM // создаём поток с именем TimeM

:TimeM // Начинаем наш поток

wait 0 // ждём 0 мс,если не напишем,то игра вылетит

if and // условие с выполнением всех проверок(подусловий)

00E1: key_pressed 0 15 // проверка (если нажата клавиша "СЕСТЬ В МАШИНУ")

00E1: key_pressed 0 16 // проверка (если нажата клавиша "СПРИНТ")

jf @TimeM // если все проверки не выполнились,то переходим на начало

wait 100 // ждём 100 мс,если не напишем небольшую задержку,то игровое время

// будет изменятся с бешеной скоростью(из-за скорости процессора вашего компа)

$time += 1 // тут к переменной $time прибавляем 1,если устанавливается значение боль-

//ше,чем 23,то оно автоматически переводится на 0

00C0: set_current_time $time 0 // и устанавливаем игровое время на $time

jump @TimeM // и прыгаем в начало

 

3) Давйте напишем скрипт,с помощью которого можно будет изменять скорость игры :

При нажатии "Прыжок" + "Атака" скорость постепенно уменьшается , при нажатии

"Прыжок" +"Прицел/Вторичная атака" скорость будет увеличиваться,при нажатии

"Прыжок" + "Действие" , скорость будет становится нормальной :

create_thread @TimeSpeed // создаём поток с именем TimeSpeed

:TimeSpeed // начинаем поток

wait 0 // ждём 0 мс

$Var = 1.0 // берём переменную $Var и присваиваем ей значение 1.0 - скорость игры

:TimeSpeed_2 // создаём второй label потока

wait 100 // ждём 100 мс для того,чтобы скорость не сильно быстро менялась

if and // условие с выполнением всех подусловий(проверок)

00E1: key_pressed 0 6 // проверка(если нажата клавиша "Прицел")

00E1: key_pressed 0 14 // проверка(если нажата клавиша "Прыжок")

jf @TimeSpeed_3 // Если хоть одно из подусловий не выполнилось,то переходим к другой

$Var += 0.1 // проверке,если же выполнилось,то к нашей переменной прибавляем 0.1

015D: set_gamespeed $Var // и устанавливаем скорость,равной нашей переменной $Var

:TimeSpeed_3 // создаём третий label

wait 100 // ждём 100 мс для того,чтобы скорость не сильно быстро менялась

if and // условие с выполнением всех подусловий(проверок)

00E1: key_pressed 0 17 // проверка(если нажата клавиша "Атака")

00E1: key_pressed 0 14 // проверка(если нажата клавиша "Прыжок")

jf @TimeSpeed_4 // Если хоть одно из подусловий не выполнилось,то переходим к другой

$Var -= 0.1 // проверке,если же выполнилось,то от нашей переменной отнимаем 0.1

015D: set_gamespeed $Var // и устанавливаем скорость,равной нашей переменной $Var

:TimeSpeed_4 // создаём четвёртый label

wait 100 // ждём 100 мс для того,чтобы игра не вылетила

if and // условие с выполнением всех подусловий(проверок)

00E1: key_pressed 0 4 // проверка(если нажата клавиша "Действие")

00E1: key_pressed 0 14 // проверка(если нажата клавиша "Прыжок")

jf @TimeSpeed_2 // если все подусловия выполнились,то делаем скорость нормальной,а

015D: set_gamespeed 1.0 // если нет,то скорость остаётся прежней и выполнение скрипта

jump @Prosto_2 // переходит к первой проверке

Может на игроке и не очень видно ускорение,но вот на проезжающих машинах - это реактивно.

 

4) Очень часто просят привести пример замедления времени при нажатии на "Прицел".Ловите :

create_thread @Prosto // создаём поток с именем Prosto

:Prosto // начинаем поток

wait 10 // ждём 10 мс,чтобы не вылетило

015D: set_gamespeed 1.0 // устанавливаем скорость на нормальную

if and // условие с выполнением всех подусловий(проверок)

player.Defined($PLAYER_CHAR) // проверка(игрок существует),на всякий случай

not actor.Driving($PLAYER_ACTOR) // проверка(игрок не за рулём)

82D8: not actor $PLAYER_ACTOR currentweapon == 34 // у актёра в руках не снайперка

82D8: not actor $PLAYER_ACTOR currentweapon == 35 // у актёра в руках не базука(1)

82D8: not actor $PLAYER_ACTOR currentweapon == 36 // у актёра в руках не базука(2)

jf @Prosto // если чего-нибудь не выполнилось,то переходим на начало

:Prosto_2 // создаём второй label

wait 10 // ждём 10 мс,на всякий случай

if // обыкновенное условие

00E1: key_pressed 0 6 // проверка(нажата клавиша "Прицел")

jf @Prosto // если это не правда,то перех. на начало,и там скорость становится обыкновенной

015D: set_gamespeed 0.25 // устанавливаем меньшую скорость игры

jump @Prosto_2 // и прыгаем в начало этого же label'a

 

Нестандартные клавиши :

5) Проверяем, нажат ли Enter:

1. Находим в таблице Enter. Его индекс равен 304490.

2. Enter стоит в столбце KeyHi, это значит, что когда кнопка будет нажата в переменной будет записано число 0x00FF0000. Кнопки в столбце KeyLo возвращают число 255 (0xFF), когда нажаты.

0@ = 304490

:loop

wait 0

&0(0@,1i) == 0x00FF0000

jf @loop

player.money($player_char) += 100

при нажатии Enter игроку дадут 100 долларов.

 

6) Проверяем, нажата ли тильда:

1. Находим в таблице ~. Ее индекс равен 304550.

2. ~ стоит в столбце KeyLo, это значит, что когда кнопка будет нажата в переменной будет записано число 0xFF

0@ = 304550

:loop

wait 0

&0(0@,1i) == 0xFF

jf @loop

player.money($player_char) += 100

при нажатии ~ игроку дадут $100.

 

7)Комбинируем проверки. Проверяем нажатие Num1 + Num2 :

1. У обоих кнопок один индекс 304484, поэтому при нажатии враз они вернут число 0x00FF00FF.

2. Пишем код

0@ = 304484

:loop

wait 0

&0(0@,1i) == 0x00FF00FF

jf @loop

player.money($player_char) += 100

при нажатии Num1 и Num2 игроку дадут $100.

Вроди с клавишами всё .

Категория: Уроки | Добавил: gtascript (11.08.2007)
Просмотров: 6361 | Рейтинг: 0.0/0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Часы

Скорость интернета

Друзья сайта

eServer.ru :: Хостинг-оператор #1 Сайт полностью посвящен мультфильму
САЙТ КАМРАНА!!!! Бесплатные игры, программы, МР3, новости и многое другое Только на сайте КАМРАНА!!!!! Все о Mafia 2 GTAIV Портал Только русские файлы для gta san andreas Софт для gta sanandreas Лада-тюнинг-эксклюзивные тюнингованые авто для GTA:SA


Статистика

Dating.ru Топ100 - Игры RusTusovka.COM - ТОП 100 Русско-Язычных Сайтов Русский Топ Рейтинг Топ GamerPro SERP: gta скрипты программы миссии


Copyright MyCorp © 2025 Конструктор сайтов - uCoz