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?
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:
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?
Zitat(Error ID: 1054, Unknown column 'AH_Mod5' in 'field list')
Die Splate AH_Mod5 gibt es nicht. Die musst du auch hinzufügen.
Fährst du mit dem Müllwagen in den Checkpoint, oder läufst du rein? Also, bist du in dem Müllwagen, der den Checkpoint bekommen soll?
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:
ZitatUPDATE `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.
Füge vor:
new i = listitem, string[128];
mal den print ein:
printf("playerid: %d pReportAktiv: %d", playerid, SpielerInfo[playerid][pReportAktiv]);
Was sagt der Log?
Und was sagt der MySQL Log wenn du diesen Code ausführst?
Du hast ja hoffentlich den Debug Modus aktiviert, sodass alles dort geprintet wird. Wenn nicht, mach das.
GetPosVorSpieler(playerid, -10.0, vX, vY, vZ);
Das hier ganz unten im Gamemode einfügen: http://forum.sa-mp.de/gta-mult…eschnipsel-56#post1890617
Den Checkpoint kannst du dann an der Position vX vY vZ erstellen.
Außerdem musst du dann noch
DestroyDynamicCP(bmxo[playerid]);
verwenden.
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).
Zitat[13:29:38] MySQL Debugging de-activated
Du sollst es aktivieren.
Und dann den Code ausführen, der dir Fehler bringt.
Also bei mir geht es, mit deinen Textdraws.
Nutzt du auch:
SelectTextDraw(playerid, 0xFFFFFFFF);
?
Hast du den Abfragecode bei OnPlayerClickTextDraw drin?
Dann schalte mal den MySQL Debug Modus an und poste was im MySQL Log geprintet wird.
Wie du das machst siehst du hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4)
Objekte kannst du hiermit attachen: http://forum.sa-mp.com/showthread.php?t=416138
(Generell mit: http://wiki.sa-mp.com/wiki/AttachObjectToPlayer_DE)
Was meinst du mit Checkpoint in den Müllwagen? Du kannst einen Checkpoint an der Position des Müllwagens erstellen, mit dem Streamer, ja.
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...
}
Wird das in LoginPassword oder LoadPlayer verwendet? Wenn ja, poste dazu mal den Code.
Wenn nein, poste mal die zwei Funktionen, komplett.
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.