Иды объектов в мап конструктор

Обновлено: 06.05.2024

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

Чтобы разместить карту на странице, достаточно вставить на эту страницу код виджета, сформированный конструктором.

С помощью Конструктора можно создать два типа карт: интерактивную и статическую. Для интерактивной карты Конструктор формирует элемент script , который подгружает на страницу JavaScript-код для создания карты. Для статической карты Конструктор формирует элемент img , который содержит ссылку на страницу, выполняющую переадресацию 301 с указанными параметрами карты на Static API.

API Конструктора карт позволяет изменять настройки карты, передавая в коде виджета нужные параметры. Например, можно задать ширину и высоту карты, а также ее язык.

Через API Конструктора карт нельзя изменять код виджета, сформированный с помощью элемента iframe .

Интерактивная карта

Интерактивная карта вставляется на страницу с помощью элемента script . В атрибуте src могут быть заданы следующие параметры карты:

um — идентификатор карты (обязательный параметр).

Пример значения параметра: um=constructor%3A834e99a97453487e0b040c9619.. .

Примечание. В предыдущих версиях Конструктора идентификатор карты задавался через параметр sid . Пример: sid=29uD3jKC-8XFdTlfCwkxSmnSQkYPbrYH . Этот параметр является устаревшим.

width — ширина карты в пикселях или процентах. Если параметр не задан, карта растягивается по всей ширине родительского контейнера;

height — высота карты в пикселях или процентах. Если параметр не задан, карта растягивается по всей высоте родительского контейнера. Если параметр указан в процентах, то необходимо выставить высоту для родительского контейнера, в противном случае карта не отобразится.

id — идентификатор DOM-элемента, в который нужно вставить карту. Указывается в том случае, если виджет вставлен на страницу в элемент <head> .

lang — локаль. Поддерживаются следующие значения: ru_RU (по умолчанию), ru_UA, uk_UA, en_RU, en_US, tr_TR. Подробнее в разделе Локализация карты.

apikey — ключ от API Карт. Если API-ключ не указан, на карте не будут отображаться элементы управления: поисковая строка, кнопки для построения маршрутов и просмотра панорам.

Примечание. Виджет может быть добавлен как в элемент body , так и в элемент head . Если код вставлен в элемент head , то в атрибуте src необходимо указать параметр id .

Если один и тот же код с одинаковым id вставлен на страницу несколько раз, то в DOM-элемент с указанным id будут вставлены все карты.

Ниже рассмотрены различные примеры размещения на странице интерактивной карты.

Пример 3. Вставка интерактивной карты в контейнер с заданными размерами

Статическая карта

Статическая карта вставляется на страницу с помощью элемента img . Параметры карты, которые могут быть заданы в атрибуте src :

um — идентификатор карты (обязательный параметр).

Пример значения параметра: um=constructor%3A834e99a97453487e0b040c9619.. .

Примечание. В предыдущих версиях Конструктора идентификатор карты задавался через параметр sid . Пример: sid=29uD3jKC-8XFdTlfCwkxSmnSQkYPbrYH . Этот параметр является устаревшим.

lang — локаль. Поддерживаются следующие значения: ru_RU (по умолчанию), ru_UA, uk_UA, en_RU, en_US, tr_TR. Подробнее в разделе Локализация карты.

apikey — ключ от API Карт. Необходимо передавать в случае, если карта используется в коммерческих целях. Подробнее см. в разделе Использование платной версии API.

Ниже рассмотрены примеры размещения статической карты на странице.

Использование платной версии API

Платный API предназначен для использования в коммерческих целях. Его можно использовать в закрытых системах, приложениях и программных модулях. В платной версии нет ограничений стандартной лицензии.

Платная версия распространяется как на интерактивные, так и на статические карты.

Для использования платной версии API со статической картой необходимо в коде элемента указать параметр apikey — API-ключ, полученный в кабинете разработчика. Например:

RASTAMAN

0x00000000 - SA:MP не инициализирован. Переустановить игру, удалить сторонние моды, проверить одиночную игру.
0x006E3D17 - Смена скина игрока при его коннекте\выходе, либо если он находится в авто. Менять скин игроку только тогда, когда он не в автомобиле. Либо поставить проверку.
0x0040F64C - Проблема в Windows 7/Vista, касающаяся разрешения экрана. Проблема в версии установщика SA-MP клиента. Обновить клиент до последней версии, либо переименовать дерикторию с игрой.
0x0059F8B4 - Краш происходит когда клиент не может загрузить какой-либо объект на сервере из samp.img Переустановить клиент и попробовать запустить SA:MP с правами администратора (7 / Vista)
0x00746929 или 0x0081214A - Неверно настроены конфигурации клиента Настроить все настройки касающиеся клиента.
0x007F0BF7 - Краш возникает если у вас установлены модификации на автомобиль, и допустим модифицированное авто врезалось либо на него пытаются поставить какой-либо тюнинг. Удалить данную модификацию.
0x00544BC8 - При краше этого вида бывает превышен лимит позволяющий создавать определенное количество объектов в поле видимости игрока. ( Игрок не может обработать столько объектов ) Установить\Обновить Streamer любой угодной для вас версии.
0x00415D47 - Слишком много объектов\текстур загружено одновременно для определенного игрока. Попробовать уменьшить это количество.
0x00536DF4 - Слишком много объектов\текстур загружено одновременно для определенного игрока. Аналог краша 0x00415D47
0x06D80000 - SA:MP конфликтует с модом/сборкой. Помогает в нахождение причины проблемы в моде/удаление SF.

Exception 0xC0000005 at 0x5E5815 - Данная ошибка связана со многим: процессы, анимации, звуки. Выполнение некоторых функций одновременно. Невозможно.
Exception 0x0000005 at 0x534134 - Проблема с уровнем доступа к чему-либо в Windows 7 или Vista Запустить SA:MP от имени администратора.
Exception 0xC0000005 at 0x7F120E - Использован неправильный тюнинг для автомобиля. Источник

Вопрос от DEST , 12 августа, 2017

Вопросы

DEST

В этой теме, мы разберемся как добавлять объекты на карту с помощью мод-пака.

У вас должны быть файлы объекта (.col, .dff, .txd)

IDE

Введение

Файлы Item DEfinition имеют расширение .ide и являются частью игрового движка серии GTA, поэтому присутствуют в GTA3, GTA VC, GTA SA и GTA4 в текстовом виде, в GTA LCS и GTA VCS в бинарном. В *.ide, к каждому объекту игры присваивается свой идентификатор (тэг), измеряющийся от 0 до 19999 (лимит ID можно уменьшать/увеличивать с помощью программы Limit Adjuster).
В свою очередь, к каждому идентификатору, прописанному в ide, присваивается уникальная модель (*.dff), архив текстур (*.txd), использующийся моделью, дистанция и параметры рендеринга модели.

Все записи в *.ide объединены в специальные секции, каждая из которых отвечает за определенный параметр. Примеры секций:
OBJectS - обычные объекты карты, TimeOBJects - временные объекты карты, ANIM - анимированные объекты карты, PEDS - педы, WEAPons - оружие, CARS - транспортные средства, HIER - загрузочные слоты для кат-сцен, 2DFX - специальный 2D-эффект для объекта.

Структура

Файлы .ide разделены на секции. Они могут быть не обязательны, или даже могут быть пустыми. Каждая секция начинается с идентификатора секции и заканчивется ключевым словом end. Строка секции разделяется запятыми, между которыми записаны значения каждой ячейки строки. Каждая ячейка может содержать либо целое или дробное число, либо одно слово.

Пример:

Код строки (ставить вместо точек):

  • ModelId (DWORD) - уникальный идентификатор модели - целое число. Для сториесов значение вычисляется.
  • ModelName (string[24]) - название модели (в большинстве случаев - имя соответствующего dff-файла для GTA3, GTA VC и GTA SA (без расширения)).
  • TexDictName (string[24]) - название архива с текстурами (имя соответствующего txd-файла для GTA3, GTA VC и GTA SA (без расширения), NULL в случае отсутствия текстур на модели).
  • DrawDist (float) - дистанция прорисовки объекта на карте относительно координат экрана.
  • Flags (float) - специальные параметры отображения объекта, значение по умолчанию '0'.

Готовый пример строки:

IPL

Введение

Файлы Item PLacement предназначены для расстановки объектов на игровой карте, а также определяют зоны, пути, гаражи, маркеры интерьеров и многое другое. Если IPL файл находится в текстовом виде, то его можно открыть и отредактировать в любом текстовом редакторе, например в блокноте, а если IPL файл находится в двоичном (скомпилированном) виде, то для его изменения уже используют специальные редакторы, либо программы, конвертирующие двоичные IPL в текстовые и обратно.

Присутствуют во всех играх серии GTA, начиная с третьей части (GTA 3, GTA VC, GTA SA (в текстовом и двоичном виде), GTA LCS (в двоичном виде), GTA VCS (в двоичном виде), GTA 4 (в текстовом и двоичном виде) ), а так же в других играх от Rockstar Games.
В GTA 4 двоичные IPL были переименованы в *.wpl, но их принцип остался тот же (описание см. в отдельной статье: *.wpl ).

Структура

Файлы .ipl разделены на несколько секций. Они могут быть не обязательны, или даже могут быть пустыми. Каждая секция начинается и идентификатора секции и заканчивается ключевым словом end. Строка секции разделяется запятыми, между которыми записаны значения каждой ячейки строки. Каждая ячейка может содержать либо целое или дробное число, либо одно слово.

Пример:

Код строки (ставить вместо точек):

  • ModelId (DWORD) - уникальный идентификатор модели - целое число. Должен соответствовать идентификатору в IDE файле.
  • NULL (string[24]) - пустое значение строки, игнорируется игрой. Может содержать любой мусор (обычно туда записывают имя DFF файла для совместимости с MAP_IO).
  • Interior (WORD) - номер интерьера, для которого используется модель (объекты с другими номерами интерьеров при этом не подгружаются на карту при попадании игрока в данный интерьер). Для основной карты номер интерьера = 0.
  • PosX, PosY, PosZ (float[3]) - координаты объекта относительно центра карты.
  • RotX, RotY, RotZ, RotW (float[4]) - масштабирование и поворот объекта на карте относительно его центра, записанного в DFF. Определяется как кватернион, для перевода в Эйлеровы углы необходимы довольно сложные математические вычисления, что делает программа Rotation Calculator. Масштабируется только сама модель, модель коллизии не масштабируется! (при этом в игре появляются глюки с камерой).
  • LOD (DWORD) - номер строки в текущем IPL файле для LODа, принадлежащего этой модели. Первый объект прописанный в IPL это строка «0», второй объект – «1» и так далее… Значение «-1» означает что LOD не используется.

Готовый пример строки:

Как вы уже заметили, секций у этих файлов много, но здесь, мы разбирали только секции связанные с объектами.

Хочу заметить, прописывать в IPL необязательно, чтобы создать добавленный объект в игре (например через soe), достаточно просто прописать его в IDE.

Информация взята с открытого доступа я лишь убрал лишние и подготовил урок с примером.

Класс map реализует ассоциативный массив, в котором каждому ключу соответствует одно значение. Основным отличием ассоциативных массивов от обычных является возможность обращения к элементу массива не только по числовому индексу, но и, например, по индексу, состоящему из строки. Индексы ассоциативного массива называются ключами. Прежде чем использовать класс, необходимо в начало программы добавить инструкцию:

Создание объекта

Объявление класса map :

Основные псевдонимы для типов:

Создать экземпляр класса map можно следующими способами (полный список конструкторов смотрите в документации):

  • объявить переменную без инициализации. Для этого перед названием переменной указывается название класса, а после названия внутри угловых скобок через запятую задаются типы данных ключа и значения. В этом случае словарь не содержит элементов. Пример объявления без инициализации:

Внутри угловых скобок после типов данных ключа и значения можно дополнительно указать функцию сравнения для ключа:

  • указать объект класса map внутри круглых скобок или после оператора = (доступны конструкторы копирования и перемещения):
  • указать диапазон внутри контейнера с помощью итераторов. В первом параметре передается итератор, указывающий на начало диапазона, а во втором параметре — итератор, указывающий на конец диапазона. Пример:
  • указать список инициализации, состоящий из объектов класса pair :

Вместо объектов класса pair можно указать ключи и значения через запятую внутри фигурных скобок:

Над двумя объектами класса map определены операции == , != , < , и >= . Кроме того, один объект можно присвоить другому объекту. В этом случае выполняется поэлементное копирование (оператор копирования) или перемещение элементов (оператор перемещения). Пример:

Доступно также присваивание элементов из списка инициализации:

Вставка элементов

Вставить элемент можно указав ключ внутри квадратных скобок. Значение элемента задается после оператора присваивания. Если ключ уже существует, то вместо вставки элемента производится изменение значения. Пример:

Вставить элементы позволяют следующие методы:

  • insert() — вставляет один или несколько элементов. Прототипы метода:

Первые два прототипа вставляют экземпляр класса pair и возвращают объект того же класса. Через свойство first будет доступен итератор, указывающий на вставленный элемент, а через свойство second — логическое значение true , если элемент вставлен, и false — в противном случае. Обратите внимание на то, что вставить можно только элемент, ключ которого не содержится в словаре. Пример:

Третий и четвертый прототипы позволяют подсказать позицию вставки с помощью итератора. Эта позиция может быть проигнорирована, т. к. ключи всегда следуют в строгом порядке. В качестве результата возвращается итератор, указывающий на вставленный элемент. Пример:

Пятый прототип вставляет элементы из диапазона, ограниченного итераторами first и last :

Шестой прототип вставляет элементы из списка инициализации:

  • emplace() — создает элемент и вставляет его в словарь. Метод возвращает объект класса pair . Через свойство first будет доступен итератор, указывающий на вставленный элемент, а через свойство second — логическое значение true , если элемент вставлен, и false — в противном случае. Обратите внимание на то, что вставить можно только элемент, ключ которого не содержится в словаре. Прототип метода:
  • emplace_hint() — аналогичен методу emplace() , но дополнительно позволяет подсказать позицию вставки с помощью итератора. Метод возвращает итератор на вставленный элемент или на существующий элемент (вставить элемент с одинаковым ключом нельзя). Прототип метода:
  • swap() — меняет элементы двух контейнеров местами. Прототип метода:

Вместо метода swap() можно воспользоваться одноименной функцией:

Определение количества элементов

Для определения количества элементов предназначены следующие методы:

  • size() — возвращает количество элементов в словаре. Прототип метода:
  • empty() — возвращает значение true , если словарь не содержит элементов, и false — в противном случае. Прототип метода:
  • max_size() — возвращает максимальное количество элементов, которое теоретически может содержаться в словаре. Прототип метода:

Удаление элементов

Для удаления элементов предназначены следующие методы:

  • erase() — удаляет один элемент или элементы из диапазона. Прототипы метода:

Первый прототип удаляет элемент с указанным ключом и возвращает количество удаленных элементов:

Второй прототип удаляет элемент на который указывает итератор. Удалим последний элемент:

Третий прототип удаляет элементы из диапазона, ограниченного итераторами first и last . Удалим все элементы кроме первого и последнего:

Доступ к элементам

К любому элементу словаря можно обратиться как к элементу массива. Достаточно указать его ключ внутри квадратных скобок. Можно как получить значение, так и изменить его. Если производится присваивание значения по ключу и ключа не существует, то производится вставка элемента. Если элемент уже существует, то его значение изменяется на новое. Если производится получение значения по ключу и ключа не существует, то элемент вставляется со значением по умолчанию для типа, а затем это значение возвращается. Пример:

Для доступа к элементам предназначены следующие методы:

  • at() — возвращает ссылку на элемент, ключ которого соответствует значению k . Метод позволяет как получить значение, так и изменить его. Если ключ не существует, то генерируется исключение out_of_range . Прототипы метода:
  • count() — возвращает количество элементов, у которых ключ соответствуют значению k . Прототип метода:
  • find() — возвращает итератор, установленный на элемент, ключ которого соответствует значению k . Если элемент не найден, то метод возвращает итератор, указывающий на позицию после последнего элемента. Прототипы метода:
  • lower_bound() — возвращает итератор, установленный на элемент, ключ которого больше или равен значению k . Если элемент не найден, то метод возвращает итератор, указывающий на позицию после последнего элемента. Прототипы метода:
  • upper_bound() — возвращает итератор, установленный на элемент, ключ которого больше значения k . Если элемент не найден, то метод возвращает итератор, указывающий на позицию после последнего элемента. Прототипы метода:
  • equal_range() — возвращает экземпляр класса pair . Через свойство first будет доступен итератор, являющийся результатом выполнения метода lower_bound() , а через свойство second — итератор, являющийся результатом выполнения метода upper_bound() . Прототипы метода:
  • begin() , end() , cbegin() , cend() , rbegin() , rend() , crbegin() и crend() — возвращают итераторы (см. разд. 16.1.1). Выведем ключ и значение первого элемента:

Обратите внимание: итераторы словарей не поддерживают операторы + и - . Для перемещения итератора нужно использовать операторы ++ и -- или функцию advance() . Пример доступа к третьему элементу словаря:

Вместо методов begin() и end() можно воспользоваться одноименными функциями. Выведем ключ и значение последнего элемента:

Перебор элементов

Перебрать все элементы можно с помощью цикла for each , итераторов и алгоритма for_each() . Пример использования цикла for each (внутри тела цикла можно изменить значение элемента, но ключ изменить нельзя):

Пример перебора элементов с помощью итераторов и цикла for :

Пример перебора элементов с помощью итераторов и цикла while :

С помощью алгоритма for_each() умножим значение каждого элемента на 2 , а затем выведем все ключи и значения в окно консоли:

Класс multimap: ассоциативный массив с повторяющимися ключами

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

Создание экземпляра класса multimap выполняется точно так же как и создание экземпляра класса map . Над двумя объектами класса multimap определены операции == , != , < , и >= . Кроме того, один объект можно присвоить другому объекту.

Вставка элементов производится с помощью метода insert() . Если ключ вставляемого элемента уже существует, то это не приводит к ошибке. В этом случае элемент все равно вставляется. Прототипы метода insert() :

Первые два прототипа вставляют экземпляр класса pair . В отличие от аналогичных прототипов в классе map метод insert() возвращает итератор, а не объект класса pair . Третий и четвертый прототипы позволяют подсказать позицию вставки с помощью итератора pos . Пятый прототип вставляет элементы из диапазона, ограниченного итераторами first и last . Шестой прототип вставляет элементы из списка инициализации. Для вставки элементов вместо метода insert() можно использовать методы emplace() (возвращает итератор, ссылающийся на вставленный элемент) и emplace_hint() . Пример:

Обратите внимание на то, что для вставки и извлечения элементов нельзя использовать оператор [] , так как ключи могут повторяться. Кроме того, класс multimap не имеет метода at() . Чтобы получить доступ к элементам следует воспользоваться методами find() , lower_bound() , upper_bound() и equal_range() . Получить количество элементов с указанным ключом позволяет метод count() . Пример:

Учебник C++ (Qt Creator и MinGW)


Учебник C++ (Qt Creator и MinGW) в формате PDF

Помощь сайту

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

МТА
На сколько мне известно МТА гораздо популярнее это и не удивительно. Большинство узнали о Map Construction лишь когда понадобилась функция удаления объектов. Теперь кстати они поддерживается и в МТА урок но глупо отрицать её очевидную не удобность и плохую работоспособность. В этом плане МТА явно проигрывает.
У МТА хватает и других недостатков, например в неё отсутствует несколько объектов. Едва ли таких объектов наберётся десяток, но всё же факт остаётся фактом. Также не маловажным минусом МТА является отсутствие возможности выделять объекты стандартной карты. Вернее такую возможность добавили в 1.1 еси я не ошибаюсь, но выделяет она далеко не все объекты, а лишь самые громоздкие и не нужные. Забудьте о том чтобы узнать ID коробок, столбов, окон и прочей мелочевки. А ведь эти объекты наиболее важны на мой взгляд.
Плюс ко всему МТА не поддерживает объекты добавленные в SAMP после версии 0.3с и выше. Правда если с 0.3с проблему с большего решили, то с 0.3d и 0.3e МТА почти не у кого нет. Конечно можно винить мапперов которые просто не хотят поискать на заграничных форумах информацию как добавить новые объекты, но всё равно даже добавив новые объекты их ужасно не удобно использовать и конвертировать.
Какие плюсы у МТА?
Лично для меня самым большим плюсом является точность. Большинство может этого не оценит, но в МТА можно расставлять объекты с невероятной точностью. До 0.00001 координаты. Также в МТА очень удобное и интуитивно понятное управление, множество горячих клавиш и даже есть туториал котоырй я правда некогда не читал и не знаю, что в нём
В МТА все объекты разбиты на разделы. Просматривать и передвигать объекты одно удовольствие. Не каких лагов и загрузок.
Полёт камеры очень плавный, а скорость как передвижения объекта, так и камеры настраивается, что тоже немаловажно. Даже при перелётах на большие расстояние город долго не грузится.
В МТА также есть телепорт по всем интерьерам. В МТА можно строить со своим другом или сразу с целой командой. Также очень удобный режим теста со встроенной админкой и такими возможностями как замедление времени, джекпатом и т.д. что облегчает задачу при тестировании карты.
Что мы получаем в итоге:
Управление 5/5
Точность 5/5
Функционал 3/5
Удобность 5/5

Map Construction
Я стал работать в нём совершенно недавно. До этого я лишь узнавал ид объектов по мере надобности.
У Map Construction или как его чаще называют Map Editor (далее MC) есть ряд несомненных плюсов. Они не нуждаются в детальном описании достаточно их лишь перечислить:
1. Поддержка всех новых объектов появляющихся в SAMP
2. Выделение абсолютно любых объектов на карте
3. Возможность удаления объектов
4. Встроенный конвертер под стример от инкогнито

Но недостатков у MC тоже не мало. Начнём с ужасного управления. Фанаты МС не пытайтесь оправдаться в МТА управление значительно лучше. Также полёт камеры оставляет желать лучшего, постоянные тормоза при перелёте на новый не загруженный участок карты раздражают. Возможно резкость камеры можно настроить, но я не нашёл такой функции. При конвертации МС сокращает все координаты до сотых. конечно код от этого становится более красивым. но кому это важно? Лично у меня после такого сокращения появилось два бага. Опять же может это и можно отключить в настройках, но я такого не нашёл. Также в МС очень не удобно выбирать объекты, но зато самые нужные можно сохранить в список который останется при следующей загрузке. Есть ещё пару мелких касяков как то отсутствие тп в интерьеры, отсутствие клавиши последующего действия (если отменил слишком много) и т.д.
Зато МС быстро запускается

Управление: 3/5
Точность 4/5
Функционал 5/5
Удобность 1/5

Подводя итоги хочу сказать, что МС больше подходит для создание различных стунтов и гоночных трасс. Так-как там не требуется большая детализация, но нужны новые объекты из SAMP
МТА больше подойдёт для создание различных интерьеров и украшений.
Лично мой выбор как большинства мапперов это МТА конечно иногда мне приходится пользоваться МС но это от безысходности.
Хотя есть мапперы которые работают только в МС. В любом случаи выбор за вами, советую попробовать оба редактора.

Читайте также: