Beiträge von |-|auke

    Die Beleidigungen werden sofort herausgefiltert.. Somit muss man im Script nichts ändern außer oben in die Funktion "BeleidigungsFilter(text);" hinzuschreiben. Dadurch wird meine Methode sogar noch leichter zu verwenden.
    Im ganzen Callback kann weiterhin die Variable "text" verwendet werden..
    Dein Code tut exakt das selbe, nur eben schlechter.

    Ihr könnt das natürlich nicht einfach kopieren und einfügen...
    so wird das beispielsweise benutzt:

    new beleidigungen[][50] = {
    "Hurensohn", "Arschloch", "Arschloch", "Hure", "Arsch", "Nazi", "Missgeburt", "Schwuchtel", "Fotze", "Trottel" , "penis"
    };


    main()
    {
    new string[ 128 ];
    format ( string , 128 , "ajajapekatrotteljajahurejahhanaziaja" );
    printf("Alter String: %s",string);
    BeleidigungsFilter(string);
    printf("Neuer String: %s",string);
    }


    BeleidigungsFilter( str[ ] ) {
    for ( new b_idx; b_idx < sizeof beleidigungen; b_idx++ ) {
    new i = strfind(str, beleidigungen[ b_idx ] , true);
    if ( i == -1 ) continue;
    for ( new idx = i; idx < i + strlen ( beleidigungen[ b_idx ] ); idx++ )
    str[ idx ] = '*';
    }
    }

    Das es geht, kann ich euch garantieren!

    Es wird auch so verwendet:

    BeleidigungsFilter( str[ ] ) {
    for ( new b_idx; b_idx < sizeof beleidigungen; b_idx++ ) {
    new i = strfind(str, beleidigungen[ b_idx ] , true);
    if ( i == -1 ) continue;
    for ( new idx = i; idx < i + strlen ( beleidigungen[ b_idx ] ); idx++ )
    str[ idx ] = '*';
    }
    }


    public OnPlayerText(playerid, text[]) {
    BeleidigungsFilter( text );
    return 0;
    }

    Ich will ja nicht der "Buhmann" sein, aber so geht´s einfacher, kürzer und besser:

    BeleidigungsFilter( str[ ] ) {
    for ( new b_idx; b_idx < sizeof beleidigungen; b_idx++ ) {
    new i = strfind(str, beleidigungen[ b_idx ] , true);
    if ( i == -1 ) continue;
    for ( new idx = i; idx < i + strlen ( beleidigungen[ b_idx ] ); idx++ )
    str[ idx ] = '*';
    }
    }

    Das würde ich auch eher als Codeschnipsel einstufen, ich habe dafür 5 Minuten gebraucht ;)


    Edit: Um nicht falsch zu wirken, ich finde es trotzdem toll, dass du etwas veröffentlichst und es anderen zur Verfügung stellst :)

    Includes sind nur Auslagerungen des Pawncodes.
    Wenn du Callbacks in der Include verwendest, die in dem "Hauptscript" auch verendet werden, verwendest du sie doppelt in einer Datei. Entweder musst du dann den Funktionsaufruf des "Hauptscripts" umleiten, oder man kann OnDialogResponse kein weiteres mal nutzen.

    Ich habe das Projekt nun einmal geändert. Der Server wird bei der Übertragung der Daten nur noch sehr leicht belastet.
    Zudem kann die Livemap nun über nur einen Javascript-Code in die eigene Seite eingebunden werden.
    Neuster Screenshot:


    Nun benötige ich wieder Tester, welche einen Server haben.
    Ich bitte alle, die testen möchten, sich dieses Filterscript herunterzuladen und auf dem Server zu verwenden.
    Danach bitte an mich wenden, um einen Account für den Livemap Service zu bekommen.


    Edit: Hier gibt es eine Livemap zum testen: hier


    Edit: Ach ja, Ideen, Feedback und weitere konstruktive Kritik sowie weitere Anregungen sind natürlich gern gesehen.

    Diese Abfrage kannst du so nicht nutzen: fexist(Spieleraccounts)
    Nutze sie so:

    stock Speichern(playerid)
    {
    new Spieleraccounts[MAX_PLAYER_NAME + 3] , FileName[MAX_PLAYER_NAME+3];
    format(Spieleraccounts,sizeof(Spieleraccounts),"%s",sName(playerid));
    format(FileName,sizeof FileName,"%s.hsa",Spieleraccounts);
    if(fexist(FileName))
    {
    setInt:Spieleraccounts("Team",sNutzer[playerid][Team]);
    setInt:Spieleraccounts("Score",GetPlayerScore(playerid));
    setInt:Spieleraccounts("Adminlevel",sNutzer[playerid][Adminlevel]);
    setInt:Spieleraccounts("Kills",sNutzer[playerid][Kills]);
    setInt:Spieleraccounts("Deaths",sNutzer[playerid][Deaths]);
    setInt:Spieleraccounts("Wantedlevel",GetPlayerWantedLevel(playerid));
    setInt:Spieleraccounts("Geld",GetPlayerMoney(playerid));
    setInt:Spieleraccounts("Bombe",sNutzer[playerid][Registriert]);
    Save(Spieleraccounts);
    return 1;
    }
    printf("%s's [ID: %d] Account wurde gespeichert!",sName(playerid),playerid);
    return 1;
    }

    Der "Bewerber" für diese Alpha Aktion muss selbstverständlich einen Server mit aktiven Spielern haben.
    Ob die Livemap dann auf einem Server von mir läuft, oder auf einem anderen ist mir relativ gleich. Bevorzugen würde ich eine Kombination daraus.