Вопрос Тх

  • Автор темы Автор темы Vizualzc
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
15 Авг 2023
Сообщения
14
Реакции
0
Сливать ли вам такой прикольненький таргетхуд?!
1743531521790.png
 
Последнее редактирование:
Скрытое содержимое
package divine.top.ui.clienthud.impl;

import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;

import divine.top.Divine;
import divine.top.events.AttackEvent;
import divine.top.events.EventRender2D;
import divine.top.ui.clienthud.updater.ElementRenderer;
import divine.top.manager.Theme;
import divine.top.utils.animations.AnimationUtility;
import divine.top.utils.animations.Direction;
import divine.top.utils.animations.impl.DecelerateAnimation;
import divine.top.utils.animations.impl.EaseBackIn;
import divine.top.manager.drag.Dragging;
import divine.top.utils.client.ClientUtility;
import divine.top.utils.client.IMinecraft;
import divine.top.utils.math.MathUtility;
import divine.top.utils.math.TimerUtility;
import divine.top.utils.math.Vector4i;
import divine.top.utils.render.color.ColorUtility;
import divine.top.utils.render.font.Fonts;
import divine.top.utils.render.other.Scissor;
import divine.top.utils.render.engine2d.RenderUtility;
import divine.top.utils.render.engine2d.RectUtility;
import divine.top.utils.render.shader.ShaderUtility;
import divine.top.utils.text.font.ClientFonts;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.scoreboard.Score;
import net.minecraft.scoreboard.ScoreObjective;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector3d;
import org.lwjgl.opengl.GL11;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class TargetHud implements ElementRenderer {
final TimerUtility timerUtility = new TimerUtility();
@Getter
final Dragging drag;
@Getter
LivingEntity entity = null;
float health = 0;
boolean allow;
private final AnimationUtility animation = new EaseBackIn(400, 1.0F, 1.0F);
private final AnimationUtility animationAlpha = new DecelerateAnimation(400, 1.0F);
float absorptionAnimation = 0.0f;
float width = 168 / 1.5f;
float height = 55 / 1.5f;

int headSize = 25;
float spacing = 5;

public void onAttack(AttackEvent e) {
if (e.entity == mc.player) {
return;
}
if (entity == null) {
return;
}
if (e.entity instanceof LivingEntity) {
for (int i = 0; i < 7; ++i) {
Divine.getInst().getModuleManager().getHud().getParticles().add(new TargetHud.HeadParticle(new Vector3d(drag.getX() + spacing + headSize / 2f, drag.getY() + spacing + headSize / 2f, 0.0)));
}
}
}

@override
public void render(EventRender2D eventRender2D) {
MatrixStack ms = eventRender2D.getMatrixStack();
entity = getTarget(entity);
float size;

boolean nigggerBotIsState = Divine.getInst().getModuleManager().getTriggerbot().isEnabled();
boolean hitAuraIsState = Divine.getInst().getModuleManager().getAttackAura().isEnabled();
boolean out = nigggerBotIsState && !hitAuraIsState ? timerUtility.isReached(500) : !allow;

Stream.of(this.animation, this.animationAlpha).forEach((a) -> a.setDuration(out ? 200 : 150));
Stream.of(this.animation, this.animationAlpha).forEach((a) -> a.setDirection(out ? Direction.BACKWARDS : Direction.FORWARDS));

if (animationAlpha.getOutput() == 0.0f) {
entity = null;
}

if (entity != null) {
String name = entity.getName().getString();

float posX = drag.getX();
float posY = drag.getY();

drag.setWidth(width);
drag.setHeight(height);
//Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));

float hp = entity.getHealth();
float maxHp = entity.getMaxHealth();
//String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();


float animationValue = (float) animation.getOutput();
float halfAnimationValueRest = (1 - animationValue) / 2f;
float testX = posX + (width * halfAnimationValueRest);
float testY = posY + (height * halfAnimationValueRest);
float testW = width * animationValue;
float testH = height * animationValue;


boolean isInvisible = entity instanceof LivingEntity && entity.isInvisible();
if (ClientUtility.isConnectedToServer("reallyworld") || ClientUtility.isConnectedToServer("funtime") || ClientUtility.isConnectedToServer("legendsgrief")) {
for (Map.Entry<ScoreObjective, Score> entry : IMinecraft.mc.world.getScoreboard().getObjectivesForEntity(entity.getName().getString()).entrySet()) {
Score score = entry.getValue();
int newHealth = score.getScorePoints();

entity.setHealth(Math.max(newHealth, 1));
}
}


GlStateManager.pushMatrix();
this.health = MathUtility.fast(this.health, MathHelper.clamp(hp / maxHp , 0.0F, 1.0F), 5.0F);
this.absorptionAnimation = MathUtility.fast(this.absorptionAnimation, MathHelper.clamp(mc.player.getAbsorptionAmount() / maxHp, 0.0F, 1.0F), 5.0F);

//height = 46 / 1.5f;
//width = 150 / 1.5f;
//headSize = 15;

this.height = 36.666668F;
this.width = 112.0F;
this.headSize = 25;
RenderUtility.drawStyledRect1(ms, posX + 0.5f, posY + 1.5f, this.width - 10, this.height - 3, 4, ColorUtility.rgba(30, 30, 30, (int) ((double) 255.0F * this.animationAlpha.getOutput())));
if (Divine.getInst().getModuleManager().getHud().particlesOnTarget.getValue()) {
for (HeadParticle p : Divine.getInst().getModuleManager().getHud().getParticles()) {
if (System.currentTimeMillis() - p.time > 2000L) {
Divine.getInst().getModuleManager().getHud().getParticles().remove(p);
}
p.update();
size = 1.0f - (float)(System.currentTimeMillis() - p.time) / 2010.0f;
RenderUtility.drawCircle((float)p.pos.x, (float)p.pos.y, 5f, ColorUtility.setAlpha(Theme.rectColor, (int)(255.0f * animationAlpha.getOutput() * size)));
RenderUtility.drawShadowCircle((float)p.pos.x, (float)p.pos.y, 6f, ColorUtility.setAlpha(Theme.rectColor, (int)(255.0f * animationAlpha.getOutput() * size)));
}
}
//drawRoundFace(eventRender2D.getMatrixStack(), posX + this.spacing, posY + this.spacing, this.headSize, (float) this.animationAlpha.getOutput(), (float) this.headSize / 2F, this.entity);
drawRoundFace(eventRender2D.getMatrixStack(), posX + this.spacing, posY + 1 + this.spacing, this.headSize, (float) this.animationAlpha.getOutput(), 4, this.entity);
Scissor.push();
Scissor.setFromComponentCoordinates(testX, testY, (double) testW - 17, testH);
Scissor.setFromComponentCoordinates(testX, testY, testW, testH);
//Fonts.montserrat.drawText(eventRender2D.getMatrixStack(), name, posX - 0.5f + headSize + spacing * 1.5f, posY + spacing, ColorUtility.rgba(228, 228, 228, (int) ((double) 255.0F * this.animationAlpha.getOutput())), 7, .07f);
Fonts.montserrat.drawText(eventRender2D.getMatrixStack(), name, posX - 0.5F + (float)this.headSize + this.spacing + this.spacing, posY + 0.5F + this.spacing, ColorUtility.rgba(228, 228, 228, (int)((double)255.0F * this.animationAlpha.getOutput())), 7.0F, 0.07F);
Scissor.unset();
Scissor.pop();
/*
int rectColor = ColorUtility.setAlpha(Theme.rectColor, (int) ((double) 255.0F * this.animationAlpha.getOutput()));
int mRectColor = ColorUtility.setAlpha(Theme.mainRectColor, (int) ((double) 255.0F * this.animationAlpha.getOutput()));
Vector4i vector4i = new Vector4i(rectColor, rectColor, mRectColor, mRectColor);
RenderUtility.drawShadow(posX + spacing, posY + height - spacing * 1.5f, (width - 0.1f - spacing * 1.5f), 9, 4, ColorUtility.rgba(37, 37, 37, (int) ((double) 255.0F * this.animationAlpha.getOutput())));
RenderUtility.drawRoundedRect(posX + spacing, posY + height - spacing * 1.5f, (width - 0.1f - spacing * 2), 9, 0, ColorUtility.rgba(37, 37, 37, (int) ((double) 255.0F * this.animationAlpha.getOutput())));
RenderUtility.drawRoundedRect(posX + spacing, posY + height - spacing * 1.5f, (width - 0.1f - spacing * 2), 9, 0, ColorUtility.rgba(40, 40, 40, (int) ((double) 255.0F * this.animationAlpha.getOutput())));
RenderUtility.drawRoundedRect(posX + spacing, posY + height - spacing * 1.5f, (width - spacing * 2) * health, 9, 0, vector4i);
RenderUtility.drawShadow(posX + spacing, posY + height - spacing * 1.5f, (width - spacing * 2 + 1.5f) * health, 9, 4, ColorUtility.setAlpha(Theme.rectColor, (int) ((double) 255 * this.animationAlpha.getOutput())), ColorUtility.setAlpha(Theme.mainRectColor, (int) ((double) 255 * this.animationAlpha.getOutput())));
Fonts.montserrat.drawCenteredText(eventRender2D.getMatrixStack(), "" + (ру), posX + 27 + headSize + spacing * 1.5f, posY + 12f + spacing * 2.5f, ColorUtility.rgb(228, 228, 228), 6.5f, .07f);

*/
int i = ColorUtility.interpolateColor(ColorUtility.rgb(42, 181, 42), ColorUtility.rgb(189, 40, 40), health + absorptionAnimation);
int i1 = ColorUtility.interpolateColor(ColorUtility.rgb(139, 150, 0), ColorUtility.rgb(236, 255, 0), health + absorptionAnimation);
int healthColor = ColorUtility.setAlpha(i, (int)((double)255.0F * this.animationAlpha.getOutput()));
int healthColor2 = ColorUtility.setAlpha(i1, (int)((double)255.0F * this.animationAlpha.getOutput()));
Vector4i vector4i = new Vector4i(ColorUtility.multDark(healthColor, 0.3F), ColorUtility.multDark(healthColor, 0.3F), healthColor, healthColor);
int healthColor1 = ColorUtility.setAlpha(i, (int)((double)70.0F * this.animationAlpha.getOutput()));
Vector4i vector4i1 = new Vector4i(ColorUtility.multDark(healthColor1, 0.3F), ColorUtility.multDark(healthColor1, 0.3F), healthColor1, healthColor1);
Vector4i vector4i2 = new Vector4i(ColorUtility.multDark(healthColor2, 0.3F), ColorUtility.multDark(healthColor2, 0.3F), healthColor2, healthColor2);
RenderUtility.drawRoundedRect(posX + 4.5F + (float)this.headSize + this.spacing, posY - 3F + this.height - this.spacing * 2.0F, (this.width - 48.0F), 8.0F, 2.5F, vector4i1);
RenderUtility.drawRoundedRect(posX + 4.5F + (float)this.headSize + this.spacing, posY - 3F + this.height - this.spacing * 2.0F, (this.width - 48.0F) * health, 8.0F, 2.5F, vector4i);
RenderUtility.drawRoundedRect(posX + 4.5F + (float)this.headSize + this.spacing, posY - 3F + this.height - this.spacing * 2.0F, (this.width - 48.0F) * absorptionAnimation, 8.0F, 2.5F, vector4i2);
String healthValue = (float) MathUtility.round(health * 20.0f + absorptionAnimation * 20, 0.1f) + "";
//String absorValue = (int) MathUtility.round(absorptionAnimation * 20.0f, 0.1f) + "";
if (isInvisible && ClientUtility.isConnectedToServer("funtime")) {
Fonts.montserrat.drawText(eventRender2D.getMatrixStack(), "Неизвестно", posX + 2.5f + headSize + spacing * 1.5f, posY + 2.5f + spacing * 2.5f, ColorUtility.rgba(228, 228, 228, (int) ((double) 255.0F * this.animationAlpha.getOutput())), 6, .06f);
} else {
Fonts.montserrat.drawText(eventRender2D.getMatrixStack(), "HP: " + (healthValue), posX + 2.5f + headSize + spacing * 1.5f, posY + 2.5f + spacing * 2.5f, ColorUtility.rgba(228, 228, 228, (int) ((double) 255.0F * this.animationAlpha.getOutput())), 6, .06f);
//Fonts.montserrat.drawText(eventRender2D.getMatrixStack(), "+ " + (absorValue), posX + 52.5f + headSize + spacing * 1.5f, posY + 2.5f + spacing * 2.5f, ColorUtility.rgba(255, 247, 0, (int) ((double) 255.0F * this.animationAlpha.getOutput())), 6, .06f);
}

/*RenderUtility.sizeAnimation(posX + 20, posY + 20, animation.getOutput());
drawItemStack(posX + 35f, posY + 14f, 8f, 0.5f);

*/


GlStateManager.popMatrix();
}
}

public static void drawRoundFace(MatrixStack matrix, float x, float y, int size, float alpha, float radius, Entity target) {
try {
if (target instanceof AbstractClientPlayerEntity player) {
float hurtPercent = ((float)player.hurtTime - (player.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0F)) / 10.0F;
ResourceLocation skin = player.getLocationSkin();
RenderSystem.enableBlend();
RenderSystem.blendFunc(770, 771);
RenderSystem.alphaFunc(516, 0.0F);
RenderSystem.enableTexture();
RenderUtility.scaleStart(x + (float)size / 2.0F, y + (float)size / 2.0F, 1.1F);
mc.getTextureManager().bindTexture(skin);
RenderSystem.color4f(1.0F, 1.0F - hurtPercent, 1.0F - hurtPercent, 1.0F);
ShaderUtility.roundedFace.attach();
ShaderUtility.roundedFace.setUniform("location", x * 2.0F, (float) Minecraft.getInstance().getMainWindow().getHeight() - (float)size * 2.0F - y * 2.0F);
ShaderUtility.roundedFace.setUniform("size", (float)size * 2.0F, (float)size * 2.0F);
ShaderUtility.roundedFace.setUniform("texture", 0);
ShaderUtility.roundedFace.setUniform("radius", radius * 2.0F);
ShaderUtility.roundedFace.setUniform("alpha", alpha);
ShaderUtility.roundedFace.setUniform("u", 0.125F);
ShaderUtility.roundedFace.setUniform("v", 0.125F);
ShaderUtility.roundedFace.setUniform("w", 0.125F);
ShaderUtility.roundedFace.setUniform("h", 0.125F);
RenderUtility.drawQuads(x, y, (float)size, (float)size, 7);
ShaderUtility.roundedFace.detach();
RenderUtility.scaleEnd();
RenderSystem.disableBlend();
} else {
RenderUtility.drawRoundedRect(x, y, (float)size, (float)size, radius, ColorUtility.rgba(20, 20, 20, (int)(60.0F * alpha)));
ClientFonts.interRegular[size * 2].drawCenteredString(matrix, "?", x + (float)size / 2.0F, y + 3.0F + (float)size / 2.0F - ClientFonts.interRegular[size * 2].getFontHeight() / 2.0F, ColorUtility.setAlpha(-1, (int)(255.0F * alpha)));
}
} catch (Exception e) {
e.printStackTrace();
}

}

private LivingEntity getTarget(LivingEntity nullTarget) {
boolean hitAuraIsState = Divine.getInst().getModuleManager().getAttackAura().isEnabled();
LivingEntity niggerBotTarget = Divine.getInst().getModuleManager().getTriggerbot().getTarget();
LivingEntity finalTarget = hitAuraIsState ? Divine.getInst().getModuleManager().getAttackAura().getTarget() : niggerBotTarget;
LivingEntity target = nullTarget;
if (finalTarget != null) {
timerUtility.reset();
allow = true;
target = finalTarget;
} else if (mc.currentScreen instanceof ChatScreen) {
timerUtility.reset();
allow = true;
target = mc.player;
} else {
allow = false;
}
return target;
}

private void drawHead(MatrixStack matrix, final Entity entity, final double x, final double y, final int size) {
if (entity instanceof AbstractClientPlayerEntity player) {
RenderSystem.enableBlend();
RenderSystem.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
RenderSystem.alphaFunc(GL11.GL_GREATER, 0);
RenderSystem.enableTexture();
mc.getTextureManager().bindTexture(player.getLocationSkin());
float hurtPercent = (player.hurtTime - (player.hurtTime != 0 ? mc.timer.renderPartialTicks : 0.0f)) / 10.0f;
RenderSystem.color4f(1, 1 - hurtPercent, 1 - hurtPercent, 1);
AbstractGui.blit(matrix, (float) x, (float) y, size, size, 4F, 4F, 4F, 4F, 32F, 32F);
RenderUtility.scaleStart((float) (x + size / 2F), (float) (y + size / 2F), 1.1F);
AbstractGui.blit(matrix, (float) x, (float) y, size, size, 20, 4, 4, 4, 32, 32);
RenderUtility.scaleEnd();
RenderSystem.disableBlend();
} else {
int color = ColorUtility.getColor(20, 128);
RectUtility.getInstance().drawRoundedRectShadowed(matrix, (float) x, (float) y, (float) (x + size), (float) (y + size), 2F, 1, color, color, color, color, false, false, true, true);
ClientFonts.interRegular[size * 2].drawCenteredString(matrix, "?", x + (size / 2F), y + 3 + (size / 2F) - (ClientFonts.interRegular[size * 2].getFontHeight() / 2F), -1);
}
}

private void drawItemStack(float x, float y, float offset, float scale) {
ArrayList<ItemStack> stackList = new ArrayList(Arrays.asList(this.entity.getHeldItemMainhand(), this.entity.getHeldItemOffhand()));
stackList.addAll((Collection)this.entity.getArmorInventoryList());
AtomicReference<Float> posX = new AtomicReference(x);
stackList.stream().filter((stack) -> {
return !stack.isEmpty();
}).forEach((stack) -> {
drawItemStack(stack, (Float)posX.getAndAccumulate(offset, Float::sum), y, true, true, scale);
});
}

public void drawItemStack(ItemStack stack, float x, float y, boolean withoutOverlay, boolean scale, float scaleValue) {
RenderSystem renderSystem = new RenderSystem();
renderSystem.pushMatrix();
renderSystem.translatef(x, y, 0.0F);
if (scale) {
GL11.glScaled(scaleValue, scaleValue, scaleValue);
}

mc.getItemRenderer().renderItemAndEffectIntoGUI(stack, 0, 0);
if (withoutOverlay) {
mc.getItemRenderer().renderItemOverlays(mc.fontRenderer, stack, 0, 0);
}

renderSystem.popMatrix();
}

/*public static boolean is(String name) {
return Divine.getInst().getModuleManager().getHud().tHudMode.is(name);
}

*/

public class FloatFormatter {
public float format(float value) {
float multiplier = (float) Math.pow(10, 1);
return Math.round(value * multiplier) / multiplier;
}
}

public static class HeadParticle {
private Vector3d pos;
private final Vector3d end;
private final long time;
private float alpha;

public HeadParticle(Vector3d pos) {
this.pos = pos;
this.end = pos.add((double)(-ThreadLocalRandom.current().nextFloat(-50.0F, 50.0F)), (double)(-ThreadLocalRandom.current().nextFloat(-70.0F, 50.0F)), (double)(-ThreadLocalRandom.current().nextFloat(-40.0F, 50.0F)));
this.time = System.currentTimeMillis();
}

public void update() {
this.alpha = MathUtility.lerp(this.alpha, 1.0F, 10.0F);
this.pos = MathUtility.fast(this.pos, this.end, 0.5F);
}
}
}

на бро!!!
Это чуть чуть не хайв...
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
$$$$$$$$$$$$$$$$$$$elfcode $$$$$$$$$$hit $$$kiding nur$ultan huent
а так простенький, адекватный тх
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ты и подобное не осилишь сделать
я базу на фабрике на 1.21.4 с нуля делаю а ты пастерюга все еще на 1.16.5 сидишь
Ахахахах покажи свой таргетхуд умный
я его еще не реализовал так как сейчас делаю гуи пон вот когда сделаю тогда покажу
ты и подобное не осилишь сделать
хахахахахха налетел хейт от 1.16.5 пастеров
 
так в чем критика простой минималистичный тх с приятным закруглением башки, и не пиздел тем что я делал это на 1.16.5 были бы сурсы я бы сделал тоже самое только на новой версии
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
LutayaPasta] так в чем критика простой минималистичный их с приятным закруглением башки написал(а):
302783[/ATTACH]
так в чем критика простой минималистичный их с приятным закруглением башки, и не оправдывался тем что я делал это на 1.16.5

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

блять ты мне поломал сообщение
 

Вложения

  • 1743534569932.png
    1743534569932.png
    7 KB · Просмотры: 19
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
я базу на фабрике на 1.21.4 с нуля делаю а ты пастерюга все еще на 1.16.5 сидишь

я его еще не реализовал так как сейчас делаю гуи пон вот когда сделаю тогда покажу

хахахахахха налетел хейт от 1.16.5 пастеров
представь себе! я сижу не на прошловековой 1.16.5, а на новенькой 1.21.1! а ты продолжай поливать хуями труд новичков и хвастаться своей полутандехрюк базой
 
Ну докажешь почему это говно а не тх
представь себе! я сижу не на прошловековой 1.16.5, а на новенькой 1.21.1! а ты продолжай поливать хуями труд новичков и хвастаться своей полутандехрюк базой
Вот именно я сделал этот тх т.к на форуме выкладывают одно говнище и хоть как то это говнище разбавить я выкладываю его
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
представь себе! я сижу не на прошловековой 1.16.5, а на новенькой 1.21.1! а ты продолжай поливать хуями труд новичков и хвастаться своей полутандехрюк базой
так на тх вообще лицензия стоит)) я ее попросту за базу боюсь брать чтобы панчур потом меня не просил сурсы слить
представь себе! я сижу не на прошловековой 1.16.5, а на новенькой 1.21.1! а ты продолжай поливать хуями труд новичков и хвастаться своей полутандехрюк базой
вероятнее всего ты на мцпшке сидишь на которой даже виавершен не сделаешь, в то время как на фабрике все удобно и просто
Ну докажешь почему это говно а не тх
однотипный тх, отличаются только цвета
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
так на тх вообще лицензия стоит)) я ее попросту за базу боюсь брать чтобы панчур потом меня не просил сурсы слить

вероятнее всего ты на мцпшке сидишь на которой даже виавершен не сделаешь, в то время как на фабрике все удобно и просто
представь себе ещё раз, я на фабрике сижу а не на мсп! а вот про тх не правда, за базу взять её может и нельзя, но спастить те же рендер системы никто не запрещает)
 
Назад
Сверху Снизу