Beiträge von Goldkiller

    Was ist denn daran so schwer,die Zeile zu markieren in der der Fehler vom Compiler angezeigt wird :/ ? Besonders wenn du den Code änderst. Du wurdest sogar zuvor bereits darauf angesprochen,welche Zeile denn den Fehler verursacht.

    Du könntest einfach OnPlayerCommandText direkt oder via CallLocalFunction aufrufen mit den richtigen Parametern.
    [hide]CallLocalFunction("OnPlayerCommandText","ds",playerid,"/noamt");[/hide]

    Okay, danke, jetzt hab ich aber dieses Problem:
    Der Eintrittspreis und die Prodsanzeige ist fehlerhaft, bzw. da steht was falsches:
    [...]


    Du benutzt auch egal für welchen Platzhalter Dini_Get() ;

    Zitat

    format(dreid,sizeof(dreid),"--%s--\nBesitzer: %s\nEintrittspreis: %d$\nProds: %d/120",dini_Get(BIZ,"Name"),dini_Get(BIZ,"Besitzer"),dini_Get(BIZ,"Eintrittspreis"),dini_Get(BIZ,"Prods"));


    dini_Get() gibt dir aber einen String zurück,wäre also %s. Wenn du aber etwas als Zahl auslesen möchtest und somit auch den Platzhalter %d nutzt,dann ist es dini_GetInt()

    Der von Incognito hat kein wirkliches Limit. Er ist auch mit Abstand der Beste.Alleine schon wegen einem vorhandenem Suchalgorithmus, was zuvor sonst nur Y_Less in seinem Streamer hatte.Selbst er empfiehlt aber den von Incognito. Du musst den nur richtig einstellen,

    Zitat

    native Streamer_MaxItems(type, items);
    native Streamer_VisibleItems(type, items);


    In erster Linie sollte Streamer_MaxItems für dich Interessant sein.


    Für Große Karten empfehle ich auch zusätzlich von mir ein "Add-On".

    Das ist nur n pseudo-code, bei dir gibt es doch gar nicht "var". var steht für Variable, wäre in deinem Fall "ChooseClass[]". Wann du abfragen sollst steht auch im Pseudocode. Nämlich nachde du die Variable verringert ( -- ) oder erhöht ( ++ ) hast. In deinem jetztigen Code gibt es jeden Fall doppelt,je nachdem ob er vorher links oder rechts klickt. Im Endeffekt kannst du aber auch den Fall nur 1x abdecken und vorher prüfen ob links oder rechts geklickt wurde.

    Was du da hast geht auch viel einfacher.


    if(newkeys == KEY_HANDBRAKE) {
    var++; // Denn du gehst nach rechts
    }else if(newkeys == KEY_FIRE) {
    var--;// Denn du gehst nach Links
    }
    // Falls var < 1 ist, dann ist var jetzt 6
    // Falls var > 6 ist, dann ist var jetzt 1


    // Jetzt zeigst du die Klasse erst an! Dann brauchst du nicht selber manuell von 6 auf 5, von 5 auf 4 oder von 4 auf 5 die var setzen
    if( var == 1 ) { ... }
    else if( var == 2 ) { ... }
    // usw

    In Minuten, steht dort doch.


    Minuten = gettime() + (60 * Zeit);
    Was rechnet man denn sinnvoll mal 60 ? Natürlich erst mal Minuten. Der Variablenname spricht auch für sich.
    Genau genommen gibt man mit der Variable Minuten an,bis zu welchem UnixTimestamp der Spieler im Prison sein soll.


    1. SetTimerEx Überprüf mal,ob du dir mit der 1 dort ganz sicher bist. Eventuell kannst du auch die 1 lassen,kenne ja nicht die genauen Ablauf wie du es haben möchtest.
    2. KillTimer(playerid) - Wie kommst du dazu,den Timer mit der ID von playerid gleichzusetzen ?


    Der Timer den du mit KillTimer zerstören kannst,kriegst du als Rückgabewert von SetTimer bzw SetTimerEx.


    //Edit:

    Zitat

    searchpoint=SetPlayerCheckpoint(playerid, X,Y,Z, 2);


    Das funktioniert nicht so wie du möchtest, denn:
    SetPlayerCheckpoint

    Zitat

    Returns This function doesn't return a specific value


    Der Rückgabewert bringt dir also nichts. Du müsstest eine ID für den Checkpoint irgendwie anders festlegen / übermitteln.

    Ich hätte den Link nicht gepostet,wenn dort keine Beispiele bei wären:


    Zitat

    INSERT statements that use VALUES syntax can insert multiple rows. To do this, include multiple lists of column values, each enclosed within parentheses and separated by commas. Example:

    SQL
    INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);


    tbl_name = Tabellenname
    a , b und c = Bezeichnung der Felder,für die die Werte eingetragen werden


    SQL
    INSERT INTO user ( name ) VALUES('Mustermann'),('Musterfrau');

    Das Stimmt ja mal absolut nicht.
    Alle Felder die du im Query benutzen möchtest,müssen aus den Tabellen kommen,die du mit FROM angibst.
    Mit SELECT wählst du nur aus,welche Felder im Ergebnis am Ende landen sollen.


    Du kannst auch in einem SQL Befehl mehrere INSERTS durchführen. Formatier doch einen rießen String ( INSERT ) und sende es am Ende ab. Schau mal hier http://dev.mysql.com/doc/refman/5.5/en/insert.html.
    Du kannst aber auch einfach mehrere INSERT's Kommandos absenden mit einem mysql_query().

    Warum hast den Query nicht mal an der Datenbank ausgeführt ?

    SQL
    SELECT produkt.Preis,produkt.ProduktID,produkte.Name FROM produkt,produkte WHERE produkt.BizID = 3 AND produkte.Name = produkt.ProduktID


    Den Fehler sieht man schnell.
    Es gibt bei dir kein Biz mit der ID 3. Ich sehe nur die BizID 1 auf diesem Foto.
    Wie kommst du denn überhaupt auf die Zahl 3 für die BizID ? Vielleicht verwechselst du die BizID ja mit etwas anderem.

    Dann mach mal ein Screenshots von den Tabellen ( mit Daten ! ) oder einen MySQL Dump.
    Am besten du gibst auch mal den Query per print() aus und führst in selber direkt an der Datenbank via phpmyadmin o.Ä. aus . Kann ja auch sein,dass der String zu klein ist oder bei format() etwas nicht so läuft wie du es willst.

    Ich geh mal auf den Code im Ausgangspost ein. Interessiert eventuell ja Jemanden der ein ähnliches Problem hat.


    Das Problem ist,dass die Reihenfolge für die Level-Abfrage falsch ist.
    Angenommen du bist Level 5 und zuerst wird abgefragt ob das Stimmt:
    if(isPlayerAnAdmin(i,1))
    Stimmt natürlich.Du bist 5,also auch mindestens Level 1.
    Jetzt kommen die Anderen Abfragen gar nicht mehr dran,weil es "else if" ist und der erste Fall ( "if(isPlayerAnAdmin(i,1))" ) bereits eingetroffen ist:
    else if(isPlayerAnAdmin(i,2))
    else if(isPlayerAnAdmin(i,3))
    else if(isPlayerAnAdmin(i,4))
    else if(isPlayerAnAdmin(i,5))


    Damit es richtig wäre,hättest du nur die Reihenfolge von 1 , 2 , 3 , 4 und 5 in 5 , 4 , 3 , 2 und 1 ändern müssen.


    Der Ausgangscode würde auch funktionieren,wenn du nur die isPlayerAdmin Abfrage geändert hättest:
    if(GetPVarInt(playerid,"Adminlevel")>=rang)return 1; // <-- nicht >= , sondern ==
    Würde auch funktionieren. Ich würde aber nie das exakte Adminlevel Abfragen,sondern immer ob es größer/gleich ( >= ) einem Level ist.

    Die Tabellennamen sind sehr verwirrent.


    Zitat

    Nur leider funktioniert dies nicht :(


    Was heisst das konkret ? Wird ein Fehler in der SQL Syntax angezeigt oder bekommst du einfach keine Ergebnisse ?
    Sehe in der SQL Syntax nämlich keinen Fehler.