[1.7.10] - Трабл с огнестрельным оружием

Мб на самом деле срабатывали, просто он об этом не знал xD
Без кода ничего тебе сказать не могу.
 
Agravaine написал(а):
Блин, ну я же достаю ПРЕДМЕТ В РУКЕ И ИМ СТРЕЛЯЮ, ТАК КАКОГО ФИГА ДОЛЖНЫ СТРЕЛЯТЬ ОСТАЛЬНЫЕ?
Потому-что ты достаёшь итем стак в руке, вытягиваешь из него предмет и вызываешь в Классе предмета метод, а класс предмета один на все предметы, т.к. на каждый стак нету объектов предмета, я хз как у тебя только 1 оружие стреляет :)
 
Ты дурачок или прикидываешься?
Вот метод стрельбы:
Код:
public final boolean fire(ItemStack iStack, World world, EntityPlayer player){
        if(consumeBullet(player, iStack, 1) && !world.isRemote){
            NBTTagCompound nbt = checkNBT(iStack);
            lastShot = gunCounter;
            nbt.setLong(LAST_SHOT_TAG, lastShot);
            return true;
        }

        return false;
    }

//А это когда отправляю пакет:

private void shoot(World world, EntityPlayer player){
        ItemStack iStack = player.getCurrentEquippedItem();
        if(iStack != null && iStack.getItem() instanceof ItemGun){
            ItemGun gun = (ItemGun)iStack.getItem();
            NBTTagCompound nbt = gun.checkNBT(iStack);
            if((ItemGun.gunCounter > nbt.getLong(ItemGun.LAST_SHOT_TAG) + gun.fireSpeed) && (ItemGun.gunCounter > nbt.getLong(ItemGun.LAST_RELOAD_TAG) + gun.reloadDuration)){
                if(gun.fire(iStack, world, player)){
                    System.out.println("12345");
                }
            }
        }
    }
Стреляю я ПРЕДМЕТОМ В РУКЕ!
РЕДАКТИРУЮ В НЕМ НБТ!
Что блин непонятного?
 
Терь я в край запутался... Если 1 итем на все предметы, то и срабатывать метод должен только 1 раз... Ммм...
 
При использовании NBT, получается что, взяв в руки пистолет, я стреляю, переключаюсь на автомат, стреляю, переключаюсь на пулемет, стреляю. Снова переключаюсь на пистолет и к этому времени уже готов выстрел пистолета и снова стреляю и так до бесконечности. Терминатор.

Тебе надо вынести за предмет lastShot, и время задержки между выстрелами.
При выстреле не мучать NBT, а отправлять пакет.
На стороне сервера, для КАЖДОГО игрока хранить его последний lastShot и проверять с тем временем, в который пакет пришел и если всё хорошо - производить выстрел.

Сервер должен создавать летящие пули, а не клиент...

Я делал огневую подсветку при выстреле из оружия. И у меня получалось что при выстреле, она была у всех, мне пришлось сделать дополнительную проверку на то, чей предмет мы рисуем сейчас. А также добавить переменную счетчик, которая использовалась для обозначения сколько ещё тиков отображать эффект огня из дула.
 
Назад
Сверху