All pastes #925921 Raw Edit

Zeug

public text v1 · immutable
·published 2008-03-03 12:12 UTC
rendered paste body
        public void Fly()
        {
            FrameLock fl = new FrameLock(false);
            for (int i = 0; i < _NodeList.Count; i++)
            {
                P3d me;
                // wir haben noch kein interessantes echtes z
                P3d destNode = new P3d(TLocToCoord(_NodeList[i]).X, TLocToCoord(_NodeList[i]).Y, 0);
                richTextBox1.BeginInvoke(new UpdateTextCallback(this.UpdateText), new object[] { string.Format("Next: X: {0} Y: {1}", _NodeList[i].X, _NodeList[i].Y) });
                do
                {
                    Thread.Sleep(100);
                    fl.Lock();
                    // aktuelle position auffrischen
                    me = new P3d(isxwow.Me.X, isxwow.Me.Y, isxwow.Me.Z);
                    // finde bodenhöhe, zähle 50 yards für flughöhe drauf
                    destNode.Z = isxwow.CollisionTest(me.X, me.Y, me.Z, me.X, me.Y, 0).Z;
                    // länge der strecke von aktuellem aufenthalsort zum ziel
                    double pyth = me.Pyth(destNode.X, destNode.Y, destNode.Z);
                    // ermittlung des vektors
                    P3d vektor = new P3d(destNode.X - me.X, destNode.Y - me.Y, destNode.Z - me.Z);
                    double vektorLaenge = vektor.Pyth();
                    // umrechnung zu einheitsvektor
                    vektor.X = vektor.X / vektorLaenge;
                    vektor.Y = vektor.Y / vektorLaenge;
                    vektor.Z = vektor.Z / vektorLaenge;
                    // 35 yards oder so weiter
                    P3d zwischenPosi = new P3d(vektor.X * 300 + me.X, vektor.Y * 300 + me.Y, vektor.Z * 300 + me.Z);
                    // wenn wir übers ziel hinaus schießen, holen wir uns das reguläre ziel wieder
                    if (zwischenPosi.Pyth(me.X, me.Y, me.Z) > destNode.Pyth(me.X, me.Y, me.Z))
                        zwischenPosi = destNode;

                    // finde kollision mit zielposition
                    Point3f last = isxwow.CollisionTest(me.X, me.Y, me.Z, zwischenPosi.X, zwischenPosi.Y, zwischenPosi.Z);
                    double newZ = zwischenPosi.Z;
                    while (last.X != 0 && last.Y != 0 && last.Z != 0)
                    {
                        zwischenPosi.X = last.X + vektor.X * 10; zwischenPosi.Y = last.Y + vektor.Y * 10;
                        last = isxwow.CollisionTest(me.Y, me.Y, destNode.Z, zwischenPosi.X, zwischenPosi.Y, newZ);
                        newZ += 10;
                    }
                    isxwow.RightClickTerrain(zwischenPosi.X, zwischenPosi.Y, newZ+50);
                    richTextBox1.BeginInvoke(new UpdateTextCallback(this.UpdateText), new object[] { string.Format("newZ: {0}", newZ + 50) });
                    fl.Unlock();
                }
                while (!InInterval(me.X, destNode.X - 5, 5) && !InInterval(me.Y, destNode.Y - 5, 5));
            }
        }