[SAMMELTHREAD] Kleine Scripting Fragen

Dein Problem konnte durch einen User gelöst werden? Bedank dich bei ihm indem du seinen Beitrag als Hilfreich markierst sowie einen Daumen oben dalässt
Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Huhu,
    ich brauche mal ein wenig Hilfe mit Strings:


    //Zum Verständnis:
    Ich versuche die Geldanzeige zu duplizieren, sodass ich eine 2. für das Geld auf der Bank habe.
    Das Textdraw ist soweit fertig, nur weiß ich nicht, wie ich es hinkriege, dass wenn ich z.B. 100$ auf der Bank habe, mir "$00000100" angezeigt wird, wie auch in der Standard Geldanzeige.
    Normalerweise kann man ja einen Char (hier die 0) einfach multiplizieren, wie z.B. hier: format(bankmoneyString, 9, "$08%d", pInfo[playerid][pBank]);
    Dabei würde der String "00000000+Bankgeld" ergeben.



    //Ab hier WICHTIG:
    Allerdings muss man ja errechnen, wie viel Ziffern in der Anzeige von dem vorhandenen Geld eingenommen werden, sodass man Nullen abziehen kann, die man dann durch das Geld auf der Bank ersetzt.
    Hätte man 100$ auf der Bank müsste man also 3Nullen zur 100 ersetzen.


    Ich habe es so versucht, jedoch schreibt der Server dann einfach die Klammern ins Textdraw:



    Code
    moneyzeros = (9-strlen(pInfo[playerid][pBank])); //9Nullen-Banklänge
    format(bankmoneyString, 9, "$0(%d)%d", moneyzeros, pInfo[playerid][pBank]);//(die 0 soll %d Mal geschrieben werden, danach das Bankgeld)
    PlayerTextDrawSetString(playerid, BankmoneyDraw[playerid], bankmoneyString);

    Ich hoffe man versteht mein Problem und kann mir damit irgendwie helfen.

    MfG. Adrian

  • Dabei würde der String "00000000+Bankgeld" ergeben.

    Nein, das ist falsch.


    format(tmp,sizeof(tmp),"%08d",123); //Ergibt: 00000123


    Also genau das, was du willst ^^


    Das füllt immer nur die Nullen bis zu der n-ten Stelle auf.


    Hier mal an einer Tabelle und dem Format %02d deutlich gemacht :)


    %02d Input Ouput


    5

    05


    10

    10

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Moin, hätte ein Problem mit meinem Mörser Script



    https://pastebin.com/LpXeh2uc



    Die Objekte lassen sich per MoveObject Problemlos bewegen und explodieren auch am Ende


    bekomme allerdings in meinen Logs "Out of bounds" errors.


    // EDIT:


    [13:33:59] [debug] AMX backtrace:
    [13:33:59] [debug] #0 002af264 in public KaboomBoom () in CoLR41-4.amx
    [13:33:59] [debug] Run time error 4: "Array index out of bounds"
    [13:33:59] [debug] Attempted to read/write array element at negative index -1
    [13:33:59] [debug] AMX backtrace:


    Hier bei OnMoveObject (Morsa[i][MorsaID] =-1;)


    enum Morsayo
    {
    MorsaID,
    Light
    }
    new Morsa[200][Morsayo];


    wird das wieder auf -1 gesetzt, ich möchte halt die ID wieder freigeben.


    Und bei OnGameModeInit wirds auch auf -1 gesetzt


    for(new i=0; i<sizeof(Morsa); i++)
    {
    Morsa[i][MorsaID]=-1;
    }

  • Danke soweit , jetzt sind keine Fehler mehr da bezüglich AMX backtrace.


    Allerdings werde ich einfach nach dem starten gekickt nach ein paar sekunden


    wegen dem ackslimit ? Ist bereits auf 5000



    [warning] client exceeded 'ackslimit' XXX (5014) Limit: 5000/sec


    Hochzustellen würde anscheinend nichts bringen da davor


    [warning] client exceeded 'ackslimit' XXX (3215) Limit: 3000/sec


    das gleiche Problem bestand


    (Hat sich geringfügig geändert beim Public)
    https://pastebin.com/38yP09vm

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Ich versuche gerade dem objekt phsysics zu geben

    Und wozu genau?


    Ich rate dir davon ab...


    Das frisst mega viel, gerade wenn du das auf einem Server mit vielen Leuten machen magst :D

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • @Andosius danke!!!!


    Ich habe leider ein Problem.
    Das Filterscript gibt an: http://prntscr.com/ntyv7e


    Die Version stimmt, ich finde das komisch.
    Die Server-IP wurde auf "localhost" angepasst auch mit der eigentlichen Standart-Gateway IP ausprobiert. (Beides zeigt selben Fehler)
    MAX_PLAYERS wurde auch richtig definiert.


    \pawno\include\AudioHideV3.inc
    \filterscripts\tAudioHideV3.Amx



    Habe ich was falsch gemacht? Eventuell @Akino Kiritani du kennst dein System ja :P
    Der .vs Ordner hat keinen Nutzen richtig?

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Und wozu genau?
    Ich rate dir davon ab...


    Das frisst mega viel, gerade wenn du das auf einem Server mit vielen Leuten machen magst :D

    Jo ich merks grad :D


    Vor allem müsste ich für Kollisionen noch mit ColAndreas arbeiten... RIP.


    Ich glaub ich wär aber zufrieden wenn erstmal nur die Physik funktioniert, für das andere


    könnte ich ja einen Timer benutzen.

  • \filterscripts\tAudioHideV3.Amx

    das t vor AudioHideV3 gehört da nicht hin. Sicher das die Datei richtig benannt ist ?


    Die Server-IP wurde auf "localhost" angepasst auch mit der eigentlichen Standart-Gateway IP ausprobiert. (Beides zeigt selben Fehler)

    Anpassen muss man das nicht unbedingt.


    Es ist so die IP wird dafür genutzt um den "Connection" Text nach zu bilden.
    Das habe ich damals aus dem Grunde gemacht, weil viele Server / Scripter Musik bereits am Anfang laufen ließen.


    Der .vs Ordner hat keinen Nutzen richtig?

    Richtig, den hat Visual Studio erstellt, als ich es vor Jahren darüber hochgeladen habe.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Ja, lag daran, weil ich es nicht in die Server.cfg unter filterscripts eingetragen habe. Ich Idiot hab es unter Includes eingetragen -,-


    Ich bin heute aber fleißig am Beiträge erstellen:


    Ich will abfragen, ob ein Spieler in einen der Areas ist.
    Alle Areas sind im selben Array, kann ich dies vereinfachen?



    Code
    for(new i; i<sizeof(Array); i++)
    	{

    Würde das reichen, Areas sind ja anders



    Code
    if(IsPlayerInDynamicArea(playerid,Array[0]))
    if(IsPlayerInDynamicArea(playerid,Array[1]))
    if(IsPlayerInDynamicArea(playerid,Array[2]))
    if(IsPlayerInDynamicArea(playerid,Array[3]))
    if(IsPlayerInDynamicArea(playerid,Array[4]))
    if(IsPlayerInDynamicArea(playerid,Array[5]))

    wm2c6p1.png
    Ich weiß, dass ich weiß, dass ich nichts weiß.

  • Wieder ein Problem meinerseits:


    Folgender stock speichert nicht die Stats, obwohl er dafür vorgesehen ist.


    Die Methode wird im OnPlayerDisconnect aufgerufen, verändert jedoch nicht in der Tabelle "users".


    Tabelle:



    Fehler der MySQL-Log;


    XML
    [18:56:38] [ERROR] mysql_format: no value for specifier '%d' passed
    [18:56:38] [ERROR] mysql_format: no value for specifier '%d' passed
    [18:56:38] [ERROR] error #1064 while executing query "UPDATE users SET level = '0', admin = '0', frak = '0', fraklevel = '0', job = '0',": You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1


    Ich danke schonmal im voraus für die Hilfe

    MfG. Adrian

  • Folgender stock speichert nicht die Stats

    Du musst auch immer wieder den string hinten dran hängen (also als Parameter angeben, das %s hast du immer brav gemacht ^^)


    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen