Гайд Пишем свой первый хак на майнкрафт проекты.

Начинающий
Статус
Оффлайн
Регистрация
11 Окт 2019
Сообщения
3
Реакции[?]
0
Поинты[?]
0
Выдаёт ошибку "
FAILURE: Build failed with an exception.



* What went wrong:

Could not determine java version from '11.0.1'.



* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output."
Разобрался! Если у кого такая же проблема напишу как решить
 
AGGRESSIVE ØŊE ŁØVE
Начинающий
Статус
Оффлайн
Регистрация
4 Фев 2019
Сообщения
193
Реакции[?]
19
Поинты[?]
0
Не проще кинуть ссылку на какой-нибудь гайд по написанию читов с ютуба, чем писать целую огромную тему после которой все равно у новичков останутся вопросы... Понимаю гайд по написанию длл для подгрузки классов читпука в сам миникруфт это уже другое дело.
 
Новичок
Статус
Оффлайн
Регистрация
6 Фев 2021
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Новичок
Статус
Оффлайн
Регистрация
18 Апр 2021
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Выдаёт ошибку "
FAILURE: Build failed with an exception.



* What went wrong:

Could not determine java version from '11.0.1'.



* Try:

Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output."
Разобрался! Если у кого такая же проблема напишу как решить
Как же?
 
Новичок
Статус
Оффлайн
Регистрация
29 Янв 2021
Сообщения
1
Реакции[?]
0
Поинты[?]
0
Итак,всем привет.Некоторые очень хотят написать хакес на майнкрафт(с модами тем более),но на ру просторах про это нет не слова.Что ж,вы нашли то что нужно.В первом треде мы напишем мод который можно будет поставить на проекты с модами(ебать умно однако),но и это не всё.
Советую не листать иначе вы нихуя не поймете.
Начнем с самого первого вопроса:
На чём будем писать то ебана? - Eclipse IDEA
На какую версию? - 1.7.10(самая оптимальная для модов.не вижу смысла суваться дальше)
Мы обойдем анти чит? - Да.В следуйщем треде(если он будет) обойдем kinetic говно анти чит который сделан для бомже проектов.
Какие функции будут в нашем говне? - WH,KillAura,Fly,Step.
Ладно,приступим.

Step 1: 1-3 хуйня
Качаем JDK.
Step 2:
Качаем ремапнутые сорцы майна(
Пожалуйста, авторизуйтесь для просмотра ссылки.
1.7.10)
Step 3:
Делаем среду разработки.
*Про сетап IDE можно найти всё тут
Step 4: Делаем мейн класс
*Небольшое отступление*
Я вам разжую всё по максимуму.Если и после этого у вас будут вопросы,то лучше не пишите читы пока что..

Итак у нас есть IDE и полностью декомпилированный Minecraft.
И что теперь нам делать с этой информацией?
Заходим в Eclipse и делаем Package(обычно ваш регион(ru).ваш ник(sharlize).Ваш чит(simplecheat).*В java принято имя package писать исключительно в нижнем регистре.у вас не полетят ерроры если будет апперкейс,но всё же лучше не выебыватся*
Создаем класс Main *В java классы называются с апперкейс буквы*
Итак,у нас есть главный класс.Что с ним можно сделать?
Ну например мы хотим зарегестрировать наш хак(я не написал Event класс ибо вы бы нихуя не поняли)
Мы свапаем строку после пакета и пишем
Java:
package ru.sharlize.simplecheat;

import cpw.mods.fml.common.Mod;

@Mod(modid = "SimpleCheat", name = "SC", version = "1.0.0")
public class MainC {

}
Что ж,мы сделали наш Mod и теперь Forge видит наш хак.Что дальше то блять?мы делаем *абстрактный главный класс функции от которого в скоре будет наследованы наши другие функции.
*нахуя мне это надо?*
Я не буду затирать про ооп,просто хочу сказать что это будет очень удобно в итоговой реализации.
Итак,вот "структура" нашего чита:

Java:
package ru.sharlize.simplecheat;

public abstract class SimpleFunc {
    public SimpleFunc(String name, int keybind)
    {
        this.name = name;
        this.keybind = keybind;
    }
    private boolean active;
    private String name;
    private int keybind;
    public String getName()
    {
        return name;
    }
    public int getKeyBind()
    {
        return keybind;
    }
    public boolean getActive()
    {
        return active;
    }
    public void setToggle()
    {
        if(active)
        {
            onDisable();
        } else {
            onEnable();
        }
        this.active = !active;
    }
    public void setStatus(boolean value)
    {
        this.active = value;
    }
    public void setKeyBind(int keybind)
    {
        this.keybind = keybind;
    }
    /*on Event*/
    public void onTick() {}
    public void onPreRender() {}
    public void onPostRender() {}
    public void onDisable() {}
    public void onEnable() {}
}
Что же это значит?Пробежимся с самого начала.Если вы не знаете Java хоть чуть чуть(конструктор класса хотя бы),то закрывайте тред и идите учить жабу.Это очень легко и полезно.
В конструкторе класса мы указали типы "String" и "int".Значит у класса наследника(? extends SimpleFunc) должен быть такой же конструктор с такими же параметрами.
В качестве параметра String идет название функции,а int -*Отступление почему int идет как кнопка бинда
В Java есть класс KeyBoard в котором все "кнопки" идут типом int.*
KeyBind нашей функции.
Теперь когда у нас есть Simple функция можно сделать ArrayList(лист с классами функций).
Делаем вот такой вот "код"
public static ArrayList<SimpleFunc> func = new ArrayList<SimpleFunc>();
и пихаем его в главный класс.
Теперь можно вызывать ВСЕ наши функции которые добавлены в лист "func".
Зачем это нам?
Допустим мы хотим вызывать в TickEvent(в тик майна) все наши функции.
Делаем класс с эвентами + проверку на нажатие кнопки *active | noactive.
Код:
package ru.sharlize.simplecheat;

import org.lwjgl.input.Keyboard;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import net.minecraft.client.Minecraft;

public class SimpleEvent {
    @SubscribeEvent
    public void onTick(TickEvent.ClientTickEvent event)
    {
        if(Minecraft.getMinecraft().thePlayer == null)
        {
            return;
        }
        for(SimpleFunc sf : MainC.func)
        {
            if(sf.getActive())
            {
                sf.onTick();
            }
            if(isKeyBindDown(sf.getKeyBind()))
            {
                if(Minecraft.getMinecraft().currentScreen != null)
                {
                    return;
                }
                sf.setToggle();
                break;
            }
        }
    }
    public boolean isKeyBindDown(int key) {
        if (Keyboard.isKeyDown(key) != keyStates[key])
        {
            return keyStates[key] = !keyStates[key];
        } else {
            return false;
        }
    }

    private boolean keyStates[] = new boolean[256];
    @SubscribeEvent
    public void onPost(RenderPlayerEvent.Post event)
    {
        for(SimpleFunc sf : MainC.func)
        {
            if(sf.getActive())
            {
                sf.onPostRender();
            }
        }
    }
    @SubscribeEvent
    public void onPost(RenderPlayerEvent.Pre event)
    {
        for(SimpleFunc sf : MainC.func)
        {
            if(sf.getActive())
            {
                sf.onPreRender();
            }
        }
    }
}
Можете поразбирать код,всё должно быть максимально понятным.
Ну ладно,перейдем к самому сладкому,к функциям.
Первым думаю сделать Step как самое легкое.
Создаем класс *функцию*

Код:
package ru.sharlize.simplecheat;

import org.lwjgl.input.Keyboard;

import net.minecraft.client.Minecraft;

public class Step extends SimpleFunc {
    public Step()
    {
        super("Step", Keyboard.KEY_I);
    }
}
Оверрайдим метод из супер класса("перехватываем" метод из класса SimpleFunc)
И слушаем внимательно.
Так как нам нужно заменить параметр stepHeight в игроке это нам нужно вызвать всего лишь 1 раз.
@Override
public void onEnable()
{
Minecraft.getMinecraft().thePlayer.stepHeight = 150;
}
@Override
public void onDisable()
{
Minecraft.getMinecraft().thePlayer.stepHeight = 1;
}
*Опять же отступление*
Вообще в майнкрафте очень много чего можно разрыть если интересно.
Для получения всех методов и полей допустим из мира(кроме private,и то java#Reflect и на это хуй ложил) нужно написать
Minecraft.getMinecraft().theWorld
Допустим вам нужно получить всех прогруженных энтити.
Пишите Minecraft.getMinecraft().theWorld.loadedEntityList и все прогруженные энтити у вас в ваших руках в формате пнг(List).
Ладно,вот наша первая функция и готова.
Теперь перейдем к флаю.У флая в майнкрафте очень много реализаций,но я покажу две.
Самая легкая:
Код:
package ru.sharlize.simplecheat;
import org.lwjgl.input.Keyboard;
import net.minecraft.client.Minecraft;
public class Fly extends SimpleFunc {
    public Fly()
    {
        super("Fly", Keyboard.KEY_K);
    }
    @Override
    public void onEnable()
    {
        Minecraft.getMinecraft().thePlayer.capabilities.allowFlying = true;
    }
    @Override
    public void onDisable()
    {
        Minecraft.getMinecraft().thePlayer.capabilities.allowFlying = false;
    }
}
Потруднее это когда нужно сделать обход для проекта.
Java:
    @Override
    public void onTick()
    {
        if(Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed())
        {
            Minecraft.getMinecraft().thePlayer.motionY =+ 0.05F;
        } else {
            Minecraft.getMinecraft().thePlayer.motionY =- 0.05F;
        }
        if(Minecraft.getMinecraft().gameSettings.keyBindSneak.getIsKeyPressed())
        {
            Minecraft.getMinecraft().thePlayer.motionY =- 0.1F;
        }
    }
WARNING!!!!
Заметьте,тут мы уже используем onTick,т.к motionY это параметр который будет меняться во время выполнения функции(мы будем менять).

KillAura..Ухх бля как звучит опасно,но на самом деле если не ебаться то 1 строчка кода..Смешно даже как то.
Код:
@Override

    public void onTick()

    {

        for (Iterator i = Minecraft.getMinecraft().theWorld.loadedEntityList.iterator(); i.hasNext();) {

            Object o = i.next();

            if(o instanceof EntityPlayer)

            {

                EntityPlayer ep = (EntityPlayer) o;

                if(!(ep instanceof EntityPlayerSP))

                {

                    Minecraft.getMinecraft().playerController.attackEntity(Minecraft.getMinecraft().thePlayer, ep);

                }

            }

        }

}
Ключевой строчкой,а именно методом станет attackEntity с параметром EntityPlayer(нашего плеера) и Entity(игрока которого хотим ударить).

И последняя функция - вх.
package ru.sharlize.simplecheat;

import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;

public class WallHack extends SimpleFunc {
public WallHack()
{
super("WH", Keyboard.KEY_M);
}
@Override
public void onPostRender()
{
GL11.glDisable(32823);
GL11.glPolygonOffset(1.0F, 1100000.0F);
GL11.glEnable(2896);
}
@Override
public void onPreRender()
{
GL11.glEnable(32823);
GL11.glPolygonOffset(1.0F, -1100000.0F);
GL11.glDisable(2896);
}
}
Тут думаю просто вам нужно почитать про GL11,ибо по другому тут не объяснить.

И наконец легендарная строчка(и) кода в Main классе
Код:
@Mod.EventHandler
public void init(FMLInitializationEvent event)
{
        MinecraftForge.EVENT_BUS.register(new SimpleEvent());
        FMLCommonHandler.instance().bus().register(new SimpleEvent());
        addFunc();
}
public void addFunc()
{
    func.add(new Fly());
    func.add(new WallHack());
    func.add(new Step());
    func.add(new KillAura());
}
Скачать весь код -
Пожалуйста, авторизуйтесь для просмотра ссылки.


Credits: WendoX
Второго треда скорее всего не будет,а хотя,кто меня знает..
сурсы по сылки в пизду ушли
 
KidauStep
Забаненный
Статус
Оффлайн
Регистрация
31 Окт 2020
Сообщения
324
Реакции[?]
54
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
на 1.8.8 есть?
 
Начинающий
Статус
Оффлайн
Регистрация
3 Янв 2022
Сообщения
2
Реакции[?]
0
Поинты[?]
0
Не мог ли бы ты кинуть весь проект целиком, т.к. у меня непонятные ошибки и я слишком туп чтоб их разобрать
 
Забаненный
Статус
Оффлайн
Регистрация
2 Фев 2021
Сообщения
453
Реакции[?]
82
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Не мог ли бы ты кинуть весь проект целиком, т.к. у меня непонятные ошибки и я слишком туп чтоб их разобрать
Импортни все, и у тебя некоторых классов нет, лучше делать чит на мсп (modcoderpack) который имеет больше возможностей, и материалов по нему больше
 
Начинающий
Статус
Оффлайн
Регистрация
26 Авг 2021
Сообщения
2
Реакции[?]
0
Поинты[?]
0
Это мод или dll чит? Просто в этом не разбираюсь ( к сожалению), а инфы нигде нету (
 
Забаненный
Статус
Оффлайн
Регистрация
2 Фев 2021
Сообщения
453
Реакции[?]
82
Поинты[?]
3K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
2 Апр 2022
Сообщения
6
Реакции[?]
0
Поинты[?]
0
Итак,всем привет.Некоторые очень хотят написать хакес на майнкрафт(с модами тем более),но на ру просторах про это нет не слова.Что ж,вы нашли то что нужно.В первом треде мы напишем мод который можно будет поставить на проекты с модами(ебать умно однако),но и это не всё.
Советую не листать иначе вы нихуя не поймете.
Начнем с самого первого вопроса:
На чём будем писать то ебана? - Eclipse IDEA
На какую версию? - 1.7.10(самая оптимальная для модов.не вижу смысла суваться дальше)
Мы обойдем анти чит? - Да.В следуйщем треде(если он будет) обойдем kinetic говно анти чит который сделан для бомже проектов.
Какие функции будут в нашем говне? - WH,KillAura,Fly,Step.
Ладно,приступим.

Step 1: 1-3 хуйня
Качаем JDK.
Step 2:
Качаем ремапнутые сорцы майна(
Пожалуйста, авторизуйтесь для просмотра ссылки.
1.7.10)
Step 3:
Делаем среду разработки.
*Про сетап IDE можно найти всё тут
Step 4: Делаем мейн класс
*Небольшое отступление*
Я вам разжую всё по максимуму.Если и после этого у вас будут вопросы,то лучше не пишите читы пока что..

Итак у нас есть IDE и полностью декомпилированный Minecraft.
И что теперь нам делать с этой информацией?
Заходим в Eclipse и делаем Package(обычно ваш регион(ru).ваш ник(sharlize).Ваш чит(simplecheat).*В java принято имя package писать исключительно в нижнем регистре.у вас не полетят ерроры если будет апперкейс,но всё же лучше не выебыватся*
Создаем класс Main *В java классы называются с апперкейс буквы*
Итак,у нас есть главный класс.Что с ним можно сделать?
Ну например мы хотим зарегестрировать наш хак(я не написал Event класс ибо вы бы нихуя не поняли)
Мы свапаем строку после пакета и пишем
Java:
package ru.sharlize.simplecheat;

import cpw.mods.fml.common.Mod;

@Mod(modid = "SimpleCheat", name = "SC", version = "1.0.0")
public class MainC {

}
Что ж,мы сделали наш Mod и теперь Forge видит наш хак.Что дальше то блять?мы делаем *абстрактный главный класс функции от которого в скоре будет наследованы наши другие функции.
*нахуя мне это надо?*
Я не буду затирать про ооп,просто хочу сказать что это будет очень удобно в итоговой реализации.
Итак,вот "структура" нашего чита:

Java:
package ru.sharlize.simplecheat;

public abstract class SimpleFunc {
    public SimpleFunc(String name, int keybind)
    {
        this.name = name;
        this.keybind = keybind;
    }
    private boolean active;
    private String name;
    private int keybind;
    public String getName()
    {
        return name;
    }
    public int getKeyBind()
    {
        return keybind;
    }
    public boolean getActive()
    {
        return active;
    }
    public void setToggle()
    {
        if(active)
        {
            onDisable();
        } else {
            onEnable();
        }
        this.active = !active;
    }
    public void setStatus(boolean value)
    {
        this.active = value;
    }
    public void setKeyBind(int keybind)
    {
        this.keybind = keybind;
    }
    /*on Event*/
    public void onTick() {}
    public void onPreRender() {}
    public void onPostRender() {}
    public void onDisable() {}
    public void onEnable() {}
}
Что же это значит?Пробежимся с самого начала.Если вы не знаете Java хоть чуть чуть(конструктор класса хотя бы),то закрывайте тред и идите учить жабу.Это очень легко и полезно.
В конструкторе класса мы указали типы "String" и "int".Значит у класса наследника(? extends SimpleFunc) должен быть такой же конструктор с такими же параметрами.
В качестве параметра String идет название функции,а int -*Отступление почему int идет как кнопка бинда
В Java есть класс KeyBoard в котором все "кнопки" идут типом int.*
KeyBind нашей функции.
Теперь когда у нас есть Simple функция можно сделать ArrayList(лист с классами функций).
Делаем вот такой вот "код"
public static ArrayList<SimpleFunc> func = new ArrayList<SimpleFunc>();
и пихаем его в главный класс.
Теперь можно вызывать ВСЕ наши функции которые добавлены в лист "func".
Зачем это нам?
Допустим мы хотим вызывать в TickEvent(в тик майна) все наши функции.
Делаем класс с эвентами + проверку на нажатие кнопки *active | noactive.
Код:
package ru.sharlize.simplecheat;

import org.lwjgl.input.Keyboard;

import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import net.minecraft.client.Minecraft;

public class SimpleEvent {
    @SubscribeEvent
    public void onTick(TickEvent.ClientTickEvent event)
    {
        if(Minecraft.getMinecraft().thePlayer == null)
        {
            return;
        }
        for(SimpleFunc sf : MainC.func)
        {
            if(sf.getActive())
            {
                sf.onTick();
            }
            if(isKeyBindDown(sf.getKeyBind()))
            {
                if(Minecraft.getMinecraft().currentScreen != null)
                {
                    return;
                }
                sf.setToggle();
                break;
            }
        }
    }
    public boolean isKeyBindDown(int key) {
        if (Keyboard.isKeyDown(key) != keyStates[key])
        {
            return keyStates[key] = !keyStates[key];
        } else {
            return false;
        }
    }

    private boolean keyStates[] = new boolean[256];
    @SubscribeEvent
    public void onPost(RenderPlayerEvent.Post event)
    {
        for(SimpleFunc sf : MainC.func)
        {
            if(sf.getActive())
            {
                sf.onPostRender();
            }
        }
    }
    @SubscribeEvent
    public void onPost(RenderPlayerEvent.Pre event)
    {
        for(SimpleFunc sf : MainC.func)
        {
            if(sf.getActive())
            {
                sf.onPreRender();
            }
        }
    }
}
Можете поразбирать код,всё должно быть максимально понятным.
Ну ладно,перейдем к самому сладкому,к функциям.
Первым думаю сделать Step как самое легкое.
Создаем класс *функцию*

Код:
package ru.sharlize.simplecheat;

import org.lwjgl.input.Keyboard;

import net.minecraft.client.Minecraft;

public class Step extends SimpleFunc {
    public Step()
    {
        super("Step", Keyboard.KEY_I);
    }
}
Оверрайдим метод из супер класса("перехватываем" метод из класса SimpleFunc)
И слушаем внимательно.
Так как нам нужно заменить параметр stepHeight в игроке это нам нужно вызвать всего лишь 1 раз.
@Override
public void onEnable()
{
Minecraft.getMinecraft().thePlayer.stepHeight = 150;
}
@Override
public void onDisable()
{
Minecraft.getMinecraft().thePlayer.stepHeight = 1;
}
*Опять же отступление*
Вообще в майнкрафте очень много чего можно разрыть если интересно.
Для получения всех методов и полей допустим из мира(кроме private,и то java#Reflect и на это хуй ложил) нужно написать
Minecraft.getMinecraft().theWorld
Допустим вам нужно получить всех прогруженных энтити.
Пишите Minecraft.getMinecraft().theWorld.loadedEntityList и все прогруженные энтити у вас в ваших руках в формате пнг(List).
Ладно,вот наша первая функция и готова.
Теперь перейдем к флаю.У флая в майнкрафте очень много реализаций,но я покажу две.
Самая легкая:
Код:
package ru.sharlize.simplecheat;
import org.lwjgl.input.Keyboard;
import net.minecraft.client.Minecraft;
public class Fly extends SimpleFunc {
    public Fly()
    {
        super("Fly", Keyboard.KEY_K);
    }
    @Override
    public void onEnable()
    {
        Minecraft.getMinecraft().thePlayer.capabilities.allowFlying = true;
    }
    @Override
    public void onDisable()
    {
        Minecraft.getMinecraft().thePlayer.capabilities.allowFlying = false;
    }
}
Потруднее это когда нужно сделать обход для проекта.
Java:
    @Override
    public void onTick()
    {
        if(Minecraft.getMinecraft().gameSettings.keyBindJump.getIsKeyPressed())
        {
            Minecraft.getMinecraft().thePlayer.motionY =+ 0.05F;
        } else {
            Minecraft.getMinecraft().thePlayer.motionY =- 0.05F;
        }
        if(Minecraft.getMinecraft().gameSettings.keyBindSneak.getIsKeyPressed())
        {
            Minecraft.getMinecraft().thePlayer.motionY =- 0.1F;
        }
    }
WARNING!!!!
Заметьте,тут мы уже используем onTick,т.к motionY это параметр который будет меняться во время выполнения функции(мы будем менять).

KillAura..Ухх бля как звучит опасно,но на самом деле если не ебаться то 1 строчка кода..Смешно даже как то.
Код:
@Override

    public void onTick()

    {

        for (Iterator i = Minecraft.getMinecraft().theWorld.loadedEntityList.iterator(); i.hasNext();) {

            Object o = i.next();

            if(o instanceof EntityPlayer)

            {

                EntityPlayer ep = (EntityPlayer) o;

                if(!(ep instanceof EntityPlayerSP))

                {

                    Minecraft.getMinecraft().playerController.attackEntity(Minecraft.getMinecraft().thePlayer, ep);

                }

            }

        }

}
Ключевой строчкой,а именно методом станет attackEntity с параметром EntityPlayer(нашего плеера) и Entity(игрока которого хотим ударить).

И последняя функция - вх.
package ru.sharlize.simplecheat;

import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.GL11;

import net.minecraft.client.Minecraft;

public class WallHack extends SimpleFunc {
public WallHack()
{
super("WH", Keyboard.KEY_M);
}
@Override
public void onPostRender()
{
GL11.glDisable(32823);
GL11.glPolygonOffset(1.0F, 1100000.0F);
GL11.glEnable(2896);
}
@Override
public void onPreRender()
{
GL11.glEnable(32823);
GL11.glPolygonOffset(1.0F, -1100000.0F);
GL11.glDisable(2896);
}
}
Тут думаю просто вам нужно почитать про GL11,ибо по другому тут не объяснить.

И наконец легендарная строчка(и) кода в Main классе
Код:
@Mod.EventHandler
public void init(FMLInitializationEvent event)
{
        MinecraftForge.EVENT_BUS.register(new SimpleEvent());
        FMLCommonHandler.instance().bus().register(new SimpleEvent());
        addFunc();
}
public void addFunc()
{
    func.add(new Fly());
    func.add(new WallHack());
    func.add(new Step());
    func.add(new KillAura());
}
Скачать весь код -
Пожалуйста, авторизуйтесь для просмотра ссылки.


Credits: WendoX
Второго треда скорее всего не будет,а хотя,кто меня знает..
сделай гайд на создание гост клиента плиз
 
Забаненный
Статус
Оффлайн
Регистрация
10 Янв 2023
Сообщения
29
Реакции[?]
8
Поинты[?]
6K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Сверху Снизу