Как пишется скрипт для гта 5

Привет. Меня зовут Пейдж. В ближайшее время я буду твоим персональным наставником. Ты хочешь научиться создавать скрипты для GTA 5 на языке C#? Ты пришёл по адресу.

Знай, что я не смогу дать тебе все навыки владения языком. Но не беспокойся, для этого существует множество различных туториалов, книг, видео-лекций. Но как и в случае с иностранными языками, чтобы понять язык программирования, необходимо использовать его на практике. Поэтому мы будем писать с тобой скрипты для GTA 5.

Какие скрипты?

Какие ты захочешь. Только не читерские. Я, конечно, могу взломать любую защиту, но этому учить тебя не буду, хорошо? Мы с тобой займемся скриптами для одиночной игры. Ты познакомишься с внутренним функционалом GTA 5, который довольно обширен. Он настолько огромен, что ещё не был до конца изучен, представляешь?

Но не бойся. Всё, что нужно для создания полноценного мода, уже давно известно. С этим не возникнет никаких проблем.

Прежде, чем приступить, тебе нужен софт. Скачай и установи

Visual Studio

. Именно в этом редакторе мы создадим с тобой первый скрипт.

Установил? Хорошо, открывай программу. Не пугайся, найди в верхнем углу пункт «Файл» — «Создать» — «Проект». В появившемся окне найди раздел «C#», «Классическое приложение Windows», «Библиотека классов (.NET Framework»). Нажми ОК.

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Перед тобой открылась рабочая область и начальные строчки кода. Но к этому мы вернемся позже. В правой колонке найди «Обозреватель решений». Там будет отображаться созданный тобою проект. Найти там пункт «Ссылки», нажми на него правой кнопкой мыши — «Добавить ссылку». Нажми кнопку обзор и добавь файл ScriptHookVDotNet2.dll. Он должен быть установлен у тебя в игре, если ты всё же решил заниматься скриптингом :)

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Так же к проекту необходимо подключить стандартную библиотеку Windows — System.Windows.Forms

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Теперь необходимо добавить пространство имен в начало скрипта:

using GTA;using GTA.Native;using GTA.Math;using System;using System.Collections.Generic;using System.Drawing;using System.Reflection;using System.Windows.Forms;

В наш уже готовый код допишем настройки, чтобы наш класс унаследовал GTA.Script:

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Теперь добавим в наш код конструктор. Конструктор запускается один раз при запуске игры, поэтому добавляй туда только то, что должно быть запущено один раз. Давай впишем туда KeyDown события:

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Как видишь, редактор подчеркивает эти строчки красным, якобы там ошибка. Ошибка в том, что мы только что объявили события, но не вписали их в код. Давай это исправим:

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Ошибка исправлена. Теперь этот код можно запустить в игре. Но ничего не произойдет, потому что он пустой. Давай добавим что-нибудь. Например… Дадим игроку 5 звезд розыска при нажатии определенной клавиши. Что для этого нужно? Нам необходимо перехватить нажатие клавиши! Для этого мы и добавили событие KeyDown: оно срабатывает при каждом нажатии клавиш на клавиатуре, а класс KeyEventArgs содержит все данные о нажатой клавише. С помощью оператора IF мы можем узнать, нажата ли нужная нам клавиша, и если да, то мы выдадим игроку звезды розыска.

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Теперь усложним наш скрипт. Если игрок уже выдал себе 5 звезд розыска и пытается выдать их ещё раз, уведомим его об этом сообщением на экране. Вывести текст на экран можно командой UI.ShowSubtitle(«Твой текст»);

Обрати внимание, GTA 5 поддерживает стандарт Unicode, это значит, что ты можешь писать на русском языке без всяких проблем.

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Наш скрипт готов. Найди в верхнем меню пункт «Сборка» — «Собрать решение».

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Если всё прошло успешно, в окне ты найдешь путь к своему dll файлу. Если в процессе сборки вылезли ошибки, скидывай скриншот в комментарии, я попытаюсь тебе помочь.

Скрипт необходимо положить в папку Scripts, которая находится в корневой папке GTA 5. Если её нет, то просто создай и положи туда свой скрипт.

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Давай зайдем в игру, и убедимся, что наш скрипт работает. Звезды розыска выдаются на английскую клавишу H, ты же можешь выбрать любую другую на своё усмотрение.

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Создание скриптов в GTA 5 на C#: c чего начать? Часть первая

Поздравляю! Ты сделал свой первый скрипт. Изучай особенности C#, чтобы в полной мере владеть им, и читай мои гайды по скриптингу в GTA 5. В некоторых из них ты можешь найти уникальное задание, за выполнение которого сможешь получить различные плюшки на этом сайте. Желаю удачи!

Привет. Если ты не видел первую часть гайда, то обязательно прочти. Сегодня мы продолжим знакомиться со скриптингом в GTA 5. Наш второй урок будет посвящен:

* Вызову нативных функций;
* Знакомству с векторами: что это, как с ними работать и как написать с их помощью простенький спавнер автомобилей;
* Как проводить различные манипуляции с автомобилем с помощью скрипта;

Если будут вопросы по данному материалу, ты можешь обращаться в комментарии под этим руководством!

В игре свыше 5 тысяч различных функций, которые можно использовать в скриптинге. Все они представлены в виде так называемых хэшей. Для удобства им были придуманы читабельные названия. ScriptHookVDotNet уже имеет встроенные функции, но далеко не все из них были добавлены.

Alexander Blade, создатель ScriptHookV, собрал все функции в едино, их можно найти, перейдя по этой ссылке. Мы с редакцией LibertyCity работаем над собственной базой функций и в будущем обязательно представим её пользователям.

Эти функции предназначены для использования в C++. Но как написать их на языке C#? Довольно просто:

GTA.Native.Function.Call(GTA.Native.Hash._НАЗВАНИЕ ФУНКЦИИ, ПАРАМЕТРЫ);

Например, отключить свет во всем штате Сан Андреас можно функцией World.SetBlackout(true);

А можно вызвать её таким образом:

GTA.Native.Function.Call(GTA.Native.Hash._SET_BLACKOUT, true);

Интересный факт: данная функция была добавлена в игру с обновлением «Ограбления» и используется в ограблении Humane Labs. Данная функция полностью отключает все световые эффекты на объектах, машинах и персонажах, создавая самую натуральную темноту.

Создание скриптов в GTA 5 на C#: c чего начать? Часть вторая

Векторы

Для определения позиции в GTA 5 использует векторы. Существует два типа векторов: Vector2 и Vector3. Vector3 используется для определения позиции в пространстве и состоит из трёх координат: X, Y и Z . Vector2 определяют позицию экрана и состоит из двух параметров: X и Y. Пока что не будем вдаваться в подробности Vector2, а сразу перейдем к примеру использования Vector3, чтобы вам было понятнее. Например, я хочу создать автомобиль в пяти метрах от игрока. Для этого мы получим позицию игрока, прибавим к координате Y 5 игровых метров и создадим автомобиль в этой позиции.

var position = Game.Player.Character.GetOffsetInWorldCoords(new Vector3(0, 5, 0));

Game.Player.Character — ваш персонаж. Более подробно об её использовании мы поговорим в другой части нашего урока. В position записывается наш вектор с позицией.

Чтобы автомобиль появился прямо перед вами, а не позади или сбоку, возьмем текущий угол поворота игрока и отнимем 90 градусов:

var heading = Game.Player.Character.Heading — 90;

Теперь создаем на этих координатах наш автомобиль:

var vehicle = World.CreateVehicle(VehicleHash.Dubsta, position, heading); // создаем машину под названием Dubsta

Манипуляции с автомобилем (и не только)

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

Возьмем в пример автомобиль, который мы создавали раннее.

var vehicle = World.CreateVehicle(VehicleHash.Dubsta, position, heading);

Данные об автомобиле были записаны в переменную vehicle. Вы можете дать переменной любое имя. Используя эту переменную, мы можем совершать различные действия с этим автомобилем. Например, я его взорву. :)

GTA.Native.Function.Call(GTA.Native.Hash.EXPLODE_VEHICLE, vehicle, true, true);

Первый параметр — хэндл нашего автомобиля
Второй параметр — звук взрыва (true — звук есть, false — звука нет)
Третий параметр — видимость эффекта (true — видимый взрыв, false — невидимый взрыв).

Всё это я посмотрела в базе от Alexander Blade. Правда она на английском, поэтому базовые владения английским языком (или переводчиком) будут кстати. Я и администрация сайта работаем над русификацией базы и уведомим тебя и остальных пользователей, когда она будет готова.

Ожидайте следующую часть урока! Добавьте меня в друзья, чтобы не пропускать новых руководств. Удачи с освоением скриптинга!

  • Home

  • Forums

  • Games

  • Game Modding

  • Grand Theft Auto V Modding

You are using an out of date browser. It may not display this or other websites correctly.
You should upgrade or use an alternative browser.

  • #1

Below, I will try and walk you through of how to make your first script in my mod creator.

1)To begin, we want to load the program up and be sure to have the «Coding Help Tool» open.

**If you wish, clear all text from the box and paste this,

— Mod Name by Author, v1
local modname = {}

function modname.tick()
local playerID — PLAYER.PLAYER_ID()
2) We will first add a title for the mod, I’m going to call mine Tutorial. Replace all the modname with the name you want the mod to go by.

3) under «local playerID — PLAYER.PLAYER_ID()» we are going to begin the mod. For today’s mod example I’m going to give the player godmode, a 5 star wanted level, and unlimited ammo with three different keys.

4) We will choose the key we want the user to press to enable Godmode, I’m going to use F4. After choosing the key from the coding help window, select the function or item you want the key to enable or do. For mine, I used «Player Invincible»

5) To end this function of the mod, we will then press the button from the coding help window that says End «If…» Statement

Your script should now look something like this

— Tutorial by Author, v1
local Tutorial = {}

function Tutorial.tick()
local playerID — PLAYER.PLAYER_ID()

if get_key_pressed(Keys.F4) then
PLAYER.SET_PLAYER_INVINCIBLE(player, true)
end
6) We will now add the wanted level to the player. I want the user to press F5 to enable the wanted level. I will find the F5 button on the coding help window and press it.

7) Next, I will will select the button that says «5 Star Wanted Level»

8) To end this function of the mod, we will then press the button from the coding help window that says End «If…» Statement

Your script should now look something like this

— Tutorial by Author, v1
local Tutorial = {}

function Tutorial.tick()
local playerID — PLAYER.PLAYER_ID()

if get_key_pressed(Keys.F4) then
PLAYER.SET_PLAYER_INVINCIBLE(player, true)
end

if get_key_pressed(Keys.F5) then
PLAYER.SET_PLAYER_WANTED_LEVEL(player, 5, true)
end
9) For the last part of this mod, I want the player to have unlimited ammo. I want the user to be able to press F9 to enable unlimited ammo.

10) Find the «If F9 Is Pressed» button in the coding help window and press it

11) Next, find «Infinite Ammo» button in the coding help window and press it

12) To end this function of the mod, we will then press the button from the coding help window that says End «If…» Statement

Your script should now look something like this

— Tutorial by Author, v1
local Tutorial = {}

function Tutorial.tick()
local playerID — PLAYER.PLAYER_ID()

if get_key_pressed(Keys.F4) then
PLAYER.SET_PLAYER_INVINCIBLE(player, true)
end

if get_key_pressed(Keys.F5) then
PLAYER.SET_PLAYER_WANTED_LEVEL(player, 5, true)
end

if get_key_pressed(Keys.F9) then
WEAPON.SET_PED_INFINITE_AMMO_CLIP(playerPed, true)
end

We now need to end the script!

13) If you have closed the coding help tool, re-open it

14) Find the button in the coding help window that reads «End Script»

15) Press it

16) Make sure you replace modname with the name of the mod you chose.

Your final script should look like this

— Tutorial by Author, v1
local Tutorial = {}

function Tutorial.tick()
local playerID — PLAYER.PLAYER_ID()

if get_key_pressed(Keys.F4) then
PLAYER.SET_PLAYER_INVINCIBLE(player, true)
end

if get_key_pressed(Keys.F5) then
PLAYER.SET_PLAYER_WANTED_LEVEL(player, 5, true)
end

if get_key_pressed(Keys.F9) then
WEAPON.SET_PED_INFINITE_AMMO_CLIP(playerPed, true)
end

end
return Tutorial
Exporting Your Script

1) Go back to the main window with the code

2) Click File in the corner

3) Click on Export Script (Or press Control+E in V4.0)

4) Save it in the location of your choice; however, be sure it is all one word!!

Click the letters below to download my script! Version 4 of Mod Maker includes «Import Scripts» feature!

  • #2

  • #3

  • #4

  • #5

Similar threads


murderlikedj
  • Home

  • Forums

  • Games

  • Game Modding

  • Grand Theft Auto V Modding

На чтение 3 мин Просмотров 2.4к. Опубликовано 26.01.2023

AutoHotkey — сценарный язык программирования, который существенно упрощает процесс PR отыгровок посредством автоматического ввода в игровой чат ряда подготовленных фраз.

AHK по большей части нужен тем игрокам, которые работают в силовых структурах (таких как LSPD, FIB и др.), ведь именно там высокая концентрация коммуникативных действий, где при нажатии нескольких клавиш вы в считанные секунды можете воспроизводить объемные отыгровки с использованием /do, /me, /try и т.д. (например, при проверке гос. сотрудником угнанной машины на предмет взлома).

В crime фракциях отыгровки понадобятся при ограблении гражданских или похитках

Настройка AHK и примеры отыгровок

Содержание

  1. Установка языка
  2. Создание файла
  3. Написание отыгровок
  4. Работа скрипта

Установка языка

Установка AHK не занимает много времени и не требует специальных знаний, нужно лишь скачать файл с официального сайта и установить языковой пакет на свой компьютер.

Ссылка на скачивание с оф. сайта (v1.1): www.autohotkey.com

Настройка AHK и примеры отыгровок

Настройка AHK и примеры отыгровок

Создание файла

Установив AutoHotkey, открываем контекстное меню нажатием правой кнопки мыши на рабочем столе, создаем файл скрипта, выбрав пункт «Создать › AutoHotkey Script», и открываем его любым доступным редактором (например, Блокнот).

Настройка AHK и примеры отыгровок

Написание отыгровок

Разберем принцип написания кода на примере простой отыгровки.

Numpad7::
{
Sendinput, {F6}
Sleep, 200
Sendinput /do Ключ-карта находится на поясе.{Enter}
Sleep, 2200
Sendinput, {F6}
Sleep, 200
Sendinput /me снял ключ-карту с пояса, открыл КПЗ и провел туда задержанного{Enter}
Sleep, 2200
Sendinput, {F6}
Sleep, 200
Sendinput /me закрыл КПЗ и повесил ключ-карту на пояс{Enter}
Return
}

Numpad7:: — клавиша (7 на цифровом блоке клавиатуры), по нажатию которой будет воспроизводиться сценарий в синих скобках.

Сокращение клавиш: # — Win, ! — Alt, ^ — Ctrl, + — Shift (например, !6:: — среагирует на нажатие сочетания клавиш Alt+6)

Sendinput, {F6} — нажимает клавишу F6, которая открывает форму ввода в игровой чат.

Sleep, 200 — ожидание/задержка в ms после открытия формы ввода в чат.

Sleep, 2200 — ожидание/задержка в ms после отправки текста/отыгровки в игровой чат.

Sleep необходимо указывать между каждым действием, например, нажали F6 — подождали, ввели текст в поле и отправили в чат — подождали

Если код будет сбоить, можете увеличить задержку на 10-20%

Sendinput{Enter} — вводит в поле заданный текст/отыгровку и нажимает клавишу Enter.

При необходимости ввести символ # ! ^ +, заключите его в фигурные скобки — {!}

Return — оператор, который возвращает результат воспроизведения/выполнения функции (перед Return не нужно указывать Sleep).

Скачать файл с примерами отыгровок: TEST_AHK.rar (Google Диск)

Настройка AHK и примеры отыгровок

Работа скрипта

Наполнив файл нужными отыгровками, сохраняем его и запускаем, кликнув на значок правой кнопкой мыши и выбрав пункт «Run Script». Если вы все сделали правильно, то на панели задач появится зеленая иконка с буквой «H». Теперь, находясь в игре, при каждом нажатии ранее заданных клавиш будут проигрываться относящиеся к ним сценарии.

Выбрав «Exit» в контекстном меню на иконке в трее, вы завершите работу скрипта

Настройка AHK и примеры отыгровок

Всем привет, не нашел подобных статей на этом портале, и решил сделать свою :)

Сегодня я постараюсь вам показать как писать клиентскую часть для RAGEMP на C#
Сегодня мы создадим и настроим C# проект для разработки клиентской части, а именно подключим сборку rage-sharp.dll для подсказок и копирования всех *.cs файлов после успешного билда в папку client_packages/cs_packages

Что вам понадобиться, для того чтобы понять этот урок


1- Мозг
2- Прямые руки (но это не обязательно)
3- Ну и желательно не быть Питонистмом
4- Также предполагается что до этого вы прошли два предыдущих урока

Предыдущие Уроки

  1. Настройка окружения
  2. Настройка серверной части

Создания и настройка проекта где будем хранить все исходники
1-В папке с сервером создайте папку src(source) где будут храниться все исходники нашего мода
2-Внутри папки src создайте папку client где будут храниться исходники для клиента
3-Дальше откройте терминал и перейдите в src, и напишете команду «dotnet new classlib -f netcoreapp2.1» где аргумент -f указывает на версию .net которая будет использоваться в этом проекте в нашем случае это .NET Core 2.1
4-Дальше вам надо найти сборку rage-sharp.dll которая лежит где-то в папке dotnet клиента ragemp, в моём случае это «F:RAGEMPdotnetrage-sharp.dll» и скопировать её в папку libs которую надо создать рядом с папкой client
5-Теперь добавьте этот код в файл *.csproj

XML:

<ItemGroup>
    <Reference Include="rage-sharp">
        <HintPath>../libs/rage-sharp.dll</HintPath>
    </Reference>
</ItemGroup>

6-После этого добавьте этот код в тот же *.csproj файл (Этот код берёт все *.cs файлы из client и копирует их в папку с клиентскими скриптам которые в итоге будут компилироваться на стороне клиента, если хотите -> могу как-то сделать урок где разберу основные команды msbuild и покажу как писать простые конфигурации)

XML:

<Target Name="CopyBuildFiles" AfterTargets="build">
    <ItemGroup>
        <AllOutputFiles Include="./**/*.cs" Exclude="./obj/**/*.*;./bin/**/*.*" />
    </ItemGroup>

    <Copy SourceFiles="@(AllOutputFiles)" DestinationFiles="@(AllOutputFiles->'../../client_packages/cs_packages/%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="false" />
</Target>

Создания первого скрипта
1-Рядом с файлом *.csproj создайте файл с любым именем (например: Client.cs)
2-И вставьте туда этот код

C#:

using RAGE;

namespace Client
{
    public class Client : Events.Script //Для того чтобы указать что это скрип надо унаследовать этот класс от абстрактного класса RAGE.Events.Script
    {
        public Client()
        {
            Events.OnPlayerSpawn += OnPlayerSpawn; //Здесь мы добавляем Обработчик события спавна игрока
        }

        public void OnPlayerSpawn(Events.CancelEventArgs cancel) //Этот метод будет обрабатывать сам спавн игрока
        {
            Chat.Output("Player successfully spawned"); //Этот метод выводит сообщение в дефолтный чат
        }
    }
}

3- Теперь откройте терминал -> перейдите в папку src/client -> и запустите dotnet build после чего файл Client.cs должен был появиться в папке client_packages/cs_packages
4- А теперь запустить сервер и подключитесь к нем, если все ОК то чат должен выглядеть примерно ТАК

]

Взаимодействие между Сервером и Клиентом

В этом разделе мы создадим несколько клиентских и серверных событий, а именно ->

  • Для сервера это будет событие, которое будет создавать машину и помещать туда игрока.
  • А для клиента это будет событие, которое будет просто выводить сообщение в чат

1- Откройте файл Server.cs который создали ранее в одном из предыдущих уроков и вставьте туда этот код

C#:

[RemoteEvent("Vehicle:Create")]
public void CreateVehicle(GTANetworkAPI.Player player, string hash, int color1 = 0, int color2 = 0)
{
    VehicleHash vehicleHash = NAPI.Util.VehicleNameToModel($"{hash}");

    var vehicle = NAPI.Vehicle.CreateVehicle(
        vehicleHash,
        player.Position,
        player.Rotation,
        color1,
        color2);

    player.SetIntoVehicle(vehicle , 0);

    player.TriggerEvent("Chat:Push" , $"Successfully spawned {hash} car!"); // Этот метод тригерит событие на клиенте (первый аргумент это имя события)
        }
}

2-Откройте файл Client.cs который создали ранее и вставьте туда этот код

C#:

using RAGE;

namespace Client
{
    public class Client : Events.Script
    {
        public Client()
        {
            Events.Add("Chat:Push" , PushMsgToChat); //Регистрируем событие
            Events.OnPlayerSpawn += OnPlayerSpawn;
        }

        public void OnPlayerSpawn(Events.CancelEventArgs cancel)
        {
            Chat.Output("Player successfully spawned");

            RAGE.Events.CallRemote("Vehicle:Create" , "Issi5" , 1 , 5); // Этот метод тригерит событие на сервере (первый аргумент это имя события)
        }

        public void PushMsgToChat(object[] args)
        {
            Chat.Output($"{args[0]}"); // В массиве args лежат все аргументы переданные с сервера
        }
    }
}

Если все ОК, то при спавне на карте должна спавниться машина

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


Всем доброго времени суток и отличного настроения! Начинаю с маленького вводного курса по написанию скриптов в Delphi. Если материал будет интересен, постараюсь данную тему не забрасывать и не откладывать в долгий ящик. Почему я выбрал язык Delphi? Ответ очевиден: для начинающего программиста, зачастую этот язык легче усваивается, чем его собратья, такие как C, C++, .NET, CSharp, VB и пр. Синтаксис этого языка настолько прост, что на нем легко как писать, так и читать исходный код. А как мы знаем учиться проще на чужих примерах. По программированию на сях в сети есть масса примеров, а вот Delphi, как всегда остался в стороне. Цель данной статьи, как раз нацелена на восполнение пробелов в данной теме. Кого данный язык не устраивает, дальше могут не читать, все остальные, как говорится: «welcome». Данный материал рассчитан на публику, которая владеет минимальными азами программирования на языке Object pascal или Dephi.

Итак, что нам необходимо:

  • Иметь установленную версию Delphi XE (Я выбрал XE8).
  • Иметь свежую версию ScriptHookV от Alexander Blade.
  • Скачать ScriptHook SDK
  • Скачать мой фреймворк ScriptHook for Delphi SDK, адаптированный для написания скриптов в Delphi.

Скачиваем и распаковываем архив с моим фреймворком в любую папку, например ..projectsDelphiHookV.

ScriptHook SDK от Alexander Blade нам понадобится для просмотра нативных функций и соответствующих им хеш кодам, но об этом позднее.

Запускаем студию, открываем проект: File => Open..
 

Выбираем Template.dpr, нажимаем открыть
 

Откроется проект. «library Template;» можно заменить на свое название, например «library MyScript», не забываем сохранить. А теперь очень важный момент! Нужно сообщить компилятору, что собирать проект мы будем под x64 архитектуру. Для этого в Project Manager выбираем Target Platform (Win32) и клацаем на нем правой клавишей мыши, нажимаем добавить.

 

Должно получиться так:
 

Подготовительные работа закончена, открываем Main.pas (можно открыть, кликнув по ссылке Main в секции Uses, комбинация CTRL + левая кнопка мыши). 
 

В Main.pas содержатся 3 основные процедуры ScriptInit, ScriptFree, ScriptMain.

  • ScriptInit — выполняется любой код инициализации до входа в главный цикл (может оставаться пустой);
  • ScriptFree — выполняется любой код после завершения главного цикла (может оставаться пустой);
  • ScriptMain — выполняется основной код скрипта.

В образовательных целях напишем скрипт, который позволит помигать указателями поворотов на любом транспортном средстве и сделаем синхронизацию игрового времени с текущим временем на компьютере.
Для этого инициализируем несколько переменных и структур, добавим одну функцию, а в теле процедуры ScriptMain напишем не хитрый код, см. пример:

...

implementation

var
 SystemTime : TSystemTime; // структура системного времени (windows.pas)
 PlayerPed  : LongInt; // ID игрового персонажа
 Vehicle    : LongInt; ID используемого транспортного средства
 Blink      : TBlinker; // структура с описанием наших огней (левый, правый, оба)
 Blinker    : array [TBlinker] of Boolean; // для информации о состоянии огней
...

procedure SwitchBlink(const Value: TBlinker);
begin
  if Blink <> Value then // если устанавливаемое значение отличается от текущего, обнулим структуру
    FillChar(Blinker, SizeOf(Blinker), 0);
  Blink := Value; // запишем значение, какой фонарь переключаем
  Blinker[Value] := not Blinker[Value]; // переключим
  Vehicle := GET_VEHICLE_PED_IS_USING(PlayerPed);
  SET_VEHICLE_INDICATOR_LIGHTS(Vehicle, 1, BLINKER_LEFT[Blinker[Value], Value]);  // левый
  SET_VEHICLE_INDICATOR_LIGHTS(Vehicle, 0, BLINKER_RIGHT[Blinker[Value], Value]); // правый
end;

procedure ScriptMain;
begin
  // enter main loop
  while true do
  begin    
    PlayerPed := PLAYER_PED_ID();
    
    // поверяем, если наш игрок в машине
    if (IS_PED_IN_ANY_VEHICLE(PlayerPed, False)) then 
    begin
      // Включаем левый
      if IsKeyJustUp(74) then   // нажата и отпущена " J"
        SwitchBlink(bLeft);
      // Включаем правый
      if IsKeyJustUp(75) then   // нажата и отпущена "K"
        SwitchBlink(bRight);
      // Аварийка
      if IsKeyJustUp(VK_F10) then
        SwitchBlink(bAll);
    end;

    // Синхронизация часов с временем на компьютере   :)
    if IsKeyJustUp(VK_F12) then    // F12
    begin
      GetLocalTime(SystemTime);
      SET_CLOCK_TIME(SystemTime.wHour, SystemTime.wMinute, SystemTime.wSecond);
      PLAY_SOUND_FRONTEND(0, 'NAV_UP_DOWN', 'HUD_FRONTEND_DEFAULT_SOUNDSET', True);
    end;

    ScriptWait(0);
  end;
end;

end.

Здесь используются вспомогательные нативные функции, которые описаны в Scripting.pas: 

  • SET_CLOCK_TIME(Hour, Min, Sec: Word): DWORD; // установка игрового времени (часов)
  • PLAY_SOUND_FRONTEND(p0, ‘название звука’, ‘группа в которой состоит звук’, Param); // проигрыш звука, если Param = True, то проигрываем один раз
  • PLAYER_PED_ID(); // получить ID текущего игрового персонажа
  • GET_VEHICLE_PED_IS_USING(PlayerPed); // получить ID транспортного средства
  • SET_VEHICLE_INDICATOR_LIGHTS(Vehicle, p0, p1); // включитьвыключить указатель поворота, где Vehicle — ID транспортного средства; p0 = 0 — правый поворот, p0 = 1 — левый поворот; p1 = true/false — включено/выключено

Вот и все. Сохраняем проект и нажимаем CTRL + F9. В каталоге с файлами проекта, должен получится файл Template.asi. Копируем получившийся плагин в папку с игрой, не забыв туда же скопировать ScriptHookV.dll и Dsound.dll. Запускаем и игру, выбираем одиночный режим. В игре жмем F12 и смотрим результат. Садимся в машину, нажимаем J, K, F10 смотрим результат.

Поздравляю, вы написали первый скрипт для GTA V в Delphi.

Несколько слов о других функциях. Все функции описаны в файлах Scripting, ScriptingEnum. Я перевел лишь малую часть из оригинального SDK. Описание остальных функции можно найти в оригинальном ScriptHook SDK. Обсуждение материала на форуме здесь. Что-то новое, можно попробовать найти на моем сайте. Гладкого кода и хороших модификаций. 

NurFO. Вообще для игр самый лучший язык программирования — C++. Он самый быстрый. На нем ни одна игра тормозить не будет. Даже игрушки, собранные на C++ не будут так сильно тормозить на Pentium 4 с видеокартой 256 Mb 64 бит, как например собранные на Basic’е. Вообщем для игр хорошо подойдет C++. Он лучше всего.
Второе, GTA V собрана с использованием DirectX. DirectX лучше всего подходит для игр. Я даже сделал свою игру типа Counter Strike на C++ с использованием
C++ и DirectX. Там надо было в орлов из ружья стрелять. Игра была трехмерная. И также написал мод для нее — новое оружие.
В общем, как это делается:
Сначала на языке программирования пишут игру. Затем также пишут еще один файл исходного кода.
Это может быть звук, текст, миссия, оружие, автомобиль и.т.д. И вставляют в папку с игрой.
Ну например, папка Gta Vice City User Files для всякой ерунды Gta. В Gta Vice City запрограммировано так, что папка Gta Vice City User Files для песен и остальных файлов, и если игрок кинет какую-нибудь песню туда, ее надо воспроизвести по радио. Ваша песня — уже мод.
Видите, как все просто!!! Вы все поняли?
Но вам не понять всех тонкостей разработки игр, пока вы сами не начнете этим заниматься.

Добавлено через 1 минуту
DirectX — графическая библиотека.
Все компьютерные игры создали там.

Добавлено через 13 минут
Если вы хотите заниматься разработкой трехмерных(и двумерных) игр, вам понядобятся:

1) Мозги (судя по такому интересному вопросу, они у вас есть, и даже много)

2) Язык программирования (C++, как я советовал)

3) Оконная библиотека (WinAPI — Виндовская, и еще потому что игры DirectX только на WinAPI пишут)

И еще кое-что (на всякий случай, если вы хотите создавать крупные, красивые и стоящие игры):

1)3D-аниматор — для создания 3D-объектов(трехмерных, типа людей, машин, зданий, деревьев и.т.д. (3D-max — лучший для игр, лучше чем Blender)

2)Хороший Paint (на всякий случай)

3) Редактор текстур (картинок) (Corel Draw или Photoshop(лучший в мире))
Текстурой может плслужить небо, окна для зданий, земля и.т.д.

Добавлено через 3 минуты
Главное, хорошо освойте основы C++, от «Hello World» до классов и структур (и достаточно), в WinAPI достаточно лишь создать простое окно и функции WM_CREATE и WM_COMMAND, а дальше не обязательно, и DirectX — для 3D-объектов и эффектов.

Добавлено через 3 минуты
Книги:
По C++ — Бъярн Страуструп
По WinAPI — статья «Основы программирования Win32 API»
По DirectX — «Введение в программирование трехмерных игр Direct3D» Франка Луна

Добавлено через 4 минуты
Желаю огромной удачи!!! Если будут вопросы — пишите мне. Я сталкивался со всеми проблемами с которыми сталкивается начинающий разработчик и решал их.
Так что, обращайтесь, всегда рад помочь. Тем более что сам таких не встречал. Моим одноклассникам вообще ничего не нужно. А вы молодец!!!

Добавлено через 3 минуты
Да, и ещё, есть среда разработки программ на C++. Ну редактор C++ программ — DevC++. Просто скачайте DevC++ и все. Там ничего дополнительного как в других не нужно. Там уже все готоао и встроено.
Компилятор и отладчик уже там встроены.
Ну все!!! Успехов и больших достижений вам!!!

Добавлено через 1 час 47 минут
Да и кстати, знание алгебры с геометрией может пригодится.

Добавлено через 46 секунд
Да и кстати, знание алгебры с геометрией может пригодится.

Понравилась статья? Поделить с друзьями:
  • Как пишется скобка сравнения
  • Как пишется скрип старых качелей
  • Как пишется склянка
  • Как пишется скриншот на русском правильно
  • Как пишется скрепыши