Ok, dann muss es auf jeden Fall so sein, das hatten wir ja so aber schon zuvor.
if(cID >= sizeof(fsCP))
Wenn es dann nicht mehr geht, nimm nochmal die Prints von Post #6 und schau was geprintet wird.
Ok, dann muss es auf jeden Fall so sein, das hatten wir ja so aber schon zuvor.
if(cID >= sizeof(fsCP))
Wenn es dann nicht mehr geht, nimm nochmal die Prints von Post #6 und schau was geprintet wird.
stock mysql_GetInttoo(Table[], Field[], Where[], check){
new query[128];
mysql_real_escape_string(Table, Table);
mysql_real_escape_string(Field, Field);
mysql_real_escape_string(Where, Where);
format(query, 128, "SELECT %s FROM %s WHERE %s = '%d'", Field, Table, Where, check);
mysql_query(query);
mysql_store_result();
new sqlint = mysql_fetch_int();
mysql_free_result();
return sqlint;
}
public LoadCoupons()
{
for(new i = 0; i < MAX_GUTSCHEINE; i++)
{
Gutschein[i][gOwner] = mysql_GetInttoo("gutscheine", "gOwner", "DatensatzID",i);
Gutschein[i][gCode] = mysql_GetInttoo("gutscheine", "gCode", "DatensatzID",i);
Gutschein[i][gUsed] = mysql_GetInttoo("gutscheine", "gUsed", "DatensatzID",i);
Gutschein[i][gUsedBy] = mysql_GetInttoo("gutscheine", "gUsedBy", "DatensatzID",i);
Gutschein[i][gAktion] = mysql_GetInttoo("gutscheine", "gAktion", "DatensatzID",i);
}
return 1;
}
Und wie ist "mysql_GetInttoo" definiert? Poste die Funktion auch noch.
Falls darin wieder eine Funktion verschachtelt ist, die du selbst gemacht hast, poste die auch dazu (usw.).
Was ich dir schon sagen kann ist, dass du das "i" nicht in die Abfrage mit gibst, sprich es funktioniert nicht. Wie man es behebt, dazu brauche ich den restlichen Code.
Mensch Jeffry, das hat schon wieder funktioniert... Samma, wielange scriptest Du schon? Ist ja unglaublich was Du alles drauf hast.
![]()
Und ja, ich verzeihe Dir das Du Bundesliga geguckt hast.
Über 5 Jahre, allerdings war das doch eine Kleinigkeit. ![]()
Danke. ![]()
Manche PayDay Draws überspielen sich oder wenn ein anderer User auf den Server kommt überlappt sich das z.B PayDay: 6/60 und ein User kommt on steht über der 6/60 z.B 12/60
Das würde nur passieren, wenn du das PlayerTextdraw für den gleichen Spieler mehrmals erstellen lässt, vielleicht hast du es in einer Schleife?
Poste ggf. nochmal den Code, mit dem du das Textdraw erstellst.
if(IsPlayerAdmin(playerid) || SpielerInfo[playerid][AdminLevel] > 3)
-> Oder
Gibt es so einen Pfeil in kleiner und in einzelner Ausführung? Der hier hat zwei Pfeile. Danke!
Den gleichen Pfeil nicht, aber einen ähnlichen.
Objekt ID: 1318
Dann sollte es so aussehen müssen, wenn ich dein enum richtig interpretiere:
for(new i=0;i<GetMaxPlayers();i++)
{
for(new slot = 0;slot<MAX_PLAYER_VEHICLES;slot++)
{
if(vehicleid == PrivateVehicle[i][slot][vehID])
{
new pname[MAX_PLAYER_NAME];
GetPlayerName(i, pname, MAX_PLAYER_NAME);
if(strcmp(pname, PrivateVehicle[i][slot][vehBesitzer]) != 0 && PrivateVehicle[i][slot][vehFraktion] != SpielerInfo[i][Fraktion])
{
SendClientMessage(i, 0xFF0000FF, "Fahrzeug gehört nicht dir, oder deiner Fraktion.");
return 1;
}
if(Vehicle[PrivateVehicle[i][slot][vehID]][vehMotor] == false)
{
Vehicle[PrivateVehicle[i][slot][vehID]][vehMotor] = true;
GetVehicleParamsEx(PrivateVehicle[i][slot][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(PrivateVehicle[i][slot][vehID], VEHICLE_PARAMS_ON, lights, alarm, doors, bonnet, boot, objective);
GameTextForPlayer(playerid, "~w~Motor ~g~gestartet", 1000, 6);
Vehicle[PrivateVehicle[i][slot][vehID]][VehicleTimer] = SetTimerEx("OnVehicleTimer", 1136, 1, "i", PrivateVehicle[i][slot][vehID]);
return 1;
}
else if(Vehicle[PrivateVehicle[i][slot][vehID]][vehMotor] == true)
{
Vehicle[PrivateVehicle[i][slot][vehID]][vehMotor] = false;
GetVehicleParamsEx(PrivateVehicle[i][slot][vehID], engine, lights, alarm, doors, bonnet, boot, objective);
SetVehicleParamsEx(PrivateVehicle[i][slot][vehID], VEHICLE_PARAMS_OFF, lights, alarm, doors, bonnet, boot, objective);
GameTextForPlayer(playerid, "~w~Motor ~r~ausgeschaltet", 1000, 6);
KillTimer(Vehicle[PrivateVehicle[i][slot][vehID]][VehicleTimer]);
return 1;
}
}
}
}
crs0r:
Ich war Bundesliga schauen. ![]()
Der Fehler in deinem Code ist, dass das query mit 128 zu klein ist. Ändere es zu 256, dann dürfte es klappen.
OnGameModeExit wird nur aufgerufen, wenn du GMX machst, nicht wenn du die Konsole schließt.
Dort gibt es anscheinend ebenso ein Limit, das in etwa bei 1000 liegt. Genaue Angaben gibt es nicht. Siehe hier: http://wiki.sa-mp.com/wiki/RemoveBuildingForPlayer
Problem 1:
Wo speicherst du den Wert der Fraktion, der das Fahrzeug angehört?
Hast du da sowas wie:
PrivateVehicle[i][slot][FrakID]
das Selbe für den Beseitzer. Poste am besten mal das enum welches zu "PrivateVehicle" gehört.
Problem 2:
Wenn du Fraktion 0 - 4 hast, musst du MAX_FRAKS auf 5 setzen.
Ist es das selbe mit RemoveBuildingForPlayer und CreateObject ?
Was genau meinst du?
new PlayerText:Payday;
Zu
new PlayerText:Payday[MAX_PLAYERS];
Das habe ich dir doch im Post drüber erklärt.
Suche einfach nach den beiden Zeilen, und füge jeweils drunter das ein, was ich dazugeschrieben habe.
Erstellen kannst du das Textdraw ja gleich mit "Payday: 0/60", oder du machst bei OnPlayerConnect noch:
PlayerTextDrawSetString(playerid, Payday[playerid], "Payday: 0/60");
SetTimer("vehicledeath",5000,false);
zu:
SetTimerEx("vehicledeath",5000,false,"d",vehicleid);
Dann versuche es mal so, vielleicht ist das noch eins Platz:
if(cID == sizeof(fsCP)-1)
Ja, da SA-MP eine 32-Bit Anwendung ist.
Nein, du hast es nur bei 2'en gemacht.
Geld2[playerid] = CreatePlayerTextDraw(playerid,500.000000, 81.000000, "100,00 $");
PlayerTextDrawBackgroundColor(Geld2[playerid], 255); //10881
PlayerTextDrawFont(playerid,Geld2[playerid], 1);
PlayerTextDrawLetterSize(Geld2[playerid], 0.320000, 1.400000);
PlayerTextDrawColor(Geld2[playerid], -1);
PlayerTextDrawSetOutline(Geld2[playerid], 0);
PlayerTextDrawSetProportional(Geld2[playerid], 1);
PlayerTextDrawSetShadow(Geld2[playerid], 1);
PlayerTextDrawUseBox(Geld2[playerid], 1);
PlayerTextDrawBoxColor(Geld2[playerid], 255);
PlayerTextDrawTextSize(Geld2[playerid], 609.000000, 2.000000);
PlayerTextDrawSetSelectable(Geld2[playerid], 0); //10891
zu:
Geld2[playerid] = CreatePlayerTextDraw(playerid,500.000000, 81.000000, "100,00 $");
PlayerTextDrawBackgroundColor(playerid,Geld2[playerid], 255); //10881
PlayerTextDrawFont(playerid,Geld2[playerid], 1);
PlayerTextDrawLetterSize(playerid,Geld2[playerid], 0.320000, 1.400000);
PlayerTextDrawColor(playerid,Geld2[playerid], -1);
PlayerTextDrawSetOutline(playerid,Geld2[playerid], 0);
PlayerTextDrawSetProportional(playerid,Geld2[playerid], 1);
PlayerTextDrawSetShadow(playerid,Geld2[playerid], 1);
PlayerTextDrawUseBox(playerid,Geld2[playerid], 1);
PlayerTextDrawBoxColor(playerid,Geld2[playerid], 255);
PlayerTextDrawTextSize(playerid,Geld2[playerid], 609.000000, 2.000000);
PlayerTextDrawSetSelectable(playerid,Geld2[playerid], 0); //10891
Du hast doch da sicher einen Timer, der jede Minute prüft, ob ein Spieler einen PayDay bekommen darf. In diesem Timer wäre es sinnvoll, wenn man dort direkt das Textdraw einbaut, und es so minütlich aktualisiert.
Ansonsten, falls du das nicht posten willst:
Textdraw als PlayerTextdraw erstellen: http://wiki.sa-mp.com/wiki/CreatePlayerTextDraw
Und dann bei der Aktualisierung: http://wiki.sa-mp.com/wiki/PlayerTextDrawSetString
EDIT: @toniyo:
PayDay-Timer in PM gesendet.
Textdraw mit CreatePlayerTextDraw erstellen, bei OnPlayerConnect, und bei OnPlayerDisconnect natürlich wieder entfernen.
Dann dort, wo du:
PlayerInfo[i][pPlayMinutes]++;
machst:
new str[64];
format(str, sizeof(str), "Payday: %d/60", PlayerInfo[i][pPlayMinutes]);
PlayerTextDrawSetString(i, PayDayTD[i], str);
Und dort wo du
PlayerInfo[i][pPlayMinutes] = 0;
machst:
PlayerTextDrawSetString(i, PayDayTD[i], "Payday: 0/60");
Kommst du mit dem Erstellen der Textdraws zu Recht?
new Text:Geld2[MAX_PLAYERS];
Zu
new PlayerText:Geld2[MAX_PLAYERS];
Und in den Anweisungen oben jeweils noch ein playerid als ersten Parameter einfügen.
Beispiel:
PlayerTextDrawBoxColor(Geld2[playerid], 255);
Zu
PlayerTextDrawBoxColor(playerid, Geld2[playerid], 255);