Уроки моддинга
GTA Script GeneratorЗадать вопрос
  • О сайте
    • Проекту помогали
  • GTA SA, VC, III (PC, Classic)
    • Раздел 01. Основы
      • Общие сведения об уроках и минимальный набор программ
      • Установка Sanny Builder. Базовые настройки
      • Синтаксис, комментарии, опкоды, команды. Ключевые слова
      • Типы данных. Литералы. Константы
      • Типы проектов
      • Переменные. Операторы
      • 00012. Редактирование main.scm. Переменные (Часть 3)
      • 000175. Трюк с локальными массивами
      • 00073. Переменные, как члены класса. Коментарии в поиске опкодов. Макросы
      • 00017. Условия в Sanny Builder (Часть 1)
      • 00018. Условия в Sanny Builder (Часть 2)
      • 00019. Условия в Sanny Builder (Часть 3)
      • 000181. Условия в Sanny Builder (Часть 4)
      • 00045. Циклы (Часть 1 - while)
      • 00047. Циклы ( Часть 2 - for )
      • 00049. Циклы ( Часть 3 - repeat ). Вложенные циклы
      • 00087. Таблицы переходов
      • 00059. Подключение текстовых файлов, scm-функции
      • 000155. Использование SCM-функций (опкод 0AB1)
      • 000162. Используем scm-функции в качестве проверок
      • Координаты. Угол. Получение координат и угла Z
      • 000154. Вся правда о wait 0
    • Раздел 02. CLEO
      • Текст
        • 000158. Динамическая GXT-таблица или виртуальные GXT-записи
        • 00033. Работа с текстом
      • Игрок
        • 00021. Одежда СЖ
      • Транспорт
        • 00026. Создание транспорта
        • 000115. Работа с грузовиками и прицепами
        • 000172. Эктра-части автомобилей
        • 00042. Всё о поездах
        • 00080. Тюнинг транспорта, работа с компонентами тюнинга
        • 00029. Транспорт и команды, свойственны ему
        • 00046. Плавающие и лётные средства передвижения
        • 00082. Работа с частями автомобиля
      • Актёры
        • 000152. Заставляем актёра говорить. Аудио-таблицы
        • 000177. Трюк со специальными актёрами
        • 00020. Типы пешеходов, номера банд и отношение между ними
        • 00024. Модель. Создание актёра
        • 00028. Актёры и команды, свойственны им. Команды для игрока
        • 00056. Специальные актёры
        • 00060. События актёров
        • 00084. Модели поведения актёров
      • Объекты
        • 00030. Объекты и команды, свойственны им
        • 00025. Создание объекта
        • 000142. Метание объектов
      • 00027. Пикапы
      • 00031. Маркеры и сферы
      • 000122. Типы чекпоинтов, маркеров. Детальный обзор
      • 00055. Cleo. Основные понятия, отличия от main'а, простые примеры
      • 00061. Cleo-миссии
      • 00064. Работа со стартерами ( Cleo - Часть 1 )
      • 00065. Работа со стартерами ( Cleo - Часть 2 )
      • 00083. Запуск другого потока с Cleo-скрипта
      • 00079. Немного о глобальных CLEO-переменных
      • 00066. Работа со стартерами ( Дополнительные условия )
      • 000137. Группы в GTA San Andreas
      • 00098. Последовательность в анимации
      • 000120. Пути пешеходов и анимационные пути
      • 000178. RRR-файлы в GTA SA. Как их делать и использовать-
      • 000180. Длинные последовательности в анимации
      • 00022. Типы зон. Аудио-зоны
      • 00023. Работа с клавишами. Делаем сохранение
      • 00037. Анимация. Основные команды и примеры их использования
      • 00041. Работа с интерьерами
      • 00036. Катсцены и всё, что необходимо для примитивного видеоролика
      • 000174. Снова статистика игрока
      • 00040. Как создать свой чит-
      • 00090. Работа с гаражами
      • 000176. Выделение памяти
      • 00076. Статистика игрока
      • 00094. Пропуск видеороликов
      • 00072. Работа со светом. Прожектор
      • 00092. Работа с файлами ( форматированное чтение )
      • 00093. Работа с файлами ( Дозапись )
      • 00071. Визуальные эффекты в GTA San Andreas
      • 00069. Взрывы и всё, что связано с огнём.
      • 00086. Движения объектов и эффектов
      • 00068. Использование RC
      • 00067. Использование турелей
      • 00057. Работа с INI-файлами ( запись и считывание )
      • 00044. Работа с панелями ( таблицами )
      • 00043. Работа с аудио
      • 00038. Рисование на экране (Часть 1 - Текст)
      • 00039. Рисование на экране (Часть 2 - Текстуры)
    • Раздел 03. MAIN.SCM
      • 0009. Редактирование main.scm. Потоки и опкоды (Часть 1)
      • 00014. Редактирование main.scm. Потоки и опкоды (Часть 2)
      • 00013. Редактирование main.scm. Потоки и опкоды (Часть 3)
      • 00062. Работа со стартерами ( MAIN.SCM - Часть 1 )
      • 00063. Работа со стартерами ( MAIN.SCM - Часть 2 )
      • 00054. Внешние скрипты в main.scm
      • 00050. Статус-тексты
      • 00053. Таймеры
      • 00035. Делаем простую миссию
    • Раздел 04. Разное
      • 00088. Интересные опкоды (Часть 1)
      • 00089. Интересные опкоды (Часть 2)
      • Интересное в скриптинге
      • 000167. Интересное в скриптинге. Часть 2
      • 00081. Защита скриптов, снятие слабой защиты
      • 000157. Защита скриптов,снятие её + Подробнее об $NOSOURCE
      • 000121. Варианты использования main.scm
      • 000179. Избавляемся от "ёлочек"
      • 000171. Контроль за перемещениями мыши
      • 000182. Колода карт в GTA San Andreas
      • Работа с магазинами
      • 00091. Создания собственных классов и кейвордов
      • 00085. Работа с битами переменных
      • 00051. Работа с HEX. HEX-буфер
      • 00097. Написания DLL библиотек и использование их с скриптах
    • Раздел 05. Игровая память
      • 00058. Работа с игровой памятью (Часть 1- статические адреса)
      • 00074. Динамические адреса памяти. ( Часть 1 - структура актёра )
      • 00075. Динамические адреса памяти. ( Часть 2 - структура автомобиля )
      • 00077. Динамические адреса памяти. ( Часть 3 - структура объекта )
      • 00096. Игровая память. Динамические адреса (структура weapon.dat)
    • Раздел 06. Алгоритмы и примеры
      • 000153. Пример полноценной миссии "Ограбление"
      • 00095. Как сделать нервометр-
      • 00052. Пример полноценной миссии "Взрывчатка"
      • 000114. Делаем спидометр!
      • 000161. Очень длинные миссии в main.scm
      • 000112. Делаем графическое меню
      • 000113. Делаем гоночную миссию ( SARMC v0.9 )
      • 000133. Делаем диалоги в миссиях
      • 00032. Делаем простой скрипт (приходим к точке и убиваем нужную цель)
    • Раздел 07. Plugin SDK (SA)
      • Простейший плагин
      • Работа с массивами объектов
      • Рисуем
      • Короны
      • Класс шрифта (CFont)
    • Раздел 08. Руководство по программам
      • Руководство по использованию программы GTA-SA Crazy IMG Editor
      • Руководство по использованию программы Ped Editor
      • Руководство по использованию программы Rus2gxtCoder
      • Руководство по использованию программы FXT Editor
      • Руководство по использованию программы GTA Animation Manager
      • Руководство по использованию программы TXD Workshop
      • Руководство по использованию программы GTA GXT Editor
      • Руководство по использованию Map Editor
      • Руководство по использованию программы MapCleaner
  • GTA 4 (PC)
    • Раздел 01. ScriptHookDotNet
      • Всё, что необходимо перед началом скриптинга GTA 4
      • Создание проекта и его открытие
      • Наш первый скрипт. Необходимые условия его написания
      • 000102. Метки и прыжки
      • 00034. Что такое Blip- Основные комадны
      • 000107. Обзор класса GAME
      • 000108. Обзор класса PLAYER(Часть 1)
      • 000109. Обзор класса PLAYER(Часть 2)
      • 000110. Обзор класса PLAYER(Часть 3)
      • 000111. Vector - Что это такое и с чем его едят
      • 000116. Обзор класса World
      • 000117. Обзор класса Model
      • 000118. Обзор класса Vehicles
      • 000119. Обзор класса Ped
      • 000126. Pickup в GTA 4
      • 000127. Обзор класса Group
      • 000141. Списки в c#. Запуск нескольких скритов в GTA 4
  • Программирование
    • C#
      • 000103. Типы данных в C#. Базовые операции над ними.
      • 000104. Блочные конструкции. Условия
      • 000105. Блочные конструкции. Циклы
      • 000106. Массивы и структуры
      • 000123. Блочные конструкции. Перечисления
      • 000124. Блочные конструкции. Оператор управдения swith
      • 000125. Блочные конструкции. Цикл foreach
      • 000128. Как делать функции c#- Часть 1
      • 000129. Как делать функции c#- Часть 2
      • 000130. Альтернативные условия
      • 000131. Как делать функции c#- Часть 3
      • 000132. ООП в c# Часть 1
      • 000135. ООП в c# Часть 2 - Полиморфизм
      • 000136. Как делать функции c#- Часть 4
      • 000138. Детальнее о static
      • 000139. Блочные конструкции. Исключения
      • 000140. Делегаты и события в c#
      • 000143. Знакомство с формами
      • 000144. Панель элементов
      • 000149. Кнопки, Текст-боксы и метки
      • 000151. Запуск другой формы из основной, ListBox, MenuStrip
      • 000160. Сериализация и десериализация XML в c#
      • 000163. Консоль. Основные команды
      • 000165. Цикл foreach для своих классов
      • 000168. Перегрузка операторов в c#
      • 000169. Анонимные и динамические типы в c#
      • 000170. Анонимные функции и лямбда-выражения в c#
      • 000173. C# введение в Linq
      • 00048. Детальнее о ref, out и checked
      • 000150. Подключаем dll-библиотеку, работа с файлами
    • C++
      • Выбор среды компилирования, типы данных, первая программа
      • Математика, адреса данных
  • Полезные ссылки
    • Уроки от Vital (видео)
    • База опкодов (SBL)
    • Сайт Sanny Builder
    • Сайт CLEO
  • На удаление
    • Раздел 99. Старые уроки
      • 00010. Управление Sanny Builder и её особенности
      • 0000. Всё, что необходимо перед началом скриптинга
      • 000156. Вступление в скриптинг GTA 3
Powered by GitBook
On this page
  • Поиск координат и угла поворота
  • Как можно представить поиск координат?

Was this helpful?

  1. GTA SA, VC, III (PC, Classic)
  2. Раздел 01. Основы

Координаты. Угол. Получение координат и угла Z

Если Вы ещё новичок в скриптинге, то эта информация будет для Вас полезной. Речь пойдёт о пространстве игры, а точнее о координатах и углах.

Previous000162. Используем scm-функции в качестве проверокNext000154. Вся правда о wait 0

Last updated 3 years ago

Was this helpful?

В этом уроке мы рассмотрим концепцию координат в играх серии GTA. Если смотреть в общем, то игровой мир — это большой квадрат, внутри которого находится игровой мир. Как правило, в играх есть координатная сетка, по которой можно узнать где сейчас находится игрок, объект и прочее. Если смотреть на мир что называется сверху, то сетка имеет две оси: X и Y. Центр обычно находится в координатах {0.0; 0.0}. Давайте посмотрим на карту:

Центр мы видим, и его координаты мы знаем. Какая же максимальная длина "X" и "Y"? Каждой карте всегда есть предел. В нашем случае длина не может составлять больше 3000.0. Для моддинга рекомендую 2800.0 единиц, иначе если выйти за его пределы, то карта станет невидимой (но поверхность всё равно ощущать можно). Это конкретно для GTA SA; а вот для GTA 3 и GTA Vice City эти значения ещё меньше, так как размер карты там меньше.

Также в 3D играх (в том числе и в наших GTA-шек), существует и 3-й компонент: Z. Как уже многие догадались, это высота (например, над уровнем моря). На картинке такую высоту определить нельзя, однако в игровом мире мы это ясно видим.

Поиск координат и угла поворота

Чтобы разместить в игре какой-нибудь субъект, нужно получить координаты. Sanny Builder позволяет это сделать. Для этого нужно запустить игру и подождать, пока игра не даст контроль над главным героем. Затем выбрать нужную позицию:

Далее свернуть игру любым способом (например, кнопкой WINDOWS или Alt+Tab), и в Sanny Builder нажать на кнопки CTRL+SHIFT+C:

Это сработает, если есть активная вкладка. Координаты должны появиться возле курсора. Первое число — позиция по оси "X", другая — позиция по оси "Y", и третья — позиция по оси "Z". В зависимости от ситуации, игровую сущность нужно повернуть на определённый угол. Для этого развернём главного героя в нужную сторону:

и воспользуемся комбинацией кнопок CTRL+SHIFT+E:

В нашем случае угол равен 308.2786 градусов. Если нужно только просмотреть координаты и угол, то можно использовать комбинацию CTRL+SHIFT+1 и тогда появится окно с нужной информацией.

Комбинации кнопок можно сменить на более удобные в настройках SB.

Обратите внимание, что угол в этом контексте является углом по оси "Z", то есть относительно высоты. В большинстве случаев этого будет достаточно. Однако стоит упомянуть, что есть ещё и углы по осям "X" и "Y" и получить их горячими клавишами уже нельзя. Можно только через скрипты или другими программами.

Координаты обычно являются вещественными числами, поэтому в скрипте они пишутся через точку!

Думаю, что общие сведения и навыки Вы получили.

Как можно представить поиск координат?

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

Для начинающих всё это можно представить так: сначала идёт поиск по оси "Х" по условной шкале (ось "X"). Если смотреть на карту, то слева-направо. Останавливается поиск тогда, когда найдена позиция игрока игрока по этой оси. Дальше идёт поиск по оси "Y" (то есть идёт поиск снизу-вверх). Ну и также проходит поиск по высоте (ось "Z"). Когда все значения найдены, компилятор сообщает нам текущую позицию игрока на карте в виде координат. Это происходит и с углом "Z".

Не забываем также и о отрицательных величинах! Координаты левого нижнего угла карты пишутся так: {-2800.0; -2800.0}, соответственно координаты правого верхнего угла карты: {2800.0; 2800.0}.

Как видим, есть и отрицательные числа. Все координаты, которые по оси "X" находятся левее от центра будут "идти" в минус, причём чем далее от центра, тем больше число с минусом. По аналогии и по осям "Y" и "Z". Посмотрите на карту и представьте эту сетку и её координаты.

Что касается углов (по всем осям), то устанавливаются лимиты: от 0 до 360 градусов. Но справедливости ради встречаются и отрицательные числа: от 0 до -360 градусов. Игровой движок вполне работает с отрицательными числами. Поэтому если угол будет отрицательной величиной, то ничего страшного не случится. Игровые движки умеют самостоятельно все эти числа конвертировать в нужный их формат.

Автор: wmysterio