Исходник Target perl в 6 раз лучше

Начинающий
Статус
Оффлайн
Регистрация
23 Июн 2023
Сообщения
379
Реакции[?]
2
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Как и обещал . В серьёз не воспринимать... Хотя мб норм
Код:
package ru.test.functions.impl.combat;

import com.google.common.eventbus.Subscribe;
import ru.test.events.WorldEvent;
import ru.test.functions.api.Category;
import ru.test.functions.api.Function;
import ru.wery.functions.api.FunctionRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EnderPearlEntity;
import net.minecraft.item.Items;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.Hand;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;

import java.util.List;
import java.util.stream.Collectors;

@FunctionRegister(name = "TargetPearl", type = Category.Render)
public class TargetPearl extends Function {

    private long lastPearlThrowTime = 0;
    private static final int PEARL_THROW_DELAY = 350; // Задержка броска перла в миллисекундах

    @Subscribe
    public void onRender(WorldEvent event) {
        if (System.currentTimeMillis() - lastPearlThrowTime < PEARL_THROW_DELAY) {
            return; // Если задержка ещё не прошла, выходим из метода
        }

        List<EnderPearlEntity> enderPearls = mc.world.getAllEntities().stream()
                .filter(entity -> entity instanceof EnderPearlEntity)
                .map(entity -> (EnderPearlEntity) entity)
                .filter(pearl -> !isOwnEnderPearl(pearl))
                .collect(Collectors.toList());

        for (EnderPearlEntity pearl : enderPearls) {
            Vector3d targetPos = predictPearlLanding(pearl);

            if (targetPos != null) {
                aimAtPosition(targetPos);
                throwPearl();
                lastPearlThrowTime = System.currentTimeMillis();
                break; // Бросаем только один перл за цикл
            }
        }
    }

    private void aimAtPosition(Vector3d targetPos) {
        Vector3d playerPos = mc.player.getPositionVec().add(0, mc.player.getEyeHeight(), 0);
        Vector3d direction = targetPos.subtract(playerPos).normalize();

        float pitch = (float) -Math.toDegrees(Math.asin(direction.y));
        float yaw = (float) Math.toDegrees(Math.atan2(direction.z, direction.x)) - 90;

        mc.player.rotationPitch = pitch;
        mc.player.rotationYaw = yaw;
    }

    private void throwPearl() {
        if (mc.player.getCooldownTracker().hasCooldown(Items.ENDER_PEARL)) {
            return; // Если перл на перезарядке, не бросаем
        }

        if (mc.player.getHeldItemMainhand().getItem() != Items.ENDER_PEARL) {
            // Если в основной руке нет перла, пытаемся найти его в инвентаре
            int pearlSlot = findItemInHotbar(Items.ENDER_PEARL);
            if (pearlSlot != -1) {
                mc.player.inventory.currentItem = pearlSlot;
            } else {
                return; // Если перлов нет, выходим из метода
            }
        }

        mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
        mc.player.swingArm(Hand.MAIN_HAND);
    }

    private int findItemInHotbar(Item item) {
        for (int i = 0; i < 9; i++) {
            if (mc.player.inventory.getStackInSlot(i).getItem() == item) {
                return i;
            }
        }
        return -1; // Предмет не найден
    }

    private Vector3d predictPearlLanding(EnderPearlEntity pearl) {
        Vector3d position = pearl.getPositionVec();
        Vector3d motion = pearl.getMotion();
        RayTraceContext context = new RayTraceContext(
                position,
                position.add(motion.scale(50)), // Прогнозируем на расстояние 50 блоков
                RayTraceContext.BlockMode.COLLIDER,
                RayTraceContext.FluidMode.NONE,
                pearl
        );

        BlockRayTraceResult result = mc.world.rayTraceBlocks(context);
        if (result.getType() == RayTraceResult.Type.BLOCK) {
            return result.getHitVec(); // Возвращаем точку столкновения с блоком
        }
        return null; // Если столкновения нет, возвращаем null
    }

    private boolean isOwnEnderPearl(EnderPearlEntity pearl) {
        return pearl.getThrowerId() != null && pearl.getThrowerId().equals(mc.player.getUniqueID());
    }
}
 
Read Only
Статус
Оффлайн
Регистрация
19 Июл 2024
Сообщения
207
Реакции[?]
0
Поинты[?]
0
Как и обещал . В серьёз не воспринимать... Хотя мб норм
Код:
package ru.test.functions.impl.combat;

import com.google.common.eventbus.Subscribe;
import ru.test.events.WorldEvent;
import ru.test.functions.api.Category;
import ru.test.functions.api.Function;
import ru.wery.functions.api.FunctionRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EnderPearlEntity;
import net.minecraft.item.Items;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.Hand;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;

import java.util.List;
import java.util.stream.Collectors;

@FunctionRegister(name = "TargetPearl", type = Category.Render)
public class TargetPearl extends Function {

    private long lastPearlThrowTime = 0;
    private static final int PEARL_THROW_DELAY = 350; // Задержка броска перла в миллисекундах

    @Subscribe
    public void onRender(WorldEvent event) {
        if (System.currentTimeMillis() - lastPearlThrowTime < PEARL_THROW_DELAY) {
            return; // Если задержка ещё не прошла, выходим из метода
        }

        List<EnderPearlEntity> enderPearls = mc.world.getAllEntities().stream()
                .filter(entity -> entity instanceof EnderPearlEntity)
                .map(entity -> (EnderPearlEntity) entity)
                .filter(pearl -> !isOwnEnderPearl(pearl))
                .collect(Collectors.toList());

        for (EnderPearlEntity pearl : enderPearls) {
            Vector3d targetPos = predictPearlLanding(pearl);

            if (targetPos != null) {
                aimAtPosition(targetPos);
                throwPearl();
                lastPearlThrowTime = System.currentTimeMillis();
                break; // Бросаем только один перл за цикл
            }
        }
    }

    private void aimAtPosition(Vector3d targetPos) {
        Vector3d playerPos = mc.player.getPositionVec().add(0, mc.player.getEyeHeight(), 0);
        Vector3d direction = targetPos.subtract(playerPos).normalize();

        float pitch = (float) -Math.toDegrees(Math.asin(direction.y));
        float yaw = (float) Math.toDegrees(Math.atan2(direction.z, direction.x)) - 90;

        mc.player.rotationPitch = pitch;
        mc.player.rotationYaw = yaw;
    }

    private void throwPearl() {
        if (mc.player.getCooldownTracker().hasCooldown(Items.ENDER_PEARL)) {
            return; // Если перл на перезарядке, не бросаем
        }

        if (mc.player.getHeldItemMainhand().getItem() != Items.ENDER_PEARL) {
            // Если в основной руке нет перла, пытаемся найти его в инвентаре
            int pearlSlot = findItemInHotbar(Items.ENDER_PEARL);
            if (pearlSlot != -1) {
                mc.player.inventory.currentItem = pearlSlot;
            } else {
                return; // Если перлов нет, выходим из метода
            }
        }

        mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
        mc.player.swingArm(Hand.MAIN_HAND);
    }

    private int findItemInHotbar(Item item) {
        for (int i = 0; i < 9; i++) {
            if (mc.player.inventory.getStackInSlot(i).getItem() == item) {
                return i;
            }
        }
        return -1; // Предмет не найден
    }

    private Vector3d predictPearlLanding(EnderPearlEntity pearl) {
        Vector3d position = pearl.getPositionVec();
        Vector3d motion = pearl.getMotion();
        RayTraceContext context = new RayTraceContext(
                position,
                position.add(motion.scale(50)), // Прогнозируем на расстояние 50 блоков
                RayTraceContext.BlockMode.COLLIDER,
                RayTraceContext.FluidMode.NONE,
                pearl
        );

        BlockRayTraceResult result = mc.world.rayTraceBlocks(context);
        if (result.getType() == RayTraceResult.Type.BLOCK) {
            return result.getHitVec(); // Возвращаем точку столкновения с блоком
        }
        return null; // Если столкновения нет, возвращаем null
    }

    private boolean isOwnEnderPearl(EnderPearlEntity pearl) {
        return pearl.getThrowerId() != null && pearl.getThrowerId().equals(mc.player.getUniqueID());
    }
}
где оно кому то нужно?
где оно лучше?
чат гпт != в 6 раз лучше дефолт кода
 
Начинающий
Статус
Оффлайн
Регистрация
11 Май 2024
Сообщения
111
Реакции[?]
0
Поинты[?]
0
Как и обещал . В серьёз не воспринимать... Хотя мб норм
Код:
package ru.test.functions.impl.combat;

import com.google.common.eventbus.Subscribe;
import ru.test.events.WorldEvent;
import ru.test.functions.api.Category;
import ru.test.functions.api.Function;
import ru.wery.functions.api.FunctionRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EnderPearlEntity;
import net.minecraft.item.Items;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.Hand;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;

import java.util.List;
import java.util.stream.Collectors;

@FunctionRegister(name = "TargetPearl", type = Category.Render)
public class TargetPearl extends Function {

    private long lastPearlThrowTime = 0;
    private static final int PEARL_THROW_DELAY = 350; // Задержка броска перла в миллисекундах

    @Subscribe
    public void onRender(WorldEvent event) {
        if (System.currentTimeMillis() - lastPearlThrowTime < PEARL_THROW_DELAY) {
            return; // Если задержка ещё не прошла, выходим из метода
        }

        List<EnderPearlEntity> enderPearls = mc.world.getAllEntities().stream()
                .filter(entity -> entity instanceof EnderPearlEntity)
                .map(entity -> (EnderPearlEntity) entity)
                .filter(pearl -> !isOwnEnderPearl(pearl))
                .collect(Collectors.toList());

        for (EnderPearlEntity pearl : enderPearls) {
            Vector3d targetPos = predictPearlLanding(pearl);

            if (targetPos != null) {
                aimAtPosition(targetPos);
                throwPearl();
                lastPearlThrowTime = System.currentTimeMillis();
                break; // Бросаем только один перл за цикл
            }
        }
    }

    private void aimAtPosition(Vector3d targetPos) {
        Vector3d playerPos = mc.player.getPositionVec().add(0, mc.player.getEyeHeight(), 0);
        Vector3d direction = targetPos.subtract(playerPos).normalize();

        float pitch = (float) -Math.toDegrees(Math.asin(direction.y));
        float yaw = (float) Math.toDegrees(Math.atan2(direction.z, direction.x)) - 90;

        mc.player.rotationPitch = pitch;
        mc.player.rotationYaw = yaw;
    }

    private void throwPearl() {
        if (mc.player.getCooldownTracker().hasCooldown(Items.ENDER_PEARL)) {
            return; // Если перл на перезарядке, не бросаем
        }

        if (mc.player.getHeldItemMainhand().getItem() != Items.ENDER_PEARL) {
            // Если в основной руке нет перла, пытаемся найти его в инвентаре
            int pearlSlot = findItemInHotbar(Items.ENDER_PEARL);
            if (pearlSlot != -1) {
                mc.player.inventory.currentItem = pearlSlot;
            } else {
                return; // Если перлов нет, выходим из метода
            }
        }

        mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
        mc.player.swingArm(Hand.MAIN_HAND);
    }

    private int findItemInHotbar(Item item) {
        for (int i = 0; i < 9; i++) {
            if (mc.player.inventory.getStackInSlot(i).getItem() == item) {
                return i;
            }
        }
        return -1; // Предмет не найден
    }

    private Vector3d predictPearlLanding(EnderPearlEntity pearl) {
        Vector3d position = pearl.getPositionVec();
        Vector3d motion = pearl.getMotion();
        RayTraceContext context = new RayTraceContext(
                position,
                position.add(motion.scale(50)), // Прогнозируем на расстояние 50 блоков
                RayTraceContext.BlockMode.COLLIDER,
                RayTraceContext.FluidMode.NONE,
                pearl
        );

        BlockRayTraceResult result = mc.world.rayTraceBlocks(context);
        if (result.getType() == RayTraceResult.Type.BLOCK) {
            return result.getHitVec(); // Возвращаем точку столкновения с блоком
        }
        return null; // Если столкновения нет, возвращаем null
    }

    private boolean isOwnEnderPearl(EnderPearlEntity pearl) {
        return pearl.getThrowerId() != null && pearl.getThrowerId().equals(mc.player.getUniqueID());
    }
}
/del
 
Начинающий
Статус
Оффлайн
Регистрация
23 Июн 2023
Сообщения
379
Реакции[?]
2
Поинты[?]
0
Написан под полным курированием чата gpt
За-то лучше чем у типа, кстати, у меня есть таргет перл как в квике, но Вам солью только такую шляпу
Оно работает? Да.
Оно кому-то нужно? Да.
Вопросы??
Во, спасибо браток
Бритис, прежде чёто булькать, слей хоть что-то сам годное во истину
 
Забаненный
Статус
Оффлайн
Регистрация
27 Май 2024
Сообщения
262
Реакции[?]
10
Поинты[?]
10K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как и обещал . В серьёз не воспринимать... Хотя мб норм
Код:
package ru.test.functions.impl.combat;

import com.google.common.eventbus.Subscribe;
import ru.test.events.WorldEvent;
import ru.test.functions.api.Category;
import ru.test.functions.api.Function;
import ru.wery.functions.api.FunctionRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EnderPearlEntity;
import net.minecraft.item.Items;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.Hand;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;

import java.util.List;
import java.util.stream.Collectors;

@FunctionRegister(name = "TargetPearl", type = Category.Render)
public class TargetPearl extends Function {

    private long lastPearlThrowTime = 0;
    private static final int PEARL_THROW_DELAY = 350; // Задержка броска перла в миллисекундах

    @Subscribe
    public void onRender(WorldEvent event) {
        if (System.currentTimeMillis() - lastPearlThrowTime < PEARL_THROW_DELAY) {
            return; // Если задержка ещё не прошла, выходим из метода
        }

        List<EnderPearlEntity> enderPearls = mc.world.getAllEntities().stream()
                .filter(entity -> entity instanceof EnderPearlEntity)
                .map(entity -> (EnderPearlEntity) entity)
                .filter(pearl -> !isOwnEnderPearl(pearl))
                .collect(Collectors.toList());

        for (EnderPearlEntity pearl : enderPearls) {
            Vector3d targetPos = predictPearlLanding(pearl);

            if (targetPos != null) {
                aimAtPosition(targetPos);
                throwPearl();
                lastPearlThrowTime = System.currentTimeMillis();
                break; // Бросаем только один перл за цикл
            }
        }
    }

    private void aimAtPosition(Vector3d targetPos) {
        Vector3d playerPos = mc.player.getPositionVec().add(0, mc.player.getEyeHeight(), 0);
        Vector3d direction = targetPos.subtract(playerPos).normalize();

        float pitch = (float) -Math.toDegrees(Math.asin(direction.y));
        float yaw = (float) Math.toDegrees(Math.atan2(direction.z, direction.x)) - 90;

        mc.player.rotationPitch = pitch;
        mc.player.rotationYaw = yaw;
    }

    private void throwPearl() {
        if (mc.player.getCooldownTracker().hasCooldown(Items.ENDER_PEARL)) {
            return; // Если перл на перезарядке, не бросаем
        }

        if (mc.player.getHeldItemMainhand().getItem() != Items.ENDER_PEARL) {
            // Если в основной руке нет перла, пытаемся найти его в инвентаре
            int pearlSlot = findItemInHotbar(Items.ENDER_PEARL);
            if (pearlSlot != -1) {
                mc.player.inventory.currentItem = pearlSlot;
            } else {
                return; // Если перлов нет, выходим из метода
            }
        }

        mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
        mc.player.swingArm(Hand.MAIN_HAND);
    }

    private int findItemInHotbar(Item item) {
        for (int i = 0; i < 9; i++) {
            if (mc.player.inventory.getStackInSlot(i).getItem() == item) {
                return i;
            }
        }
        return -1; // Предмет не найден
    }

    private Vector3d predictPearlLanding(EnderPearlEntity pearl) {
        Vector3d position = pearl.getPositionVec();
        Vector3d motion = pearl.getMotion();
        RayTraceContext context = new RayTraceContext(
                position,
                position.add(motion.scale(50)), // Прогнозируем на расстояние 50 блоков
                RayTraceContext.BlockMode.COLLIDER,
                RayTraceContext.FluidMode.NONE,
                pearl
        );

        BlockRayTraceResult result = mc.world.rayTraceBlocks(context);
        if (result.getType() == RayTraceResult.Type.BLOCK) {
            return result.getHitVec(); // Возвращаем точку столкновения с блоком
        }
        return null; // Если столкновения нет, возвращаем null
    }

    private boolean isOwnEnderPearl(EnderPearlEntity pearl) {
        return pearl.getThrowerId() != null && pearl.getThrowerId().equals(mc.player.getUniqueID());
    }
}
public static final int
 
Начинающий
Статус
Оффлайн
Регистрация
3 Июн 2024
Сообщения
33
Реакции[?]
0
Поинты[?]
0
Вопрос к людям а типо что такое Target perl и для чего оно я просто сколько играю с софтом первый раз вижу такое
 
Начинающий
Статус
Оффлайн
Регистрация
23 Июн 2023
Сообщения
379
Реакции[?]
2
Поинты[?]
0
Вопрос к людям а типо что такое Target perl и для чего оно я просто сколько играю с софтом первый раз вижу такое
само откидывает парку, за первой оппонента, эффективно на HollyWorld
 
Начинающий
Статус
Оффлайн
Регистрация
25 Янв 2024
Сообщения
347
Реакции[?]
0
Поинты[?]
1K
Как и обещал . В серьёз не воспринимать... Хотя мб норм
Код:
package ru.test.functions.impl.combat;

import com.google.common.eventbus.Subscribe;
import ru.test.events.WorldEvent;
import ru.test.functions.api.Category;
import ru.test.functions.api.Function;
import ru.wery.functions.api.FunctionRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EnderPearlEntity;
import net.minecraft.item.Items;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.RayTraceContext;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.Hand;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;

import java.util.List;
import java.util.stream.Collectors;

@FunctionRegister(name = "TargetPearl", type = Category.Render)
public class TargetPearl extends Function {

    private long lastPearlThrowTime = 0;
    private static final int PEARL_THROW_DELAY = 350; // Задержка броска перла в миллисекундах

    @Subscribe
    public void onRender(WorldEvent event) {
        if (System.currentTimeMillis() - lastPearlThrowTime < PEARL_THROW_DELAY) {
            return; // Если задержка ещё не прошла, выходим из метода
        }

        List<EnderPearlEntity> enderPearls = mc.world.getAllEntities().stream()
                .filter(entity -> entity instanceof EnderPearlEntity)
                .map(entity -> (EnderPearlEntity) entity)
                .filter(pearl -> !isOwnEnderPearl(pearl))
                .collect(Collectors.toList());

        for (EnderPearlEntity pearl : enderPearls) {
            Vector3d targetPos = predictPearlLanding(pearl);

            if (targetPos != null) {
                aimAtPosition(targetPos);
                throwPearl();
                lastPearlThrowTime = System.currentTimeMillis();
                break; // Бросаем только один перл за цикл
            }
        }
    }

    private void aimAtPosition(Vector3d targetPos) {
        Vector3d playerPos = mc.player.getPositionVec().add(0, mc.player.getEyeHeight(), 0);
        Vector3d direction = targetPos.subtract(playerPos).normalize();

        float pitch = (float) -Math.toDegrees(Math.asin(direction.y));
        float yaw = (float) Math.toDegrees(Math.atan2(direction.z, direction.x)) - 90;

        mc.player.rotationPitch = pitch;
        mc.player.rotationYaw = yaw;
    }

    private void throwPearl() {
        if (mc.player.getCooldownTracker().hasCooldown(Items.ENDER_PEARL)) {
            return; // Если перл на перезарядке, не бросаем
        }

        if (mc.player.getHeldItemMainhand().getItem() != Items.ENDER_PEARL) {
            // Если в основной руке нет перла, пытаемся найти его в инвентаре
            int pearlSlot = findItemInHotbar(Items.ENDER_PEARL);
            if (pearlSlot != -1) {
                mc.player.inventory.currentItem = pearlSlot;
            } else {
                return; // Если перлов нет, выходим из метода
            }
        }

        mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
        mc.player.swingArm(Hand.MAIN_HAND);
    }

    private int findItemInHotbar(Item item) {
        for (int i = 0; i < 9; i++) {
            if (mc.player.inventory.getStackInSlot(i).getItem() == item) {
                return i;
            }
        }
        return -1; // Предмет не найден
    }

    private Vector3d predictPearlLanding(EnderPearlEntity pearl) {
        Vector3d position = pearl.getPositionVec();
        Vector3d motion = pearl.getMotion();
        RayTraceContext context = new RayTraceContext(
                position,
                position.add(motion.scale(50)), // Прогнозируем на расстояние 50 блоков
                RayTraceContext.BlockMode.COLLIDER,
                RayTraceContext.FluidMode.NONE,
                pearl
        );

        BlockRayTraceResult result = mc.world.rayTraceBlocks(context);
        if (result.getType() == RayTraceResult.Type.BLOCK) {
            return result.getHitVec(); // Возвращаем точку столкновения с блоком
        }
        return null; // Если столкновения нет, возвращаем null
    }

    private boolean isOwnEnderPearl(EnderPearlEntity pearl) {
        return pearl.getThrowerId() != null && pearl.getThrowerId().equals(mc.player.getUniqueID());
    }
}
Бляяять а гетать кулдаун, не чатгпт забустит
 
Read Only
Статус
Оффлайн
Регистрация
31 Авг 2023
Сообщения
699
Реакции[?]
6
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Read Only
Статус
Оффлайн
Регистрация
31 Авг 2023
Сообщения
699
Реакции[?]
6
Поинты[?]
5K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
23 Июн 2023
Сообщения
379
Реакции[?]
2
Поинты[?]
0
Сверху Снизу