SendTimeMessage

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
  • @Schwabbel
    Wenn ich also
    SendTimeMessageToAll(0xFF4800FF,60000,"Test");
    eingebe kommt diese Nachricht jede Minute?


    Nein...


    So müsstest du das z.B. machen


    SendTimeMessageToAll(0xFF4800FF,60,"Test","Test1","Test2","Test3","Test4");
    Jetzt würde direkt "Test" erscheinen, nach 1min dann "Test1", nach einer weiteren min "Test2" usw...


    Wenn du willst, dass immer die selbe Message aufgerufen wird, kannst du auch einen normalen Timer verwenden :D


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • @Schwabbel


    kann man es auch in einer zeile so machen das die Narichten zeitverschoben kommen?
    Also eine Naricht in 1M die zweite in 2M


    Sprich igendwie so:
    (Nur ein beispiel)
    SendTimeMessageToAll(0xFF4800FF,60,70,90,usw,"Test","Test1","Test2","Test3","Test4");


    Oder muss ich dafür ne neue Zeile dann erstellen?

  • Schade.. also sprich jewals ne neue zeile erstellen? Oder geht das so auch nicht.


    Wenn du zeitversetzt 1ne Message ausgeben willst, musst du mit Timern arbeiten, sprich sowas:


    forward MSG_Timer(time,x);
    public MSG_Timer(time,x) {
    switch(x) {
    case 0: SendClientMessageToAll(-1,"hi"),time=120; //jetzt würde die näcshte MSG erst nach 120 Sek kommen
    case 1: SendClientMessageToAll(-1,"hi2");
    case 2: return 0;
    }
    x++;
    SetTimerEx("MSG_Timer",1000*time,0,"ii",time,x);
    return 1;
    }


    //Dann sähe das so aus:
    MSG_Timer(60,-1); //Erste nachricht kommt nach 60sek


    So ungefähr ^^


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • ganz nett.
    zum thema nachrichten mit komplett unterschiedlichen zeiten, dies könnte man auch so scripten, dass die zeiten direkt am anfang des strings stehen können:

    Code
    "%20%Dieser String kommt nach 20 sek." "%25%Dieser String kommt nach 25 sek."


    auch könnte es leuten helfen wenn du ein Callback wie OnLastMessage machen würdest (vorausgesetzt du gibst ne message id zurück.)
    so kann man die message von neuen starten ohne nen eigenen timer verwenden zu müssen.

  • zum thema nachrichten mit komplett unterschiedlichen zeiten, dies könnte man auch so scripten, dass die zeiten direkt am anfang des strings stehen können:

    "%20%Dieser String kommt nach 20 sek." "%25%Dieser String kommt nach 25 sek."


    kommt auch das mit rein?

  • Mit welcher Funtuion kann die die Message abrechen lassen das es nicht weiter die nachrichten schreibt?


    Nun das geht momentan nur automatisch, sprich so:


    SendTimeMessage(playerid,0xFFFFFF,10,"hi","hi2");


    Sobald hi2 gesendet wurde, bricht das ab...


    //Edit²: So habe nun die Funktionen verbessert und Callbacks hinzugefügt !


    Viel Spaß :)

    ast2ufdyxkb1.png


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

    Einmal editiert, zuletzt von Schwabbel ()

  • warum returnst du bei SendTimeMessageToAll(...) und SendTimeMessage(...) keine id, so könnte man auch StopTimeMessage(id); einbauen.


    Leider hast du hierzu noch nichts gesagt:
    zum thema nachrichten mit komplett unterschiedlichen zeiten, dies könnte man auch so scripten, dass die zeiten direkt am anfang des strings stehen können:


    "%20%Dieser String kommt nach 20 sek." "%25%Dieser String kommt nach 25 sek."

  • Ja...keine Lust ^^


    Geht doch auch so :D


    ne, ich kann es nicht abbrechen,
    gehen wir mal davon aus, jemand macht einen countdown und lässt von 10 bis 1 ausgeben und bei 0 Go oder so, nun will er den countdown via cmd starten können aber auch abbrechen können.


    Starten geht bei deinem System, Abbrechen weniger.


    edit:

    Zitat

    Was soll ich dazu sagen :huh:


    ob du es einbauen willst oder nicht?
    solltest du was nicht verstehen frag.

  • Starten geht bei deinem System, Abbrechen weniger.


    Doch Stichwort globale Variable und dann mit dem Callback arbeiten, wenn die Variable z.B. auf 1 ist soll strcmp starten und nach dem go einfach z.B. ein zzz schreiben und wenn das so ist return 0; schreiben...


    zudem wenn das letzte Wort eh go ist, hört das automatisch auf :rolleyes:


    ob du es einbauen willst oder nicht?
    solltest du was nicht verstehen frag.


    Das war doch die Frage...für was soll das gut sein und soll das mit print in die Konsole geschrieben werden oder per SendClientMessage...verstehe den Sinn dahinter nicht ?!


    mfg. :thumbup:

    ast2ufdyxkb1.png


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

  • Wie Währe es mit sowas ist jetzt in C++ da ich keine
    Zeit habe es momentan umzuschreiben:



    cell AMX_NATIVE_CALL SendClientMessageForInt(AMX* amx, cell* params)
    {
    int index = NULL;
    cell *addr = NULL;
    amx_GetAddr(amx, params[2], &addr);
    amx_StrLen(addr, &index);
    char* message = new char[index];
    amx_GetString(message, addr, 0, index);
    for(int i = NULL;i<MAX_PLAYERS;i++)
    {
    if(params[3] >= params[4] && params[3] <= params[5]) { SendClientMessage(i,params[1],message); }
    }
    return 1;
    }



    cell AMX_NATIVE_CALL SendClientMessageForPVar(AMX* amx, cell* params)
    {
    int index = NULL;
    cell *addr = NULL;
    amx_GetAddr(amx, params[2], &addr);
    amx_StrLen(addr, &index);
    char* message = new char[index];
    amx_GetString(message, addr, 0, index);
    amx_GetAddr(amx, params[3], &addr);
    amx_StrLen(addr, &index);
    char* pvar = new char[index];
    amx_GetString(pvar, addr, 0, index);
    for(int i = NULL;i<MAX_PLAYERS;i++)
    {
    if(GetPVarInt(i,pvar) >= params[4] && GetPVarInt(i,pvar) <= params[5]) { SendClientMessage(i,params[1],message); }
    }
    return 1;
    }




    MFG Arendium

  • Wie Währe es mit sowas ist jetzt in C++ da ich keine
    Zeit habe es momentan umzuschreiben:


    8|
    Hast du nichts besseres zu tun, als hier rumzusuchen und irgendwelche Sachen in Plugins umzuschreiben...wtf 8|


    Wenn ich wollte, dass es ein Plugin ist, wäre es ein Plugin...so ?! :wacko:

    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