Probleme mit Klassen | Bitte um Hilfe

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hey. Ich habe folgendes Problem. In meinem Script gibt es 6 Ränge. Für bestimmte Klassen benötigt man einen bestimmten Rang.


    Klasse 1 = Rank 1 benötigt


    Klasse 2 = Rank 2 benötigt


    Klasse 3 = Rank 3 benötigt


    Klasse 4 = Rank 4 benötigt


    Klasse 5 = Rank 5 benötigt


    Klasse 6 = Rank 6 benötigt


    if(PRESSED(KEY_JUMP)) // LSHIFT
    {
    if(IsPlayerChoosingClass[playerid] == 1)
    {
    if(ClassChoosingStep[playerid] == 0) // ASSAULT
    {
    gClass[playerid] = ASSAULT;
    }
    if(ClassChoosingStep[playerid] == 1) // MEDIC
    {
    if(Rank(playerid) >= 2) return SendClientMessage(playerid, C_WHITE, "Your rank is not high enough!");
    gClass[playerid] = MEDIC;
    }
    if(ClassChoosingStep[playerid] == 2) // ANTI-TANK
    {
    if(Rank(playerid) >= 3) return SendClientMessage(playerid, C_WHITE, "Your rank is not high enough!");
    gClass[playerid] = ANTI-TANK;
    }
    if(ClassChoosingStep[playerid] == 3) // ENGINEER
    {
    if(Rank(playerid) >= 4) return SendClientMessage(playerid, C_WHITE, "Your rank is not high enough!");
    gClass[playerid] = ENGINEER;
    }
    if(ClassChoosingStep[playerid] == 4) // AIRFORCE
    {
    if(Rank(playerid) >= 5) return SendClientMessage(playerid, C_WHITE, "Your rank is not high enough!");
    gClass[playerid] = AIRFORCE;
    }
    if(ClassChoosingStep[playerid] == 5) // SPECICAL-OPS
    {
    if(Rank(playerid) >= 6) return SendClientMessage(playerid, C_WHITE, "Your rank is not high enough!");
    gClass[playerid] = SPEC-OPS;
    }


    wenn ich es so mache, dann habe ich folgendes Problem ---> Ich kann nun mit Rang 1 nur Klasse 1 wählen was ja so noch stimmt, mit Rang 2 kann ich Klasse 1 und 2 wählen - stimmt auch noch. Bin ich aber Rang 3, kann ich nur noch Klasse 1 und 3 wählen aber bei Klasse 2 sagt er mir dann: Your rank is not high enough!


    Das Selbe wenn ich Rang 4 bin. Dann kann ich noch Klasse 1 und 4 wählen - Klasse 2 und 3 gibt dann wieder die Fehlermeldung dass mein Rang nicht hoch genug sei.


    Man kann dann immer nur noch Klasse 1 wählen. Und die Klasse für den Rang, welchen man grade besitzt. Die Klassen dazwischen geben dann immer eine Fehlermeldung :S




    Ich hoffe jemand kann mir dabei helfen


    mfG
    wagi

  • if(Rank(playerid) >= 3)
    ^ entspricht "Wenn Spieler Rank 3 oder höher" und das hast du bei Klasse 2 drin stehen.
    Also wenn der Spieler Rank 3, 4, 5, 6 ist, darf er die Klasse 2, 3, 4, 5 nicht verwenden - das entnehme ich zumindest aus dem Codeschnipsel - und ich vermute, dass dieses Verhalten ungewollt ist. :)

    Ich bin Dittis Signatur.

  • if(Rank(playerid) >= 3)
    ^ entspricht "Wenn Spieler Rank 3 oder höher" und das hast du bei Klasse 2 drin stehen.
    Also wenn der Spieler Rank 3, 4, 5, 6 ist, darf er die Klasse 2, 3, 4, 5 nicht verwenden - das entnehme ich zumindest aus dem Codeschnipsel - und ich vermute, dass dieses Verhalten ungewollt ist. :)


    es beginnt im script ja mit klasse 0 :/

  • Denke auch, dass du in deinen If-Clauses wohl eher ein kleiner-gleich (<=) statt größer-gleich (>=) haben wolltest.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • dann könnte vom sinn her jemand mit Rang 1 Klasse 6 wählen oder? ^^


    so passiert genau das selbe :/


    if(PRESSED(KEY_JUMP)) // LSHIFT
    {
    if(IsPlayerChoosingClass[playerid] == 1)
    {
    if(ClassChoosingStep[playerid] == 0) // ASSAULT
    {
    gClass[playerid] = ASSAULT;
    }
    if(ClassChoosingStep[playerid] == 1) // MEDIC
    {
    if(Rank(playerid) != 2) return SendClientMessage(playerid, C_WHITE, "Your rank is not high enough!");
    gClass[playerid] = MEDIC;
    }
    if(ClassChoosingStep[playerid] == 2) // ANTI-TANK
    {
    if(Rank(playerid) != 3) return SendClientMessage(playerid, C_WHITE, "Your rank is not high enough!");
    gClass[playerid] = ANTI-TANK;
    }
    if(ClassChoosingStep[playerid] == 3) // ENGINEER
    {
    if(Rank(playerid) != 4) return SendClientMessage(playerid, C_WHITE, "Your rank is not high enough!");
    gClass[playerid] = ENGINEER;
    }
    if(ClassChoosingStep[playerid] == 4) // AIRFORCE
    {
    if(Rank(playerid) != 5) return SendClientMessage(playerid, C_WHITE, "Your rank is not high enough!");
    gClass[playerid] = AIRFORCE;
    }
    if(ClassChoosingStep[playerid] == 5) // SPECICAL-OPS
    {
    if(Rank(playerid) != 6) return SendClientMessage(playerid, C_WHITE, "Your rank is not high enough!");
    gClass[playerid] = SPEC-OPS;
    }

  • Nein.


    Momentan sieht es so aus.


    Wenn Spieler Klasse 6 wählt und sein Rang größer oder gleich 6 ist, verbietet das Script ihm das "Your rank is not high enough"


    Und genau das muss andersrum.


    Wenn Spieler Klasse 6 wählt und sein Rang kleiner als 6 / kleiner oder gleich 5 ist, verbietet ihm das Script das "your rank is not high enough"


    ;)


    // Edit: So muss er den EXAKTEN Rang haben um die Klasse wählen zu können. Sprich: Klasse 1 nur für Rang 1, Klasse 2 nur für Rang 2 etc.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'