admin Дата: Вторник, 01.02.2011, 03:27:08 | Сообщение # 1
Группа: Администраторы
Сообщений: 3869
сначало ищем enum pInfo добавляем там pMuteTime, потом public OnPlayerRegister(playerid, password[]) и добавляем format(var, 32, "MuteTime=%d\n",PlayerInfo[playerid][pMuteTime]);fwrite(hFile, var);
потом ищем public OnPlayerLogin(playerid,password[]) и добавляем if( strcmp( key , "MuteTime" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pMuteTime] = strval( val ); }
запись в акк сделали. Теперь при логине даем 0 сек. молчанки в public OnPlayerLogin(playerid,password[]) добавляем PlayerInfo[playerid][pMuteTime]=0; хотя можно сделать в ОnPlayerRegister ну да пох)
теперь, чтобы счетчик сбрасывался, в public SetPlayerUnjail() добавляем следующие:
Code
if(PlayerInfo[i][pMuteTime] > 0) { PlayerInfo[i][pMuteTime] -=1; if(PlayerInfo[i][pMuteTime] <= 0) { GetPlayerName(i, plname, sizeof(plname)); format(string, 256, " c %s снята молчанка ",plname); SendClientMessageToAll(COLOR_GREY,string); } }
теперь сама команда: Code
if(strcmp(cmd, "/mute", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /mute [playerid/PartOfName]"); return 1; } new playa; playa = ReturnUser(tmp); if (PlayerInfo[playerid][pAdmin] >= 1) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { GetPlayerName(playa, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); if(PlayerInfo[playa][pMuted] == 0) { PlayerInfo[playa][pMuteTime] = 180; printf("AdmCmd: %s silenced %s",sendername, giveplayer); format(string, sizeof(string), " %s получил молчанку от администратора %s",giveplayer ,sendername); ABroadCast(COLOR_RED,string,1); } else { PlayerInfo[playa][pMuteTime] = 0; printf("AdmCmd: %s unsilenced %s",sendername, giveplayer); format(string, sizeof(string), " %s открыл рот %s",giveplayer ,sendername); ABroadCast(COLOR_RED,string,1); } } } } else { SendClientMessage(playerid, COLOR_GRAD1, " Вы не можете использовать эту команду!"); } } return 1; }
в данном случае молчанка дается на 180 сек. ( PlayerInfo[playa][pMuteTime] = 180; ) и чтобы наказанный не мог говорить во все команды связанные с чатом (/report, /o, /f и т.д.) ставим
Code
if(PlayerInfo[playerid][pMuteTime] > 0) { SendClientMessage(playerid, COLOR_GREY , "У вас молчанка"); return 1; }
и в public OnPlayerText(playerid, text[]) ставим Code
if(PlayerInfo[playerid][pMuteTime] > 0) { SendClientMessage(playerid, COLOR_GREY , "*Вы не можете говорить, у вас молчанка !"); return 0; }
Источник:forum.pawno.ru
zm-jail.ru Разработка сайта samp-pawno.ru
Сообщение сначало ищем enum pInfo добавляем там pMuteTime, потом public OnPlayerRegister(playerid, password[]) и добавляем format(var, 32, "MuteTime=%d\n",PlayerInfo[playerid][pMuteTime]);fwrite(hFile, var);
потом ищем public OnPlayerLogin(playerid,password[]) и добавляем if( strcmp( key , "MuteTime" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pMuteTime] = strval( val ); }
запись в акк сделали. Теперь при логине даем 0 сек. молчанки в public OnPlayerLogin(playerid,password[]) добавляем PlayerInfo[playerid][pMuteTime]=0; хотя можно сделать в ОnPlayerRegister ну да пох)
теперь, чтобы счетчик сбрасывался, в public SetPlayerUnjail() добавляем следующие:
Code
if(PlayerInfo[i][pMuteTime] > 0) { PlayerInfo[i][pMuteTime] -=1; if(PlayerInfo[i][pMuteTime] <= 0) { GetPlayerName(i, plname, sizeof(plname)); format(string, 256, " c %s снята молчанка ",plname); SendClientMessageToAll(COLOR_GREY,string); } }
теперь сама команда: Code
if(strcmp(cmd, "/mute", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "Используйте: /mute [playerid/PartOfName]"); return 1; } new playa; playa = ReturnUser(tmp); if (PlayerInfo[playerid][pAdmin] >= 1) { if(IsPlayerConnected(playa)) { if(playa != INVALID_PLAYER_ID) { GetPlayerName(playa, giveplayer, sizeof(giveplayer)); GetPlayerName(playerid, sendername, sizeof(sendername)); if(PlayerInfo[playa][pMuted] == 0) { PlayerInfo[playa][pMuteTime] = 180; printf("AdmCmd: %s silenced %s",sendername, giveplayer); format(string, sizeof(string), " %s получил молчанку от администратора %s",giveplayer ,sendername); ABroadCast(COLOR_RED,string,1); } else { PlayerInfo[playa][pMuteTime] = 0; printf("AdmCmd: %s unsilenced %s",sendername, giveplayer); format(string, sizeof(string), " %s открыл рот %s",giveplayer ,sendername); ABroadCast(COLOR_RED,string,1); } } } } else { SendClientMessage(playerid, COLOR_GRAD1, " Вы не можете использовать эту команду!"); } } return 1; }
в данном случае молчанка дается на 180 сек. ( PlayerInfo[playa][pMuteTime] = 180; ) и чтобы наказанный не мог говорить во все команды связанные с чатом (/report, /o, /f и т.д.) ставим
Code
if(PlayerInfo[playerid][pMuteTime] > 0) { SendClientMessage(playerid, COLOR_GREY , "У вас молчанка"); return 1; }
и в public OnPlayerText(playerid, text[]) ставим Code
if(PlayerInfo[playerid][pMuteTime] > 0) { SendClientMessage(playerid, COLOR_GREY , "*Вы не можете говорить, у вас молчанка !"); return 0; }
Источник:forum.pawno.ru Автор - admin Дата добавления - 01.02.2011 в 03:27:08
World_Maker Дата: Среда, 31.08.2011, 03:24:53 | Сообщение # 2
Группа: Пользователи
Сообщений: 2
Я хочу сделать команду в моде так, что-бы не просто затыкало, а ешё выводило написанную администратором причину. К примеру - /mute id Причина. В чат выводило бы: Сервер: Игрок () получил молчанку от администратора () причина: Здесь причина. Как это осушествить?
Сообщение Я хочу сделать команду в моде так, что-бы не просто затыкало, а ешё выводило написанную администратором причину. К примеру - /mute id Причина. В чат выводило бы: Сервер: Игрок () получил молчанку от администратора () причина: Здесь причина. Как это осушествить? Автор - World_Maker Дата добавления - 31.08.2011 в 03:24:53
Сообщение World_Maker , так оно и есть.. если /mute наберешь на кого-то игрока то всем будет писать что такой-то тип получил молчанку!Автор - admin Дата добавления - 31.08.2011 в 13:15:26