[1.6.4]2 Вопроса

61
0
1. При нажатии в инвентаре или в открытом чате на ЛКМ оружие стреляет, как сделать что бы стреляло только когда ты в готовом режиме
2. Есть АК47 и у него свои потроны заряжены, но у второго такого же АК 47 те же патроны заряжены, как сделать свои патроны не только для определенного вида но и для конкретного оружия
P.s. Простите что наглею=0
 

timaxa007

Модератор
5,831
409
672
1. Использовать KeyBinding, а не просто Keyboard или Mouse.
У KeyBinding есть уже готовые события, когда не срабатывать события нажатии клавиши/кнопки.
Код:
KeyBinding left_button = Minecraft.getMinecraft().gameSettings.keyBindAttack;
2. Должен сам догадаться. Оружие должно понимать, какой калибр он использует (или магазин с калибром).
 
61
0
оружие понимает, все работает только вот у двух(или трех и т.д.) одинаковых калашей идет как бы один магазин
 

timaxa007

Модератор
5,831
409
672
моя твоя не понимать
 
61
0
Смотри, у калаша и дигла свои магазины, заряжу калаш, дигл не заряжен, заряжу дигл калаш не заряжен,
но если я заряжу 1 калаш, то все калаши будут заряжены. Все одинаковые калаши.
[merge_posts_bbcode]Добавлено: 18.06.2016 18:11:53[/merge_posts_bbcode]

Не другой вид калашей, а этот же вид, ну то есть один и тот же калаш только дублированый.
 

timaxa007

Модератор
5,831
409
672
Ну скорее всего у тебя плохо составил код для перезарядки. Нужно делать перезарядку, то что в руке игрока. (А не по всему инвентарю.)
 
61
0
вот код перезарядки 
Код:
int count_delete = ((ItemGun) this.player.inventory.getCurrentItem()
                        .getItem()).maxBullet
                        - ((ItemGun) player.inventory.getCurrentItem()
                                .getItem()).curBullet;

                if (((ItemGun) player.inventory.getCurrentItem()
                        .getItem()).reload == true) {
                    reloade++;

                    if (DivPlayer.get(player).reloade >= DivPlayer.get(player).reloads) {

                        for (int i = 0; i < count_delete; ++i) {
                            if (!player.capabilities.isCreativeMode) {
                                player.inventory
                                        .consumeInventoryItem(((ItemGun) player.inventory.getCurrentItem()
                                                .getItem()).ammo);
                            }
                        }
                        ((ItemGun) this.player.inventory.getCurrentItem()
                                .getItem()).curBullet += count_delete;

                        DivPlayer.get(player).reloade = 0;
                        ((ItemGun) player.inventory.getCurrentItem()
                                .getItem()).reload = false;
                    }

                }
[merge_posts_bbcode]Добавлено: 18.06.2016 18:23:23[/merge_posts_bbcode]

Возможно ли что int количества патрон в оружии распрасраняется на весь тип оружия, а не на одно которое в руке?
 

timaxa007

Модератор
5,831
409
672
Какие модификаторы у переменной curBullet в классе ItemGun?
 
61
0
К стате, у меня здесь проверка на то сколько надо зарядить, он проверяет есть ли патроны, но Кол-во не проверяет как сделать проверку на кол-во патронов в инвентаре
[merge_posts_bbcode]Добавлено: 18.06.2016 18:32:19[/merge_posts_bbcode]

public int curBullet = 0;
 

timaxa007

Модератор
5,831
409
672
Подобное уже было:
Код:
        int count = 0;
        for (int i = 0; i < player.inventory.getSizeInventory(); ++i) {
            ItemStack item = player.inventory.getStackInSlot(i);
            if (item != null && item.getItem() == ItemsLoader.bullet) {
                count += item.stackSize;
            }
        }
        if (count > 0) {
            
        }
[merge_posts_bbcode]Добавлено: 18.06.2016 18:38:23[/merge_posts_bbcode]

Переменная нормальная, не знаю пока-что в чём проблема.
 
1,137
5
3
Хотя бы данные структурируй, так нечего нормального не выйдет
Например, так:
Есть оружие. У него есть магазин(а может и не быть). У магазина есть калибр патронов. Калибр у патронов может быть одинаковый, а вот тип патронов разный(5.56 обычные, 5.56 разрывные и тд).
Возьмём ещё один пример. Есть револьвер. У него может быть спидлоадер, а могут быть патроны. Патроны могут быть разные по урону, например. А спидлоадер по скорости перезарядки. И АК47 не существует
 
61
0
Может делать типа, Ак47 новая айди 8000 а если зарядил то 8000:1, другая уже когда зарядишь будет 8000:2Так вроде во Flans
 
7,099
324
1,510
установка нтб быстрее, чем метадаты?
 
61
0
Ребят, я закончил мод но теперь пошли краши на сервере-_-
1. KeyBinding left_button = Minecraft.getMinecraft().gameSettings.keyBindAttack;\
Это клиентская часть но мне же надо что бы и сервер видел что я кнопку нажал или нет?
 
61
0
Не вариант, отстает жестко, я думаю делать через Mouse.isButtonDown(), но тогда в инвентаре и когда чат открыт пушка стреляет как быть?
 
61
0
Mouse.isButtonDown не пашет вот краш 
Код:
Caused by: java.lang.IllegalStateException: Mouse must be created before you can poll the button state
 
Сверху