Beiträge von Goldkiller

    Das macht keinen Unterschied, KingMS. Dein Tipp wird nichts bringen.


    if(strcmp(inputtext,dini_Get(Spieler,"Passwort"),false) == 0)
    Füg mal über dieser Zeile eine Debug-Information aus wie z.B.:
    printf("inputtext = '%s' , dini_Get('%s',Passwort) = '%s'",inputtext,Spieler,dini_Get(Spieler,"Passwort") );
    Auf Anhieb sehe ich dort keinen Fehler, könnte an fehlender Datei o.Ä. liegen. Du solltest auch mehr Informationen angeben, woran der Login-Vorgang scheiterte. Stimmt die Passwortlänge nicht ( siehe Unten ) oder ist das Passwort nicht korrekt ?


    Nebenbei:
    if(strlen(inputtext) > 9)
    Ich sehe beim Registrieren nirgendwo, dass du Passwörter mit mindestens 10 Zeichen erwartest. Was gibst du denn überhaupt als Passwort ein ? Ist es denn länger als 9 Zeichen ?

    Danke an dich Goldkiller , wusste garnicht das wenn playerid = 0 ist es als INVALID_PLAYER_ID zählt , naja du bist killer.


    Du hast das Problem definitiv nicht verstanden, sonst würdest du so einen Quatsch nicht schreiben.


    Du fragst ab:
    if( playerid ) // = if( playerid != 0 )


    Bedeutet, ALLE Werte sind erlaubt AUßER 0.
    INVALID_PLAYER_ID ist 65535 -> Erfüllt die Bedingung 65535 != 0. Die Sache ist aber, dass INVALID_PLAYER_ID gar kein gültiger Spieler ist. Der Wert darf nicht die Abfrage erfüllen.


    Spieler (ID 0 ) -> Erfüllt die Bedingung 0 != 0 nicht. Spieler ( ID 0 ) kann aber ein echter Spieler sein.


    Seh es ein, dein Code ist falsch. Wenn überhaupt, dann müsstest du prüfen ob playerid nicht INVALID_PLAYER_ID ist.
    Hättest du im Wiki nachgeschaut würdest du sowieso sehen, dass playerid immer ein gültige Spieler-ID ist. Wer soll denn auch sonst melden, dass er angeschossen wird ? Etwa Jemand der gar nicht auf dem Server ist oder Jemand der gar nicht existiert ( INVALID_PLAYER_ID ) ?

    Zitat

    http://wiki.sa-mp.com/wiki/OnPlayerTakeDamage
    playerid The ID of the player that took damage.


    Übrigens gilt die EDIT-Regel auch für Tutorials, somit auch für dich.

    if(playerid && issuerid != INVALID_PLAYER_ID)
    Ist der größte mist den ich je gesehen habe (Goldkiller hats berreits geschrieben).


    Ausgeschrieben würde die Abfrage so aussehen:
    if(playerid == 0 && issuerid != INVALID_PLAYER_ID)


    Ne, stimmt nicht. Das wäre richtig bei:
    if(!playerid && issuerid != INVALID_PLAYER_ID)


    Wir haben aber,
    if(playerid && issuerid != INVALID_PLAYER_ID)
    Wäre:
    if(playerid != 0 && issuerid != INVALID_PLAYER_ID)


    Letztendlich ist es egal ob dort
    if( playerid ) oder if( !playerid ) steht. Schließlich wäre beides nicht richtig um playerid zu prüfen auf eine gültige Spieler-ID.


    //Edit:
    Das Tutorial ist meeeega unübersichtlich. Kommentare kann man auch direkt neben den Quellcode schreiben, gibt ja immerhin // bzw /* */. Das du die Kommentare in das Code-Tag gepackt hast lässt das Tutorial vom Aufbau sehr falsch wirken. Dann hast du auch noch BB-Codes verwendet innerhalb von Code bzw PWN. Da erkennt man nichts(!)

    Zitat

    if(playerid && issuerid != INVALID_PLAYER_ID)


    playerid mit dem Wert 0 wird die Abfrage nie wahr werden lassen. Was hast du gegen ID 0 ?


    //Edit: Zum Verständnis. Danach habe ich nicht weiter gelesen, da sich der Fehler sicherlich durch das komplette Tutorial ziehen wird und es auch bestimmt noch mehr davon gibt.

    Das liegt daran,dass du nur einen Textdraw für jeweils Kills und Deaths erstellst ( Insgesamt also 2 Textdraws ).
    Du benutzt aber den Kill-Textdraw sowohl um für Spieler A als auch Spieler B dessen Spielerbezogenen Informationen darauf darzustellen ( Spieler C , D usw.).
    Du überschreibst aber immer dessen Text:
    Spieler A Daten -> Spieler B Daten -> Spieler A Daten -> Spieler B Daten. Bei mehr Spielern natürlich ähnlich.


    So klappt es natürlich nicht, da es letztendlich nur 1 Textdraw für ALLE Spieler verwendest. Ein Textdraw kann halt nur 1 Text haben und nicht einen Text pro Spieler.


    Du könntest ein Textdraw für jeden Spieler mit TextDrawCreate anlegen oder direkt die Spielerbezogenen Textdraws erstellen mit CreatePlayerTextDraw. Letzteres ist vielleicht einfacher für das Verständnis.


    //edit:
    format(string,sizeof(string),"Deagle Kills: %d",kills,playerid); // playerid muss weg. Ist ja kein Platzhalter für da
    format(string2,sizeof(string2),"Deagle Deaths: %d",deaths,playerid); // playerid muss weg. Ist ja kein Platzhalter für da
    TextDrawSetString(Text:Kills, string); // Text: brauchst du nicht, sofern Kills schon als Tag "Text" verwendet.
    TextDrawSetString(Text:Deaths, string); // Text: brauchst du nicht, sofern Kills schon als Tag "Text" verwendet.

    Zitat

    Was bedeutet es ?


    Das da was mit dem MySQL Plugin nicht ganz passt.


    Zitat

    > MySQL plugin R5 successfully loaded.


    Du verwendest nicht das richtige Plugin in der richtigen Version. Da ich dein Script nicht kenne, kann ich dir da nicht helfen. Sieht aber so aus, als verwendest du zum kompilieren die Include eines MySQL Plugins, dass du aber nicht als Plugin in der server.cfg eingetragen hast. Deine Aufgabe wäre also jetzt, dass richtige MySQL Plugin zu deinem Script rauszusuchen und in der server.cfg einzutragen.


    //Edit:
    Könnte dieses Plugin sein, hab nur nach mysql_init gesucht:
    http://forum.sa-mp.com/showthread.php?t=122983

    [Plugin] CrashDetect 4.13
    Du solltest mal mit -d3 kompilieren, da bekommst du mehr Informationen zum Crash ( z.B. die exakte Zeile im Quellcode :(
    http://forum.sa-mp.com/showpost.php?p=1253632&postcount=7


    Zitat

    [18:26:23] [debug] #0 native fclose () [0809a9f0] from samp03svr
    [18:26:23] [debug] #1 00003b38 in public CheckIPFromList (0x00000000) from aVL.amx


    Such mal nach der Funktion CheckIPFromList(). Dort wird irgendwo ein fclose sein, dass den Crash verursacht.
    Ich meine,dass der Server crasht sobald man versucht Dateifunktionen aufzurufen bei ungültigen Filehandlern. Das kann z.B. eine nicht korrekt geöffnete Datei sein.
    Mit dem Debuggen der Funktion CheckIPFromList wird man den Fehler sicherlich schnell finden.

    Zitat


    SpielerInfo[playerid][ban] = mysql_GetInt("accounts", "ban", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Kills] = mysql_GetInt("account", "Kills", "Name", SpielerInfo[playerid][pName]);
    SpielerInfo[playerid][Deaths] = mysql_GetInt("account", "Deaths", "Name", SpielerInfo[playerid][pName]);


    accounts, accounts und accounts.

    Das geht in PAWN nicht.
    Du musst mit dem kompilieren festlegen, welche Größe ein Array hat.
    SpawnItem[ 20 ][ enum_SpawnItem(?) ]
    Der Platz für 20 Einträge ist vorhanden. Einen 21. Eintrag kannst du nicht erstellen.
    Setz die Größe auf etwas, was du wahrscheinlich erreichen wirst ( vllt 100 ) und merke dir intern mit einem Zähler, wo du zuletzt warst.


    iSpawnItems = 0;
    // Neues Item
    SpawnItem[ iSpawnItems] [...] = ...
    iSpawnItems++; // Wenn sizeof(SpawnItem) erreicht ist musst du aufpassen ;)

    Wieso lässt du dir die SQL Kommandos nicht mal per echo ausgeben bzw print_r für $data ?

    Zitat

    expects parameter 1 to be mysqli_result, boolean given in


    Sagt ja schon,dass deine SQL Abfrage kein Ergebnis liefert womit mysqli_fetch_object arbeiten kann ( $result ).


    //Edit:
    `crp_account_main`
    vs
    cRP_account_inventar
    vs
    cRP_account_licenses


    Groß und Kleinschreibung auch beachten.


    //Edit nochmal:
    Okay :-0

    Zitat


    new Veh = random(sizeof(AutodiebCar));
    //...
    Veh++; // Unsinn
    if(Veh >= sizeof(AutodiebCar)) Veh = 0;// Unsinn


    Das macht übrigens wenig Sinn.
    Veh kann ein Wert zwischen 0 und 50 sein.
    Angenommen Veh wird 50.


    new Veh = random(...) = 50;
    50++; ( 51 )
    if( 51 >= 51 ) Veh = 0;
    --> Veh 0


    Angenommen Veh wird 5.
    new Veh = random(...) = 5;
    5++; ( 6 )
    if( 6 >= 51 ) Veh = 0;
    --> Veh 6


    Du verschiebst nur den Wer bei Veh um 1 höher und bei 51 fängst du bei 0 an. Da erkenn ich keinen wirklichen Nutzen drin.
    Den Rest des Codes habe ich mir nicht angeschaut, scheint ja Jeffry schon zu machen.

    Hat er doch in den Quellcode geschrieben. Zugegeben, sofort gesehen hab ich es auch nicht.


    Zitat

    error 047: array sizes do not match, or destination array is too small


    Die Fehlermeldung ist mMn eindeutig. Die Größen der Beiden Variablen müssen identisch sein, wenn du "=" benutzen möchtest.
    Heißt:
    new var1[20],var2[20];
    var1 = var2; // Klappt, da beides 20 als Größe hat


    new var1[20],var2[50];
    var1 = var2; // Klappt nicht, da 20 != 50 ist


    Du musst also bei dir die Größe von ttext anpassen.


    Es geht zwar auch mit strcat,format,strmid etc, ändert aber am Ergebnis nichts.