Beiträge von maddin


    Ich habe die include samt thema im englischen forum nach 5 sekunden gefunden. Entweder hast du nicht gegooglet, oder du weisst net wie google funktioniert :huh:


    Klick

    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.

    stock compare(str1[], str2[]) {
    new
    i=0,
    len=strlen(str1)
    ;
    if(len!=strlen(str2)) {
    return false;
    }
    for(;i<len;i++) {
    if(str1[i]!=str2[i]) return false;
    }
    return true;
    }
    Is aber ungetestet, und im grunde auch nix anderes als das was hauke gepostet hat^^

    Kann einfach ein Define für nehmen.
    #define SendFormatedMessage(%0,%1,%2,%3) do{new _string[128]; format(_string,sizeof(_string),%2,%3); SendClientMessage(%0,%1,_string);} while(FALSE)
    #define SendFormatedMessageToAll(%0,%1,%2) do{new _string[128]; format(_string,sizeof(_string),%1,%2); SendClientMessageToAll(%0,_string);} while(FALSE)
    new bool:FALSE=false;


    Und dann:
    SendFormatedMessage(playerid, COLOR_RED, "Bitte geh Nummer %i", playerid);
    oder
    SendFormatedMessageToAll( COLOR_RED, "Bitte geh Nummer %i", playerid);

    Ich finds nich schön.
    Was soll man denn da erkennen? Bei einem WBB Design zählen auch alle anderen elemente, und die kann man da ja nicht sehen. Das ist lediglich ein bg, ein verlauf als menubg und ein verzerrtes bild als header. Dazu noch ein logo, was ne rote font mit gelben schein nach aussen hat.
    Ich bin kein Designer, und hab auch nicht viel ahnung davon. Aber das was du da gemacht hast, schaff ich in 5 Minuten. Von nem Eye-Catcher ist das noch meilenweit entfernt...

    Das ist einfach nur geschmacks sache. Und die IsPlayerConnected abfrage am anfang kannst du eigentlich weg lassen. Ich würds so machen:


    if(strcmp(cmd,"/spawn",true) == 0)
    {
    if(SpielerInfo[playerid][pAdmin] < 1) return; //Nachricht ausgeben
    tmp = strtok(cmdtext, idx);
    if(!strlen(tmp)) return SendClientMessage(playerid,Admincmd,"/spawn [ID]");
    new para1 = ReturnUser(tmp);
    if(!IsPlayerConnected(para1) || para1 == INVALID_PLAYER_ID) return; //Nachricht ausgeben
    OnPlayerSpawn(para1);
    return true;
    }

    Kommt drauf an, wenn es nur alle Minute speichert, man in der 55. Sekunde was wichtiges macht und in der 58. Sekunde schmiert der Server ab ists auch nicht gespeichert. Man muss Prioritäten setzen.


    1 Minute verlorene Spielzeit sind nich so viel wie vllt 8 Stunden (Ja, es gibt leute die so viel/lange spielen).

    Die Idee alle Daten mehrmals pro Sekunde zu speichern ist sowieso total sinnlos, einmal beim Disconnecten reicht vollkommen. Dinge die mit anderen Sachen wie zb nem UCP synchronisiert sein müssen kann man auch bei einer Änderung der Daten abspeichern.


    Nope tuts nicht, was wenn z.b der server aus unvorhersehbaren gründen aus geht? Dann ist das geheule nämlich riesen groß

    Einfach OnPlayerUpdate in OnPlayerUpdateEx oder so umbenennen.
    Da es seit geraumer Zeit die Version von Sa-Mp gibt, glaube ich :P.
    Deshalb wird es doppelt ausgeführt und führt zu laggs. So war das glaub ich :)


    MFG K4biX


    Die quelle dazu würd ich gern ma sehen, halte das nämlich für total dünnschiss den du da erzählst.

    • OnPlayerUpdateEx gibt es als pawn native nicht.
    • OnPlayerUpdate wird nicht doppelt ausgeführt, und führt auch nicht zu laggs. OnPlayerUpdate wird einfach nur, wie der Name schon verrät, immer dann ausgeführt wenn einer Spieler geupdatet wird. Also wenn sich seine position verändert, er seine kamera dreht usw. Dass das ziemlich häufig ist, sollte man sich da denken können. Und wenn man dann, wie der TS hier, dabei in dateien schreibt kann das zu laggs führen. Aber eben nicht von hause aus.


    Im allgemeinen machen funktionen nie irgendwas böses, sondern erst dann, wenn unvorsichtige "Skripter" da irgendeinen scheiss rein packen.
    Trooper hat das mit OnPlayerUpdate aber schonmal sehr schön erklärt, siehe hier: OnPlayerUpdate - Warum man es meiden sollte


    @TS:
    Erstell unter OnGameModeInit einen Timer, der z.b nur alle 60 Minuten aufgerufen wird.
    Dann erstellste eine Funktion die von dem Timer aufgerufen wird, und in dieser gehste dann per schleife durch alle Spieler, fragst ab ob dieser Spieler online ist undspeicherst diesen dann.

    Direkt geht das nicht, aber du kannst es z.b so machen:
    forward timer(timer);
    public timer(timer)
    {
    if(timer==1)
    {
    //blabla iregdnwas
    }
    else if(timer==2)
    {
    //blabla iregdnwas
    }
    else if(timer==3)
    {
    //blabla iregdnwas
    }
    }
    Und dann mit SetTimerEx starten:

    SetTimerEx("timer", 1000, false, "i", 1);
    SetTimerEx("timer", 1000, false, "i", 2);
    SetTimerEx("timer", 1000, false, "i", 3);