Update auf 1.4.1 um HSA Kompatibilität zu gewähren.
Zitat von Zur Information:WBB_Connect 2.0 ist in Arbeit, und wird wahrscheinlich mit einem komplett neuem Kern kommen, noch einfacher zu installieren sein, und noch mehr Funktionen enthalten.
Update auf 1.4.1 um HSA Kompatibilität zu gewähren.
Zitat von Zur Information:WBB_Connect 2.0 ist in Arbeit, und wird wahrscheinlich mit einem komplett neuem Kern kommen, noch einfacher zu installieren sein, und noch mehr Funktionen enthalten.
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.
Einfach nur
BeleidigungsFilter(text);
Ach, das kommt durch den Ansatz einer kleinen "Bibliothek", die ich anfertigen wollte.
Ich werde WBB_Connect mal darauf anpassen.
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;
}
"Ja von Hauke habe ich unteranderen die Verschlüsslungen genommen"
Das ist ohne Erlaubnis übrigens verboten...
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.
Das solltest du nicht als include machen, sondern als Filterscript.
Als include macht das keinen Sinn.
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.
Such in der Include nach dieser Zeile:
stock _SetArray ( File[ ] , Key[ ] , Value[ _MAX_LINE_CACHE ] ) {
mach daraus:
stock _SetArray ( File[ ] , Key[ ] , Value[ ] ) {
Und der Fehler ist behoben.
Die Anzahl der ungelesenen Nachrichten kannst du herausfinden. Mit Hilfe von WBB_GetUserStats und WBB_USER_UNREAD_PM. Lies dir die Beschreibung der Funktion einfach mal durch ![]()
Links funktionieren nun.
Die Idee ein Tutorial damit zu machen finde ich auch gut.
Danke für die Info. Mir ist aufgefallen, dass der Vertrag des Rootservers ausgelaufen ist.
Ich werde innerhalb der Woche eine neue Version herausbringen.
Was kommen denn für Fehler?
Hast du ProFTPD?
Ok, danke für die Info. Ich sehe mir das mal an.
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.