Was ist hierdran bitte falsch?

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
  • ocmd:duty(playerid,params[])
    {
    if(!istPlayerJob(playerid,2)
    {
    SetPlayerCheckpoint(playerid,2041.7004,-2593.5042,13.5469,10.0);
    Points[playerid] = 1;
    }
    if(Points[playerid] == 1)
    {
    SetPlayerCheckpoint(playerid,-1632.8308,-140.7568,14.1484,10.0);
    Points[playerid] = 2;
    return 1;
    }
    if(Points[playerid] == 2)
    {
    SetPlayerCheckpoint(playerid,1389.1116,1653.4709,10.8125,10.0);
    Points[playerid] = 3;
    return 1;
    }
    return 1;
    }



    C:\Users\Alex\Desktop\Selfmade!\gamemodes\Selfmade.pwn(3027) : error 001: expected token: ")", but found "{"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.


  • bei der ersten if abfrage fehlt eine ) am ende.

    Glaub keinem, der Dir sagt, dass Du nichts verändern kannst.
    Die, die das behaupten, haben nur vor der Veränderung Angst.
    Es sind dieselben, die erklären, es sei gut so, wie es ist.
    Und wenn Du etwas ändern willst, dann bist Du automatisch Terrorist (Die Ärzte - Deine Schuld)

  • Wo?


    Da fehlt keine:


    ocmd:duty(playerid,params[])
    {
    if(!istPlayerJob(playerid,2))
    {
    SetPlayerCheckpoint(playerid,2041.7004,-2593.5042,13.5469,10.0);
    Points[playerid] = 1;
    }
    if(Points[playerid] == 1)
    {
    SetPlayerCheckpoint(playerid,-1632.8308,-140.7568,14.1484,10.0);
    Points[playerid] = 2;
    return 1;
    }
    if(Points[playerid] == 2)
    {
    SetPlayerCheckpoint(playerid,1389.1116,1653.4709,10.8125,10.0);
    Points[playerid] = 3;
    return 1;
    }
    return 1;
    }

  • Bei deinem ersten Beitrag fehlte da noch eine Klammer..
    Geht es denn jetzt?
    Wenn nein, was genau geht an welcher Stelle nicht?
    Error beim compilieren? Wenn ja, welche Zeile und welcher Error?

  • Deine erste Abfrage nach 'Points' lautet:

    if(Points[playerid] == 1)
    {
    SetPlayerCheckpoint(playerid,-1632.8308,-140.7568,14.1484,10.0);
    Points[playerid] = 2;
    return 1;
    }Wo wird es denn überhaupt auf 1 gesetzt? Denn wenn du den Job hast und deine Points bei 0 sind, ist logisch dass nichts passiert...

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • if(!istPlayerJob(playerid,2))
    {
    SetPlayerCheckpoint(playerid,2041.7004,-2593.5042,13.5469,10.0);
    Points[playerid] = 1;
    }Heißt übersetzt:
    Wenn ''playerid'' nicht den Job 2 besitzt, kommt bei ihm ein Checkpoint und seine Points werden auf 1 gesetzt.


    Aber du hast doch den Job!

    Zitat von SchafiSAMP

    und Ja, in meiner Userdatei steht Job 2.


    Wie sollen deine Points auf 1 gesetzt werden? Verrate es mir :)

  • Okay habe es jetzt so:


    ocmd:duty(playerid,params[])
    {
    if(istPlayerJob(playerid,2))
    {
    SetPlayerCheckpoint(playerid,2041.7004,-2593.5042,13.5469,10.0);
    Points[playerid] = 1;
    }
    if(Points[playerid] == 1)
    {
    SetPlayerCheckpoint(playerid,-1632.8308,-140.7568,14.1484,10.0);
    Points[playerid] = 2;
    return 1;
    }
    if(Points[playerid] == 2)
    {
    SetPlayerCheckpoint(playerid,1389.1116,1653.4709,10.8125,10.0);
    Points[playerid] = 3;
    return 1;
    }
    return 1;
    }


    Aber mache ich /duty zeigt er den 2 Checkpoint an nicht den ersten :S


    //Edit und der nächste Checkpoint kommt nicht

  • Ist doch logisch xD Erst setzt du einen ersten Checkpoint, schreibst deine Points auf 1, wenn deine Points danach auf 1 sind (die du ja eben auf 1 gesetzt hast), folgt der nächste Checkpoint.
    Machs so:


    ocmd:duty(playerid,params[])
    {
    if((istPlayerJob(playerid,2)) && (Points[playerid] == 0))
    {
    SetPlayerCheckpoint(playerid,2041.7004,-2593.5042,13.5469,10.0);
    Points[playerid] = 1;
    return 1;
    }
    if((istPlayerJob(playerid,2)) && (Points[playerid] == 1))
    {
    SetPlayerCheckpoint(playerid,-1632.8308,-140.7568,14.1484,10.0);
    Points[playerid] = 2;
    return 1;
    }
    if((istPlayerJob(playerid,2)) && (Points[playerid] == 2))
    {
    SetPlayerCheckpoint(playerid,1389.1116,1653.4709,10.8125,10.0);
    Points[playerid] = 3;
    return 1;
    }
    }


    //edit: Komplett für dich berichtigt...


    //edit 2:
    Eine wesentlich schönere Variante ist allerdings folgende:
    (ungetestet)


    ocmd:duty(playerid,params[])
    {
    if(istPlayerJob(playerid,2))
    {
    switch(Points[Playerid])
    {
    case 0:
    SetPlayerCheckpoint(playerid,2041.7004,-2593.5042,13.5469,10.0);
    Points[playerid] = 1;
    break;
    case 1:
    SetPlayerCheckpoint(playerid,-1632.8308,-140.7568,14.1484,10.0);
    Points[playerid] = 2;
    break;
    case 2:
    SetPlayerCheckpoint(playerid,1389.1116,1653.4709,10.8125,10.0);
    Points[playerid] = 3;
    break;
    }
    }
    return 1;
    }

    Einmal editiert, zuletzt von Shine ()

  • Was willst du überhaupt genau machen?


    Willst du einmal /duty machen, anschließend einen Checkpoint angezeigt bekommen, und sobald du diesen erreichst, soll der zweite angezeigt werden, und immer so weiter?
    Falls ja, ist das eine komplett falsche Herangehensweise deinerseits.
    Denn dann musst du mit dem Public OnPlayerEnterCheckpoint arbeiten.
    http://wiki.sa-mp.com/wiki/OnPlayerEnterCheckpoint




    //edit: Ich machs dir mal...musst du nur anpassen.


    Ganz oben irgendwo new JOBNAME[MAX_PLAYERS];Die Variable JOBNAME auf deine Wünsche anpassen



    //Befehl um den Job auszuführen
    ocmd:duty(playerid,params[])
    {
    if(istPlayerJob(playerid,2))
    {
    SetPlayerCheckpoint(playerid,2041.7004,-2593.5042,13.5469,10.0);
    JOBNAME[playerid] = 1; //hier wieder den JOBNAME anpassen, wie ganz oben gesagt...
    Points[playerid] = 1;
    }
    else
    {
    //Die FARBE auf deine Wünsche anpassen
    SendClientMessage(playerid, FARBE, "Du hast nicht den erforderlichen Job.");
    }
    return 1;
    }


    //Befehl um den Job abzubrechen
    ocmd:noduty(playerid,params[])
    {
    if(istPlayerJob(playerid,2))
    {
    DisablePlayerCheckpoint(playerid);
    JOBNAME[playerid] = 0; //hier wieder den JOBNAME anpassen, wie ganz oben gesagt...
    Points[playerid] = 0;
    SendClientMessage(playerid, FARBE, "Du hast den Job abgebrochen!!"); //Hier wieder die FARBE ändern..
    }
    else
    {
    //Die FARBE auf deine Wünsche anpassen
    SendClientMessage(playerid, FARBE, "Du hast nicht den erforderlichen Job.");
    }
    return 1;
    }


    public OnPlayerEnterCheckpoint(playerid)
    {
    //Hier kannst du deine Checkpoints eintragen.
    if((istPlayerJob(playerid,2)) && (JOBNAME[playerid] == 1)) //hier wieder den JOBNAME anpassen, wie ganz oben gesagt...
    {
    switch(Points[Playerid])
    {
    case 1:
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,-1632.8308,-140.7568,14.1484,10.0);
    Points[playerid] = 2;
    break;
    case 2:
    DisablePlayerCheckpoint(playerid);
    SetPlayerCheckpoint(playerid,1389.1116,1653.4709,10.8125,10.0);
    Points[playerid] = 3;
    break;
    case 3:
    DisablePlayerCheckpoint(playerid);
    SendClientMessage(playerid, FARBE, "Du hast den Job erfolgreich beendet!");
    //hier kannst du dem Spieler z.B. Geld geben oder so, der Job ist hier beendet.
    JOBNAME[playerid] = 0; //JOBNAME wieder anpassen
    Points[playerid] = 0;
    break;
    }
    }
    return 1;
    }


    Alles aus dem Kopf geschrieben, keine Garantie, ungetestet.


    //edit: Ein s vergessen :<
    //edit: Und woanders ein s zu viel -.-' xD

    3 Mal editiert, zuletzt von Shine ()