Hast du an dem Code noch etwas geändert? Den so sieht mir das eigentlich korrekt aus.
Welches sieht denn die Zeile mit dem Fehler aus?
Hast du an dem Code noch etwas geändert? Den so sieht mir das eigentlich korrekt aus.
Welches sieht denn die Zeile mit dem Fehler aus?
Wie sieht das enum dazu aus?
sizeof(MAX_Businesses)
Zu
MAX_Businesses
Und setze am besten die Deklaration (new) des Strings vor die Schleife, damit der nicht in jedem Durchlauf neu angelegt wird im Speicher.
218d Coupé mit Sportline und ein paar M-Features (Fahrwerk, Lenkrad, Schalter) seit ca. Weihnachten, hatte 15TKM runter
:love
Nice one!!
Weiß ist zwar nicht so meine Farbe, aber dem steht es irgendwie schon. Sieht schick aus! ![]()
Den 5er hast dann aber verkauft, oder?
Ja, das kannst du mit einem stock wie diesem so abfragen:
stock GetPlayerCarOwner(vehicleid)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
for(new j = 0; j < MaxVeh; j++)
{
if(PlayerCar[i][j][c_id] == vehicleid) return PlayerCar[i][j][owner] ;
}
}
return -1;
}
format(query, sizeof(query), "%s `Color2` int(11) NOT NULL DEFAULT '0',", query);
Zu
format(query, sizeof(query), "%s `Color2` int(11) NOT NULL DEFAULT '0'", query);
Das Komma am Ende ist zu viel dort.
Nutze am Ende des Befehls noch
SetVehicleToRespawn(carid);
[17:26:35] >> plugin.mysql: R41 successfully loaded.
Du nutzt die falsche MySQL Plugin Version.
Schaue in den dazugehörigen Includes nach, welche Version dort in der MySQL Include steht.
Die Downloads gibt es hier:
https://github.com/pBlueG/SA-MP-MySQL/releases
Das Problem hier wird dem Anschein nach gewesen sein, dass zu viele lokale Variablen verwendet werden.
Im Compiler dürfte dann eine Meldung ähnlich dieser vorhanden gewesen sein:
Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase
Header size: 11376 bytes
Code size: 796056 bytes
Data size: 2207024 bytes
Stack/heap size: 16384 bytes; estimated max. usage=290 cells (1160 bytes)
Total requirements: 3030840 bytes
Diese Meldung darf nicht im Compiler stehen, da es zu Problemen kommen kann, während dem Spielbetrieb. Zum Beispiel, dass Befehle nicht mehr funktionieren.
Um die Meldung zu entfernen (also mehr Speicher zu erlauben) muss unter den Includes
#pragma dynamic 10000
eingefügt werden.
Sollte die Meldung nicht weg gehen, dann die Zahl etwas erhöhen, bis die Meldung weg geht (20000, 30000, ...).
EDIT:
Die Meldung kann auch dadurch auftauchen, dass im Ordner /pawno/ eine Datei "pawn.cfg" existiert. Dann bekommt man die Meldung nur weg, wenn man die "pawn.cfg" löscht.
Kommt die Meldung mit dem Compiler nicht auch, wenn man die pawn.cfg verwendet? O.o
Jo, dadurch kommt die auch. Das wäre dann aber gewollt.
Heißt doch dann, dass die Meldung auch nur durch die .cfg Datei erscheinen kann und ohne diese eben nicht?
Nein, in beschriebenem Fall (zu viele lokale Variablen) kommt die Meldung auch. Und dann können Fehler auftreten.
Ich füg das zu meinem Post noch hinzu, dass man die Meldung natürlich nicht weg bekommt, wenn die pawn.cfg Datei vorhanden ist.
Wie sieht denn ein funktionierender Befehl in deinem Gamemode aus?
Möglicherweise verhindert der genutzte Command Prozessor das Ausführen des strcmp-Befehls.
wie ermittel ich den Besitzer des Fahrzeuges? Eventuell durch eine VehicleID ?
Über eine eindeutige ID, die aus der Datenbank kommt.
Du kannst dir das Vorgehen hier abschauen:
[jTuT] Fraktions-Fahrzeug-System mit MySQL R39-5
Anstatt von Fraktions-IDs nimmst du die ID des Spielers aus der Datenbank.
Du musst den eingegebenen Name auslesen und die ID des Namens nutzen.
case DIALOG_MEDICC:
{
if(response)
{
new string[145], pID = ReturnPlayerID(inputtext);
if(!IsPlayerConnected(pID))
{
SendClientMessage(playerid, COLOR_GREY, "Dieser Spieler ist nicht eingeloggt.");
return 1;
}
if(IsPlayerNPC(pID))
{
SendClientMessage(playerid, COLOR_GREY, "Das ist kein Spieler, der eingeladene ist ein NPC(Bot).");
return 1;
}
if(Spieler[pID][pFraktion] > 0)
{
format(string, sizeof(string), "Der Spieler ist in einer Fraktion:", playerid);
ShowPlayerDialog(playerid, DIALOG_MEDICC, DIALOG_STYLE_INPUT, "Contropanel: Spieler Invite", string, "Einladen", "Zurück");
return 1;
}
if(Spieler[pID][pLevel] < 3)
{
SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist unter Level 3.");
return 1;
}
if(Spieler[pID][pFraktion] > 1)
{
SendClientMessage(playerid, COLOR_GREY, "Der Spieler ist bereits in einer Fraktion");
return 1;
}
format(string, sizeof(string), COLOR_HEX_WHITE"Du wurdest von %s in die Fraktion %s eingeladen.\nKlicke auf "COLOR_HEX_GREEN"Annehmen"COLOR_HEX_WHITE" oder "COLOR_HEX_GREEN"Ablehnen"COLOR_HEX_WHITE".", GetName(playerid), GetFraktionName(Spieler[playerid][pFraktion]));
ShowPlayerDialog(pID, DIALOG_INVITE, DIALOG_STYLE_MSGBOX, "Fraktions Einladung", string, "Annehmen", "Ablehnen");
Spieler[pID][pAcceptInvite] = Spieler[playerid][pFraktion];
format(string, sizeof(string), "Du hast %s in die Fraktion eingeladen.", GetName(pID));
SendClientMessage(playerid, COLOR_LIGHTBLUE, string);
return 1;
}
if(!response)return cmd_controlfrak(playerid);
}
Unten im Code:
stock ReturnPlayerID(l_PlayerName[]) //©Jeffry
{
new l_name[MAX_PLAYER_NAME];
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(!strcmp(l_name,l_PlayerName, true)) return i;
}
}
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(GetPlayerName(i, l_name, MAX_PLAYER_NAME))
{
if(strfind(l_name,l_PlayerName,true)!=-1) return i;
}
}
return INVALID_PLAYER_ID;
}
Vielen Dank euch!
@Rocky Balboa @Dog @Pytroxis @Digny
@Dog Wünsche dir noch alles Gute nachträglich, hab gesehen du hattest auch vor Kurzem! ![]()
SpielerInfo[playerid][pAlter] = cache_get_field_content(0, "Alter", Handle);
zu:
SpielerInfo[playerid][pAlter] = cache_get_field_content_int(0, "Alter", Handle);
Beachte, dass du in Queries nicht Alter schreiben darfst, sondern es mit den Anführungszeichen escapen musst `Alter`, da ALTER ein SQL Befehl ist.
[jTuT] Fraktions-Fahrzeug-System mit MySQL R39-5
Zwecks Tuning findest du in Post #23 eine Hilfestellung.
Die Vermutung von @Dog stimmt, der String ist zu lang.
Es können maximal 144+1 (EOS) Zeichen ausgegeben werden. Passe daher den string, in dem der Text steht, auf eine Länge von 145 an, oder kürze den Text auf 144 Zeichen.
Dann ist die Bedingung so nicht passend.
Versuche es so:
if(newkeys & KEY_SECONDARY_ATTACK && (GetPlayerVirtualWorld(playerid) == 0 || SpielerInfo[playerid][Arena] != 2))