MUTE PLAYER FOR TIME. -
budelis - 24.07.2011
Hi all.I need some help with mute for time it look like that: mute[playerid][time/sec].
AW: MUTE PLAYER FOR TIME. -
Forbidden - 24.07.2011
Use sscanf ,it will be easier to make the command.
Re: MUTE PLAYER FOR TIME. -
MadeMan - 24.07.2011
https://sampwiki.blast.hk/wiki/SetTimerEx
Re: MUTE PLAYER FOR TIME. -
budelis - 26.07.2011
Yes,but i don't understand,when admin mute player i do that:
mute[MuteID] = true;
Ok good,then onplayertext:
if(mute[playerid] == true)
{
SendClientMessage(playerid,COLOR_WHITE,"You are mute");
return 0;
}
But why,when I get mute,and i text anything,i don't get this message "You are mute".
Re: MUTE PLAYER FOR TIME. -
budelis - 26.07.2011
Help please.
Re: MUTE PLAYER FOR TIME. -
Cjgogo - 26.07.2011
i think becauuse of return 0 but not sure
Re: MUTE PLAYER FOR TIME. -
[MG]Dimi - 26.07.2011
return 0 actually prevents message to be sent to Main Chat
Re: MUTE PLAYER FOR TIME. -
Mean - 26.07.2011
Example code:
pawn Код:
new muted[ MAX_PLAYERS ];
CMD:mutemeforaminute( playerid, params[ ] ) {
SetTimerEx( "unmute", 60000, 0, "i", playerid );
muted[ playerid ] = 1;
return SendClientMessage( playerid, -1, "You have muted yourself for a minute. " );
}
public OnPlayerText( playerid, text[ ] ) {
if( muted[ playerid ] == 1 ) {
SendClientMessage( playerid, -1, "Can't talk while muted! " );
return 0;
}
return 1;
}
forward unmute( playerid );
public unmute( playerid ) {
SendClientMessage( playerid, -1, "A minute has passed, you have been unmuted. " );
muted[ playerid ] = 0;
return 1;
}
public OnPlayerDisconnect( playerid, reason ) {
muted[ playerid ] = 0;
return 1;
}
I think you can figure the rest yourself. You haven't provided any code, therefore we can't help you.
Re: MUTE PLAYER FOR TIME. -
budelis - 26.07.2011
pawn Код:
COMMAND:mute(playerid,params[])
{
new MuteID,MuteTime;
if(!IsPlayerAdmin(playerid)){return 1;}
if (sscanf(params, "ud", MuteID, MuteTime)){SendClientMessage(playerid, COLOR_ORANGE, "* mute player /mute [player_name] [time]");return 1;}
if (MuteID == INVALID_PLAYER_ID){SendClientMessage(playerid, COLOR_ORANGE, "This play do not exit");return 1;}
if(mute[MuteID] == true) { SendClientMessage(playerid,COLOR_ORANGE,"Player is already mute");return 1;}
SetTimerEx("MuteLeft",MuteTime,false,"i",MuteID);
MuteLiko[playerid] = SetTimerEx("MuteShow",1000,true,"i",MuteID);
mute[MuteID] = true;
PlayerData[playerid][rid][2] = MuteTime;
new Name[MAX_PLAYER_NAME];
GetPlayerName(playerid,Name,MAX_PLAYER_NAME);
new String[70];
format(String,sizeof(String),"* You have been muted by admin %i (seconds)",MuteTime);
SendClientMessage(MuteID,COLOR_ORANGE,String);
new String2[70];
format(String2,sizeof(String2),"* You muted %s %i (seconds)",Name,MuteTime);
SendClientMessage(playerid,COLOR_ORANGE,String2);
return 1;
}
Here is my script.
Re: MUTE PLAYER FOR TIME. -
Mean - 26.07.2011
Use [pawn][ /pawn], this is heavily unreadable.
AW: MUTE PLAYER FOR TIME. -
Nero_3D - 26.07.2011
Another script without timer
pawn Код:
CMD:mute(playerid, params[]) {
if(sscanf(params, "dd", params[0], params[1]) || (params[1] < 1)) {
SendClientMessage(playerid, -1, "Usage: /mute [playerid][time]");
} else {
new
tmp[128];
GetPlayerName(params[0], tmp, MAX_PLAYER_NAME);
gMuted[params[0]] = GetTickCount() + (params[1] * 1000);
format(tmp, sizeof tmp, "Player \"%s\" (%d) muted for %d seconds", tmp, params[0], params[1]);
SendClientMessage(playerid, 0xFFFFFFFF, tmp);
}
return true;
}
pawn Код:
//OnPlayerText
if(gMuted[playerid]) {
if(GetTickCount() < gMuted[playerid]) {
new
tmp[64];
format(tmp, sizeof tmp, "Muted!, %d seconds remaining",
((gMuted[playerid] - GetTickCount()) / 1000));
SendClientMessage(playerid, 0xFF0000FF, tmp);
return false;
} else {
gMuted[playerid] = 0;
}
}
pawn Код:
//OnPlayerDisconnect or OnPlayerConnect
muted[playerid] = 0;
Re: MUTE PLAYER FOR TIME. -
budelis - 26.07.2011
I update my post.I think you understand easier.
Re: MUTE PLAYER FOR TIME. -
budelis - 28.07.2011
THX you Nero_3D
All is work now.Just now i want to do with 3dtextlabel i do this timer when player mute player:
MuteLeft[MuteID] = SetTimerEx("MuteShow",1000,true,"i",MuteID);
forward MuteShow(playerid);
public MuteShow(playerid)
{
if(PlayerData[playerid][muted] == 1)
{
new Tekstas[10];
format(Tekstas,sizeof(Tekstas),"Mute %d",((PlayerData[playerid][muted] - GetTickCount()) / 1000));
SeeMute[playerid] = Create3DTextLabel(Tekstas, 0xFF0000FF, 30.0, 40.0, 50.0, 40.0, 0);
Attach3DTextLabelToPlayer(SeeMute[playerid], playerid, 0.0, 0.0, 0.7);
}
else
KillTimer(MuteLeft[playerid]);
}
And why when i mute player,player don't get 3dtextlabel
Re: MUTE PLAYER FOR TIME. -
budelis - 28.07.2011
Very sorry for triple post,but i need very help with this.