2016-12-04 4 views
0

私はMinecraftのために何かをコードしています...そしてGUIスケールに基づいて特定のテキストの場所を変更しようとしています...私質問は、ゲームグイスケールオフに基づいたテキストのX位置の変更に関連する...私のコードは、次のとおりです。異なる変数の値に基づく静的変数の変更(MCハッキングされたクライアントのコード化)

public int scale = Wrapper.mc.gameSettings.guiScale; 
public static int XScale = 865;{ 
if(scale == 0){ 
     int XScale = 405; 
    }else if(scale == 1){ 
     int XScale = 1835; 
    }else if(scale == 2){ 
     int XScale = 865; 
    }else if(scale == 3){ 
     int XScale = 565; 
    } 
} 

私の問題は、どんなにマイGUIスケールとは何か、のXScale変数はしていないようだということです変更、それは静的でなければならないので静的にする必要がある個々のものはレンダリングすること静的にする...だから静的でないようにする...そしてレンダリングクラスでスタティックにする...取得するアイディア?

--- EDIT --- 私は@AntonHが役に立たなかったと言いました...結果は変わっていません...私はループの中に入れなければなりませんか?新しいコードは、次のとおりです。

public int scale = Wrapper.mc.gameSettings.guiScale; 
public static int XScale = 865;{ 
if(scale == 0){ 
     GUIIngameHook.XScale = 405; 
    }else if(scale == 1){ 
     GUIIngameHook.XScale = 1835; 
    }else if(scale == 2){ 
     GUIIngameHook.XScale = 865; 
    }else if(scale == 3){ 
     GUIIngameHook.XScale = 565; 
    } 
} 

---スクリプト全体--- これはされる方法を参考...しかし、それは...コンテキストを提供

package me.zach.frostwave.UI; 

public class GUIIngameHook { 
public static void StartHud(){ 
    renderClientName(); 
    renderCoords(); 
    renderFPS(); 
    renderMods(); 
    renderArrayList(); 
    renderModLine(); 
} 
public int scale = Wrapper.mc.gameSettings.guiScale; 
public static int XScale = 865;{ 
if(scale == 0){ 
     GUIIngameHook.XScale = 405; 
    }else if(scale == 1){ 
     GUIIngameHook.XScale = 1835; 
    }else if(scale == 2){ 
     GUIIngameHook.XScale = 865; 
    }else if(scale == 3){ 
     GUIIngameHook.XScale = 565; 
    } 
} 


public static void renderClientName() { 
    Wrapper.fr.drawString("Frost Wave [MCV: 1.10, V: 0.05A]", 5, 5, 0x0011FF); 
    FrostWave.Frostwave.getGuiManager().renderPinned(); 
    FrostWave.Frostwave.getGuiManager().update(); 
} 

public static void renderFPS() { 
    Wrapper.fr.drawStringWithShadow("[FPS:" + Wrapper.mc.getDebugFPS() + "]", 5, 15, 0x7AA7FF); 
    FrostWave.Frostwave.getGuiManager().renderPinned(); 
    FrostWave.Frostwave.getGuiManager().update(); 
} 

public static void renderCoords() { 
    Wrapper.fr.drawStringWithShadow("[Coords: X: " + (int) Wrapper.mc.thePlayer.posX + " Y: " + (int) Wrapper.mc.thePlayer.posY + " Z: " + (int) Wrapper.mc.thePlayer.posZ + "]" , 5, 25, 0x10F0DA); 
    FrostWave.Frostwave.getGuiManager().renderPinned(); 
    FrostWave.Frostwave.getGuiManager().update(); 
} 
public static void renderMods() { 
    Wrapper.fr.drawString(" [Active Mods]" , XScale, 5, 0x5A47FF); 
    FrostWave.Frostwave.getGuiManager().renderPinned(); 
    FrostWave.Frostwave.getGuiManager().update(); 
} 
public static void renderModLine() { 
    Wrapper.fr.drawString("-------------" , XScale, 11, 0x5A47FF); 
    FrostWave.Frostwave.getGuiManager().renderPinned(); 
    FrostWave.Frostwave.getGuiManager().update(); 
} 

public static void renderArrayList() { 
    int yCount = 17; 
    for(Module m : FrostWave.manager.activeModules){ 
     m.onRender(); 

     if(m.getState() && !m.isCategory(Category.GUI)){ 
      Wrapper.fr.drawString(m.getName(), XScale, yCount, m.getColor()); 
      yCount = yCount + 10; 
     } 
    } 
} } 

答えて

1

多分それは

public static int XScale = 865;{ 
if(scale == 0){ 
     int XScale = 405; 
    }else if(scale == 1){ 
     int XScale = 1835; 
    }else if(scale == 2){ 
     int XScale = 865; 
    }else if(scale == 3){ 
     int XScale = 565; 
    } 
} 

public static int XScale = 865; 

static { 
    switch (scale) { 
    case 0: 
     XScale = 405; 
     break; 
    case 1: 
     XScale = 1835; 
     break; 
    case 3: 
     XScale = 565; 
     break; 
    } 
} 

staticブロックを使用してであるべき。

+0

申し訳ありませんが、私はこれを打つつもりです...このコードは静的変数を修飾子として受け取り、GUIスケールをベースコードとし、その値に応じて別のものを実行します...これは素晴らしいif文? – 2VeryIcey

+0

これを入れると、スケール変数を静的変数に変更する必要があります。これによって、スケール変数も同様に変更されなくなりますか? – 2VeryIcey

+0

'switch'文は、ある変数の値に基づいてコードブロックを実行する方法です。ですから、そうです、それは素晴らしいifのようなものです。 'if'よりはるかに制限されていますが、この場合は読みやすくなります。 – Gabriel

0

たぶんからの最初のコードを変更する必要がありますわかりませんこの:それに

if(scale == 0){ 
    int XScale = 405; 
}else if(scale == 1){ 
    int XScale = 1835; 
}else if(scale == 2){ 
    int XScale = 865; 
}else if(scale == 3){ 
    int XScale = 565; 
} 

if(scale == 0){ 
    XScale = 405; 
}else if(scale == 1){ 
    XScale = 1835; 
}else if(scale == 2){ 
    XScale = 865; 
}else if(scale == 3){ 
    XScale = 565; 
} 
+0

申し訳ありませんが、それはショットを与えるでしょう – 2VeryIcey

+0

それは動作していないようです...私は実際に何を示すビデオを作るようにしたいですか? – 2VeryIcey

+0

あなたの問題を完全に解決していないとしても、この答えはあなたのコードで明らかな問題を解決します。外側の 'XScale'に値を代入するのではなく、' XScale'という新しい変数を作成しています。 – Gabriel

関連する問題