Beiträge von Goldkiller

    Ehrlich gesagt ist es jetzt auch nicht so viel besser.
    Jetzt wird versucht den Dialog immer anzuzeigen. Was allerdings nicht unbedingt immer passiert, da ggf der Text leer ist. Der Funktionsaufruf findet aber trotzdem statt.
    Ich würde das ShowPlayerDialog nur aufrufen, wenn pCount > 0 ist bzw wenn cQuery nicht leer ist. Das pCount kann man sich sowieso sparen.


    //Edit
    format(str, sizeof(str),"%02d", MaxCheckPoints[playerid]);
    mit %02d wird der Zahlenwert mit 0 aufgefüllt, bis die Zahl zweistellig (2) ist. Bedeutet:
    1 -> 01
    8 -> 08
    10 -> 10
    234 -> 234
    Würde dir helfen bei Zeile 349 bis 370.

    += Zuweisung mit Addition
    + Nur Addition
    = Nur Zuweisung


    Du summierst die einzelnen Löhne auf und weist diese auch direkt dem nächst hören Lohn ergänzend zu.
    Angenommen Lohn12 ist 100, Lohn11 500 und Lohn10 2000 ist nach dem Aufruf der Methode der Wert für die o.g. Werte neu berechnet:


    Lohn12 = Bleibt unverändert bei 100
    Lohn11= 500 + 100 (Lohn12) = 600
    Lohn10= 2000 + 600 (Lohn11) = 2600



    Um es kurz zu machen:
    Ersetzte += durch +.

    Du solltest die zwei Strings "miniquery" und "miniquery2" auch zusammenfügen und als einen Query absenden , im ganzen betrachtet ist es ja schließlich auch nur einer.


    Aktuell hast du nur 2 Strings die du jeweils separat als Query versuchst auszuführen. Der erste funktioniert, der zweite nicht.


    So könntest du die Strings zusammenfügen:
    format(string,sizeof(string),"Ich bin der Anfang");
    format(string,sizeof(string),"%s und ich das Ende",string);
    // string = Ich bin der Anfang und ich das Ende

    Etwas kannst du noch aus dem Text raus holen:
    Du könntest die 1. Farbe (BEBEBE) als Farbe in der ClientMessage benutzen, nicht im Text:


    format(string,sizeof(string),"[{FFFF00}Projektleitung{BEBEBE}] {FFFF00}%s [ID: %d] {BEBEBE}wurde von {FFFF00}%s [ID: %d] {BEBEBE}zum {FFFF00}Rang [%d] {BEBEBE}befördert.",SpielerName(pID),pID,SpielerName(playerid),playerid,rank);
    SendClientMessage(playerid,0xBEBEBEFF /*anstatt 0xC30000FF */ ,string);
    Du wirst dann aber trotzdem noch die 144 Zeichen überschreiten :/

    Du musst ja auch 2x mysql_pquery ausführen. Hast ja auch schließlich 2 separate Querys zum aktualisieren. Vor dem 2 mysql_format (Zeile 21) solltest du mysql_pquery für das 1 SQL Kommando ausführen.


    Dich hält aber auch keiner davon ab, das alles in 1 Query zu schreiben.

    Also dann mache lieber manuell von der Datenbank ein Backup. Ich würde Dini nur für's Loggen von irgendwelchen Aktionen (Ein-/Auszahlungen oder Chat vom Support etc.)

    Dann hast du dini aber nicht wirklich verstanden.


    Du verlangsamt mit jedem weiterem Funktionsaufruf dein Gamemode/Script. Wenn du aber ein Backup von deinen Daten machen willst, lass dass doch direkt MySql übernehmen. Das passt schon wie wie m4a_x schrieb.

    Das hatte ich geschrieben:

    Um ggfl führende 0 zu bekommen:
    printf("%04d", random(10000));

    Visuell:
    1 -> 0001
    24 -> 0024
    532 -> 0532
    9482 -> 9482
    Es füllt den Text ggf mit der Zahl 0 auf, sodass es Insgesamt 4 Zeichen sind.


    Zu fishy:
    Du brichst die Funktion ab, sobald der 1. Wagen nicht passt. Du willst aber erst Alle Fahrzeuge prüfen und dann ggf handeln. Denn erst wenn du alle Fahrzeuge geprüft hast, kannst du sicher sagen, ob der Spieler in einem der Müll-Fahrzeuge sitzt oder nicht.
    Ich würde die Logik in eine Funktion auslagern, die 1 / true zurück gibt, sofern die vehicle-id zu einer id im genannten Array passt. Ansonsten 0 / false.

    Man kann es auch unnötig kompliziert machen.
    Du kannst auch einfach 4 Zufallswerte generieren lassen, die zwischen 0 und 9999 liegen.
    random(10000) // 4x für 4 Blöcke natürlich
    Um ggfl führende 0 zu bekommen:
    printf("%04d", random(10000));



    //Edit: Achja, die Sprache heisst übrigens Pawn und nicht Pawno. Zum Thema "kannst du die Grundlagen von Pawno".

    Du hast also meinen Beitrag ignoriert. Eventuell erstmal die zwei oben genannten Probleme lösen bevor du es falsch weiter machst :/.


    Es gibt übrigens auch die Möglichkeit hier im Forum, Quellcode mit PAWN Syntax Highlight anzuzeigen. Dafür gibt es das pwn-Tag


    //Edit:
    Soll doch bitte ein Moderator nachschauen, ob ich den 2. Fehler nachträglich hinein editiert habe ... Ich habe lediglich den Code im wiki-Tag geändert.

    Das ! ist aber richtig.
    [wiki]strcmp[/wiki]



    Zitat von SA:MP Wiki

    0 if strings match each other on given length;


    Warum es oben nicht funktioniert:
    Wo hast du denn bitte "params" für sscanf her? Sieht so aus, als mischst du OnPlayerCommandText mit dcmd,zcmd,[irgendeinbuchstabe]cmd.

    Du solltest weg von der VehicleID als Identifikation des Fahrzeuges. Die VehicleID kann sich ändern bzw variieren, die ID in der Datenbank sollte immer eindeutig für das Fahrzeug des Spielers sein.
    Spätestens wenn du mehr als 2000 Fahrzeuge hast, funktioniert dein System sowieso nicht mehr.

    Das Fahrzeug wird nicht erstellt bei CreateVehicle. Du solltest also mal prüfen, wieso das der Fall ist (Funktion CreateGangAutos, Zeile 11).


    Würde jetzt mal tippe, dass GangAutoInfo[h][cTyp] keine gültige ModelId ist.
    Du musst sicher gehen, dass LoadGangAutos vollständig (Ja, auch die Querys) VOR CreateGangAutos abläuft. Da du Threaded Querys hast, reicht es nicht, einfach bei OnGameModeInit LoadGangAutos vor CreateGangAutos aufzurufen. Eine einfache Lösung könnte sein, dass du am Ende von LoadGangAutos CreateGangAutos aufrufst.

    Dieses 9/10 bzw 10/10 ist mir zu einfach.


    (pastebin dini version)


    - Zeile 8: Wofür?
    - Zeile 98 & 103: Wofür ist "tekst" gut? Ist doch sowieso immer leer
    - dspeicher: Da du sowieso foreach hast, benutzt es doch auch für das Speichern
    - OnPlayerConnect: Glaube wegen des if/else Zweiges wird bei neuen Spielern "menge","busch" und "benutzt" nicht überschrieben. Die Datei wird nämlich nicht geparsed, somit sollten die Werte unverändert bleiben und nicht auf 0,0,0 gesetzt werden.
    - Die Preise sind "hardcoded". Nicht wirklich Refactoring safe
    - nNick, dHilfe etc: "string" viel zu groß
    - unterDrogen: "tekst" mit 300 viel zu groß.
    - DoInRange: Da kannst dir das If() ganz sparen und bei return direkt IsPlayerInRange(...) einfügen
    - speicherDrogen: Logische Reihenfolge? Erst prüfen ob der Spieler verbunden ist und dann die Datei, nicht umgekehrt.
    - DIALOG_NKAUF: Da fehlt bei case 1 und 2 ein return, sofern das Geld nicht ausreicht.


    Zu große Strings hast du noch an der ein oder anderen weiteren Stelle.