[Pomoc] Anti cmd spam na up


Započeo Bugi, Jul 08, 2014, 15:06:40 POSLE PODNE

prethodna tema - sledeća tema

0 članova i 1 gost pregledaju ovu temu.

Skripta koju koristim: UP
Detaljan opis problema: Problem je u tome sto sam odradio anti chat spam, ali anticmd me muci vec danima znaci odradio sam sve lepo varijablu per player koja se postqvi na true kada kuca komandu pod onplayercommandperformed pod proverom if success i ne znam dakle ne znam sta da radim, kod je u redu ali nikad nisam radio sa ycmd evo sta se desi komanda radi normalno samo stojos ispise da moras da sacekas dva minuta pomoc..
Dio skripte: dam
RESPECT: Blaeks, Yui_Sang, Gagi, Kapetan Husein, Luksa, Slay, Denis_Lapi, Zoran(Dude)

Programski jezici koje koristim: C, C#, Visual Basic, HTML, CSS, PHP (tek ucim).


A da probas ovako nesto pod OnPlayerCommandPerformed

if(PlayerInfo[playerid][pAdmin] == 0) Commands[playerid] ++;
if(Commands[playerid] >= 1)
{
KillTimer(CommandsTimer[playerid]);
CommandsTimer[playerid] = SetTimerEx("ResetCommands", 1500, false, "i", playerid);

if(Commands[playerid] == 5) SendClientMessage(playerid, COLOR_ASKQ,"Ako nastavite raditi Command Spam dobicete kick !");
if(Commands[playerid] == 10)
{
Kick(playerid);
}

Burazeru, veze s vezom nema to sto ti pricas ja pitam lepo za public ti mi dajes neki kod koji mi ne treba :$
Evo ga moj:

Pod onplayercommandperformed
if(success)
	{
		if(CMDTimer[playerid] == 1)
		{
			SCM(playerid, -1, "{00C0FF}[MOD:RP]{FFFFFF} Komande mozete koristiti svake 2 sekunde.");
			return 0;
		}
		if(CMDTimer[playerid] == 0)
		{
			CMDTimer[playerid] = 1;
			SetTimerEx("CMDT", 2000, 0, "d", playerid);
			return 1;
		}
	}


i imam taj tajmer  CMDT koji postavlja varijablu CMDTimer na 0 za igraca poz.. zz poy
RESPECT: Blaeks, Yui_Sang, Gagi, Kapetan Husein, Luksa, Slay, Denis_Lapi, Zoran(Dude)

Programski jezici koje koristim: C, C#, Visual Basic, HTML, CSS, PHP (tek ucim).


ovako?

if(success)
	{
		if(CMDTimer[playerid] == 1)
		{
			SCM(playerid, -1, "{00C0FF}[MOD:RP]{FFFFFF} Komande mozete koristiti svake 2 sekunde.");
                        return 0;
		}
		else if(CMDTimer[playerid] == 0)
		{
			CMDTimer[playerid] = 1;
			SetTimerEx("CMDT", 2000, 0, "d", playerid);
			return 1;
		}
	}
Software Developer

Ne, pokusavao sam i to ali nista, ja mislim da je problem taj sto se taj public poziva nakon kucanja komande i komanda obavi sve i onda tek ispise deo pod onplayercommandperformed..
Nisam to nigde procitao, samo pretpostavljam
RESPECT: Blaeks, Yui_Sang, Gagi, Kapetan Husein, Luksa, Slay, Denis_Lapi, Zoran(Dude)

Programski jezici koje koristim: C, C#, Visual Basic, HTML, CSS, PHP (tek ucim).



Sta tu ima da se pojasni, na primer kucam /stuck i onda ovo bude:
Prvo ispise ovo:
MOD:RP | Sada ste osvezeni i mozete se pomerati.

A odmah nakon toga kucam /stuck:
MOD:RP | Sada ste osvezeni i mozete se pomerati.
MOD:RP | Komande mozete koristiti svake 2 sekunde.

To je to nema sta vise :P Imate kod samo ne znam gde da ga stavim.. Mozda pod OnPlayerText.. Hmmm sumnjam
RESPECT: Blaeks, Yui_Sang, Gagi, Kapetan Husein, Luksa, Slay, Denis_Lapi, Zoran(Dude)

Programski jezici koje koristim: C, C#, Visual Basic, HTML, CSS, PHP (tek ucim).


Probaj ovako

public OnPlayerCommandPerformed(playerid, cmdtext[], success)
{
    if(!success) SCM (playerid, -1, "* Komanda ne postoji !");
	if(CMDTimer[playerid] == 1)
	{
		SCM (playerid, -1, "{00C0FF}[MOD:RP]{FFFFFF} Komande mozete koristiti svake 2 sekunde.");
		return 1;
	}
	if(CMDTimer[playerid] == 0)
	{
		CMDTimer[playerid] = 1;
		SetTimerEx("CMDT", 2000, false, "i", playerid);
	}
	return 1;
}

forward CMDT(playerid);
public CMDT(playerid)
{
	CMDTimer[playerid] = 0;
	return 1;
}