In primul rand:
1.Blocare nickname change Codul:
a)Include fakemeta cu ajutorul liniei:
Code: Select all
#include <fakemeta>
Code: Select all
register_forward(FM_ClientUserInfoChanged, "fwClientUserInfoChanged");
=>fwClientUserInfoChanged publicul in care forwardul se va executa.
=>Forwardul se executa(in cazul nostru) atunci cand acesta incearca sa isi schimbe numele
c) Creem publicul fwCLientUserInfoChanged. Veti gasi explicatiile necesare in cod
Code: Select all
public fwClientUserInfoChanged(id,buffer) //indexul nostru este id{
if (!is_user_connected(id)) { //daca nu este conectat returnam FMRES_IGNORED
return FMRES_IGNORED;
}
static val[32]//variabila statica val(vector) cu 32 de pozitii
static name[32]//variabila statica name(vector) cu 32 de pozitii.
get_user_name(id, name, 31) //detectam numele jucatorului
engfunc(EngFunc_InfoKeyValue, buffer, "name", val, sizeof val- 1)
if (equal(val, name)) {
return FMRES_IGNORED
}
engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name) //ii setam vechiul nume
console_print(id,"Name change is disabled on this server.")//ii scriem un mesaj de avertizare.
return PLUGIN_HANDLED
}
i)Faceti o noua variabila(vector) count:
Code: Select all
new count[33]
Code: Select all
public fwClientUserInfoChanged(id,buffer) {
if (!is_user_connected(id)) {
return FMRES_IGNORED;
}
static val[32]
static name[32]
get_user_name(id, name, 31)
engfunc(EngFunc_InfoKeyValue, buffer, "name", val, sizeof val- 1)
if (equal(val, name)) {
return FMRES_IGNORED
}
engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", name)
count[id]++ //adunam 1 variabilei
console_print(id,"Name change is disabled on this server.")
console_print(id,"You have %i from 3 warns.At 3 warns you will be automatically kicked",count[id]) //ii scriem un mesaj
if(count[id]==3) {//verificam daca a incercat de 3 ori sa schimbe numele
client_cmd(id,"disconnect") //il deconectam
console_print(id,"Ai fost deconectat pentru ca ai incercat de 3 ori sa iti schimbi numele") //ii scriem un mesajl
count[id]=0 //resetam variabila count
}
return PLUGIN_HANDLED
}
2.Blocarea caracterului <<#>> din nume. Codul:
a) Creem publicul <<client_authorized>> cu paramul id.
Code: Select all
public client_authorized(id) {
new name[32]//creeam o noua variabila(vector) name cu 32 de pozitii
get_user_name(id,name,31)//detectam numele
if(containi(name,"#") ) {//verificam daca numele contine caracterul #
replace_all(name,31,"#","")//stergem caracterul # din nume
}
set_user_info(id,"name",name)//ii setam noul nume
client_print(id,print_chat,"Ti-a fost sters din nume caracterul # pentru a evita un bug.Va rugam sa nu il schimbati inapoi")//ii printam un mesaj.
}
i)containi:
Code: Select all
containi(const a[],const b[])
const a[]=variabila noastra
const b[]=caracterul pe care il verificam
Code: Select all
replace_all(string,lungime,const a[],const b[])
string=variabila
lungime=lungimea variabilei(vectorului)
const a[]=pe cine inlocuim
const b[]=cu ce inlocuim
a) Dam hook comenzii say si say_team.
Code: Select all
register_clcmd( "say", "Func_Say" );
register_clcmd( "say_team", "Func_Say" );
Code: Select all
public Func_Say( id ) {
new szSaid[ 192 ]; //facem o noua variabila
read_args( szSaid, sizeof( szSaid ) -1 ); //citim ceea ce scrie
remove_quotes( szSaid );
if( containi( szSaid, "ceva" ) != -1)//verificam daca ce a scris contine cuvantul "ceva"
{
client_cmd(id,"disconnect")//il deconectam.
console_print(id,"Ai fost deconectat pentru ca ai cerut xp")
}
}