Automatische Server 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
  • Hallo Zusammen,


    Ich habe vor Automatische Server Nachrichten zu machen.
    Das heißt das der Server Automatisch Informationen in den Chat Postet.
    Damit man sieht was ich meine werde ich mal was Anhängen.
    Das kommt nur 1 mal,aber nun möchte ich das mehrere Nachrichten kommen.
    Sprich immer in einen Zeit Abschnitt.


    Hier mal das was ich bis jetzt habe.




    forward Autonachricht();


    SetTimer("AutoNaricht",600000,1);


    public AutoNaricht()
    {
    SendClientMessageToAll(COLOR_ROT, "~~~~~~Fragen / Probleme~~~~~~~~");
    SendClientMessageToAll(COLOR_ROT, "Dann stehen wir Admins/Supporter zur Verfügung");
    SendClientMessageToAll(COLOR_ROT, "Dazu müsst ihr einfach /melden benutzen");
    SendClientMessageToAll(COLOR_ROT, "Oder Ihr fragt auch einfach einen User um Hilfe");
    SendClientMessageToAll(COLOR_ROT, "mfg das Team");
    }


    Jetzt ist die Frage,wie mache ich das nach dieser Nachricht eine andere kommt.


    Lebe dein Leben so wie du bist und nicht wie du sein sollst. Nur dann ist dein Leben lebenswert.
    Ich bin wie ich bin. Die einen kennen mich, die anderen können mich!!!


  • du erstellt noch ne globale Variable, nennen wir sie message = 0;


    dann änderst du einfach einen public



    public AutoNaricht()
    {
    switch(message)
    {
    case 0:
    {
    SendClientMessageToAll(COLOR_ROT, "Message 1");
    message ++;
    }
    case 1:
    {
    SendClientMessageToAll(COLOR_ROT,"Message 2");
    message ++;
    }
    case 2: // Wenn dies die letzte Nachricht sein soll Var Message wieder auf 0 setzten, damit es von vorne beginnt
    {
    SendClientMessageToAll(COLOR_ROT,"Message 3");
    message = 0;
    }
    }
    }

  • new iMessage = 0;


    public AutoMessage()
    {
    if(iMessage == 1)
    {
    SendClientMessageToAll(COLOR_WHITE, "Auto-Nachricht die erste");
    }
    else if(iMessage == 2)
    {
    SendClientMessageToAll(COLOR_WHITE, "Auto-Nachricht die zweite");
    }
    else if(iMessage == 3)
    {
    SendClientMessageToAll(COLOR_WHITE, "Auto-Nachricht die letzte.");
    iMessage = 0;
    return 1;
    }
    iMessage++;


    }

  • Bei seinem kommen bei mir aber Errors..


    Edit:


    Hier meine Errors (3 Warnings waren schon daa, ist nur einrücken..)



    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(505) : warning 217: loose indentation
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(511) : warning 235: public function lacks forward declaration (symbol "AutoNaricht")
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(513) : error 017: undefined symbol "message"
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(518) : warning 217: loose indentation
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(518) : error 017: undefined symbol "message"
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(518) : warning 215: expression has no effect
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(523) : error 017: undefined symbol "message"
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(523) : warning 215: expression has no effect
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(528) : error 017: undefined symbol "message"
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(528) : warning 215: expression has no effect
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(594) : warning 217: loose indentation
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(733) : warning 217: loose indentation
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase


    4 Errors.


    Edit: Pawn

  • Hagi´s Lösung ist die bessere.
    Switch und Case ist CPU schonender bei mehr als 3 Abfragen sollte man switch und Case verwenden.


    MFG RFT



    Das ist doch nicht dein ernst? Ein Moderner CPU schafft ca 1.800.000.000 (1,8mrd) abfragen innerhalb weniger millisekunden, da macht das zwichen if oder case kein unterschied, zumal gibt es keinen.


    bei if werden beide variablen verglichen, das gleiche wird bei switch auch gemacht, da der pc sonst nicht rausfindet welche abfrage er jetzta annehmen soll.


    Wikipedia hilft.

  • RFT hat Recht.
    Anderer Aspekt: Auch wenn ein moderner Computer viel Ressourcen hat, heißt das nicht, dass man sie auf das Maximum ausnutzen muss.
    Typisch PAWN ohne Objektorientierung.
    If und Elseif werden die Bedingungen bei jedem if neu geprüft. Bei einer Select-Case bzw. Switch-Case Abfrage nicht.


    Der Skript so wie er jetzt ist, ist in Ordnung und ich würde ihn so lassen.

  • Mein gott wegen den 3 if abfragen hau ich bestimmt nicht den ganzen CPU weg da müssten schon 100.000+ if abfragen im Sekunden Takt sein damit der CPU lahm-gelegt ist...


    Case ist um ein minimum besser aber mit einer If abfrage kannst du mehr anstellen.


    Sagen wir es mal so: Dem jedem das eigene. :thumbup:


    Ich finde If Abfragen sehen einfach besser aus fürs Auge wie eine Switch.

  • Jetz ist mehr dazugekommen..


    warning 219: local variable "message" shadows a variable at a preceding level


    Hier ma die Zeilen


    Am Anfang von OnGameModeInit:


    SetTimer("AutoNaricht",600000,1);


    Am Schluss von OnGameModeInit:


    public AutoNaricht()
    {
    switch(message)
    {
    case 0:
    {
    SendClientMessageToAll(0xFF0000FF, "Message 1");
    message ++;
    }
    case 1:
    {
    SendClientMessageToAll(0xFF0000FF,"Message 2");
    message ++;
    }
    case 2: // Wenn dies die letzte Nachricht sein soll Var Message wieder auf 0 setzten, damit es von vorne beginnt
    {
    SendClientMessageToAll(0xFF0000FF,"Message 3");
    message = 0;
    }
    }
    }


    Und am Anfang vom Script:


    new message[128];



    Was stimmt da nicht?

  • Ich bekomm Error
    So siehts zurzeit aus:
    #define FILTERSCRIPT


    #include <a_samp>




    forward Auto();



    SetTimer("Auto",300000,1);


    public Auto()
    {
    SendClientMessageToAll(0xFF002DFF, "~~~~~~Server Infos~~~~~~~~");
    SendClientMessageToAll(0xFF002DFF, "Type /changeworld to get to DM/WAR/STUNT/DRIFT Mode");
    SendClientMessageToAll(0xFF002DFF, "Type /register to sign in.");
    SendClientMessageToAll(0xFF002DFF, "Type /login to login.");
    }


    Hier der Fehler: C:\Users\---\Desktop\Automsg.pwn(10) : error 021: symbol already defined: "SetTimer"
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase



    1 Error.

    Meine Ziele
    350 Posts [X]

    375 Posts [X]

    400 Posts []

    425 Posts []

    450 Posts []



  • OK, kommen immer noch die gleichen.. Aber Warnings O.o



    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4603) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4641) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4654) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4667) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4680) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4693) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4706) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4719) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4732) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4745) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4757) : warning 219: local variable "message" shadows a variable at a preceding level
    C:\Users\Besitzer\Desktop\My_S\gamemodes\Selfmade.pwn(4784) : warning 219: local variable "message" shadows a variable at a preceding level
    Pawn compiler 3.2.3664 Copyright (c) 1997-2006, ITB CompuPhase