Problem mit OnPlayerSelectedMenuRow

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

  • /*public OnPlayerSelectedMenuRow(playerid, row)
    {
    if(GetPlayerMenu(playerid) == Stadthalle)
    {
    switch(row)
    {
    case 0: { ShowPlayerDialog(playerid, DIALOG_JOBS, DIALOG_STYLE_LIST, "Los Santos Arbeitsamt", "Detektiv\nMüllmann\nPilot\nAngler\nBodyguard\nZeitungsjunge\nBoxer\nBusfahrer\nPizzalieferant\nProdlieferant (FreizeitJob)\nMechaniker\nAnwalt", "Auswählen", "Abbrechen"); }
    case 1: { if(PlayerInfo[playerid][pOwnPerso] == 1) }
    }
    }
    return 1;
    }*/


    Hallo habe das Problem wen ich kompeliere bekomm ich 26 errors aber nicht von diesen Code. wen ich das Ausklammer habe ich 0 Errors an was liegt das?

  • C
    public OnPlayerSelectedMenuRow(playerid, row) {
    	if(GetPlayerMenu(playerid) == Stadthalle) {
    		switch(row) {
    			case 0: { ShowPlayerDialog(playerid, DIALOG_JOBS, DIALOG_STYLE_LIST, "Los Santos Arbeitsamt", "Detektiv\nMüllmann\nPilot\nAngler\nBodyguard\nZeitungsjunge\nBoxer\nBusfahrer\nPizzalieferant\nProdlieferant (FreizeitJob)\nMechaniker\nAnwalt", "Auswählen", "Abbrechen"); }
    			case 1: { if(PlayerInfo[playerid][pOwnPerso] == 1){} }
    		}
    	}
    	return 1;
    }

    Dein Problem lag darin, das der Compiler sehr primtiv ist und du eine offene If abfrage hattest ohne eine Anweisung dahinter.
    Aber wie gesagt, primitiv, daher wurde quasi eine geschweite Klammer mit dem if in verbindung gebracht.
    Nun habe ich einfach geschweifte Klammern hinzugefügt und dies sollte nicht mehr der Fall sein. :)


  • C:\Windows\Vss\German v1.1\German[Scripts]\German-Next-Era-Life---v2.5\German Next Era Life - v2.5\gamemodes\GNE.pwn(6006) : error 029: invalid expression, assumed zero
    C:\Windows\Vss\German v1.1\German[Scripts]\German-Next-Era-Life---v2.5\German Next Era Life - v2.5\gamemodes\GNE.pwn(6006) : error 001: expected token: ";", but found "{"
    C:\Windows\Vss\German v1.1\German[Scripts]\German-Next-Era-Life---v2.5\German Next Era Life - v2.5\gamemodes\GNE.pwn(6016) : warning 225: unreachable code



    Hm


  • public OnPlayerSelectedMenuRow(playerid, row) { //Hier
    if(GetPlayerMenu(playerid) == Stadthalle) {
    switch(row) {
    case 0: { ShowPlayerDialog(playerid, DIALOG_JOBS, DIALOG_STYLE_LIST, "Los Santos Arbeitsamt", "Detektiv\nMüllmann\nPilot\nAngler\nBodyguard\nZeitungsjunge\nBoxer\nBusfahrer\nPizzalieferant\nProdlieferant (FreizeitJob)\nMechaniker\nAnwalt", "Auswählen", "Abbrechen"); }
    case 1: { if(PlayerInfo[playerid][pOwnPerso] == 1){} }
    }
    }
    return 1;
    }

  • Der Callback "OnPlayerSelectedMenuRow" ist nicht ganz zufällig auch das letzte im Script? Wenn doch, dann schau mal, ob der Funktion/Callback zuvor etwas fehlt bzw. platziere diese mal um, schauen ob der Fehler nach wie vor der gleiche ist.
    So können wir ohne große weiteres die Fehlerhafte Funktion ausfindig machen.
    Ich schlage dies vor, da der Callback selbst richtig definiert ist und auch keine geschweifte Klammer hier fehlt.

  • Also hast du die nun ein zweites mal im Script?
    Oder verstehe ich dich da falsch?
    Falls zutreffend:
    - kopiere den Inhalt was in der public Funktion passieren soll in die jeweils andere hinein.
    - Alternativ: hook dein zweites Callback (nur geeignet, wenn man gute Kenntnisse besitzt im Scripten bzw. man verwendety_hook)
    Falls nicht zutreffend:
    lies zweite Zeile: verstehe dich falsch.


  • Function OnPlayerSelectedMenuRow(playerid, row)
    {
    new Menu:CurrentMenu = GetPlayerMenu(playerid);
    if(CurrentMenu == Navigation)
    {
    switch(row)
    {
    case 0://Stadthalle
    {
    SetPlayerCheckpoint(playerid,1481.1517,-1763.9393,18.7958,5.0);
    SendClientMessage(playerid, COLOR_GREEN, "Ziel [Stadthalle] auf der MiniMap. (Benutze /chilfe um den Marker zu löschen)");
    }
    case 1://Krankenhaus
    {
    SetPlayerCheckpoint(playerid,1184.7716,-1321.6627,13.5732,5.0);
    SendClientMessage(playerid, COLOR_GREEN, "Ziel [Krankenhaus] auf der MiniMap. (Benutze /chilfe um den Marker zu löschen)");
    }
    case 2://Polizei
    {
    SetPlayerCheckpoint(playerid,1513.7441,-1667.4794,14.0469,5.0);
    SendClientMessage(playerid, COLOR_GREEN, "Ziel [Polizei Department] auf der MiniMap. (Benutze /chilfe um den Marker zu löschen)");
    }
    case 3://Schwarzmarkt
    {
    SetPlayerCheckpoint(playerid,2620.4971,-1499.0149,16.2748,5.0);
    SendClientMessage(playerid, COLOR_GREEN, "Ziel [Zivispawn] auf der MiniMap. (Benutze /chilfe um den Marker zu löschen)");
    }
    case 4://Arbeitsamt
    {
    SetPlayerCheckpoint(playerid,2228.3035,-1157.6097,25.7999,5.0);
    SendClientMessage(playerid, COLOR_GREEN, "Ziel [Arbeitsamt] auf der MiniMap. (Benutze /chilfe um den Marker zu löschen)");
    }
    case 5://Bank
    {
    SetPlayerCheckpoint(playerid,1462.6842,-1014.6383,26.4997,5.0);
    SendClientMessage(playerid, COLOR_GREEN, "Ziel [Bank] auf der MiniMap. (Benutze /chilfe um den Marker zu löschen)");
    }
    case 6://Handyladen
    {
    SetPlayerCheckpoint(playerid,1104.1304,-1449.0028,15.7969,5.0);
    SendClientMessage(playerid, COLOR_GREEN, "Ziel [Handyladen] auf der MiniMap. (Benutze /chilfe um den Marker zu löschen)");
    }
    case 7://uhrenladen
    {
    SetPlayerCheckpoint(playerid,1699.9642,-1170.1368,23.8281,5.0);
    SendClientMessage(playerid, COLOR_GREEN, "Ziel [Uhrenladen] auf der MiniMap. (Benutze /chilfe um den Marker zu löschen)");
    }
    case 8://Exit Menu
    {
    HideMenuForPlayer(Navigation, playerid);
    }
    }
    }
    /*public OnPlayerSelectedMenuRow(playerid, row) {
    if(GetPlayerMenu(playerid) == Stadthalle) {
    switch(row) {
    case 0: { ShowPlayerDialog(playerid, DIALOG_JOBS, DIALOG_STYLE_LIST, "Los Santos Arbeitsamt", "Detektiv\nMüllmann\nPilot\nAngler\nBodyguard\nZeitungsjunge\nBoxer\nBusfahrer\nPizzalieferant\nProdlieferant (FreizeitJob)\nMechaniker\nAnwalt", "Auswählen", "Abbrechen"); }
    case 1: { if(PlayerInfo[playerid][pOwnPerso] == 1){} }
    }
    }
    return 1;
    }*/

  • Du hattest einen kleinen Fehler. :)
    Du hattest eine Geschweifte Klammer vergessen. Aber nun habe ich deine Stadthalle in die dafür vorgesehene Funktion eingepflegt. :)



    Btw: Bei deiner Navigation kannst du ganz gut auch Arrays verwenden.

    Und dann kannst du direkt die erhaltene Row nutzen als Index Zeiger. :)
    Geht natürlich ganz gut, solange du nichts sonderbar großes haben möchtest. Wie in deinem Fall, ist es ja nur in den eckigen Klammern den Namen einfügen (format()) und dann die Nachricht Senden. :)