Kleines Problem mit dem Menü

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
  • Nachdem ich endlich den Crash Bug behoben hab, hat sich doch gleich der nächste Bemerkbar gemacht.
    Ich habe es ja so gemacht das NUR Piloten das Menü zu sehen bekommen. Ich habe auch Team Abfrage eingebaut und den Piloten ein Team zugewiesen.
    Dennoch bekommen alle Klassen das Menü beim Spawn angezeigt.


    public OnPlayerSpawn(playerid)
    {
    if(gTeam[playerid] == TEAM_PILOT)
    {
    ShowMenuForPlayer(Airport, playerid);
    TogglePlayerControllable(playerid, 0);
    }
    SendClientMessage(playerid, COLOR_GREEN, "Version: 0.3");
    SendClientMessage(playerid, COLOR_GREEN, "Lies die /regeln!");
    SendClientMessage(playerid, COLOR_GREEN, "Tippe /cmd fur die Commands ein!");
    SendClientMessage(playerid, COLOR_GREEN, "Viel Spaß!");
    return 1;
    }


    case 5:


    {
    GameTextForPlayer(playerid, "Pilot", 5000, 3);
    SetPlayerPos(playerid,-2690.67,2048.35,56.73);
    SetPlayerFacingAngle(playerid, 0.0);
    SetPlayerCameraPos(playerid,-2693.00,2052.62,55.73);
    SetPlayerCameraLookAt(playerid,-2690.67,2048.35,56.73);
    SetPlayerColor(playerid,COLOR_WHITE);
    gTeam[playerid] = TEAM_PILOT;

    }


    Was ist denn da falsch?

  • Hast du auch gemacht, dass wenn man ein anderen Class auswählt, man ein anderes Team bekommt ? z.B Class 1: Team= Cop. Class 2: Team = Zivi. Class 5: Team=Pilot...

  • Nein. Weil wenn sie den Class 5 auswählen und den Class 4 nehmen, haben sie trozdem Team = Pilot. Das System weiß ja nicht, dass bei anderen Classes kein Team definiert werden soll. Dann musst du, das wie ich beschrieben habe scripten. ODer ein anderes System wählen.

  • Was für andere System wären denn noch gut? Nice wäre ja, wenn bei OnPlayerSpawn sowas wäre, das er die Classid Abfragt, aber das mit Classid geht ja nur bei OnPlayerRequestClass nech?


    EDIT: Aber das Problem besteht auch, wenn man die Class 5 noch nicht angewählt hat...

  • Man kann die Classid, auch bei OnPlayerSpawn abfragen, müsste ich mal gucken, ob es da was gibt.


    Und die definierung würde ich anders definieren. z.Vb gTeam = 1; , gTeam = 2; , gTeam = 3; und so weiter.


    Und schreibst dir auf, gTeam = 1: ist die definierung für Cops, usw.

  • Schau dir mal das "taxi" GM im sa-mp.com Forum an. Die haben solch ein System mit dem gTeam...^^


  • public OnPlayerRequestClass(playerid, classid)


    {


    if (classid == 0) // steht für 1. Skin
    {
    gTeam[playerid] = TEAM_PILOT
    }
    else if (classid == 1) // .. für 2.
    {
    gTeam[playerid] = TEAM_COP
    }
    else if (classid == 2)//3.
    {
    // usw.
    }
    else if (classid == 3)//usw.
    {
    // usw.
    }
    else if (classid == 4)
    {
    // usw.
    }
    else if (classid == 5)
    {
    // usw.
    }


    return 1;


    }

    Ich denke, dass du so etwas ähnliches in deinem Script hast.Du musst bei jeder Auswahl dem Spieler ein Team zuordnen,ggf. es vorher erstellen ( mit gTeam o. Ä. ).
    Hoffe,dass es stimmt und bei Fragen melden !




    // Ganz Oben
    static gTeam[MAX_PLAYERS];
    #define TEAM_PILOT 0
    #define TEAM_COP 1
    #define TEAM_BALLAS 2
    // usw.


    Suche Scriptlehrer :rolleyes:

    2 Mal editiert, zuletzt von Kayer ()


  • public OnPlayerRequestClass(playerid, classid)


    {


    if (classid == 0)
    {
    gTeam[playerid] = TEAM_PILOT
    }
    [b]else[/b] if (classid == 1)
    {
    gTeam[playerid] = TEAM_COP
    }
    [b]else [/b]if (classid == 2)
    {
    // usw.
    }
    [b]else [/b]if (classid == 3)
    {
    // usw.
    }
    [b]else [/b]if (classid == 4)
    {
    // usw.
    }
    [b]else [/b]if (classid == 5)
    {
    // usw.
    }


    return 1;


    }

  • Habs jetzt jeder Klasse mal ein Team zugewiesen. Geht einwandfrei. Das mit dem else Zeugs war gar nicht nötig.
    Hab einfach bei jeder Klasse gTeam[playerid] = TEAM_NAME; eingefügt.


    EDIT: Was ist der unterschied zwischen static gTeam[MAX_PLAYERS]; und new gTeam[MAX_PLAYERS]; ?



    Danke an alle ;)