Szerintem is felesleges, de ő mindegyikre mást akar előhívni (szerintem).
Ezért írtam h ha nagyon egyszerűen akarja megoldani, akkor próbálja meg így, bár én magának a say üzenet lehookolását javasolnám.
Kb így nézne ki:
Kód:
#define PLUGIN "karomkodas szuro"
#define VERSION "1.0 Beta"
#define AUTHOR "AxE"
new message[192]
public plugin_init()
{
register_plugin (PLUGIN, VERSION, AUTHOR);
register_clcmd ("say", "hook_say");
register_clcmd ("say_team", "hook_say");
}
public hook_say(id)
{
read_args (message, 191);
remove_quotes (message);
new position;
new bool:l = false;
if ( (position = containi(message,"anyad")) != -1 )
{
new len = strlen("anyad");
while (len--)
message[position++]='*';
l = true;
}
if (l)
{
new cmd[32]
read_argv(0,cmd,31)
engclient_cmd(id,cmd,message)
}
return PLUGIN_CONTINUE
}
Igen, példámban kicsillagozom a szöveget, de persze mást is tehetünk (pl kiírathatjuk, hogy "anyukám egy fotel", vagy "szeretem a vadkörtét" stb).
Innentől kezdve ebből kéne másolatot csinálni a függvényben az if után else if-fel:
Kód:
if ( (position = containi(message,"IDEJÖNASZÖVEGAMITKERESNIFOGOKAJÁTÉKOSÜZENETÉBEN")) != -1 )
{
new len = strlen("IDEJÖNASZÖVEGAMITKERESNIFOGOKAJÁTÉKOSÜZENETÉBEN");
while (len--)
message[position++]='*';
l = true;
}
Azaz:
Kód:
public hook_say(id)
{
read_args (message, 191);
remove_quotes (message);
new position;
new bool:l = false;
if ( (position = containi(message,"anyad")) != -1 )
{
new len = strlen("anyad");
while (len--)
message[position++]='*';
l = true;
}
else if ( (position = containi(message,"apad")) != -1 )
{
new len = strlen("apad");
while (len--)
message[position++]='*';
l = true;
}
else if ( (position = containi(message,"meleg")) != -1 )
{
new len = strlen("meleg");
while (len--)
message[position++]='*';
l = true;
}
if (l)
{
new cmd[32]
read_argv(0,cmd,31)
engclient_cmd(id,cmd,message)
}
return PLUGIN_CONTINUE
}
Vagy ha nagyon profik vagyunk, definiálhatunk egy tömböt is hozzá, amely tartalmazza, a kiszűrendő szöveget, így sokal szebb és optimálisabb lesz a kód

Azaz:
Kód:
#define MAX_WORDS 3
new _swearsWords[MAX_WORDS] = {
"anyad",
"apad",
"meleg"
}
És így ezek után így módosulhat a lehookolt sayünk:
Kód:
public hook_say(id)
{
read_args (message, 191);
remove_quotes (message);
new position, i = 0;
new bool:l = false;
while ( i < MAX_WORDS )
{
if ( (position = containi(message,_swearsWords[i])) != -1 )
{
new len = strlen(_swearsWords[i]);
while (len--)
message[position++]='*';
l = true;
}
i++;
}
if (l)
{
new cmd[32]
read_argv(0,cmd,31)
engclient_cmd(id,cmd,message)
}
return PLUGIN_CONTINUE
}
Tehát a KÉSZ kód:Kód:
#define PLUGIN "Metal karomkodas szurojee"
#define VERSION "1.0 Beta"
#define AUTHOR "Metal :)"
#define MAX_WORDS 3
new _swearsWords[MAX_WORDS] = {
"anyad",
"apad",
"meleg"
}
new message[192]
public plugin_init()
{
register_plugin (PLUGIN, VERSION, AUTHOR);
register_clcmd ("say", "hook_say");
register_clcmd ("say_team", "hook_say");
}
public hook_say(id)
{
read_args (message, 191);
remove_quotes (message);
new position, i = 0;
new bool:l = false;
while ( i < MAX_WORDS )
{
if ( (position = containi(message,_swearsWords[i])) != -1 )
{
new len = strlen(_swearsWords[i]);
while (len--)
message[position++]='*';
l = true;
}
i++;
}
if (l)
{
new cmd[32]
read_argv(0,cmd,31)
engclient_cmd(id,cmd,message)
}
return PLUGIN_CONTINUE
}
Látjátok, nem volt nehéz és átlátható

És mint mondottam, ez egy kicsillagozó változat, megtehetjük, hogy a vizsgálat után egyszerűen átírjuk a szöveget.
Azaz:
Kód:
if ( (position = containi(message,_swearsWords[i])) != -1 )
{
message="Je' egy fotel!";
l = true;
}
Persze ilyenkor mindig mindenre ugyanaz írja, de megoldhatjuk úgy is, hogy párokat tartalmazó tömböt definiálunk, amelynél a pár első komponense a keresendő szöveget, a második a válasz hozzá.
Silverss: Ez neked kötelező fakultatív feladat, ess neki

( u.i.: Ha hiba van írjátok, kútfejből írtam mindent, tesztelni nem tudtam

)