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
GitHub GitHub  
Модификации
Название  Ссылка
DemoShootLib Подробнее
SuperHeroes Подробнее

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

Условия использования

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

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

Документация

Инициализация

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

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:ShotType.NORMAL, //Тип выстрела
    buttonType: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: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 - описание оружия
    */
});