Beiträge von Jeffry

    Das Query ist immernoch falsch, deshalb, allerdings sehe ich den Fehler nicht raus.
    Füge mal vor:
    self_mysql_query(string);
    das ein:
    printf("Query: %s", string);


    Was steht dann im Server Log?

    Ok, dann füg beim beim garbage Befehl vor:
    maxkubik[veh] = 15.0;
    das ein:
    pMuellAuto[playerid] = veh; //pMuellAuto global unter den Includes mit MAX_PLAYERS deklarieren.



    Und dann:
    GetPosVorSpieler(playerid, -10.0, vX, vY, vZ);
    zu:
    GetPosVorVeh(pMuellAuto[playerid], -10.0, vX, vY, vZ);


    Mit:

    Spoiler anzeigen
    stock GetPosVorVeh(vehicleid, Float:dist, &Float:x, &Float:y, &Float:z) //©Jeffry
    {
    new Float:a;
    GetVehicleZAngle(vehicleid, a);
    GetVehiclePos(vehicleid, x, y, z);
    x += (dist * floatsin(-a, degrees));
    y += (dist * floatcos(-a, degrees));
    return true;
    }


    EDIT: Gazette: Fehler verbessert.

    Aha, na dann ist klar.
    Wie erstellst du den Müllwagen denn? Wir brauchen nämlich die ID des Müllwagens (vehicleid), damit wir dessen Position herausfinden können um den Checkpoint dahinter setzen zu können.


    Oder steht der Müllwagen an einer festen, immer gleichen, Position?

    Die strings sind zu kurz.
    Schreibe es so:


    public PlayerCarUpdate(playerid)
    {
    if(IsPlayerNPC(playerid)) return 1;
    new string[2048], playername[MAX_PLAYER_NAME];
    GetPlayerName(playerid, playername, sizeof(playername));
    for(new h = 0; h < MaxVeh[playerid]; h++)
    {
    format(string, sizeof(string), "UPDATE `cars` SET `sqlid`=%i,`carkey`=%i,`ingarage`=%i,`AH_Typ`=%i,`AH_X`='%f',`AH_Y`='%f',`AH_Z`='%f',`AH_Rot`='%f',`AH_Status`=%i,`AH_Lock`=%i,`AH_Paintjob`=%i,`Farbe1`=%i,`Farbe2`=%i,`AH_mod1`=%i,`AH_mod2`=%i,`AH_mod3`=%i,`AH_mod4`=%i,`AH_mod5`=%i,`AH_mod6`=%i,`AH_mod7`=%i,`AH_mod8`=%i,`AH_mod9`=%i,`AH_mod10`=%i,`AH_mod11`=%i,`AH_mod12`=%i,`AH_mod13`=%i,`AH_mod14`=%i,`AH_mod15`=%i,`AH_mod16`=%i,`AH_mod17`=%i,",
    PlayerInfo[playerid][pSQLID],h,Carlist[playerid][h][ingarage],Carlist[playerid][h][Typ],Carlist[playerid][h][pos_x],Carlist[playerid][h][pos_y],Carlist[playerid][h][pos_z],
    Carlist[playerid][h][z_angle],Carlist[playerid][h][Status],Carlist[playerid][h][Lock],Carlist[playerid][h][Paintjob],
    Carlist[playerid][h][Farbe1],Carlist[playerid][h][Farbe2],Carlist[playerid][h][mod1],Carlist[playerid][h][mod2],
    Carlist[playerid][h][mod3],Carlist[playerid][h][mod4],Carlist[playerid][h][mod5],Carlist[playerid][h][mod6],
    Carlist[playerid][h][mod7],Carlist[playerid][h][mod8],Carlist[playerid][h][mod9],Carlist[playerid][h][mod10],
    Carlist[playerid][h][mod11],Carlist[playerid][h][mod12],Carlist[playerid][h][mod13],Carlist[playerid][h][mod14],
    Carlist[playerid][h][mod15],Carlist[playerid][h][mod16],Carlist[playerid][h][mod17]);


    format(string, sizeof(string),"%s`AH_SpawnSaveX`=%f,`AH_SpawnSaveY`='%f',`AH_SpawnSaveZ`='%f',`AH_SpawnSaveRot`='%f',`AH_TankVolumen`=%i,`AH_Mats`=%i,`AH_Neon`=%i,`AH_NeonType`=%i,`AH_Drugs`=%i,`AH_Versicherung`=%i,`AH_StandTime`=%i,`AH_Meter`=%i WHERE `id`=%i",
    string, Carlist[playerid][h][SpawnSaveX],Carlist[playerid][h][SpawnSaveY],Carlist[playerid][h][SpawnSaveZ],
    Carlist[playerid][h][SpawnSaveRot],Carlist[playerid][h][TankVolumen],Carlist[playerid][h][cMats],
    Carlist[playerid][h][Neon],Carlist[playerid][h][NeonType],Carlist[playerid][h][cDrugs],Carlist[playerid][h][StandTime],
    Carlist[playerid][h][Meter],Carlist[playerid][h][cid]);


    self_mysql_query(string);
    }
    return 1;
    }

    Liegt daran, dass du den Checkpoint nicht mit dem Streamer erstellst:
    bmxo[playerid] = SetPlayerCheckpoint(chec...


    Ändere das zu CreateDynamicCP und passe die Parameter an.

    Zitat

    (Error ID: 1054, Unknown column 'Online' in 'field list')


    Du hast in deiner Datenbanktabelle keine Spalte "Online". Die musst du hinzufügen.


    Dann poste den Code, der das hier beinhaltet:

    Zitat

    UPDATE `cars` SET `sqlid`=1,`carkey`=0,`ingarage`=0,`AH_Typ`=8,`AH_X`='748.975219',`AH_Y`='-1345.818237',`AH_Z`='13.515500',`AH_Rot`


    Du hast nämlich das Laden gepostet, das hier siehr mir nach dem Speichern aus. ;)

    Hast du eine Einweisung beantragt? Dort setzt du es nämlich auf 1.
    Generell liegt es daran, dass SpielerInfo[playerid][pReportAktiv] bereits 1 ist, sprich du kannst nicht nochmal einen Report annehmen (laut deinem Code).


    Am besten du testest es mit zwei Spielern (kannst ja einen zweiten Recher oder ein zweites Windows-Benutzerkonto (Benutzer wechseln!) verwenden).

    Debugge es mal so:
    ocmd:report(playerid,params[])
    {
    if(!IsPlayerConnected(playerid))return 1;
    //if(SpielerInfo[playerid][pAdminlevel] > 0)return SendClientMessage(playerid, Rot, "** Der Befehl ist nicht für Team Mitglieder gedacht.");
    new bool:isOnline;
    printf("report: %d", playerid);
    for(new i=0;i<GetMaxPlayers();i++)
    {
    if(IsPlayerConnected(i))
    {
    if(SpielerInfo[i][pAdminlevel] > 0)
    {
    isOnline = true;
    printf("Spieler %d ist Admin", i);
    }
    }
    }
    printf("isOnline: %d", isOnline);
    if(!isOnline)
    {
    SendClientMessage(playerid, Rot, "** Derzeit ist kein Team Mitglied online.");
    return 1;
    }
    printf("Level: %d", SpielerInfo[playerid][pLevel]);
    if(SpielerInfo[playerid][pLevel] == 1)
    {
    printf("Dialog 1");
    ShowPlayerDialog(playerid, DIALOG_REPORT, DIALOG_STYLE_LIST, "Report System", "Allgemeine Frage\nFehler melden\nRegelverstoß\nEinweisung", "Auswählen", "Abbrechen");
    }
    else if(SpielerInfo[playerid][pLevel] > 1)
    {
    printf("Dialog 2");
    ShowPlayerDialog(playerid, DIALOG_REPORT, DIALOG_STYLE_LIST, "Report System", "Allgemeine Frage\nFehler melden\nRegelverstoß", "Auswählen", "Abbrechen");
    }
    printf("Ende.");
    return 1;
    }


    Was steht im Log, wenn du den Befehl eingibst?

    Also erstmal:
    bmxo[playerid] = SetPlayerCheckpoint(playerid, ...
    das bringt nichts, da man nur einen Checkpoint pro Spieler erstellen kann. Nutze deshalb das Streamer Plugin: http://forum.sa-mp.com/showthread.php?t=102865
    Da kannst du CreateDynamicCP verwenden.


    Dann bei OnPlayerEnterDynamicCP:
    if(checkpointid == bmxo[playerid])
    {
    new veh = GetPlayerVehicleID(playerid);
    if(!veh) return SendClientMessage(playerid, 0xFF0000FF, "Kein Fahrzeug.");
    if(kubik[veh] > maxkubik[veh]) return SendClientMessage(playerid, 0xFF0000FF, "Zu viel.");
    //Code hier...
    }

    Du hast irgendwo ein Array deklariert, das eine Größe von 12 hat:
    new Arrayname[12]; //"[12]" mal suchen


    Das heißt, der "upper bound" ist 11, du versuchst aber mit Index 12 darauf zuzugreifen. Dafür brauchst du ein Array mit der Größe 13, sprich du musst die [12] zu [13] ändern, bei der "new" Deklaration.