Wie erstellst du denn die normalen und die Fraktions-Fahrzeuge?
Und löschst du erst das eine, erstellst dann das andere und versuchst es dann zu löschen? In welcher Reihenfolge führst du die Befehle aus?
Beiträge von Jeffry
-
-
-
Nutze den direkten download link bei solidfiles (steht ganz klein drunter). Für SAMP, das kannst du dir merken, wirst du nie eine exe brauchen, zumindest nicht für sowas.
Da steht ganz klein, direct download link. Das musst du nehmen.
-
Ist das in einem Interior? Wenn ja, mach das weg:
SetPlayerInterior(playerid,0); -
Der Name des Bots ([BOT]Bank_SecurityLaufen) ist zu lang. Es sind maximal 20 Zeichen möglich.
-
-
Der MySQL Log ist vom Laden der Statistiken, das siehst du schon an den Zeiten.
Poste bitte den Log vom Speichern. -
ocmd:lock(playerid,params[])
{
for(new i=0;i<MAX_PRIVATE_VEHICLES;i++)
{
new Float:pos[3], new vID;
vID = PrivateVehicle[i][p_vID];
GetVehiclePos(vID,pos[0],pos[1],pos[2]);
if(IsPlayerInRangeOfPoint(playerid,5,pos[0],pos[1],pos[2]))
{
if(!strlen(PrivateVehicle[i][p_owner]))continue;
if(!strcmp(PrivateVehicle[i][p_owner], getPlayerName(playerid)))
{
printf("Owner = %s",PrivateVehicle[i][p_owner]);
printf("Player = %s",getPlayerName(playerid));
new engine,lights,alarm,doors,bonnet,boot,objective;
GetVehicleParamsEx(vID,engine,lights,alarm,doors,bonnet,boot,objective);
if(doors == 1)
{
SetVehicleParamsEx(vID,engine,lights,alarm,0,bonnet,boot,objective);
SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have unlocked your Vehicle.");
return 1;
}
else
{
SetVehicleParamsEx(vID,engine,lights,alarm,1,bonnet,boot,objective);
SendClientMessage(playerid,Gelb,"[SInfo] {FFFFFF}You have locked your Vehicle.");
return 1;
}
}
return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not near by your Vehicle.");
}
}
return SendClientMessage(playerid,Rot,"Error: {FFFFFF}You are not near by your Vehicle.");
}EDIT: (Post unten)
CaZe: Da dein Problem behoben ist, wäre es super, wenn du den Thread als erledigt markierst. Danke!
-
Weiß jemand wieso das so ist?
1.) Dieser Teil vom Code wird nie erreicht, weil du irgendwo ein oder mehrere returns davor hast, die es unter jeder Bedingung unmöglich machen, dass diese Zeile erreicht wird. Prüfe das, oder poste gegebenenfalls den Code.2.) Diese Variable wird nie verwendet. Suche nach ihr und lösche sie.
3.) Diese vielen Zahlen kommen dadurch, dass du zu viele Variablen verwendest, sprich zu viel Speicher reservierst. Du kannst versuchen es mit einem pragma zu entfernen.
#pragma dynamic 1000000
Falls die Meldung nicht weg geht, erhöhe die Zahl. -
Schalte bitte mal den MySQL Debug Modus an und poste was im Log steht, wenn du den Server verlässt, bzw wenn der Spieler gespeichert wird.
Wie du das machst steht hier: Tipps: Scripting-Probleme richtig erklären (Kapitel 1.4) -
Hast du das p_owner im enum als p_owner[MAX_PLAYER_NAME] deklariert?
-
Ja, genau. Oder eben mit MAX_PLAYER_NAME, das ist dasselbe.
EDIT:
Zum Befehl, ändere da noch
if(doors == 0)
Zu
else -
Dass er zwei mal bei Debug 1 ist liegt an der Schleife, das passt schon.
Nur der Debug 5 passt nicht.Wie sieht denn der Code jetzt aus?
Edit:
Das Laden muss übrigens so aussehen
cache_get_field_content(i,"Owner",PrivateVehicle[i][p_owner],Handle,MAX_PLAYER_NAME); -
Außerdem musst du p_owner im enum zu p_owner[MAX_PLAYER_NAME] ändern.
Und
if(PrivateVehicle[i][p_owner] == playerid)
zu
if(!strcmp(PrivateVehicle[i][p_owner], SpielerName(playerid)))
ändern.PS: Darf ich dich fragen, wo du diesen Code her hast? Genau dieses Problem habe ich jetzt schon mindestens drei mal in kurzer Zeit gesehen. Ist das ein Gamemode oder aus einem Tutorial?
-
Das return 1 nach dem Debug 6 muss weg, da du sonst nur ID 0 prüfst und danach abbrichst.
-
//edit Jeffry denk dran er möchte die Datensatzid auslesen , welcher er dem Fahrzeug zuweisst
Ist mir klar.
Seine Frage hat sich aber darauf bezogen, wenn er den Cache nicht mehr braucht.
-
Ja, die beiden leeren Strings kannst du sogar weg lassen, die sind optional.
-
Lädst du vielleicht extrem viel Zeug an der Spawn Stelle, möglicherweise ganz viele Fahrzeuge, da kann das vorkommen.
Oder setzt du die Velocity extrem hoch?
Entferne ggf immer wieder Teile deines Codes und prüfe ob es dann geht (immer mehr Code auskommentieren, bis es geht), so findet sich solch ein Fehler meistens recht gut.
-
Ach, stimmt, ich denke da nie dran weil ich es bei mir automatisch umgangen habe.
Füge noch das hinzu, zu OnPlayerStateChange:
if(newstate == PLAYER_STATE_DRIVER) SetPVarInt(playerid, "vID", GetPlayerVehicleID(playerid));
else SetPVarInt(playerid, "vID", 0);
Und ändere das GetPlayerVehicleID in dem Code von dir bei oldstate == PLAYER_STATE_DRIVER zu:
new vID = GetPVarInt(playerid, "vID");Bei OnPlayerStateChange funktioniert nämlich GetPlayerVehicleID nach dem change nicht mehr.
EDIT: (Post unten)
ahoi123: Gerne! Bei Fragen einfach fragen.
-
Du musst es richtig einrücken, funktionieren würde der Code auch so, aber er sieht halt nicht so schön aus.
http://forum.sa-mp.com/showthread.php?t=256961