Beiträge von Goldkiller

    Im SQL Statement hast du die Spalte "Leben" , in der Tabellenstruktur aber nicht.In der Funktion mysql_format hast du 6 Platzhalter ( %e ) aber gibst nur 3 zusätzliche Parameter an.
    Einfacher fände ich es, manuell format zu nutzen für das SQL Kommando und dieses mal per print auszugeben. Dann kann man besser nachvollziehen,was im Hintergrund passiert.
    Das %e als Platzhalter macht ja auch nichts anderes,als an diesem Parameter zuvor mysql_real_escape_string durchzuführen.Austauschen sollte daher kein Problem sein.

    Das Foto kann ich nicht sehen. Besser wäre es auch,wenn du das dazugehörige SQL Statement postest.


    Ich denke aber,dass du eine Spalte "count" genannt hast. Das Wort "count" ist aber eine Funktion in SQL.
    Damit es nicht als Funktion erkannt wird sondern als Spalten, müsstest du es mit ` markieren.
    zB.

    SQL
    UPDATE `tabelle` SET `count` = 1 WHERE `name` = 'Andrzejxy'

    Jack Gerilla hat die Lösung genannt. Es ist nämlich das "return 0",weshalb es nicht funktioniert.
    Deine Aussage "Es geht immer noch nicht :(" ist nicht Hilfreich,da keiner weiss wie es denn jetzt im Script aussieht.
    Das return 0 muss kommen,wenn das Schimpfwort definitiv gefunden wurde.


    Macht ja natürlich Sinn,den aBesitzer auszulesen in dem man in der Datenbank nach dem aBesitzer sucht den wir bereits im Script kennen :wacko: .

    Spoiler anzeigen
    Natürlich nicht

    Vorausgesetzt du kennst den aBesitzer noch nicht bei AutosLaden() ( davon gehe ich aus, sonst macht es noch weniger Sinn ), dann wird dort der Wert hinter der Variable <LEER> sein.
    Jetzt den Besitzer mit dem Namen <LEER> ( Also nichts ) zu suchen wird nicht funktionieren und somit alles weitere auch nicht.


    Hättest besser mal mit der ID gearbeitet. Je nachdem wie du das Ganze aufgezogen hast,gibt es aber auch keine ID.


    eVasi0n Vorschlag ist da definitiv besser.

    Mit sscanf kannst du nicht MySQL auslesen oder " Daten mit Sscanf laden" . Die Dinge hängen nicht miteinander zusammen.
    Falls du mehr über sscanf wissen willst, hier.

    Du bist dir aber sicher,dass das überhaupt funktioniert ?

    Zitat

    vehs[i][model] = mysql_GetInt("autos","model", "ID", "i");


    Wieso hast denn als 4. Parameter "i" ?


    Zitat

    Kann ich das ganze irgendwie verkürzen, indem ich das alles in einen Query oder so mache?


    Wäre gut.
    Das Stichwort dazu wäre SELECT. Google hilft dir da sicherlich.

    99999999 hat aber auch 8 Stellen, würde aber in Beiden Fällen ( 1. & 2. ) nicht zugelassen werden.


    http://wiki.sa-mp.com/wiki/Random

    Zitat

    Returns A random number ranging from 0 to max-1.


    Spoiler anzeigen
    random(90000000) + 10000000;


    Zitat

    Muesste ich dann nicht dann iwie ne andere zahl also es soll in etwa so stehen 46347768


    Und nicht 12345678


    Eine Zahl zwischen "10000000 <= X <= 99999999" wird dir ausgegeben. Doppelte können natürlich eintreten.

    Was genau schaffst du denn nicht.
    Du lässt den Textdraw unter OnPlayerConnect erstellen ( Hast du ja bereits bei OnGameModeInit nur musst du die Schleife entfernen ) und zerstörst es unter OnPlayerDisconnect.
    Wenn du sagst wo du Probleme hast,bekommst du sicherlich Hilfe. Einen fertigen Code werde ich dir aber nicht posten ;).

    Das Problem dürfte bei dir der Code unter OnPlayerSpawn sein.
    Wieso zeigst du dort in einer Schleife dem Spieler ( einem Spieler (!) ) alle Textdraws im Array Ort an ?
    Es reicht doch,nur das extra Textdraw für den Spieler anzuzeigen.


    Spoiler anzeigen
    TextDrawShowForPlayer(playerid,Ort[playerid]);


    Übrigens würde ich an deiner Stelle nicht die 500 Textdraws ( falls MAX_PLAYERS nicht re-definiert wurde ) beim Scriptstart erstellen, sondern unter
    OnPlayerConnect. Heißt also,nur nach Bedarf.Verlässt der Spieler den Server wieder, löschst du diesen wieder unter OnPlayerDisconnect.
    Es wird nämlich sicherlich der Fall sein,dass du nicht alle Textdraws gleichzeitig benötigst da vllt nur 3 Spieler auf deinem Server sind. Wozu dann also
    direkt 500 erstellen ? Das ist nur unnötig erstelltes Zeug ;).

    Warum greifst du nicht direkt auf das 5. Bit zu ?
    Ich gehe mal davon aus,dass du sscanf besitzt.
    Dann ließ doch den String mit sscanf aus als Typ b ( binary ). Dann bekommst die Streng der eine Zahl im Binärsystem repräsentiert korrekt umgewandelt in eine Zahl.
    Denn 0b1011011101 ist nicht das gleiche wie 1011011101.
    Danach kannst du mit & den Wert prüfen.


    new bin;
    sscanf("01101110101111011","b",bin);
    if( bin & 0b10000) {
    // An 5. Stelle ist eine 1.
    }


    //Edit:
    Zusatzinfo


    Du meinst, die Tabelle ohne ` zu markieren ist ein Fehler ? Definitiv nicht.


    Das Problem ist das MINUS in den Spaltennamen.
    Daher probier es mal aus, die Spalte mit ` zu markieren ( Ich weiss den Fachbegriff gerade nicht :pinch: ).


    Notfalls gib den String per echo aus und probier es manuell an der Datenbank aus.


    //Edit:
    Siehe hier.

    Würde schon etwas ressourcendsparender sein, denn sizeof() ist ein bisschen langsamer, als die Stringgröße direkt anzugeben.


    Den Beweis würde ich mal gerne sehen.

    Spoiler anzeigen
    Was du schreibst ist nämlich totaler Blödsinn und nicht wahr.

    Du hast damit leider ein Beispiel dafür geliefert, wie sinnfrei dieses ganze "Ressourcenschonender" Thema sein kann. Anstatt bei den großen Problemen anzusetzen, versuchst du hier an einem extrem kleinem Problem anzusetzen und dann auch noch falsch :thumbdown: .

    Das du auch alles in einem Rutsch machen könntest,ist dir sicherlich bewusst.
    Dennoch, im 2. SQL Kommando hast du keine WHERE Bedingung. Eventuell meinst du ja das mit "da der query2 nicht gespeichert wird". Denn vom Prinzip ist ein UPDATE auch ohne WHERE möglich.
    Sonst gibt es immernoch ein Log,die den Fehler ausspuchen müsste. Notfalls gibst du per print() den String aus und probierst es manuell an der MySQL Datenbank aus.


    Spoiler anzeigen
    Die Strings würde ich auch außerhalb der while-Schleife erstellen.

    Die Nutzung von "else if" ist hier das Problem.
    Denn nur eines der Fälle wird durchgeführt,sofern die Bedingung wahr ist.
    Da du bei Level 5 die erste Bedingung ( if(SpielerInfo[playerid][pAdmin] >= 1) ) erfüllst , werden alle anderen nicht mehr geprüft.


    Am einfachsten wäre es,das "else" aus dem "else if" zu entfernen. Die Lösung von Scott_Mitchell würde aber auch funktionieren.