Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 8 из 8
  1. #1
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±

    dc_garages.inc - система гаражей

    Всем доброго времени суток.
    Хочу поделиться с вами простой системой гаражей, которую я начал делать ещё в 2013 году.
    И пусть вас не пугает эта цифра, с того момента код системы был несколько раз пересмотрен и улучшен.
    В частности, сделано несколько макросов, благодаря которым систему гаражей можно подстроить практически под любой мод.
    Также данные обо всех гаражах записаны в файле garages.cfg (см. в архиве вместе с инклудом). Всего этих гаражей 12 - именно столько свободных мест под гаражи я смог найти на карте Сан-Андреаса (и все они в Лос-Сантосе), но вы можете с помощью маппинга добавить ещё.

    Скриншоты:
      Открыть/закрыть










    Пример использования:
    PHP код:
    #define    GARAGES_FILE            "Properties/garages.cfg"
    #define    MAX_GARAGES                12
    #define    GARAGES_PINFO            PlayerInfo
    #define    GARAGES_PINFO_GARAGEKEY    pGarageKey
    #define    GARAGES_PINFO_MONEY        pMoney
    #include "../include/dc_garages.inc" 
    Требования для работы:
    • sscanf2/3
    • DC_CMD
    • Streamer (опционально)


    Список макросов для настройки:
      Открыть/закрыть

    Обязательные настройки:
    • GARAGES_FILE - название файла для хранения.
    • MAX_GARAGES - кол-во гаражей в файле, указанном в GARAGES_FILE.
    • GARAGES_PINFO - название массива с информацией обо всех игроках.
    • GARAGES_PINFO_GARAGEKEY - название свойства в структуре свойств игрока (обычно это pInfo), в котором будет храниться ID гаража, купленного игроком.
      Внимание: вам придётся самостоятельно добавлять это свойство в pInfo.
    • GARAGES_PINFO_MONEY - название свойства, в котором хранятся деньги игрока.


    Необязательные настройки:
    • GARAGES_OPEN_RADIUS - радиус, с которого можно открыть гараж командой /garage (по умолчанию 10.0).
    • GARAGES_MSG_COLOR_ERROR - цвет для сообщений об ошибках (по умолчанию серый).
    • GARAGES_MSG_COLOR_INFO - цвет для обычных сообщений (по умолчанию белый).
    • GARAGES_UNOCCUPIED_PICKUP_MDL - модель пикапа для продающихся гаражей (по умолчанию взята модель синей дискеты).
    • GARAGES_OCCUPIED_PICKUP_MDL - модель для пикапов купленных гаражей (по умолчанию та же, что и у продающихся гаражей).



    Функции:
      Открыть/закрыть
    • LoadGarages() - загружает информацию о гаражах из файла.
    • SaveGarages() - сохраняет информацию о гаражах в файл.
    • SellGarage(garageid, sellerid) - продаёт гараж garageid, принадлежащий игроку sellerid. Если вместо ID игрока указать INVALID_PLAYER_ID, гараж будет продан без участия владельца - это может пригодиться, если вы захотите написать админскую команду для продажи гаража (что-то вроде /asellgarage).


    Команды:
      Открыть/закрыть
    • /buygarage - купить свободный гараж.
    • /sellgarage - продать гараж по рыночной стоимости.
    • /garage - открыть/закрыть гараж.


    Скачать:

    Автор: Daniel_Cortez
    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено!
    Последний раз редактировалось Daniel_Cortez; 07.10.2015 в 19:39. Причина: v1.1
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. 11 пользователя(ей) сказали cпасибо:
    #enotik (27.02.2016) $continue$ (04.10.2015) Blood (28.02.2016) gangzone.ini (06.10.2015) Kurbanoff (04.10.2015) L0ndl3m (06.10.2015) Nexius_Tailer (09.01.2016) Osetin (05.10.2015) wAx (04.10.2015) XakeP (05.10.2015) [ForD] (05.10.2015)
  3. #2
    Аватар для Adrenalin :3
    Пользователь

    Статус
    Оффлайн
    Регистрация
    22.07.2015
    Сообщений
    6
    Репутация:
    1 ±
    Продам гараж ;D Отличная система

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

    Статус
    Оффлайн
    Регистрация
    24.09.2014
    Сообщений
    133
    Репутация:
    4 ±
    sscanf2/3
    а где найти 3 версию ?

  5. #4
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Unreal Посмотреть сообщение
    а где найти 3 версию ?
    Она ещё не выпущена официально, но Y_Less перед ещё своим уходом в апреле говорил, что 3-я версия почти готова.
    Остаётся только, чтобы кто-нибудь протестировал плагин и зарелизил его. Произойти это может в любой момент (может быть, завтра, а может только через год), поэтому я заранее записал его в этой теме - в основном синтаксисе там очень мало несовместимостей со 2-й версией.
    Правда нужно будет ещё подредактировать dc_garages, там пока что не учитывается возможность подключения sscanf3.inc. Сделаю это сегодня, как только освобожусь с пар.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. #5
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Добавил поддержку sscanf3 (стоило лишь немного покопаться между несколькими #if/#endif).

    Заодно убрал автоматический вызов LoadGarages, чтобы не вводить пользователей в заблуждение. Буду честен, я и сам однажды попался на эту уловку, когда тестировал систему: вызывал функцию LoadGarages вручную из OnGameModeInit, забыв, что она уже вызывается сама в инклуде, в итоге гаражи загружались дважды и объекты ворот дублировались.
    До сих пор не пойму, в чём вообще был смысл автоматически вызывать LoadGarages через перехват OnGameModeInit, если нельзя сделать автоматический вызов SaveGarages в OnGameModeExit (ну, вообще-то можно, но есть вероятность, что мод окажется выгружен во время выполнения функции, т.к. сервер не дожидается её выполнения, и данные сохранятся неправильно). Наверное это оставалось ещё от старого кода из 2013.

    Также сделал функцию UpdateGarage доступной внутри инклуда - всё равно вряд ли есть смысл использовать её из мода.
    Вместо неё я добавил функцию SellGarage(garageid, playerid), которая может пригодиться при создания админ-команды для продажи гаража без участия владельца.

    Кроме того, я убрал сохранение всей информации в файл при продаже одного из гаражей (/sellgarage).
    Иначе была бы возможность перегрузки сервера блокирующими файловыми операциями из-за флуда командами /buygarage и /sellgarage.
    Если нужно сохранить гаражи - лучше делайте это при выключении сервера. И если вы боитесь сбоев, можно ещё сделать периодическое сохранение, например, каждые 30 минут.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  7. #6
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    1) Нет желание сделать альтернативу на SQL?
    2) А почему сурс кода - нет? :(
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  8. #7
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    1) Нет желание сделать альтернативу на SQL?
    2) А почему сурс кода - нет? :(
    1. Могу попробовать, если будет время найти и настроить нужные инструменты для работы с базами данных.
    2. Я же выложил инклуд. Какой ещё "сурс код" нужен?
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  9. Пользователь сказал cпасибо:
    Unreal (08.10.2015)
  10. #8
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Сурс код на gist/pastbin
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

 

 

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

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

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

Ваши права

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