Man merkt,dass hier der Großteil leider keine Ahnung von SQL hat.
Die Aufgabe hier ist deutlich einfacher,sofern man den Umgang mit "GROUP BY" beherrscht und zusätzlich "COUNT(*)" verwendet .
http://dev.mysql.com/doc/refma…e/group-by-modifiers.html
Da du nur die Anzahl der Werte in der Gruppe wissen willst,ist es damit ganz einfach möglich.
Beiträge von Goldkiller
-
-
Vom Prinzip her ist das hier für Hilfe bzgl PAWN,nicht bzgl SQL.
Ich hab aber ein paar Stichwörter für dich,womit du die Lösung schnell findest:ZitatORDER BY
LIMIT -
Ob enum oder Array ist ja erst mal egal.
Das wird ohne weiteres nicht funktionieren,denn du kannst nicht die Daten auslesen von statischen Objekten. Die Daten müsstest du selber vorher sammeln. -
Von mir bekommst du keine Entschuldigung, wofür denn auch. Ich hab lediglich den Spam gelöscht,der von "euch" danach kam.
Keiner von "euch" hat dafür eine Verwarnung bekommen. Hätte ich mal lieber gemacht,dann hätte deinen Kritik an mir wenigstens etwas mehr Sinn gemacht.Das du dich hier noch auf höchst kindlichem Niveau beschwerst ist das Highlight. Neben dem Erstellen des Threads bevor du privat nachfragst wieso ich die Beiträge gelöscht habe , nervst du zusätzlich mehrfach per Zitatfunktion ( was du anscheinend ziemlich cool findest ) um auf dich Aufmerksam zu machen. Meinst du es reicht nicht, dass du mich 1x per Zitatfunktion ansprichst ? Wenn du mich sowieso per Zitatfunktion ansprichst, wieso nicht gleich per PM ... Rätselhaft .
Spoiler anzeigen Ich habe auch das dumpfe Gefühl, du hast deinen tollen Thread hier auch mit 5 Sternen bewertet. Das unterstreicht nur nochml zusätzlich meine Einschätzungen zu deinem VerhaltenSo viel von mir dazu. Ich spreche hier nur für mich, Trooper hat seine Meinung dazu bereits eigenständig abgegeben.
-
Die Funktion CheckPasswort ist vom Prinzip her richtig. Ich sehe dort zumindest keinen Fehler.
Was mich dabei viel mehr interessiert,ist wie du die Funktion CheckPasswort aufrufst und wo die Werte her kommen,die du dieser Funktion als Parameter übergibst.
Lass dir auch mal via print in der Funktion CheckPasswort den String query ausgeben,nachdem du ihn mit format verarbeitet hast.
Es wäre auch gut zu wissen,welches MySQL Plugin du nutzt mit welcher Version. -
Bietest du nicht sogar dich als Scripter für Andere an ? Sich selbst dann nicht Helfen zu können,scheint mir ein Problem zu sein.
Wie dem auch sei, du solltest dir lieber mal die Anwendung solche Plugins ansehen.
new data[7];
mysql_query("SELECT `SteuernLS`, `SteuernSF`, `SteuernLV` FROM `accounts`");
mysql_store_result();
new inte = mysql_fetch_int(); // <- Du willst doch das Gesamte Ergebnis auslesen,nicht nur Eine Zahl
for(new i = 0; i < inte; i++) // Ist Quatsch.Wozu eine Schleife durch das 1 Ergebnis von SteuernLS ?
{
sscanf(data, "p<|>iii",tax[i] // somit ist das hier auch Quatsch. Du hast sowieso nie etwas in data geschrieben
}
Ich könnte dir natürlich Helfen, verstehe aber nicht mal den Sinn deiner "Aktion". Wozu willst du von allen Accounts die SteuernLS,SteuernSF und SteuernLV auslesen ?Generell musst du mysql_fetch_row_format nutzen,um das Ergebnis als einen String zu erhalten.
In deinem Codebeispiel könnte deine Zeilenergebnis so aussehen:Zitat1000|2400|5000
Standardmäßig ist das Trennzeichen auf | gestellt.
Da du jetzt den String hast,kannst du ihn mit sscanf trennen in die drei Werte. -
Nein,ist es nicht.
-
Wieso tust du dann nicht,was dir die Warnmeldung sagt ?
Zitat[18:48:20] sscanf warning: Strings without a length are deprecated, please add a destination size.
Du sollst bei Strings ( s ) noch die Größe der Variable bzw des Strings angeben ( grund ) . Die Größe wird zwischen [ ] hinter dem Platzhalter für den String angegeben. -
Zitat
Ich hatte grade mal 20 Minuten Zeit und hab eine kleine Include geschrieben.
Das merkt man.ZitatDer Vorteil bei diesem System ist, dass alles über einen Timer läuft.
Man spart sich somit Timer für unnötige Funktionen.
Wo ist das ein Vorteil ? Du solltest dir unbedingt diesen Thread ansehen und durchlesen. -
So eine besondere Geschichte ist das jetzt nicht.
Übrigens, es heißt Urin und nichtOrin ;). -
Seit 30 Minuten ? Hast sehr lange durchgehalten.
Sorry, die meisten hier sind Berufstätig und sind nicht schon um13:30 Zuhause um sowas freizuschalten.Ist jetzt aber freigeschaltet ...
-
for(new i;i<MAX_PLAYERS;i++)
{
if(IstSpielerAdmin(playerid,3))
{
SendClientMessageToAll(COLOR_ADM,admstr);
}
}
Das sollte dich aber auch nicht wundern, wenn du eine Schleife benutzt und in dieser SendClientMessageToAll verwendest. Auch glaube ich,ist die If-Abfrage dabei nicht richtig.Sollte dort nicht i hin ? -
Für sowas haben wir einen Videosammel-Thread. Wie würde es denn hier ausarten,wenn jeder für ein Video einen extra Thread erstellt .
Außerdem ist das extrem alt. -
Die Lösung von KleinerTeufel ist genau so Quatsch wie dein Ursprünglicher Code.Das wird niemals funktionieren,brauchst du erst gar nicht testen. Er hat
keinen der Fehler behoben,die Ich genannt hatte.ZitatUnd wie mache ich das jetzt das 20 Spalten da sind?
Wie du das machst habe ich geschrieben.ZitatShowPlayerDialog in der Schleife macht keinen Sinn. Genau so wie das erstellen des Strings "str", denn so wird er bei Jedem Schleifendurchgang neu erstellt und ist somit immer leer und kann nur 1 Zeile enthalten.
ShowPlayerDialog nicht in der Schleife aufrufen.
Den String str nicht in der Schleife erstellen.Wieviele Zeilen ( Nicht Spalten ) du am Ende hast,spielt keine Rolle. Es können 5 oder auch 100 sein, dazu müsstest du lediglich den String für den Dialog vergrößen.
-
ShowPlayerDialog in der Schleife macht keinen Sinn. Genau so wie das erstellen des Strings "str", denn so wird er bei Jedem Schleifendurchgang neu erstellt und ist somit immer leer und kann nur 1 Zeile enthalten.
-
Du solltest dir mal anschauen was ein Array ist und wie man dieses Global anlegt.
Du kannst nicht irgendwo in einer Funktionen eine Variable anlegen und hoffen,dass sie überall aufrufbar ist. Zusätzlich weisst du bei deiner jetztigen Lösung auch nicht, für welchen Spieler der Checkpoint gesetzt wurde. Die if-Anweisung solltest du auch nochmal überarbeiten . Das war nicht mehr als nur n lahmer Pseudocode von mir. -
Nein, du musst das manuell verwalten.
Du legst eine Variable für Jeden Spieler an. Dann bestimmt du zu jedem "unterschiedlichem" Checkpoint einen Wert, mit dem du später identifizieren willst um welchen Checkpoint es sich handelt.
Bei der Nutzung von SetPlayerCheckpoint setzt du jetzt noch zusätzlich den Wert der Variable des Spielers auf den Wert für den Checkpoint,denn du vorher bestimmt hast.
Zum Beispiel#define CHECKPOINT_BANK 24
#define CHECKPOINT_TELEPORT_LS 356
Der Spielervariable setzt du dann den entsprechenden Wert:
Var von Player = CHECKPOINT_BANK;
SetPlayerCheckpoint( )
Jetzt prüfst bei OnPlayerEnterCheckpoint, welcher Wert hinter der Spielervariable steckt und weißt, welchen Checkpoint er betreten hat.
if Var von Player == CHECKPOINT_BANK
// Tu Irgendwas -
Dann wirst du wohl irgendeine Art Checkpoint Streamer nutzen müssen ( Da kriegst nämlich in der Regel eine "interne" ID für jeden Checkpoint ) oder manuell per Variable festlegen,welchen Checkpoint du dem Spieler angezeigt hast. Denn nur so kannst du zurückführen, welcher Checkpoint betreten wurden.
Wie du sicherlich weisst,kann nämlich immer nur ein Checkpoint erstellt werden ( Zumindest die Richtigen , Ich rede nicht von MapMarker ). Du musst also bestimmten, welcher Checkpoint dieser eine ist. -
Wir sind noch keine Dating-Börse .
-
Ein "Ne geht auch nicht" hilft Niemanden. Wie sieht es denn bei dir aus,nachdem du den Lösungsvorschlag von mir umgesetzt hast.
Übrigens,
printf("norm_car[%d] = %d",i,norm_car[i]);
wäre sinnvoller für eine Auswertung der Daten.