• 0
Sign in to follow this  
Followers 0
zloyjoni232

[закрыто] Как сделать /gps в павно не сильно понимаю но хочется научится

Question

Привет, хочу сделать /gps можете подсказать как и что?

Share this post


Link to post

2 answers to this question

  • 0

@zloyjoni232, для начала создайте массив, в котором перечислите наименование объектов и их координаты в глобальной области видимости, то бишь в начале вашего игрового мода.

 

Здесь enum - оператор перечисления. В данном случае мы создаем перечисление под названием e_DEST_POINTS, в котором перечисляем, из каких полей будет состоять каждая строка в массиве координат пунктов назначений. Достаточно хорошо этот оператор описан здесь.

 

Далее мы создаем двумерный массив destinationPoints. Размер массива явно не задан (записаны пустые квадратные скобки: []) – фактически мы заставляем компилятор выполнить эти расчеты. А вот то, какие данные будут храниться в этом массиве, указано во вторых квадратных скобках – [e_DEST_POINTS] – то есть мы ссылаемся на ранее объявленное перечисление и явно говорим: массив будет представлять собой набор строк, состоящих из 64-символьного имени, а также трех вещественных чисел-координат.

 

Оператор static указывает компилятору, что этот массив должен быть статическим, а значит требуется его размещение в сегменте данных. Ну, а const лишь запрещает модификацию этого массива в процессе выполнения программы.

 

Если говорить про "размещение в сегменте данных", то здесь уже нужно углубиться в структуру памяти программы, для чего потребуются некоторые знания по сегментации памяти. Если станет интересно, поищите соответствующую информацию в Интернете или создайте отдельную тему по сему вопросу – проясню.

enum e_DEST_POINTS {
    name[64],   // наименование пункта назначения
    Float:x,    // координата позиции X пункта
    Float:y,    // координата позиции Y пункта
    Float:z     // координата позиции Z пунктв
};

static const destinationPoints[][e_DEST_POINTS] = {
    {"Пункт назначения1"0.01.12.2},
    {"Пункт назначения2"3.34.45.5},
    // и так далее по мере необходимости
};

const DEST_POINTS_COUNT = sizeof(destinationPoints);

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

stock showDestPoints(playerid) {
    new string[1024];
    
    for (new i = 0; i < DEST_POINTS_COUNT; i++) {
        strcat(string, destinationPoints[i][dpName]);
        strcat(string, "\n");
    }
    
    // ниже 1111 поменяйте на свой ID диалога
    ShowPlayerDialog(playerid, 1111, DIALOG_STYLE_LIST, "GPS", string, "Выбрать""Закрыть");
}

Касаемо функций в языках программирования в целом есть множество информации в Интернете. Например, вот неплохая статья. Касаемо алгоритма работы данной функции – он предельно прост: в цикле перебираем все элементы нашего массива пунктов назначений, скрепляя названия пунктов назначения с размещением между ними символа переноса строки – '\n'. В результате получаем размещенные в столбик наименования пунктов назначения, которые вы и увидите на сервере в диалоге.

 

Ну, и остается лишь реализовать действие, которое будет происходить при выборе пункта в диалоге. Выполнение любого действия в диалоговых окнах приводит к вызову функции OnDialogResponse. Внутри нее остается лишь проверить, точно ли ответ пришел от нашего диалога (с идентификатором 1111) и точно ли нажата кнопка "Выбрать".

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
    if (dialogid == 1111) { // 1111 при необходимости поменяйте на свой ID диалога
        if (!response) {
            return true;
        }
        
        SetPlayerCheckpoint(playerid, destinationPoints[listitem][dpX], destinationPoints[listitem][dpY], destinationPoints[listitem][dpZ]);
        SendClientMessage(playerid, -1"Маркер установлен на выбранный объект");
        return true;
    }
    
    return false;
}

Установка маркера осуществляется функцией SetPlayerCheckpoint на те координаты, что заданы для выбранного пункта назначения в массиве пунктов назначения.

Share this post


Link to post
  • 0

Спасибо за помощь :)

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Доналдо Фарекелка
      By Доналдо Фарекелка


      Скачать файл Arizona RolePlay || Ser
      Приветствую, этот мод я нашёл на просторах интернета. 
      Скачал мод у автора:  Developer Stravinskiy
      Доработал мод: Donaldo_Farekelka
       
      Предупреждаю! Мод сырой, багов стало меньше, но они есть.
      Мод: Баня, Подвал, В некоторых местах маппинг, система коронавируса, 9 лвл админок
       
      Информация:
      1) Dc_Cmd
      2) Mysql, mode, language - Всё настраивается теперь в pawno ( UPDATE: 1.1.0 )
      3) Административные права в данный момент можно выдать только через MYSQL ( BD ).
       
      То что я сделал:
       
      Добавил Доналдо Фарекелка Добавлено 13.04.2023 Категория Моды Автор shenol (vk.com/donaldo_farekelka)  
    • Доналдо Фарекелка
      By Доналдо Фарекелка
      Приветствую, этот мод я нашёл на просторах интернета. 
      Скачал мод у автора:  Developer Stravinskiy
      Доработал мод: Donaldo_Farekelka
       
      Предупреждаю! Мод сырой, багов стало меньше, но они есть.
      Мод: Баня, Подвал, В некоторых местах маппинг, система коронавируса, 9 лвл админок
       
      Информация:
      1) Dc_Cmd
      2) Mysql, mode, language - Всё настраивается теперь в pawno ( UPDATE: 1.1.0 )
      3) Административные права в данный момент можно выдать только через MYSQL ( BD ).
       
      То что я сделал:
       
    • Tookie Johnson
      By Tookie Johnson
      Здравствуйте. Пишу РП мод с нуля. Поделитесь, пожалуйста, системой ввода реферала при регистрации и проверкой на ввод своего имени.
    • dante34538
      By dante34538
      Группа ВКонтакте : vk.com/always_mobile
      В группе в описание находятся ссылки на сайт,а так-же на форум
      Добавляй наш IP-Aдрес в избранное: one.always-rp.9ab.ru:1177

      Запуск сервера планируется 28 апреля.

      На сервере имеется один город Los Santos,если онлайн будет повышаться буду открывать LV,SF и фракции добавлять в эти города.

      Будем стараться реализовывать все предложения

      Надеюсь на вашу поддержку, думаю что-то да и получится.

      (В скором времени будет сделан лаунчер и клиент на Android)

      Информация о проекте:
       
      Мод проекта в некоторых местах будет напоминать Samp RolePlay,но это не значит, что делается фулл копия Samp Rp, нет!
       
      На проекте делаются свои системы и они уже есть там, но некоторые функции систем напоминают Samp Rp

      Скриншоты проекта(мода) опубликовываются в группе ВКонтакте, так-же на форуме
       
      После открытия мы начнём делать свои обновления(именно свои!) и будем переписывать системы мода