Pitanje/savjet: Kako da uradim da igrac ne moze da spamuje komande?
Opširnije: Treba mi SAMO ZA KOMANDE jer vec imam uradjeno za chat.
Dodatno: //
Kod mene je u vidu Anti Cheata za spam komande, naravano ovo je samo deo toga ima jos par sitnica za gCommandSpam ali to prilagodis sam sebi modu..........
[pawn] if(AC_Info[gCommandSpam] == 1)
{
if(PlayerInfo[playerid][pAdmin] < 1 && PlayerInfo[playerid][pHelper] < 1)
{
if(gettime() < AntiCMDSpam[playerid])
{
SCM(playerid, -1, ""ERRORBOJA"[ANTI SPAM]: "BELA"Komande mozete koristiti svake 2 sekunde...");
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 10.0);
return 0;
}
AntiCMDSpam[playerid] = gettime() + 2;
}
}
return 1;
}[/pawn]
Citat: #luyn poslato Januar 25, 2023, 22:17:48 POSLE PODNE
Kod mene je u vidu Anti Cheata za spam komande, naravano ovo je samo deo toga ima jos par sitnica za gCommandSpam ali to prilagodis sam sebi modu..........
[pawn] if(AC_Info[gCommandSpam] == 1)
{
if(PlayerInfo[playerid][pAdmin] < 1 && PlayerInfo[playerid][pHelper] < 1)
{
if(gettime() < AntiCMDSpam[playerid])
{
SCM(playerid, -1, ""ERRORBOJA"[ANTI SPAM]: "BELA"Komande mozete koristiti svake 2 sekunde...");
PlayerPlaySound(playerid, 1052, 0.0, 0.0, 10.0);
return 0;
}
AntiCMDSpam[playerid] = gettime() + 2;
}
}
return 1;
}[/pawn]
samo gde da stavim ovo? Pod OnPlayerCommandText ili OnPlayerCommandPerformed?
Citat: Rex poslato Januar 25, 2023, 23:16:08 POSLE PODNE
samo gde da stavim ovo? Pod OnPlayerCommandText ili OnPlayerCommandPerformed?
Stavi pod OnPlayerCommandPerformed
Citat: Ivo_Dev poslato Januar 25, 2023, 23:39:06 POSLE PODNE
Stavi pod OnPlayerCommandPerformed
vidi sliku :https://imgur.com/a/vfwIsto (https://imgur.com/a/vfwIsto)
evo i kod
[pawn]public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(!success) return SCM(playerid, SRV_BOJA, "[GRESKA]:"BELA2" Uneli ste komandu koja ne postoji!");
if(PI[playerid][xAdmin] < 1 && PI[playerid][xHelper] < 1)
{
if(as[playerid])
{
SCM(playerid, SRV_BOJA,"[AS]: "BELA2"Komande mozete koristiti svake 2 sekunde!");
return 0;
}
as[playerid] = true;
SetTimerEx("asa",2000,false,"i",playerid);
}
return 1;
}[/pawn]
on detektuje da ja spamujem ali idalje isvrsi komandu
Unknown command ti ispisuje zbog return 0
Probaj zamijeniti sa return 1
Ne znam je l koristiš zcmd ili pawn.cmd ili šta već drugo, nisam baratao ni sa jednim od toga, sa ycmd jedino COMMAND_INVALID_INPUT return ne bi ispisivao tu default samp poruku
I možda je bolje da koristiš gettickcount umjesto timera u tom slučaju
Citat: Rex poslato Januar 26, 2023, 00:04:09 PRE PODNE
vidi sliku :https://imgur.com/a/vfwIsto (https://imgur.com/a/vfwIsto)
evo i kod
[pawn]public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
if(!success) return SCM(playerid, SRV_BOJA, "[GRESKA]:"BELA2" Uneli ste komandu koja ne postoji!");
if(PI[playerid][xAdmin] < 1 && PI[playerid][xHelper] < 1)
{
if(as[playerid])
{
SCM(playerid, SRV_BOJA,"[AS]: "BELA2"Komande mozete koristiti svake 2 sekunde!");
return 0;
}
as[playerid] = true;
SetTimerEx("asa",2000,false,"i",playerid);
}
return 1;
}[/pawn]
on detektuje da ja spamujem ali idalje isvrsi komandu
[pawn]public OnPlayerCommandPerformed(playerid, cmdtext[], success) {
if((gettime() - spamdetekcija[playerid]) < 3)
{
SendClientMessage(playerid, -1, "[SPAM] {FFFFFF}Pricekajte %d sekunde do sledeceg koristenja komandi.", antispam2[playerid] - gettime());
return 1;
}
if(success) SpamCheck[playerid] = GetTickCount();
if(!success) return SendClientMessage(playerid, -1, "GRESKA: Komanda koju ste unijeli ne postoji!");
spamdetekcija[playerid] = gettime() + 3;
return true;
}[/pawn]
Citat: Grella™ poslato Januar 26, 2023, 11:04:25 PRE PODNE
[pawn]public OnPlayerCommandPerformed(playerid, cmdtext[], success) {
if((gettime() - spamdetekcija[playerid]) < 3)
{
SendClientMessage(playerid, -1, "[SPAM] {FFFFFF}Pricekajte %d sekunde do sledeceg koristenja komandi.", antispam2[playerid] - gettime());
return 1;
}
if(success) SpamCheck[playerid] = GetTickCount();
if(!success) return SendClientMessage(playerid, -1, "GRESKA: Komanda koju ste unijeli ne postoji!");
spamdetekcija[playerid] = gettime() + 3;
return true;
}[/pawn]
Zasto forsirate true/false return-ove u non-boolean callbackovima/funkcijama?
Citat: Galardo poslato Januar 26, 2023, 12:09:02 POSLE PODNE
Zasto forsirate true/false return-ove u non-boolean callbackovima/funkcijama?
my bad hvala na ispravci
[pawn]public OnPlayerCommandPerformed(playerid, cmdtext[], success) {
if((gettime() - spamdetekcija[playerid]) < 3)
{
SendClientMessage(playerid, -1, "[SPAM] {FFFFFF}Pricekajte %d sekunde do sledeceg koristenja komandi.", spamdetekcija[playerid] - gettime());
return 1;
}
if(success) SpamCheck[playerid] = GetTickCount();
if(!success) return SendClientMessage(playerid, -1, "GRESKA: Komanda koju ste unijeli ne postoji!");
spamdetekcija[playerid] = gettime() + 3;
return 1;
}[/pawn]
Citat: Galardo poslato Januar 26, 2023, 12:09:02 POSLE PODNE
Zasto forsirate true/false return-ove u non-boolean callbackovima/funkcijama?
Ne znaju za bolje :D
Citat: Grella™ poslato Januar 26, 2023, 12:45:32 POSLE PODNE
my bad hvala na ispravci
[pawn]public OnPlayerCommandPerformed(playerid, cmdtext[], success) {
if((gettime() - spamdetekcija[playerid]) < 3)
{
SendClientMessage(playerid, -1, "[SPAM] {FFFFFF}Pricekajte %d sekunde do sledeceg koristenja komandi.", spamdetekcija[playerid] - gettime());
return 1;
}
if(success) SpamCheck[playerid] = GetTickCount();
if(!success) return SendClientMessage(playerid, -1, "GRESKA: Komanda koju ste unijeli ne postoji!");
spamdetekcija[playerid] = gettime() + 3;
return 1;
}[/pawn]
Idalje ISTO se desava, komanda se izvrsi i ispise poruku da ne moze da se spamuje!
Resen problem!
[pawn]
public OnPlayerCommandReceived(playerid, cmd[], params[], flags)
{
if(as[playerid])
{
SCM(playerid, SRV_BOJA,"[AS]: "BELA2"Komande mozete koristiti svake 2 sekunde!");
return 0;
}
return 1;
}
public OnPlayerCommandPerformed(playerid, cmd[], params[], result, flags)
{
if(result == -1)
{
SCM(playerid, SRV_BOJA, "[GRESKA]:"BELA2" Uneli ste komandu koja ne postoji!");
return 0;
}
as[playerid] = true; SetTimerEx("asa",2000,false,"i",playerid);
return 1;
}[/pawn]