Was du mal versuchen könntest wäre dieses Plugin:
http://forum.sa-mp.com/showthread.php?t=271129
Möglicherweise hilft dessen Ausgabe etwas, um zu erkennen an was die Verzögerung liegen könnte.
Was du mal versuchen könntest wäre dieses Plugin:
http://forum.sa-mp.com/showthread.php?t=271129
Möglicherweise hilft dessen Ausgabe etwas, um zu erkennen an was die Verzögerung liegen könnte.
Wenn das Label weg geht, wird die Pflanze dann auch aus der Datenbank gelöscht?
Wenn ja, dann ist HanfInfo[i][h_wasser] auf 0.
Hast du Localhost oder 127.0.0.1 genommen ?
localhost, so wie es drin war.
Ging es denn vor dem Neuaufsetzen des Rechners ohne Probleme?
Hast du es so genutzt wie ich es dir geschickt habe ?
1:1 genau so wie du es mir geschickt hast. Habe nur die Login-Daten für MySQL auf meine Daten angepasst. Ich habe den Ordner "Neues Script" verwendet.
Deshalb würde ich behaupten, dass es eigentlich nicht am Code liegen kann.
Und es ist ja auch nicht so, dass in der Datenbank 10000000 Einträge sind, sondern lediglich einer bzw. jetzt zwei.
Ist schon komisch, dass es bei dir so langsam ist.
Welche xampp Version hast du genommen ?
v3.2.2
Betriebssystem ist Windows 10 Home (10586.318) 64 Bit.
Ich habe es nun ausprobiert, das Problem kann ich allerdings nicht nachvollziehen.
Hier das Video, wie es bei mir ist:
Das ist meiner Meinung nach so, wie es sein soll, nicht?
Ging es denn bei dir mit diesem Code, bevor du deinen Rechner neu aufgesetzt hast?
Sehr interessant.
Ich habe es so ausprobiert:
format(speed_string,sizeof(speed_string),"~B~Fahrzeug: ~W~VehicleName[GetVehicleModel(vehicleid)-400]~n~~B~Km/h: ~W~final_speed_int km/h~n~~B~Treibstoff: ~W~Gas[vehicleid]l/GetGasMax(GetVehicleModel(vehicleid))l~n~~B~Tankart: ~W~str5~n~~B~GPS: ~W~LocationZone");
Der Fehler war der gleiche wie bei dir (nicht verwirren lassen warum die Variablen IM String stehen, das habe ich nur gemacht, dass da was steht).
Dann habe ich Stück für Stück den String kleiner gemacht (Text entfernt), bis es plötzlich ging.
Dann habe ich Stück für Stück wieder alles eingefügt (nicht komplett, sondern Teil für Teil), dann ging es immernoch, und zwar komplett.
Hier der Code der funktioniert:
format(speed_string,sizeof(speed_string),"~B~Fahrzeug: ~W~VehicleName[GetVehicleModel(vehicleid)-400]~n~~B~Km/h: ~W~final_speed_int km/h~n~~B~Treibstoff: ~W~Gas[vehicleid]l/GetGasMax(GetVehicleModel(vehicleid))l~n~~B~Tankart: ~W~str5~n~~B~GPS: ~W~LocationZone");
Ich kann da keinen Unterschied erkennen, aber er funktioniert. ![]()
Möglicherweise ist in dem ersten Code ein fehlerhaftes unsichtbares Zeichen (wird nicht dargestellt) drin.
Versuche es daher mal so:
format(speed_string,sizeof(speed_string),"~B~Fahrzeug: ~W~%s~n~~B~Km/h: ~W~%d km/h~n~~B~Treibstoff: ~W~%dl/%dl~n~~B~Tankart: ~W~%s~n~~B~GPS: ~W~%s", VehicleName[GetVehicleModel(vehicleid)-400],final_speed_int,Gas[vehicleid],GetGasMax(GetVehicleModel(vehicleid)),str5,LocationZone);
Beweis, dass es funktioniert hat:
Dann kannst du es so machen:
stock GetVehicleRights(vehicleid)
{
switch(vehicleid)
{
//Hier kommt die Abfrage herein, welche Personen den
//Kofferraum welcher Fahrzeuge benutzen dürfen.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
case 1 .. 10: return 1; //Der Kofferraum von VehicleID 1 - 10 ist jetzt nur noch für Fraktion 1 verfügbar. //
case 11 .. 24: return 2; //Der Kofferraum von VehicleID 11 - 24 ist jetzt nur noch für Fraktion 2 verfügbar. //
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
return -1;
}
Und die Abfrage:
if(PlayerInfo[playerid][pTeam] != GetVehicleRights(GetClosestVehicle(playerid)))
{
return SendClientMessage(playerid,0xFF9900AA," Du hast keinen Schlüssel für dieses Fahrzeug.");
}
EDIT:
@#Jugoslawija Sorry, da hatte sich ein "G" zu viel eingeschlichen.
Ändere
format(str,sizeof(str),"Hanfid: %i\nReif: %i g\nReifeprozess: %i % \nWasservorrat: %i %",hid,HanfInfo[hid][h_reif],HanfInfo[hid][h_reife],HanfInfo[hid][h_wasser]);
zu
format(str,sizeof(str),"Hanfid: %i\nReif: %i g\nReifeprozess: %i % \nWasservorrat: %i %",HanfInfo[i][h_ID], HanfInfo[i][h_reif],HanfInfo[i][h_reife],HanfInfo[i][h_wasser]);
Und ändere
new hid=HanfInfo[i][h_ID];
zu
new hid=i;
Oder ändere alle
[hid]
zu
[i]
Ändere
format(query,sizeof(query),"INSERT INTO hanf (drogenx,drogeny,drogenz,reife,ernte) VALUES ('%f','%f','%f','0','1') ",X,Y,Z);
zu
format(query,sizeof(query),"INSERT INTO hanf (id, drogenx,drogeny,drogenz,reife,ernte) VALUES (%d, '%f','%f','%f','0','1') ",oldID+1,X,Y,Z);
Ändere dann, da danach nichts mehr folgt, das
break;in einreturn 1;
und füge nach der Schleife, also direkt vor dem zweiten return 1 das ein:
format(query,sizeof(query),"INSERT INTO hanf (id, drogenx,drogeny,drogenz,reife,ernte) VALUES (%d, '%f','%f','%f','0','1') ",oldID+1,X,Y,Z);
mysql_function_query(dbhandle,query,false,"","");
Damit auch ein Eintrag erstellt wird, wenn keine leere Zwischenzeile gefunden wurde.
Das Query kann genau so aussehen, da hier id als Angabe für die zu selektierende Spalte steht.
Heißt genau dieses Query musst du ausführen, nichts daran ändern.
Genau, so wie bei deinen anderen SELECT Queries im Code auch.
Die Anzahl der Rows musst du wie gewohnt mit cache_get_data auslesen.
Poste doch bitte mal einen Screenshot von dem Tacho, bzw am besten vom ganzen Bild, damit wir sehen, wie der Tacho bei dir aussieht.
Wie sieht es denn im Spiel aus, kannst du mal einen Screenshot posten?
Nein, im String ist alles drin, wie du dem Print entnehmen kannst.
Dann sollte es in deinem Textdraw auch angezeigt werden.
Wenn nicht, dann ist das Textdraw vielleicht zu klein (TextDrawTextSize).
Wo hast du es eingefügt?
Direkt vor der TextDrawSetString-Zeile, oder vor dem format?
Der print muss nach dem format stehen.
1. Query:
SELECT id FROM hanf;
=> mysql_function_query -> Dort eine Schleife durch die Anzahl der zurückgegebenen Rows machen und den Cache auslesen.
new oldID, newID;
for(new i = 0; i < rows; i++)
{
newID = cache_get_row_int(i, 0);
if(newID > oldID + 1)
{
//2. Query: INSERT INTO hanf (id, etc...) VALUES (%d, etc...);
break;
}
oldID = newID;
}
Füge bitte mal vor dem TextDrawSetString das ein:
printf("speed_string: %s", speed_string);
Was wird dir dann ausgegeben?
Nein, das geht so nicht.
Du müsstest erst eine SELECT Abfrage machen, die die Tabelle ausliest, dann durchläufst du die Indizes und prüfst, wann ein Sprung kommt (von 2 auf 4 z.B.), sprich wann die momentane ID größer als die vorherige ID+1 ist.
Dann machst du einen INSERT auf die vorherige ID+1.
Allerdings zeigt er mir die letzte %s mit der str 5 an
Also klappt es jetzt so?
Die NPCs haben ja kein Textdraw, daher dürfen die auch nicht durchlaufen werden.