ShootLib

ShootLib - Библиотека для создания оружия.
Для работы необходима библиотека SoundAPI.
Пример использования ShootLib.
 

Загрузка[править]

Библиотека
Версия Ссылка Список изменений
1 Подробнее
  • Первая версия
1.1 Скачать
  • Исправлена перезарядка
  • Удалена настройка setting.loadSoundFile
    (Перешли на SoundAPI 2.1)
  • Оружием нельзя ломать блоки
1.2 Скачать
  • Добавлен метод Entity.shot
  • Добавлен параметр (int)gun.bullet.entity = Native.EntityType.ARROW 
  • Добавлен кэлбэк GunsDefined 
  • Исправление GUI прицела(При смене оружия мог остаться)
1.3 Скачать
  • Исправлен конфликт интерфейса с несколькими модами. 
  • Исправлены ошибки 
  • Обновление SoundLib до 2.2
1.4 Скачть
  • Переписан метод инициализации мода 
  • Использование AdvancedEvents 
  • Исправлен графический интерфейс 
  • Исправлена стрельба из дробовика, теперь урон полностью нанесен. 
  • Незначительные исправления 
  • Обновление SoundLib до 2.3
1.5 Скачать
  • Добавлен кэлбэк BulletHit
  • Добавлен кэлбэк ShootGun
  • Добавлен метод ShootLib.isBullet
Beta Chat in VK  
GitHub GitHub  
Модификации
Название  Ссылка
DemoShootLib Подробнее
SuperHeroes Подробнее
ScarLxrdsGunMod Подробнее
WolfGunsMod Подробнее


Если вы используете данную библиотеку, пожалуйста добавляйте ваш мод в список или пишите мне.

Условия использования[править]

  • Запрещено распространение на сторонних источниках без указания ссылки на официальное сообщество
  • Запрещено изменение кода библиотеки
  • Запрещено явное копирование кода в другие библиотеки или моды 

Используя данный продукт вы автоматически соглашаетесь с этими правилами

Документация[править]

Инициализация[править]

Для начала импортируйте библиотеку.

IMPORT("ShootLib")

Далее задаем настройки

ShootLib.init({ //В данном объекте предаставлены стандартные значения
    image_button:true, //Графические кнопки
    left_handed:false, //Режим левши
    fire:{ //Настройки кнопки выстрела
        text:{ //Объект текста
            content:"FIRE", //Содержимое текста
            size:18 //Размер текста
        },
        bitmap:{ //Объект графики
            name:"ui", //Имя битмапа в папке gui/ (Смотрите ваш build.config)
            coords:{ //Координаты битмапа
                x:544, //Начальная координата X
                y:0, //Начальная координата Y
                width:544, //Ширина битмапа
                height:544 //Высота битмапа
            },
            size:{ //Размер объекта в юнитах
                width:90, //Ширина объекта
                height:90 //Высота объекта
            }
        }
    },
    aim:{ //Настройки кнопки прицеливания(Те же объекты, что и fire)
        text:{
            content:"AIM",
            size:18
        },
        bitmap:{
            name:"ui",
            coords:{
                x:0,
                y:0,
                width:544,
                height:544
            },
            size:{
                width:90,
                height:90
            }
        }
    },
    crosshair:{ //Настройки прицела(Те же объекты, что и fire)
        bitmap:{
            name:"ui",
            coords:{
                x:1088,
                y:0,
                width:64,
                height:64
            },
            size:{
                width:90,
                height:90
            }
        }
    },
    reload:{ //Настройки кнопки перезарядки(Те же объекты, что и fire)
        text:{
            content:"8/8",
            size:16
        }
    },
    crosshairGUI:{ //Настройки прицела для оружий с gun.fov.link(Те же объекты, что и fire)
        bitmap:{
            name:ShootLib.GUN_BITMAP, //ShootLib.GUN_BITMAP означает, что будет отображать принимаемую ссылку, можете выставить свой прицел
            coords:{
                x:0,
                y:0,
                width:1024,
                height:1024
            },
            size:{
                width:1000 * GUI.height/GUI.width //!! Объект GUI не доступен, 
                                //используйте свои способы нахождения высоты и ширины экрана
            }
        }
    }
});
  • Если в image_button и/или left_handed указана строка, то значение будет браться из config.json
  • Если image_button, left_handed, loadSoundFile, fire, aim, reload, crosshair и/или crosshairGUI не указаны, то будут назначены стандартные значения.
Если вы не собираетесь менять стандартнеы настройки, метод ShootLib.init() можно не вызывать

Создание боеприпаса[править]

Для создания боеприпаса нужно вызвать метод ShootLib.addAmmo(ammo), где ammo - объект описания боеприпаса

ShootLib.addAmmo({
    id:"ammohandgun", //Строковый ID
    name:"Handgun Ammo", //Название боеприпаса
    texture:{ //Текстура
        name:"ammohandgun",
        meta:0
    }
});

Для создании нескольких боеприпасов за раз можно использовать ShootLib.addAmmos(ammos), где ammos - массив объектов описания боеприпасов

Создание оружия[править]

Для создания оружия нужно вызвать метод ShootLib.addGun(gun), где gun - объект описания оружия

ShootLib.addGun({
    id:"deserteagle", //Строковый ID
    name:"Desert Eagle", //Название оружия
    ammo:"ammohandgun", //ID боеприпаса, которым стреляет оружие
    accuracy:6, //Разброс
    recoil:4, //Отдача
    rate:5, //Скорострельность (Кол-во выстрелов в 20 тиков)
    texture:{ //Текстура
        name:"deserteagle",
        meta:0
    },
    shotType:ShootLib.ShotType.NORMAL, //Тип выстрела
    buttonType:ShootLib.ButtonType.CLICK, //Тип кнопки
    bullet:{
        speed:10, //Сокрость пули
        count:7, //Кол-во пуль в магазине
        entity:Native.EntityType.ARROW,//Сущность, которой стреляет оружие, по стандарту Native.EntityType.ARROW
        damage:20 //Урон
    },
    fov:{
        level:10, // Уровень приближения
        //link:"crosshair/dragunov" //Файл GUI прицела. Не обязательный параметр
    },
    sounds:{
        shot:"DesertEagleShoot.ogg", //Звук выстрела
        empty:"EmptyGun.mp3", //Звук выстрела без боеприпасов
        reload:"reload/LugerReload.ogg" //Звук перезарядки
    },
    shotgun:{ //Только при gun.shotType:ShootLib.ShotType.SHOTGUN
        count:6, //Кол-во дробинок
        degreesSpread:3, //Разброс дроби
    }
});

Для создании нескольких оружий за раз можно использовать ShootLib.addGuns(guns), где guns - массив объектов описания оружий

Полная документация[править]

ShootLib[править]

Методы[править]

Версия Метод Аргументы Описание метода
1 init(object settings) settings - настройки библиотеки Задает настройки библиотеки
1 addGun(object gun) gun - объект описания оружия Добавить оружие
1 addGuns(object[] guns) guns - массив объектов описания оружия Добавить оружия
1 getGun(int gun_id) gun_id - ID предмета Получить объект описания оружия
1 isGun(int gun_id) gun_id - ID предмета Вернет true, если предмет gun_id оружие
1 addAmmo(object ammo) ammo - объект описания боеприпаса Добавить боеприпас
1 addAmmos(object[] ammos) ammos - массив объектов описания боеприпаса Добавить боеприпасы
1 getAmmo(int ammo_id) ammo_id - ID предмета Получить объект описания боеприпаса
1 isAmmo(int ammo_id) ammo_id - ID предмета Вернет true, если предмет ammo_id боеприпас
1.5 isBullet(int entity) entity - сущность Вернет true, если существует и является боеприпасом, иначе вернет false

Константы[править]

Константа Описание Значение
ShotType.SINGLE Выстрел патроном 0
ShotType.NORMAL 0
ShotType.MULTIPLE Выстрел дробью 1
ShotType.SHOTGUN 1
ButtonType.CLICK Нажатие кнопки 1
ButtonType.TOUCH Касание кнопки 2
MAX_DAMAGE Максимальный урон -1
GUN_BITMAP GUI прицел будет принимать ссылку -1

Entity[править]

Методы[править]

Версия Метод Аргументы Описание метода
1.2 shot(Entity entity) entity - сущность, которая должна выстрелить Заставляет моба выстрелить

Callback[править]

Новый callback GunsDefined вызывается после создания всех оружий и боеприпасов

Callback.addCallback("GunsDefined",function(){
    //Например ваши крафты
});

Callback BulletHit вызывается при попадании снаряда во что-нибудь

Callback.addCallback("BulletHit", function(bullet, item, hit){
    /*
    * При попадании снарядом куда-нибудь
    * bullet - сущность пули
    * hit - объект, по которому попали
    */
});

Callback ShootGun срабатывает при выстреле из оружия

Callback.addCallback("ShootGun", function(bullet, item, gun){
    /*
    * При выстреле из оружия
    * bullet - сущность пули
    * item - предмет, из которого был произведен выстрел
    * gun - описание оружия
    */
});