Diesen Teil hier darfst du nur einmal im letzten format nutzen:
, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Entferne es aus den anderen.
Diesen Teil hier darfst du nur einmal im letzten format nutzen:
, PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Entferne es aus den anderen.
Ok, was sagt denn der MySQL Log, wenn du dich einloggst (vorher leeren)?
Damit das Query übernommen wird:
//Erster Teil:
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT, `name` varchar(255), `password` varchar(255),`level` int(11),`adminlevel` int(11),");
//Zweiter Teil, in "query" steht der erste Teil. An die Stelle von %s kommt jetzt, dadurch dass hinten "query" steht, der erste Teil rein, somit ist das ganze komplett.
format(query, sizeof(query), "%s`supporter` int(11),`donaterank` int(11),`registered` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
Das kommt danach.
Ja, nur musst du aufpassen, dass die Zeile nicht zu lang wird, sonst meckert der Compiler. Dann musst du es auf zwei format's aufteilen, also so:
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `accounts` (`id` int(11) AUTO_INCREMENT, `name` varchar(255), `password` varchar(255),`level` int(11),`adminlevel` int(11),");
format(query, sizeof(query), "%s`supporter` int(11),`donaterank` int(11),`registered` int(11), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;", query);
Zeigst du den Dialog vielleicht noch irgendwo anders dem Spieler an, suche mal im Code danach.
Wenn nicht, dann müssen wir das mal debuggen, poste dann bitte zuerst mal deinen MySQL Log der dir ausgegeben wird, wenn du dich einloggst (vorher leeren).
Warum denn überhaupt ein Limit an möglichen Nachrichten einbauen?
Mach es so, da kannst du so viele Zeilenumbrüche machen wie du willst, ohne dass alle Nachrichten zwischengespeichert werden müssen:
native _SendClientMessage(playerid, color, string[]) = SendClientMessage;
#define SendClientMessage __SendClientMessage
stock __SendClientMessage(playerid, color, string[]) // by Deadmau5 | edited und hooked by BlackAce | last edit by Jeffry
{
new tmp[145];
for(new i = 0, j = strlen(string); i < j; i++)
{
if(string[i] == '\n')
{
strmid(tmp, string, 0, i);
strdel(string, 0, i+1);
j -= i+1;
i = -1;
_SendClientMessage(playerid,color,tmp);
}
}
if(strlen(string)) _SendClientMessage(playerid,color,string);
return true;
}
Die "split"-Funktion brauchst du dann nicht mehr.
Du bekommst diese Nachricht hier wieder angezeigt?
SendClientMessage(playerid,COLOR_YELLOW,"Willkommen auf Los Santos Roleplay, bitte fülle die Fragen aus, um fortzufahren.");
Wenn ja, wo setzt du "pTut" auf 1 und wie speicherst du den Spieler?
Ich lobe (natürlich) @Jeffry, weil er sich seit dem Umstieg auf WBB4 so sehr bemüht hat alles zu verbessern.
Danke, freut mich! Ich möchte dieses Lob gerne vor allem an die Moderatoren weiter geben, die sich sehr schnell und und mit ihrem Bestmöglichen um die angesprochenen Punkte gekümmert haben.
Ohne diese Arbeit, die wie ich denke auch sehr zeitaufwendig war, vor allem in der Zeit der Umstellung, wäre das nicht möglich gewesen.
Daher hiermit auch vor mir nochmal ein Lob an alle, die zur Verbesserung des Forums tatkräftig beigetragen haben!
Die CPU ist bei 0% wenn du nichts machst?
Yup, springt natürlich hin und wieder kurz auf 2-3% und dann wieder runter, nichts macht der Rechner ja nie.
Hier ein Screenshot, habe Skype, Firefox, Chrome und Windows Live Mail offen, sowie den Task Manager:
Wenn ich ein Youtube Video laufen lasse, dann ist sie so bei 10% Auslastung.
@Jeffry (...) gibt es da nicht andere Sachen? Müll rauspicken so wie die Müllmänner das immer machen mit ihren Pickern?
Diese Programme suchen immer nur nach bestimmten Mustern, ähnlich wie ein AntiVir, da sind also auch sehr viele falsche Erkennungen dabei, vor allem Programme wie CCCleaner räumen sehr gerne Zeug auf, das sie gar nicht aufräumen sollen, danach wundert man sich, warum Fehler auftreten. Empfehlen kann ich solche Tools nicht, ich nutze sie auch selbst nicht.
Für mich ist die einzig sinnvolle Methode, einen zugemüllten Rechner zu "entmüllen" eine Neuinstallation von Windows.
Damit man nicht alles neu runterladen muss kann man eine zweite/externe Festplatte nutzen, und dort die Installationspakete speichern, bzw. die Spiele dort drauf speichern. Am sinnvollsten ist es natürlich, nicht 100 Spiele auf dem Rechner zu haben, das macht die Platte nur unnötig lahm - je voller desto langsamer.
Hebt man sich die Installationspakete auf, so ist man weitgehend unabhängig von der Leitung bei einer Neuinstallation. Natürlich sollte man dann für Programme das direkte Installationspaket nutzen, und nicht - wie von Chip zum Beispiel - diese Installer die was weiß ich noch mit sich bringen und erst selbst das Paket runterladen.
Hab seit 16 Uhr Feierabend und den ganzen Nachmittag damit verbracht ne Lösung zu finden, momentan bin ich soweit das meine "Ruhe CPU" auf 8-10 % gesunken ist, bin ich schon mal mehr mit zufrieden als vorhin
Nur das Problem ist von meinen 8 GB RAM sind 4 dauerhaft verbraucht..
Ich habe meinen Rechner jetzt dann fast auf den Tag genau drei Jahre (Ende Januar) und der läuft noch genauso schnell wie am ersten Tag - durch Windows 10 ist er eher noch etwas schneller geworden, beim Starten. Die CPU ist, wenn man nichts macht und alles zu ist, bei 0%.
Vom RAM her werden so 2,5GB belegt sein, von 16GB. Wenn du 4 GB belegt hast dann sind da wohl noch Prozesse offen, wenn ein Neustart das nicht regelt, dann schau im Taskmanager nach was da gelistet wird, du kannst die Prozesse ja nach CPU Last und RAM Verbrauch sortieren, dann weißt du gleich, was da so viel braucht.
Wie kann ich mir den soviel Müll einfangen das, dass alles so hart am arbeiten ist...
Das ist eine gute Frage, die habe ich auch schon dem einen oder anderen gestellt, wenn der Rechner zugemüllt war. Meistens heißt es dann (oder eigentlich immer), auf die Frage "Was hast du denn gemacht?": "Ich? Ich hab gar nichts gemacht." Natürlich ![]()
Ich kann da nur raten: In Zukunft bei Installationen und Downloads sehr genau lesen was man installiert, angehakt hat und was man runter lädt, und nicht jeden Müll installieren, sondern nur das, was man auch wirklich braucht.
new id_x = cache_get_field_content_int(1,"VID",dbhandle);
Zu
new id_x = cache_get_field_content_int(i,"VID",dbhandle);
Mal ehrlich, wenn ein Rechner bzw. dessen Komponenten durch sowas kaputt gehen, dann hat man Schrott gekauft.
Ich habe vor einiger Zeit mein Notebook (500€/Medion/BJ2012) über Wochen dauerhaft an gehabt größtenteils mit SA-MP aktiv, das hat dem Notebook rein gar nichts ausgemacht, und Notebooks sind bekanntlich wesentlich anfälliger, als PCs.
Firmen haben oft ihre Rechner wochenlang ununterbrochen an, wenn die gleich kaputt gehen würden, wäre das irgendwie sinnlos, also von ein/zwei Nächten geht ein Rechner normalerweise nicht kaputt, oder wird sonst irgendwie beschädigt (Ausnahmen bestätigen natürlich die Regel).
In deinem Fall:
Wenn du schon AdWare drauf hast von der du nichts weißt, dann mache den Rechner platt, sprich installiere Windows neu, das entfernt den Müll auf jeden Fall, und du bist praktisch wieder im Auslieferungszustand, so habe ich schon einige Problemrechner von Freunden und Familie "repariert".
Defragmentieren bringt da nichts, da drückst du den Müll nur zusammen.
mysql_tquery ruft ebenso ein Callback auf.
Mit mysql_query würde es so aussehen:
mysql_query(dbhandle, query);
Du musst mysql_query nutzen, oder, und das wäre besser, den Cache im Callback auslesen, das du in mysql_function_query angibst.
Ich nutze schon immer (6+ Jahre) das mitgelieferte pawno.
aber ich dachte das könnte man anders lösen.
Was du machen könntest ist, in der ocmd Include herumzuspielen, da habe ich grade mal versucht und konnte so ein Zeichen mehr schreiben, vielleicht bekommt man da auch noch mehr hin (habe es nur zur Überprüfung versucht). Allerdings würde ich das nicht wirklich empfehlen, denn wenn du irgendwann mal die Include verlierst oder aktualisierst, dann kompiliert dein Code nicht mehr, und nach Monaten oder Jahren sich daran noch zu erinnern klappt meistens nicht, dann sucht man ewig nach dem Grund für den Absturz.
Mit der vorgeschlagenen Methode bist du auf jeden Fall auf der sicheren Seite, denke das ist am wichtigsten.
Das scheint daran zu liegen, dass die Zeile, die ocmd da erstellt zu lang wird, denn mit weniger Zeichen geht es (a,b,c,d).
Umgehe es einfach so:
ocmd:carhelp(playerid, params[]) return ocmd_carhilfe(playerid, params);
ocmd@3:carhilfe,carcmd,carcmds(playerid,params[])
{
return 1;
}
Ist halt nicht ganz so schön, aber erfüllt seinen Zweck.
Das liegt daran, dass du immer wieder ALTER TABLE aufrufst.
Erstelle die Spalten gleich im CREATE TABLE Statement, dann passiert das nicht mehr.
format(query, sizeof(query), "CREATE TABLE IF NOT EXISTS `bugs` (`id` int(11) AUTO_INCREMENT, `name` varchar(255), `bugtext` varchar(255), PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;");
Deklariere die Variable am besten lokal, du brauchst die ja nur im Befehl als Zwischenspeicher.
Und nutze MAX_VEHICLES, so viele Fahrzeuge können ja erstellt sein, von den SA-MP vehicleids her.
new Text3D:changedraw[MAX_VEHICLES];
ocmd:pdlabel(playerid,params[])
{
new vehicleids = GetPlayerVehicleID(playerid);
changedraw[vehicleids] = Create3DTextLabel("Polizei.\n Bitte folgen.", 0x33CCFFAA, 0.0, 0.0, 0.0, 50.0, -1, 1 );
Attach3DTextLabelToVehicle(changedraw[vehicleids], vehicleids, 0.0, 0.0, 2.0);
GameTextForPlayer(playerid, "~n~~n~~n~~n~~n~~n~~G~Eingeschaltet!", 5000, 5);
return 1;
}
ocmd:pdlabeloff(playerid,params[])
{
new vehicleids = GetPlayerVehicleid(playerid);
Delete3DTextLabel(changedraw[vehicleids]);
return 1;
}