11:29
ОбновитьСмайлыУправление мини-чатом
МИНИ-ЧАТ
Главная страница!

 



 
          





Рекомендуем:





Последние Файлы GTA 4 Последние Файлы GTA-MP Реклама
Скрипт GTA 4 элементы Watch... 07.09.2014
Ferrari 360 Spider [EPM con... 13.12.2013
Porsche Cayenne Turbo 2012 ... 13.12.2013
Shelby Terlingua Mustang v1... 13.12.2013
Hamann Lamborghini Gallardo... 27.10.2013
[GM] The Big PEN1:LS v2.00 ... 04.12.2017
Dgun (AvnanceRP,SampRP,Dimo... 19.03.2016
SAMP скрипт SX Events (MySQ... 03.03.2016
Карта ASL мэрия для SAMP се... 03.03.2016
AIM для SA-MP 0.3.7 22.02.2016
  • Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Модератор форума: AXE, Weddew  
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 lol

А можно как-нибудь без вот этого:
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%
Статус:
Чет не получается ни один способ! Во всех ошибку находит и я не найду где именно sad
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™ плиз можешь выложить весь код целиком! А то я что-то запутался что с чем wink
  • Страница 1 из 5
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:





 


 


 
Хостинг от uCoz samp.at.ua