C# değişken değerler ve değer atama

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üye
Katılım
27 Ara 2015
Mesajlar
37
Tepki puanı
1
Ödüller
9
10 HİZMET YILI
2 farklı değişken değer mevcut örneğin x ve y değeri x her değiştiğinde y değerinin tek tek x değerini almasını istiyorum buna uygun bir kod yazabilir misin.

TEK SIKINTI WriteMemory satırında direk mobx - plx yazılıyor ben bunu tek tek 1 1 1 olarak eklenmesini istiyorum.

C# KODLARIM BURDA

C#:
      if (test.Checked)
            {
                float PlayerX = m.ReadFloat(Farm.plX);
                ycord.Text = PlayerX.ToString() + "/"();
                float MobX = m.ReadFloat(Farm.mobX);
                xcord.Text = MobX.ToString() + "/"();
                {
                    if (MobX > 0)
                    {
                        m.WriteMemory(Farm.plX, "float", MobX.ToString());
                    }
                }

Şöyle diyelim:
2 farklı değer var
X: 1150
Y: 1130
Y değerinin X değerine 1131 1132 1133 1134 olarak X değerine tek tek eşitlenmesini istiyorum.
Ama şöyle bir durum daha var
X : 1150
Y: 1190
Eğer Y değeri X değerinden küçükse bu seferde eksi olarak düşmesi gerekiyor.
Varmı aklında bir fikiri olan.
 
Słyszę, słyszę letni powiew.
Kurucu
Katılım
20 Haz 2015
Mesajlar
7,666
Çözümler
136
Tepki puanı
20,724
Ödüller
25
10 HİZMET YILI
Y değerini X değerine tek tek eşitlenmesini istiyorum diyorsun da bunlar tek frame de gerçekleşiyor, sonuç olarak Y değerini X değerine setlemiş olucaksın ? Amacını tam olarak söylersen yardımcı olabilirim. Muhtemelen MT2 ile uğraşıyorsun. Amacın mob'a ya da metin'e karakteri yürütmek mi, yoksa ışınlanmak mı ?
 
Üye
Katılım
27 Ara 2015
Mesajlar
37
Tepki puanı
1
Ödüller
9
10 HİZMET YILI
Y değerini X değerine tek tek eşitlenmesini istiyorum diyorsun da bunlar tek frame de gerçekleşiyor, sonuç olarak Y değerini X değerine setlemiş olucaksın ? Amacını tam olarak söylersen yardımcı olabilirim. Muhtemelen MT2 ile uğraşıyorsun. Amacın mob'a ya da metin'e karakteri yürütmek mi, yoksa ışınlanmak mı ?
Merhaba sayın adminim öncelikle cevap verdiğiniz için teşekkür ederim.

Ben ışınlamak istiyorum ama serverlerde ışınlanma engeli olduğu için birden teleport atınca geri geliyor ben hedefe tek tek götürerek onun önüne geçmek istiyorum.
 
Słyszę, słyszę letni powiew.
Kurucu
Katılım
20 Haz 2015
Mesajlar
7,666
Çözümler
136
Tepki puanı
20,724
Ödüller
25
10 HİZMET YILI
Merhaba sayın adminim öncelikle cevap verdiğiniz için teşekkür ederim.

Ben ışınlamak istiyorum ama serverlerde ışınlanma engeli olduğu için birden teleport atınca geri geliyor ben hedefe tek tek götürerek onun önüne geçmek istiyorum.
Anladım, yapman gereken şey şu:
Mob'a direk ışınlanmak yerine, önce characterstate packet'i yollaman gerekmektedir. Character state packetini yolladıktan sonra mob'a ışınlanabilirsin. Bu sayede seni normaldeki gibi direkt geri atmaz.
Ama eğer mesafe çok uzak olursa, bu sefer state packet'i yollasan bile yine seni geri atacaktır. Bundan dolayı target mob'unun pozisyonuyla senin pozisyonun arasındaki noktaları belirli mesafede itere edip her nokta için state packet'i yollayıp teker teker ışınlanman gerekmekte.

Kafanda fikir oluşması için bugün attığım şu posta bakabilirsin:
https://memoryhackers.org/konular/olympos2-basit-teleport-bot-source.251804/post-4920114

İki nokta arasındaki noktaları hesaplamak için
Bağlantıları görmek için lütfen Giriş Yap
kullanabilirsin.
C++:
__forceinline std::vector<TPixelPosition> DivideTwoPointsByDistanceBresenham(int distance, TPixelPosition pointStart, TPixelPosition pointEnd)
{
    std::vector<TPixelPosition> points;
    int x1 = pointStart.x, y1 = pointStart.y;
    int x2 = pointEnd.x, y2 = pointEnd.y;
    int dx = abs(x2 - x1);
    int dy = abs(y2 - y1);
    int x = x1, y = y1;
    int px = x2 > x1 ? 1 : -1, py = y2 > y1 ? 1 : -1;
    int dist = 0;
    if (dx >= dy) {
        for (int i = 0; i <= dx; i++) {
            if (dist >= distance) {
                dist = 0;
                points.push_back({ (float)x, (float)y });
            }
            x += px;
            dist += dy;
            if (dist >= dx) {
                dist -= dx;
                y += py;
            }
        }
    }
    else {
        for (int i = 0; i <= dy; i++) {
            if (dist >= distance) {
                dist = 0;
                points.push_back({ (float)x, (float)y });
            }
            y += py;
            dist += dx;
            if (dist >= dy) {
                dist -= dy;
                x += px;
            }
        }
    }
    points.push_back({ (float)x2, (float)y2 });
    return points;
}

C# kullandığından ve muhtemelen portlarken sıkıntı yaşayacağından, buyur seni bu dertten kurtarayım. @baba4507
C#:
using System.Collections.Generic;

class TPixelPosition {
    public float x, y, z;

    public TPixelPosition(float x, float y, float z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }
}

class LineDivider {
    public static List<TPixelPosition> DivideTwoPointsByDistanceBresenham(int distance, TPixelPosition pointStart, TPixelPosition pointEnd) {
        List<TPixelPosition> points = new List<TPixelPosition>();
        int x1 = (int)pointStart.x, y1 = (int)pointStart.y;
        int x2 = (int)pointEnd.x, y2 = (int)pointEnd.y;
        int dx = Math.Abs(x2 - x1);
        int dy = Math.Abs(y2 - y1);
        int x = x1, y = y1;
        int px = x2 > x1 ? 1 : -1, py = y2 > y1 ? 1 : -1;
        int dist = 0;
        if (dx >= dy) {
            for (int i = 0; i <= dx; i++) {
                if (dist >= distance) {
                    dist = 0;
                    points.Add(new TPixelPosition(x, y, 0));
                }
                x += px;
                dist += dy;
                if (dist >= dx) {
                    dist -= dx;
                    y += py;
                }
            }
        } else {
            for (int i = 0; i <= dy; i++) {
                if (dist >= distance) {
                    dist = 0;
                    points.Add(new TPixelPosition(x, y, 0));
                }
                y += py;
                dist += dx;
                if (dist >= dy) {
                    dist -= dy;
                    x += px;
                }
            }
        }
        points.Add(new TPixelPosition(x2, y2, 0));
        return points;
    }
}
 
Son düzenleme:
potential zero
Ultra Üye
Katılım
9 Ocak 2018
Mesajlar
1,557
Çözümler
2
Tepki puanı
341
Ödüller
9
Yaş
23
8 HİZMET YILI
Anladım, yapman gereken şey şu:
Mob'a direk ışınlanmak yerine, önce characterstate packet'i yollaman gerekmektedir. Character state packetini yolladıktan sonra mob'a ışınlanabilirsin. Bu sayede seni normaldeki gibi direkt geri atmaz.
Ama eğer mesafe çok uzak olursa, bu sefer state packet'i yollasan bile yine seni geri atacaktır. Bundan dolayı target mob'unun pozisyonuyla senin pozisyonun arasındaki noktaları belirli mesafede itere edip her nokta için state packet'i yollayıp teker teker ışınlanman gerekmekte.

Kafanda fikir oluşması için bugün attığım şu posta bakabilirsin:
https://memoryhackers.org/konular/olympos2-basit-teleport-bot-source.251804/post-4920114

İki nokta arasındaki noktaları hesaplamak için
Bağlantıları görmek için lütfen Giriş Yap
kullanabilirsin.
C++:
__forceinline std::vector<TPixelPosition> DivideTwoPointsByDistanceBresenham(int distance, TPixelPosition pointStart, TPixelPosition pointEnd)
{
    std::vector<TPixelPosition> points;
    int x1 = pointStart.x, y1 = pointStart.y;
    int x2 = pointEnd.x, y2 = pointEnd.y;
    int dx = abs(x2 - x1);
    int dy = abs(y2 - y1);
    int x = x1, y = y1;
    int px = x2 > x1 ? 1 : -1, py = y2 > y1 ? 1 : -1;
    int dist = 0;
    if (dx >= dy) {
        for (int i = 0; i <= dx; i++) {
            if (dist >= distance) {
                dist = 0;
                points.push_back({ (float)x, (float)y });
            }
            x += px;
            dist += dy;
            if (dist >= dx) {
                dist -= dx;
                y += py;
            }
        }
    }
    else {
        for (int i = 0; i <= dy; i++) {
            if (dist >= distance) {
                dist = 0;
                points.push_back({ (float)x, (float)y });
            }
            y += py;
            dist += dx;
            if (dist >= dy) {
                dist -= dy;
                x += px;
            }
        }
    }
    points.push_back({ (float)x2, (float)y2 });
    return points;
}

C# kullandığından ve muhtemelen portlarken sıkıntı yaşayacağından, buyur seni bu dertten kurtarayım. @baba4507
C#:
using System.Collections.Generic;

class TPixelPosition {
    public float x, y, z;

    public TPixelPosition(float x, float y, float z) {
        this.x = x;
        this.y = y;
        this.z = z;
    }
}

class LineDivider {
    public static List<TPixelPosition> DivideTwoPointsByDistanceBresenham(int distance, TPixelPosition pointStart, TPixelPosition pointEnd) {
        List<TPixelPosition> points = new List<TPixelPosition>();
        int x1 = (int)pointStart.x, y1 = (int)pointStart.y;
        int x2 = (int)pointEnd.x, y2 = (int)pointEnd.y;
        int dx = Math.Abs(x2 - x1);
        int dy = Math.Abs(y2 - y1);
        int x = x1, y = y1;
        int px = x2 > x1 ? 1 : -1, py = y2 > y1 ? 1 : -1;
        int dist = 0;
        if (dx >= dy) {
            for (int i = 0; i <= dx; i++) {
                if (dist >= distance) {
                    dist = 0;
                    points.Add(new TPixelPosition(x, y, 0));
                }
                x += px;
                dist += dy;
                if (dist >= dx) {
                    dist -= dx;
                    y += py;
                }
            }
        } else {
            for (int i = 0; i <= dy; i++) {
                if (dist >= distance) {
                    dist = 0;
                    points.Add(new TPixelPosition(x, y, 0));
                }
                y += py;
                dist += dx;
                if (dist >= dy) {
                    dist -= dy;
                    x += px;
                }
            }
        }
        points.Add(new TPixelPosition(x2, y2, 0));
        return points;
    }
}
yürüyemiyo, ❤️'tan yürüyemiyooooo.
 
Üye
Katılım
28 Eki 2020
Mesajlar
8
Tepki puanı
0
Ödüller
3
Yaş
28
5 HİZMET YILI
Y değerinin her seferinde X değerine tek tek eşitlenmesini sağlamak için bir döngü kullanabilirsiniz. Örneğin, X değeri 1150 ve Y değeri 1130 olduğunda aşağıdaki kodu kullanabilirsiniz

for(int i = 0; i < (Y - X); i++)
{
m.WriteMemory(Farm.plX, "float", (X + i).ToString());
}

Eğer Y değeri X değerinden küçükse, aşağıdaki kodu kullanabilirsiniz

for(int i = 0; i < (X - Y); i++)
{
m.WriteMemory(Farm.plX, "float", (X - i).ToString());
}
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst