Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 3 из 3 ПерваяПервая 1 2 3
Показано с 21 по 24 из 24

Тема: GIT

  1. #21
    Аватар для kushichka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2014
    Сообщений
    75
    Репутация:
    6 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    Да, в инклуды.
    А есть ли в этом смысл?

  2. #22
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от kushichka Посмотреть сообщение
    А есть ли в этом смысл?
    А почему его может не быть? Одна система - один файл, разве это не логично? А вот пихание всего в один файл лишено какого-либо смысла, это значительно усложняет разработку.

  3. #23
    Аватар для kushichka
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.04.2014
    Сообщений
    75
    Репутация:
    6 ±
    Цитата Сообщение от ziggi Посмотреть сообщение
    А почему его может не быть? Одна система - один файл, разве это не логично? А вот пихание всего в один файл лишено какого-либо смысла, это значительно усложняет разработку.
    А как между всеми файлами связать массивы, переменные? Кажется только PVar'ы можно объявить в одном файле, а использовать в других...
    Как быть когда нужно в каждой системе использовать, к примеру, паблик OnDialogResponse? Прописывать его в каждом инклуде? Хотелось бы пример реализации увидеть, если это возможно.

  4. #24
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,181
    Репутация:
    790 ±
    Цитата Сообщение от kushichka Посмотреть сообщение
    А как между всеми файлами связать массивы, переменные? Кажется только PVar'ы можно объявить в одном файле, а использовать в других...
    Как быть когда нужно в каждой системе использовать, к примеру, паблик OnDialogResponse? Прописывать его в каждом инклуде? Хотелось бы пример реализации увидеть, если это возможно.
    При создании переменной с помощью new, её область видимости становится глобальной и эта переменная доступна из любых, ниже подключенных, файлов. Но обращение к переменным напрямую - это дурной тон, люди, как правило, создают несколько функций - интерфейсов, для работы с этими переменными. Например, вместо чего-то вроде: gPlayerInfo[playerid][e_pLevel] = 5, ты используешь SetPlayerLevel(playerid, 5).

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

    Или, если подобный подход не нравится, можно вызывать подфункции в основной OnDialogResponse.
    Примерно так:
    PHP код:
    public OnDialogResponse(playeriddialogidresponselistiteminputtext[])
    {
        if (
    Bar_OnDialogResponse(playeriddialogidresponselistiteminputtext)) {
            return 
    1;
        }
        if (
    Tuning_OnDialogResponse(playeriddialogidresponselistiteminputtext)) {
            return 
    1;
        }
        return 
    1;

    Где функции Bar_OnDialogResponse и Tuning_OnDialogResponse могут находиться где угодно.

    Для примера могу дать свою систему соревнований (ещё не доделана), в которой данные моменты реализованы: https://github.com/Open-GTO/Open-GTO...es/competition
    В основном файле, competition.pwn, есть массив gParams, этот массив имеет область видимости исключительно в этом файле, но доступ к параметрам есть откуда угодно. Достигается это с помощью реализации функции Competition_SetParamInt, Competition_GetParamInt и им подобными (Float, String). Например здесь я получаю ID карты для формирования диалога, который, как раз, реализован в отдельном для диалогов файле - competition_menu.pwn.

    Также используется метод перехвата ALS. Например здесь перехватывается OnPlayerDisconnect.

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

  5. 2 пользователя(ей) сказали cпасибо:
    Disinterpreter (01.07.2016) kushichka (28.06.2016)
 

 
Страница 3 из 3 ПерваяПервая 1 2 3

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •