pInfo - Info Nachrichten

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
  • Hey Community,


    ich habe eine Include geschrieben die Info Nachrichten erstellen kann.
    Ich weiss nicht ob es so eine Include schon gibt, darum habe ich mal eine erstellt.


    [tabmenu]


    [tab='Sonstiges']
    [subtab='Beschreibung']
    Die Info Nachrichten erscheinen links mit einer Box über der Minimap des Spielers.
    Standardmäßig können bis zu 5 Nachrichten erstellt werden.
    Wenn eine Nachricht verschwindet werden die oberen Nachrichten runter geschoben.


    Pastebin Link: http://pastebin.com/HD8rvSvS



    [subtab='Video']

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    [subtab='Beispiel Skript']



    #include <a_samp>
    #include <pInfo>


    public OnFilterScriptInit() { return 1; }
    public OnFilterScriptExit() { return 1; }


    public OnPlayerCommandText(playerid, cmdtext[]) {
    if (strcmp("/info", cmdtext, true, 5) == 0) {
    new string[MAX_MESSAGE_LENGTH];
    for (new i=0;i<MAX_MESSAGE_BOXES;i++) {
    format(string,sizeof string, "Test Nummer %d~n~Test Nummer %d", i,i);
    pInfo_PlayerMessage(playerid, string, 3 + (i*2));
    }
    return 1;
    }
    return 0;
    }


    [tab='Funktionen']
    [subtab='Alle Funktionen']
    Folgende Funktionen hat die Include:
    pInfo_PlayerMessage(playerid, message[], hideMessage);
    pInfo_connectPlayer(playerid);
    pInfo_Init();
    pInfo_Exit();


    Außerdem gibt es 3 Defines:
    MAX_MESSAGE_LENGTH - Die maximale Textlänge des Textes in der Box.
    MAX_MESSAGE_BOXES - Die maximale Anzahl der Nachrichten die erstellt werden können.
    pInfo_PlaySound - Die Soundid die ausgegeben wird, wenn ein Spieler eine Nachricht erhält (kann deaktiviert werden).
    [subtab='pInfo_PlayerMessage']
    Die wichtigste Funktion ist pInfo_PlayerMessage(playerid, message[], hideMessage).
    An playerid wird die Nachricht message gesendet, nach hideMessage Sekunden wird die Nachricht gelöscht.
    Diese Funktion gibt 1 oder 0 zurück, je nachdem ob die Nachricht erstellt wurde oder nicht.
    [/tabmenu]


    Freue mich über jede Kritik und Verbesserungsvorschläge.
    Wünsche euch viel Spaß mit der Include ;)


    Mit freundlichen Grüßen pierre65


    // Edit 1: Neues Bild & Pastebin geupdatet.
    // Edit 2/3: YouTube Video hinzugefügt & Bild geupdatet (Schriftgröße und Boxgröße geändert) & Pastebin geupdatet (Hooks eingefügt).

  • Sie werden automatisch "gestapelt", erstellst du eine Nachricht wird sie ganz unten erstellt,
    die danach wird dann darauf "gepackt" und wenn die erste Nachricht verschwindet geht die obere Box runter wo die 1. Box ist.
    Ich kann die Box ja noch transparenter machen (sie ist teilweise Transparent).


    // Edit: Hier noch mal ein kleines Video dazu:

    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

  • pierre65:


    Mal paar Tipps für dein Include:


    Es ist okay, wenn du GetMaxPlayers() nutzen willst, aber dann mach es wenigstens so:


    for(new i,l=GetMaxPlayers(); i<l; i++)


    Denn ansonsten, wird die Funktion immer wieder aufgerufen und das verbraucht viel Zeit.


    Und als weiteren Tipp, in einer Include solltest du mit static arbeiten, da es sonst zu Problemen kommen kann im Gamemode und du solltest #undef nutzen für deine Definierungen...falls jemand im Gamemode die gleichen Namen hat, könnte das nämlich sonst zu bösen Problemen kommen ;)


    Und noch was:


    enum pInfo_PlayerInfoEnum { Float:pInfo_PlayerInfoLastXPos };
    new pInfo_PlayerInfo[MAX_PLAYERS][pInfo_PlayerInfoEnum];


    Da kannst du auch einfach folgendes machen:


    static Float:pInfo_PlayerInfo[MAX_PLAYERS];


    Kommt ja aufs selbe drauf raus ;)


    Joa..ansonsten hab es mir nicht genauer angeschaut, ich weiß, dass es schon ähnliche Includes mit weitaus schöneren TextDraws gibt..vielleicht machste da nochmal was am Design ^^


    Aber ansonsten, nette Idee :D


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Wenn du schon soooooo pingelig bist :D


    Das hat nichts mit pingelig zu tun, das sind nur ein paar Tipps bzw Hinweise gewesen :rolleyes:


    Und man kann hier keine char-Arrays verwenden.


    Zumindest in diesem Fall nicht, da dann die Höchste Zahl bei 255 liegen müsste...aber allein die Ersten Koordinaten liegen bei 335.0 ;)


    Also würde das hier nicht funktionieren ;)


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Zumindest in diesem Fall nicht, da dann die Höchste Zahl bei 255 liegen müsste...aber allein die Ersten Koordinaten liegen bei 335.0 ;)


    Naja man könnte das ganze über eine Rechnung lösen :P

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

    Margarete Stokowski

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Naja man könnte das ganze über eine Rechnung lösen


    Ich bin mir jetzt nicht sicher, aber kann es sein, dass man keine Float-Variablen in einem Char-Array speichern kann? :huh:


    Weil ich habe da mal einen Test gemacht:


    new Float:x[4 char];
    x{0} = 355.0;
    x{1} = 249.59;
    x{2} = 299.31;
    x{3} = 5.5;
    for(new i; i<4; i++) printf("%.02f",x{i});


    Der Output...ist bei allen 0.00...


    mfg. :rolleyes:

    ast2ufdyxkb1.png


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

  • Kaliber: Das ist richtig, nur wäre das auch gar nicht nötig.
    Float - Integer. Zur not den Integer in ein Float umwandeln :P

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

    Margarete Stokowski

  • Kaliber: Das ist richtig, nur wäre das auch gar nicht nötig.
    Float - Integer. Zur not den Integer in ein Float umwandeln :P


    Dann muss man es wohl ausrechnen :)


    Aber erkläre mir eins:


    new x[2 char];
    x{0} = 257;
    x{1} = 1;
    printf("%d | %d",x{0},x{1});


    Beides ergibt 1...wie willst du das unterscheiden? :huh:


    mfg. :thumbup:

    ast2ufdyxkb1.png


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