Beiträge von Jeffry

    Das passt dann eigentlich so.
    Du kannst höchstens mal versuchen das "L" klein zu schreiben, am Anfang des Befehls.


    Steht der Befehl im gleichen Code drin (Gamemode)?


    Setze eventuell mal einen print an die erste Stelle im Befehl und schaue, ob der im Log ausgegeben wird. Wenn nicht, dann wird der Befehl gar nicht aufgerufen.


    Ist deine ocmd Include aktuell? Aktualisiere sie eventuell.

    1.
    Wie ist das Array "busline" deklariert?


    2.
    Ändere bitte im obigen Code von mir in Zeile 164:
    SetPVarInt(playerid, "cpID", 0);
    zu:
    SetPVarInt(playerid, "cpID", id);


    3.
    Der Fehler von Linie 2 ist mir nicht ganz nachvollziehbar.
    Kannst du dein aktuelles OnPlayerEnterCheckpoint bitte posten?

    mysql_format(handle,query,sizeof(query),"SELECT id FROM Accounts WHERE Name = ´%e´ ",sInfo[playerid][Name]);
    Zu
    mysql_format(handle,query,sizeof(query),"SELECT id FROM Accounts WHERE Name = '%e'",sInfo[playerid][Name]);


    Ebenfalls bei SaveUserStats die ` zu ' ändern, bei den Platzhaltern (%d, %e, ...).

    Es sollte diese Nachricht ausgegeben werden:
    format(str, sizeof(str), "((Job)) Du hast die %s beendet und bekommst %d Skillpunkt(e) und $%d beim nächsten Payday gutgeschrieben.", blInfo[linie][name], blInfo[linie][skill], blInfo[linie][income]);


    Und dem Spieler das Geld und die Skills gegeben werden (Zeile 72 bis 85 im Code von mir).

    Versuche es so:
    enum busInfo
    {
    name[64],
    skill,
    income
    }
    enum busstationInfo
    {
    lid,
    Float:l_x,
    Float:l_y,
    Float:l_z,
    stationname[64],
    l_id
    }
    new blInfo[][busInfo] =
    {
    {"C1 Los Santos",1,1600}, //Buslinie 1
    {"L1 Red County",2,2100} //Buslinie 2
    };
    new bsInfo[][busstationInfo] =
    {
    //C1 Los Santos
    //Citylinie C1
    {0,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"},
    {0,1492.7709,-1735.4004,13.5162,"Stadthalle"},
    {0,1824.7155,-1654.6996,13.5162,"Club Alhambra"},
    {0,1999.0885,-1468.8470,13.5239,"County General Hospital"},
    {0,2098.6843,-1721.6963,13.5221,"Idlewood"},
    {0,2321.6360,-1662.3466,14.0043,"GrooveStreet"},
    {0,2240.4653,-1381.0345,23.9642,"Jefferson Church"},
    {0,1936.8986,-1132.5551,25.3708,"Glen Park"},
    {0,1463.1041,-1030.8983,23.7896,"Opera House"},
    {0,1186.9722,-935.7852,42.8822,"Burger Shot North"},
    {0,794.3947,-1352.1207,13.5213,"Market Station"},
    {0,334.2658,-1538.9817,33.3820,"Rodeo"},
    {0,863.7578,-1592.1945,13.4894,"Los Santos Marina"},
    {0,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"},



    //Buslinie L1
    {1,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"},
    {1,412.2734,-1699.2111,9.2966,"Santa Maria Beach"},
    {1,120.6130,-1535.1813,7.6868,"Los Santos Rodeo"},
    {1,-108.3504,-1162.1759,2.4750,"Flint County"},
    {1,-200.9118,-315.8221,1.2331,"Blueberry Industriepark"},
    {1,42.1276,-213.2097,1.5676,"Blueberry Transport AG"},
    {1,235.9211,-16.5521,1.5301,"Blueberry North"},
    {1,701.3684,311.4853,19.9844,"Hampton Burns"},
    {1,1296.1891,319.0197,19.5087,"Montgomery"},
    {1,2290.5161,60.8486,26.4356,"Palomino Creek"},
    {1,1551.5598,120.3831,29.5524,"Red County"},
    {1,678.4969,-582.1321,16.2911,"Dillimore"},
    {1,794.7361,-1351.5454,13.4874,"Los Santos Market Station"},
    {1,863.7578,-1592.1945,13.4894,"Los Santos Marina"},
    {1,1171.8597,-1770.1836,13.5021,"Konferenzzentrum(ZOB)"}
    };



    public OnPlayerEnterCheckpoint(playerid)
    {
    if(pInfo[playerid][onjob])
    {
    new vID = GetPlayerVehicleID(playerid);
    if(GetPVarInt(playerid, "bus") == vID)
    {
    new cpID = GetPVarInt(playerid, "cpID");
    if(IsPlayerInRangeOfPoint(playerid,5,bsInfo[cpID][l_x], bsInfo[cpID][l_y], bsInfo[cpID][l_z]))
    {
    cpID++;
    new linie = GetPVarInt(playerid, "linie");
    if(cpID >= sizeof(bsInfo) || bsInfo[cpID][lid] != linie)
    {
    pInfo[playerid][bank] += blInfo[linie][income];
    pInfo[playerid][skill1] += blInfo[linie][skill];
    DisablePlayerCheckpoint(playerid);
    Update3DTextLabelText(busline[vID],COLOR_WHITE,"Leerfahrt");
    new str[145];
    format(str, sizeof(str), "((Job)) Du hast die %s beendet und bekommst %d Skillpunkt(e) und $%d beim nächsten Payday gutgeschrieben.", blInfo[linie][name], blInfo[linie][skill], blInfo[linie][income]);
    SendClientMessage(playerid,COLOR_BLUE,str);
    SetPVarInt(playerid, "cpID", 0);
    SetPVarInt(playerid, "bus", 0);
    pInfo[playerid][onjob] =false;

    }
    else
    {
    SetPlayerCheckpoint(playerid, bsInfo[cpID][l_x], bsInfo[cpID][l_y], bsInfo[cpID][l_z], 5);
    SetPVarInt(playerid, "cpID", cpID);
    }
    }
    }
    else
    {
    SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du sitzt nicht im Fahrzeug, mit dem du die Linie gestartet hast.");
    SetPVarInt(playerid, "cpID", 0);
    SetPVarInt(playerid, "bus", 0);
    pInfo[playerid][onjob] =false;
    DisablePlayerCheckpoint(playerid);
    }
    return 1;
    }
    DisablePlayerCheckpoint(playerid);
    return 1;
    }



    public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
    {
    if(newkeys & KEY_SUBMISSION)
    {
    if(!IsPlayerInAnyVehicle(playerid))return 1;
    if(GetPlayerState(playerid)!=PLAYER_STATE_DRIVER) return SendClientMessage(playerid,COLOR_YELLOW,"((Info)) Du bist nicht der Fahrer eines Fahrzeugs!");
    for(new i=0; i<sizeof(BusVehs); i++)
    {
    if(GetPlayerVehicleID(playerid) == BusVehs[i])
    {
    if(pInfo[playerid][onjob]==true)
    {
    pInfo[playerid][onjob]=false;
    SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du bist jetzt nicht mehr auf Linie!");
    Update3DTextLabelText(busline[i],COLOR_WHITE,"Leerfahrt");
    DisablePlayerCheckpoint(playerid);
    return 1;
    }
    else
    {
    new str[128];
    format(str,sizeof(str),"%s\t[%i]\t%i $\n%s\t[%i]\t%i $\nEventfahrt\t[0]\t0 $[Wird vom Eventbetreiber bezahlt]",blInfo[0][name],blInfo[0][skill],blInfo[0][income],blInfo[1][name],blInfo[1][skill],blInfo[1][income]);
    ShowPlayerDialog(playerid,DIALOG_BUSLINE,DIALOG_STYLE_TABLIST,"Buslinien",str,"Schliessen","Okay");
    return 1;
    }
    }
    }
    }
    return 1;
    }



    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    if(dialogid==DIALOG_BUSLINE)
    {
    //Buslinien 0 und 1:
    if(listitem == 0 || listitem == 1)
    {
    for(new i=0; i<sizeof(BusVehs); i++)
    {
    if(GetPlayerVehicleID(playerid) == BusVehs[i])
    {
    pInfo[playerid][onjob]=true;
    new buslinie = listitem;
    new vID = GetPlayerVehicleID(playerid);
    SetPVarInt(playerid, "bus", vID);
    format(str, sizeof(str), "((Info)) Du bist jetzt auf der Linie '%s' unterwegs!", blInfo[buslinie][name]);
    SendClientMessage(playerid,COLOR_BLUE,str);
    Update3DTextLabelText(busline[i],COLOR_TURQUOISE,blInfo[buslinie][name]);
    new id = 0;
    for(id = 0; id < sizeof(bsInfo); id++) if(bsInfo[id][lid] == busline) break;
    SetPlayerCheckpoint(playerid, bsInfo[id][l_x], bsInfo[id][l_y], bsInfo[id][l_z], 4);
    new text[128];
    format(text,sizeof(text),"Nächste Haltestelle: %s",bsInfo[id][stationname]);
    SendClientMessage(playerid,COLOR_TURQUOISE,text);
    SetPVarInt(playerid, "cpID", 0);
    SetPVarInt(playerid, "linie",buslinie);
    }
    }
    }
    if(listitem==2)
    {
    //Eventfahrt
    if(eventactive==false) return SendClientMessage(playerid,COLOR_BLUE,"((Info)) Kein Event ist aktiv!");
    for(new i=0; i<sizeof(BusVehs); i++)
    {
    if(GetPlayerVehicleID(playerid) == BusVehs[i])
    {
    pInfo[playerid][onjob]=true;
    SendClientMessage(playerid,COLOR_BLUE,"((Info)) Du bist jetzt auf der Linie 'Eventfahrt' unterwegs!");
    Update3DTextLabelText(busline[i],COLOR_ORANGE,"Eventfahrt");
    }
    }
    }
    }
    return 1;


    Schaue dir bitte den Code an und frage nach, falls du etwas davon nicht verstehst.
    Prinzipiell geht der Code beim Dialog so vor, dass er anhand des listitems in der Liste mit den ganzen Stationen den ersten Checkpoint mit der Linien-ID sucht und den anzeigt.
    Im Checkpoint wird dann geprüft, ob der letzte Checkpoint erreicht wurde (nächste Linien-ID ungleich aktueller ID).
    Die Nachrichten werden dynamisch angezeigt, somit musst du den Code nicht jedes mal kopieren, sondern kannst ihn so lassen.

    Habe sonst garnichts geändert deswegen frage ich mich woher das kommt...

    Öffne die pawno.exe die sich im Server Ordner des Gamemodes befindet (/pawno/pawno.exe) und wähle den Gamemode über die "öffnen" Funktion aus, dann werden die korrekten Includes gezogen.

    Nein, das ist falsch.
    Nutze dafür am besten einen Streamer, dann brauchst du dir darum keine Gedanken machen. Ich empfehle dir das Streamer Plugin.


    Manuell würde es so aussehen:
    SetPlayerCheckpoint(...);
    Jobcp[playerid] = 1;
    Die Abfrage für genau diesen Checkpoint wäre dann:
    if(Jobcp[playerid] == 1)


    Alternativ kannst du anstatt 1 es auch über defines machen, wie bei Dialogen.
    #define CP_START 1


    Wie aber gesagt, über einen Streamer ist es wesentlich geschickter.