Hallo leute!
Ich habe nun letztens ein Filterscript angefangen ,,TheBrain". Das soll eine Samp Version von den dutzend Chat Bots die es im Netz gibt werden, mit diesem soll man schreiben können und dieser soll dann auch beim Chatten dazu lernen.
So das war im kurz Format was der Sinn davon ist, ich bin auch schon weit. Man kann dem Bot schon Texte beibringen, diese werden Gespeichert/Geladen. Und er gibt schon Nachrichten aus wenn man mit ihm schreibt (Das Chatten ist über einen Dialog gemacht (Mit Chat Verlauf natürlich)).
So schön und gut, aber ich hänge gerade an der Stelle bei der ich die ausgelesenen Informationen die er gelernt hat ausgeben muss.
Es sieht bis jetzt wie folgt aus:
stock BrainAntwort(playerid,eingtext[])
{
if(BrainTextSuchen(eingtext))
{
//strpack(tmp1, BrainTextSuchen(eingtext));
format(tmp1, sizeof(tmp1),"%s",BrainTextSuchen(eingtext));
format(string2, sizeof(string2),"\n{00FF00}%s:{FFFFFF} %s\n{00BFFF}Brain:{FFFFFF} %s",SpielerName(playerid),eingtext,tmp1);
}
else
{
tmp2 = Segment(eingtext, 2,256);
format(tmp1, sizeof(tmp1),"%s",BrainTextSuchen(tmp2));
format(string2, sizeof(string2),"\n{00FF00}%s:{FFFFFF} %s\n{00BFFF}Brain:{FFFFFF} %s",SpielerName(playerid),eingtext,tmp1);
}
GetPVarString(playerid, "textstring", string, sizeof(string));
strcat(string, string2);
SetPVarString(playerid,"textstring",string);
ChatZeilen[playerid] +=2;
ShowPlayerDialog(playerid,DIALOG_THEBRAIN,DIALOG_STYLE_INPUT,"Chat mit Brain",string,"Senden","Beenden");
return 1;
}
Erklärung: Diese Funktion sollte erstmal den eingegebennen Text vergleichen indem er guckt ob in der Datenbank der gleiche Satz schon steht, wenn ja soll er die Antwort aus der Datenbank wiedergeben. Falls es keinen exakten Satz gibt soll er (Jetzt das schwierige) ein Hauptverb aus dem Wort filtern und dann random irgend ein Satz aus der Datenbank nehmen in dem das Verb ebenfalls vorhanden ist.
stock BrainTextSuchen(dtext[])
{
for(new bts; bts <= thebraintextcounter; bts++)
{
printf("Durchgang %d",bts);
if(strfind(TheBrainText[bts][Frage], dtext, true) != -1)
{
printf("Frage: %s Antwort: %s",TheBrainText[bts][Frage],TheBrainText[bts][Antwort]);
return TheBrainText[bts][Antwort];
}
}
return 0;
}
Erklärung: Diese Funktion soll nach einem Satz suchen der mit dem eingegebenen übereinstimmt. (Funktioniert ebenfalls nicht)
Ich brauche dringend denk anstöße, also postet was euch dazu einfällt oder falls ihr wisst wie ich etwas besser machen könnte oder sagt bescheid falls ihr mehr Code braucht um mir helfen zu können.
MFG DurtyFree