Welcome on MasterOf13FPS! MasterOf13FPS

Register today or sign up if you are already a member and never miss any cool content again :)

zum Target drehen bevor man schlägt

MasterOf13FPS

Administrator
Staff member
Administrator
MasterOf13FPS
Joined
Jul 11, 2020
Messages
0
Reaction score
25
Points
0
Hey, bin neu in Sachen coden usw. Ich versuche gerade eine Killaura zu coden und habe soweit alles, aber mein Spieler schaut nicht das Ziel an sondern schlägt mit dem Rücken auf das Entity ein. Kann mir wer am besten nen Src code geben und vllt dies erklären damit ich daraus lernen kann?
Danke im Voraus
 
Hey, bin neu in Sachen coden usw. Ich versuche gerade eine Killaura zu coden und habe soweit alles, aber mein Spieler schaut nicht das Ziel an sondern schlägt mit dem Rücken auf das Entity ein. Kann mir wer am besten nen Src code geben und vllt dies erklären damit ich daraus lernen kann?
Danke im Voraus
[HIDE]
da brauchst du ein Raycast! ich benutze den von mc
net.minecraft.client.renderer.EntityRenderer -> getMouseOver

Code:
    public static Entity rayTrace(float yaw, float pitch, double range) {
        Entity entity = getMc().getRenderViewEntity();

        if (entity != null && getWorld() != null) {
            getMc().pointedEntity = null;
            double d0 = range;
            float partialTicks = 1.0F;
            getMc().objectMouseOver = entity.rayTrace(d0, partialTicks);
            double d1 = d0;
            Vec3 vec3 = entity.getPositionEyes(partialTicks);

            Vec3 vec31 = getPlayer().getVectorForRotation(pitch, yaw);
            Vec3 vec32 = vec3.addVector(vec31.xCoord * d0, vec31.yCoord * d0, vec31.zCoord * d0);
            Entity pointedEntity = null;
            Vec3 vec33 = null;
            float f = 1.0F;
            List list = getWorld().getEntitiesInAABBexcluding(entity,
                    entity.getEntityBoundingBox().addCoord(vec31.xCoord * d0, vec31.yCoord * d0, vec31.zCoord * d0)
                            .expand((double) f, (double) f, (double) f),
                    Predicates.and(EntitySelectors.NOT_SPECTATING, new EntityRenderer1(getMc().entityRenderer)));
            double d2 = d1;

            for (int i = 0; i < list.size(); ++i) {
                Entity entity1 = (Entity) list.get(i);
                float f1 = entity1.getCollisionBorderSize();
                AxisAlignedBB axisalignedbb = entity1.getEntityBoundingBox().expand((double) f1, (double) f1,
                        (double) f1);
                MovingObjectPosition movingobjectposition = axisalignedbb.calculateIntercept(vec3, vec32);

                if (axisalignedbb.isVecInside(vec3)) {
                    if (d2 >= 0.0D) {
                        pointedEntity = entity1;
                        vec33 = movingobjectposition == null ? vec3 : movingobjectposition.hitVec;
                        d2 = 0.0D;
                    }
                } else if (movingobjectposition != null) {
                    double d3 = vec3.distanceTo(movingobjectposition.hitVec);

                    if (d3 < d2 || d2 == 0.0D) {
                        boolean flag2 = false;

                        if (Reflector.ForgeEntity_canRiderInteract.exists()) {
                            flag2 = Reflector.callBoolean(entity1, Reflector.ForgeEntity_canRiderInteract,
                                    new Object[0]);
                        }

                        if (entity1 == entity.ridingEntity && !flag2) {
                            if (d2 == 0.0D) {
                                pointedEntity = entity1;
                                vec33 = movingobjectposition.hitVec;
                            }
                        } else {
                            pointedEntity = entity1;
                            vec33 = movingobjectposition.hitVec;
                            d2 = d3;
                        }
                    }
                }
            }

            if (pointedEntity != null && (d2 < d1 || getMc().objectMouseOver == null)) {
                getMc().objectMouseOver = new MovingObjectPosition(pointedEntity, vec33);

                if (pointedEntity instanceof EntityLivingBase || pointedEntity instanceof EntityItemFrame) {
                    return pointedEntity;
                }
            }
        }
        return null;
    }
in der killaura dann so :
Code:
sendPacket(new C02PacketUseEntity(raycast.getValue() ? RaycastUtil.rayTrace(this.yaw, this.pitch, range.getValue()) : target, C02PacketUseEntity.Action.ATTACK));
bei mir ist der raycast einstellbar so wird das entity nur attackt wenn du drauf schaust
wenn du weitere hilfe brauchst melde dich bei mir :D
[/HIDE]
 
***Hidden content cannot be quoted.***
Wtf. Er hat nicht nach einem "Raycast" gefragt. Sondern nach ner rotation. Außerdem sag nicht du hättest es aus der mc klasse. Du hast es auch geskiddet.
Hey, bin neu in Sachen coden usw. Ich versuche gerade eine Killaura zu coden und habe soweit alles, aber mein Spieler schaut nicht das Ziel an sondern schlägt mit dem Rücken auf das Entity ein. Kann mir wer am besten nen Src code geben und vllt dies erklären damit ich daraus lernen kann?
Danke im Voraus
Du musst einfach nur die Winkel zu deinem gegner berechnen. Hier ein Yt video zu trigonometrie die du dazu brauchst.
Es gibt viele Videos dazu. Schau dir einfach irgendeins an, hauptsache du verstehst es. Vielleicht hast du es ja sogar schon in der Schule gemacht
Wenn du code brauchst, um dich zu orientieren, gibt es in der entityliving klasse eine methode namens "faceEntity". Am Ende musst du nur noch deine berechneten werte dem spieler direkt zuweisen mit
Code:
Minecraft.getMinecraft().thePlayer.rotationYaw = <dein berechneter x wert>
und
Code:
Minecraft.getMinecraft().thePlayer.rotationPitch= <dein berechneter y wert>
Wenn du es nicht haben willst, dass man selbst sieht wie sich der spieler dreht, dann musst du die Packets manipulieren die der client an den server schickt. Glaube waren die c03 packets.
 
Wtf. Er hat nicht nach einem "Raycast" gefragt. Sondern nach ner rotation. Außerdem sag nicht du hättest es aus der mc klasse. Du hast es auch geskiddet.

Du musst einfach nur die Winkel zu deinem gegner berechnen. Hier ein Yt video zu trigonometrie die du dazu brauchst.
Es gibt viele Videos dazu. Schau dir einfach irgendeins an, hauptsache du verstehst es. Vielleicht hast du es ja sogar schon in der Schule gemacht
Wenn du code brauchst, um dich zu orientieren, gibt es in der entityliving klasse eine methode namens "faceEntity". Am Ende musst du nur noch deine berechneten werte dem spieler direkt zuweisen mit
Code:
Minecraft.getMinecraft().thePlayer.rotationYaw = <dein berechneter x wert>
und
Code:
Minecraft.getMinecraft().thePlayer.rotationPitch= <dein berechneter y wert>
Wenn du es nicht haben willst, dass man selbst sieht wie sich der spieler dreht, dann musst du die Packets manipulieren die der client an den server schickt. Glaube waren die c03 packets.
ich hab die sache falsch verstanden aber
1. der raycast kommt aus der mc src
2. wir sind hier in java skidding und er hat nach src gefragt und nach einer erklährung(die hast du gegeben) @Reaper wenn du dir mal den src anschauen willst hier:
[HIDE]
Code:
    public static float[] faceEntity(Entity entityIn) {
        double xDiff = entityIn.posX - getPlayer().posX;
        double zDiff = entityIn.posZ - getPlayer().posZ;
        double yDiff;
        if (entityIn instanceof EntityLivingBase) {
            EntityLivingBase entitylivingbase = (EntityLivingBase) entityIn;
            yDiff = entityIn.posY + (double) entityIn.getEyeHeight() - (getPlayer().posY  + (double) getPlayer().getEyeHeight());
        } else {
            yDiff = (entityIn.getEntityBoundingBox().minY + entityIn.getEntityBoundingBox().maxY) / 2.0D - (getPlayer().posY + (double) getPlayer().getEyeHeight());
        }
        double dist = (double) MathHelper.sqrt_double(xDiff * xDiff + zDiff * zDiff);
        float yaw = (float) (MathHelper.func_181159_b(zDiff, xDiff) * 180.0D / Math.PI) - 90.0F;
        float pitch = (float) (-(MathHelper.func_181159_b(yDiff, dist) * 180.0D / Math.PI));
        return new float[]{yaw, pitch + 12.0f};
    }
dieser code kommt übrigens auch aus der mc src net.minecraft.entity.EntityLiving -> faceEntity
[/HIDE]
 
ich hab die sache falsch verstanden aber
1. der raycast kommt aus der mc src
2. wir sind hier in java skidding und er hat nach src gefragt und nach einer erklährung(die hast du gegeben) @Reaper wenn du dir mal den src anschauen willst hier:
***Hidden content cannot be quoted.***
ich weiß nicht ob du lesen kannst aber ich hab ihm gesagt wo er den source code findet
 
ich weiß nicht ob du lesen kannst aber ich hab ihm gesagt wo er den source code findet
Ich kann lesen ich habe ihm legentlich den fertigen SRC gegen und habe angemerkt das der Code der aus der mc SRC ist. Ich finde das mein Code aber verständlicher ist da die Variablen auch nach ihrer Funktion benannt sind.
 
Ich kann lesen ich habe ihm legentlich den fertigen SRC gegen und habe angemerkt das der Code der aus der mc SRC ist. Ich finde das mein Code aber verständlicher ist da die Variablen auch nach ihrer Funktion benannt sind.
Und wie kommst du darauf die Werte als ein float array zurück zu geben?
 
Und wie kommst du darauf die Werte als ein float array zurück zu geben?
man im float array mehrere werte abspeichern was praktischer ist da ich ja einen yaw und pitch wert habe und ich die dann nicht einzeln getten muss sondern einfach mit rotations[0] drauf zugreifen kann.
 
Wtf. Er hat nicht nach einem "Raycast" gefragt. Sondern nach ner rotation. Außerdem sag nicht du hättest es aus der mc klasse. Du hast es auch geskiddet.

Du musst einfach nur die Winkel zu deinem gegner berechnen. Hier ein Yt video zu trigonometrie die du dazu brauchst.
Es gibt viele Videos dazu. Schau dir einfach irgendeins an, hauptsache du verstehst es. Vielleicht hast du es ja sogar schon in der Schule gemacht
Wenn du code brauchst, um dich zu orientieren, gibt es in der entityliving klasse eine methode namens "faceEntity". Am Ende musst du nur noch deine berechneten werte dem spieler direkt zuweisen mit
Code:
Minecraft.getMinecraft().thePlayer.rotationYaw = <dein berechneter x wert>
und
Code:
Minecraft.getMinecraft().thePlayer.rotationPitch= <dein berechneter y wert>
Wenn du es nicht haben willst, dass man selbst sieht wie sich der spieler dreht, dann musst du die Packets manipulieren die der client an den server schickt. Glaube waren die c03 packets.
Da fließt wesentlich mehr ein als die Grundlagen der Trigonometrie
 
Da fließt wesentlich mehr ein als die Grundlagen der Trigonometrie
xDDDD Was denn genau? Das enzige was man braucht sind die Winkelfunktionen im rechtwinkligen Dreieick
 
Wtf. Er hat nicht nach einem "Raycast" gefragt. Sondern nach ner rotation. Außerdem sag nicht du hättest es aus der mc klasse. Du hast es auch geskiddet.

Du musst einfach nur die Winkel zu deinem gegner berechnen. Hier ein Yt video zu trigonometrie die du dazu brauchst.
Es gibt viele Videos dazu. Schau dir einfach irgendeins an, hauptsache du verstehst es. Vielleicht hast du es ja sogar schon in der Schule gemacht
Wenn du code brauchst, um dich zu orientieren, gibt es in der entityliving klasse eine methode namens "faceEntity". Am Ende musst du nur noch deine berechneten werte dem spieler direkt zuweisen mit
Code:
Minecraft.getMinecraft().thePlayer.rotationYaw = <dein berechneter x wert>
und
Code:
Minecraft.getMinecraft().thePlayer.rotationPitch= <dein berechneter y wert>
Wenn du es nicht haben willst, dass man selbst sieht wie sich der spieler dreht, dann musst du die Packets manipulieren die der client an den server schickt. Glaube waren die c03 packets.


Vielen Dank, hat mir sehr weiter geholfen, versuche es dann jetzt mal ^^
 
shape1
shape2
shape3
shape4
shape5
shape6
Back
Top