 |
|
 |
|
|
|
Последние Файлы GTA 4 |
Последние Файлы GTA-MP |
Реклама |
|
|
|
|
|
mute на время
| |
| Inferno | Дата: Вторник, 19.08.2008, 10:30 | Сообщение # 1 |
|
Хостинг-провайдер
Группа:
I'm V.I.P.
Сообщений: 1320
Награды: 26
Город: /root
Репутация: 320
Замечания: 0%
Статус: 
| У мну в моде есть команда: Code if(strcmp(cmd, "/mute", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "*Используйте: /mute [id игрока/часть ника]"); 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][pMuted] = 1; printf("AdmCmd: %s silenced %s",sendername, giveplayer); format(string, sizeof(string), "AdmCmd: %s был заткнут админом %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); } else { PlayerInfo[playa][pMuted] = 0; printf("AdmCmd: %s unsilenced %s",sendername, giveplayer); format(string, sizeof(string), "AdmCmd: %s был разоткнут админом %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); } } } } else { SendClientMessage(playerid, COLOR_GRAD1, " у вас нет прав на использование этой команды!"); } } return 1; } Может может кто-нибудь её переделать так, чтобы можно было заткнуть на время(в сек)? ХЗ как, я скриптер только на пол-ставки=))
|
| |
|
|
| Spirit | Дата: Вторник, 19.08.2008, 11:07 | Сообщение # 2 |
|
Освоившийся
Группа:
Продвинутые
Сообщений: 129
Награды: 1
Город: Омск
Репутация: 14
Замечания: 0%
Статус: 
| Сделай таймер разморозки.
Любиш садизм люби и мазахизм :)
|
| |
|
|
| theAlone | Дата: Вторник, 19.08.2008, 11:11 | Сообщение # 3 |
|
Долгожитель
Группа:
Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус: 
| Inf1203, тебе чтобы автоматом или самому время прописывать?
|
| |
|
|
| Inferno | Дата: Вторник, 19.08.2008, 11:15 | Сообщение # 4 |
|
Хостинг-провайдер
Группа:
I'm V.I.P.
Сообщений: 1320
Награды: 26
Город: /root
Репутация: 320
Замечания: 0%
Статус: 
| чтоб самому прописывать, в секундах Spirit, только это не заморозка, а затыкание, невозможность писать в чат
|
| |
|
|
| theAlone | Дата: Вторник, 19.08.2008, 11:30 | Сообщение # 5 |
|
Долгожитель
Группа:
Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус: 
| Куда нибудь в начало или конец. Code new UnTimer;
forward Unmutemeplz(playerid);
public Unmutemeplz(playerid) { PlayerInfo[playerid][pMuted] = 0; format(string, sizeof(string), "AdmCmd: Сервер разбанил чат у %s ",playerid); ABroadCast(COLOR_LIGHTRED,string,1); KillTimer(UnTimer); } В Комманды Code if(strcmp(cmd, "/mute", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "*Èñïîëüçóéòå: /mute [id èãðîêà/÷àñòü íèêà]"); 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][pMuted] = 1; printf("AdmCmd: %s silenced %s",sendername, giveplayer); format(string, sizeof(string), "AdmCmd: %s áûë çàòêíóò àäìèíîì %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); UnTimer = SetTimerEx("Unmutemeplz",60000,0,"d",playa); } else { PlayerInfo[playa][pMuted] = 0; printf("AdmCmd: %s unsilenced %s",sendername, giveplayer); format(string, sizeof(string), "AdmCmd: %s áûë ðàçîòêíóò àäìèíîì %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); KillTimer(UnTimer); } } } } else { SendClientMessage(playerid, COLOR_GRAD1, " ó âàñ íåò ïðàâ íà èñïîëüçîâàíèå ýòîé êîìàíäû!"); } } return 1; } Текст сам исправишь. Добавлено (19.08.2008, 11:18) --------------------------------------------- Эта версия без ввода, ща напишу с вводом. Добавлено (19.08.2008, 11:30) ---------------------------------------------
Code if(strcmp(cmd, "/mute", true) == 0) { if(IsPlayerConnected(playerid)) { tmp = strtok(cmdtext, idx); if(!strlen(tmp)) { SendClientMessage(playerid, COLOR_GRAD2, "*Èñïîëüçóéòå: /mute [id èãðîêà/÷àñòü íèêà] [Êîë-âî ñåêóíä]"); 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) { if(strlen(tmp[8]) = 0) { PlayerInfo[playa][pMuted] = 1; printf("AdmCmd: %s silenced %s",sendername, giveplayer); format(string, sizeof(string), "AdmCmd: %s áûë çàòêíóò àäìèíîì %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); } else { PlayerInfo[playa][pMuted] = 1; printf("AdmCmd: %s silenced %s",sendername, giveplayer); format(string, sizeof(string), "AdmCmd: %s áûë çàòêíóò àäìèíîì %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); UnTimer = SetTimerEx("Unmutemeplz",strlen(tmp[8])*1000,0,"d",playa); } } else { PlayerInfo[playa][pMuted] = 0; printf("AdmCmd: %s unsilenced %s",sendername, giveplayer); format(string, sizeof(string), "AdmCmd: %s áûë ðàçîòêíóò àäìèíîì %s",giveplayer ,sendername); ABroadCast(COLOR_LIGHTRED,string,1); KillTimer(UnTimer); } } } } else { SendClientMessage(playerid, COLOR_GRAD1, " ó âàñ íåò ïðàâ íà èñïîëüçîâàíèå ýòîé êîìàíäû!"); } } return 1; } Посмотри так. ЗЫ Я не профессиональный скриптёр. 
Сообщение отредактировал [DPS]EvilRiaz - Вторник, 19.08.2008, 11:20 |
| |
|
|
| Inferno | Дата: Вторник, 19.08.2008, 11:46 | Сообщение # 6 |
|
Хостинг-провайдер
Группа:
I'm V.I.P.
Сообщений: 1320
Награды: 26
Город: /root
Репутация: 320
Замечания: 0%
Статус: 
| Ок, спс, если что ждем OKStyle А можно как-нибудь без вот этого: AdmCmd: Сервер разбанил чат у %s ",playerid) ? А то как-то глупо получается) Добавлено (19.08.2008, 11:39) --------------------------------------------- Ах да, совсем забыл, и ещё надо после вот этого: AdmCmd: %s был заткнут админом %s добавить: на %s секунд %s - на сколько заткнули Добавлено (19.08.2008, 11:46) ---------------------------------------------
Quote (|DPS|EvilRiaz) ЗЫ Я не профессиональный скриптёр. это точно, вот почему твое художество не работает)))
|
| |
|
|
| OKStyle™ | Дата: Вторник, 19.08.2008, 13:14 | Сообщение # 7 |
|
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус: 
| Quote (|DPS|EvilRiaz) KillTimer(UnTimer); не нужно, т.к. можно запретить повторение.... Inf1203, наипростейший вариант: В начало: Code new isplayermuted[MAX_PLAYERS]; В OnPlayerText: Code if(isplayermuted[playerid] == 1) return SendClientMessage(playerid,COLOR_RED, " Âû íå ìîæåòå ãîâîðèòü â ÷àòå!"); if(isplayermuted[playerid] == 0) return 1; P.S. Причём, этот паблик должен иметь: return 0; В OnPlayerCommandText: Code if(!strcmp(cmd,"/mute",true)) { new tmp[30],tmp2[30]; tmp = strtok(cmdtext,idx); tmp2 = strtok(cmdtext,idx); new otherplayer = strval(tmp); new time = strval(tmp2); SetTimerEx("UnMute",time,0,"d",otherplayer); isplayermuted[otherplayer]==1; return 1; } И вниз: Code forward UnMute(); forward UnMute() { for(new i=0; i<MAX_PLAYERS; i++) { if(isplayermuted[i] == 1) { isplayermuted[i] = 0; } } } P.S. Ненавижу персональные таймеры, но должно работать.
Да потому что когда человек делает на заказ он не старается. © kRiSyo Кланяимся нофаму королю анимаций =))))))) © Manusya В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
|
| |
|
|
| theAlone | Дата: Вторник, 19.08.2008, 13:29 | Сообщение # 8 |
|
Долгожитель
Группа:
Пользователи
Сообщений: 1380
Награды: 1
Город: Москва
Репутация: 92
Замечания: 0%
Статус: 
| Хм точно, спасибо, буду знать ЗЫ Я насчёт tmp = strtok(cmdtext,idx); tmp2 = strtok(cmdtext,idx);
Сообщение отредактировал [DPS]EvilRiaz - Вторник, 19.08.2008, 13:30 |
| |
|
|
| OKStyle™ | Дата: Вторник, 19.08.2008, 16:48 | Сообщение # 9 |
|
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус: 
| Quote (|DPS|EvilRiaz) ЗЫ Я насчёт tmp = strtok(cmdtext,idx); tmp2 = strtok(cmdtext,idx); это для того, чтобы сервер не мучался с забором разных данных в одну переменную.
Да потому что когда человек делает на заказ он не старается. © kRiSyo Кланяимся нофаму королю анимаций =))))))) © Manusya В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
|
| |
|
|
| Relax | Дата: Среда, 20.08.2008, 20:15 | Сообщение # 10 |
|
Местный
Группа:
I'm V.I.P.
Сообщений: 686
Награды: 5
Город: Los Angeles
Репутация: 56
Замечания: 0%
Статус: 
| Quote (OKStyle™) это для того, чтобы сервер не мучался с забором разных данных в одну переменную. Незнаю как сдесь но в С++ легче скриптам когда одна и таже переменная, так как при добавлении новой нужна доп. выделение памяти, а если переобьявлять старую, точнее переназначать то нагрузка меньше (IMHO, могу ошибаться)
Public Enemy: LS-SF-LV Developer && Public Enemy TDM Team Leader #TDM-Community
|
| |
|
|
| OKStyle™ | Дата: Среда, 20.08.2008, 22:31 | Сообщение # 11 |
|
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус: 
| Relax, конечно, ресурс памяти потребляться будет меньше, но работать будет дольше =)
Да потому что когда человек делает на заказ он не старается. © kRiSyo Кланяимся нофаму королю анимаций =))))))) © Manusya В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
|
| |
|
|
| DoctorEvil | Дата: Среда, 20.08.2008, 22:42 | Сообщение # 12 |
|
Новенький
Группа:
Продвинутые
Сообщений: 47
Награды: 1
Репутация: 1
Замечания: 0%
Статус: 
| Чет не получается ни один способ! Во всех ошибку находит и я не найду где именно
|
| |
|
|
| Inferno | Дата: Среда, 20.08.2008, 22:46 | Сообщение # 13 |
|
Хостинг-провайдер
Группа:
I'm V.I.P.
Сообщений: 1320
Награды: 26
Город: /root
Репутация: 320
Замечания: 0%
Статус: 
| OKStyle™, ты дал самый простой вариант, а как сделать чтобы время давалось не автоматом, а самому вписывать Как сделать чтоб ещё выводилось (s) заткнут админом на (d) секунд?
|
| |
|
|
| OKStyle™ | Дата: Среда, 20.08.2008, 22:53 | Сообщение # 14 |
|
Мастер джэдай
Группа:
I'm V.I.P.
Сообщений: 2444
Награды: 16
Город: Оренбург
Репутация: 1174
Замечания: 40%
Статус: 
| Quote (Inf1203) как сделать чтобы время давалось не автоматом, а самому вписывать Quote (OKStyle™) SetTimerEx("UnMute",time,0,"d",otherplayer); time - и есть "указание". Quote (Inf1203) Как сделать чтоб ещё выводилось (s) заткнут админом на (d) секунд? В команду: Code new PlayerName[MAX_PLAYER_NAME],tmp[30],tmp2[30],strint[256]; tmp = strtok(cmdtext,idx); tmp2 = strtok(cmdtext,idx); new otherplayer = strval(tmp); new time = strval(tmp); GetPlayerName(otherplayer,PlayerName,sizeof(PlayerName)); format(string,sizeof(string),"%s заткнут админом на %d секунд",PlayerName,time); SendClientMessageToAll(0xFF0000AA,string);
Да потому что когда человек делает на заказ он не старается. © kRiSyo Кланяимся нофаму королю анимаций =))))))) © Manusya В MTA - для вас все багоюзеры. Не юзают там +с только EFO и ACF. © SeWeR
|
| |
|
|
| DoctorEvil | Дата: Среда, 20.08.2008, 23:39 | Сообщение # 15 |
|
Новенький
Группа:
Продвинутые
Сообщений: 47
Награды: 1
Репутация: 1
Замечания: 0%
Статус: 
| OKStyle™ плиз можешь выложить весь код целиком! А то я что-то запутался что с чем
|
| |
|
|
|
 |
|
 | |
| |
|