Jump to content
  • 0

pomoc Mute


IchNar

Dotaz

Popis problému:

Problém je v tom,že som si dal mute na 1 minútu,čakal som 1 minútu ale nedalo mi to unmute..Neviem kde je chyba hladal som a nič...Už som zúfalý tak som napísal sem.

 

Chyby/varování kompilátoru a při běhu:

--

 

Kód:

 

[spoiler]
//príkaz
CMD:mute(playerid,params[])
{
 new id,dovod[256],str[256],mutetime;
 if(AdminLevel[playerid] < 3)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz");
 if(Muted[id] == 1)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Tento hráč už má mute");
 if(sscanf(params,"uis[256]",id,mutetime,dovod))return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Musíš zadať /mute [ID] [Čas v minutách] [Dôvod]");
 if(!IsPlayerConnected(id))return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Tento hráč nieje na serveri");
 format(str,sizeof(str),"[%s]%s(ID:%d) ti dal mute na %i minúť [Dôvod: %s]",GetPlayerAdminTitle(playerid),Meno(playerid),playerid,mutetime,dovod);
 SendClientMessage(id,COLOR_RED,str);
 Muted[id] = 1;
 SetTimerEx("MuteTimer",60*1000*mutetime,false,"i",id);
    return 1;
}
//timer
forward MuteTimer(playerid);
public MuteTimer(playerid)
{
 Muted[playerid] = 0;
 return SendClientMessage(playerid,COLOR_RED,"Tvoj mute vypršal");
}

//onplayertext
if(Muted[playerid] == 1)
 {
   SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Bol si umlčaný musíš počkať,aby si mohol znova písať");
   return 0;
 }
[spoiler]

 

 

 

Dodatečné poznámky:

--

Link to comment
Share on other sites

10 odpovědí na tuto otázku

Recommended Posts

  • 0

y, až teď mi to došlo. icon_e_biggrin.gif Každopádně nevím, napadá mě jen či při dokončení timeru nespadne server. 

 

Jo v pohodě.. :d Taky se dívám, ale v kódu nikde chybu nevidím.

Link to comment
Share on other sites

  • 0

if(Muted[id] == 1)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Tento hráč už má mute");

By mě zajímalo, jak to id můžeš vědět, když ten řetězec rozděluješ až v následující podmínce. Nemluvě o existenci samotného id.

 

Řetězec rozděluj(sscanf) co nejdříve. Tak se vyhneš možnosti, aby adminé nemohli psát do parametrů kraviny.

Edited by Ernst Remer
Link to comment
Share on other sites

  • 0

Uprimne neviem kde je chyba, ale aj tak pouzivat na toto timer je zbytocne podla mna. Skus toto.
Sice to nepise, ked je odmlcany, ale ak skusi pisat mu to napise, kolko sekund ostava a to je podla mna este lepsie.

CMD:mute(playerid,params[])
{
	new id,dovod[256],str[256],mutetime;
	if(AdminLevel[playerid] < 3)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Nemáš oprávnenie na tento príkaz");
	if(Muted[id] == 1)return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Tento hrác už má mute");
	if(sscanf(params,"uis[256]",id,mutetime,dovod))return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Musíš zadat /mute [ID] [Cas v minutách] [Dôvod]");
	if(!IsPlayerConnected(id))return SendClientMessage(playerid,COLOR_RED,"[!] {FFFFFF}Tento hrác nieje na serveri");
	format(str,sizeof(str),"[%s]%s(ID:%d) ti dal mute na %i minút [Dôvod: %s]",GetPlayerAdminTitle(playerid),Meno(playerid),playerid,mutetime,dovod);
	SendClientMessage(id,COLOR_RED,str);
	Muted[id] = gettime() + 60*mutetime; // Nastavi cas, kedy konci mute
    return 1;
}

//onplayertext
if(Muted[playerid] > gettime()) // Skontroluje, ci uz mute skoncil. Ak je mute 0, tak podmienka neplati aj tak.
{
   new str[128];
   format(str, sizeof(str), "[!] {FFFFFF}Bol si umlcaný. Musíš počkať %i sekúnd, aby si mohol znova písat", Muted[playerid] - gettime());
   SendClientMessage(playerid, COLOR_RED, str);
   return 0;
}
Link to comment
Share on other sites

  • 0

Díky moc,už to funguje.Nechápem prečo mi to vtedy nefungovalo...Ale ešte by som sa ťa chcel opýtať jednu vec a to,že ako mám spraviť ukladanie,že koľko sekúnd mu ešte v tom mute ostáva.Dúfam že si ma pochopil.

Link to comment
Share on other sites

  • 0

Díky moc,už to funguje.Nechápem prečo mi to vtedy nefungovalo...Ale ešte by som sa ťa chcel opýtať jednu vec a to,že ako mám spraviť ukladanie,že koľko sekúnd mu ešte v tom mute ostáva.Dúfam že si ma pochopil.

Ak to robis tvojim sposobom cez timer, tak to nezistis. Ak to robis tak ako som napisal ja, tak Muted[playerid] - gettime(). Ak nechces ani jedno z toho tak jedine do Muted dat pocet sekund a odcitat z toho v sekundovom timery.

Edited by xhunterx
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...