Ps если у вас уже существует public OnPlayerKeyStateChange , это не обязательно. 2.Создаем паблик (можно в самом низу своего мода)
Code
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys) { if (newkeys == 65410 || newkeys == 130) //|| - означает одновременное нажатие. { SendClientMessage(playerid, ваш цвет, "Вы использовались багом samp'a!(C+)"); /*отправит сообщение нарушителю,здесь вы можете вставить любое сообщене.К примеру У нас нельзя использовать баги samp'a */ PlayerPlaySound(playerid,1058,0.0,0.0,0.0);//Это мелодия,которая будит звучать при нарушении TogglePlayerControllable(playerid, 0);//впринципе незачем, все равно кик, но чтоб поиздеваться))) Kick(playerid);/*кикнет игрока ибо если вы желаете его забанить ставте вместо этого кода Ban(playerid); но стоит учитывать что забанить может чисто случайно. */ } return 1; }
Заметочка:Объясню для чего надо этот скрипт.Те кто пользуются этим багом,вполне могут отключить сервер,это же и ддос. Продолжим. Дальше коды для ГФ ( GodFather ) 1.Находим
Code
enum pInfo
и добовляем туда.
Code
pBag,
2.Затем ищем
Code
public OnPlayerConnect(playerid)
в начало паблика добовляем
Code
PlayerInfo[playerid][pBag] = 0;
3.Ищем следующие паблики:
Code
public OnPlayerRegister(playerid, password[]) public OnPlayerUpdate(playerid) public OnPlayerLogin(playerid,password[])
И затем, в таком же порядке как написаны паблики добавляем
Ну а затем в public OnPlayerKeyStateChange добовляем
Code
if (newkeys == 65410 || newkeys == 130) //при одновременном нажатии c+сторона будут следующие действия { new string[256]; PlayerInfo[playerid][pBag] ++; format(string, sizeof(string), "Тут нельзя использовать баги samp'a! (C+). Предупреждений %d/3.",PlayerInfo[playerid][pBag]); SendClientMessage(playerid, ваш цвет, string); //отправит сообщение нарушителю TogglePlayerControllable(playerid, 0); Kick(playerid); if(PlayerInfo[playerid][pBag] >= 3) { new sendername[MAX_PLAYER_NAME]; GetPlayerName(playerid, sendername, sizeof(sendername)); PlayerInfo[playerid][pWarns] += 1;//выдаст варн format(string,sizeof(string), "Администрация: %s получил предупреждение, причина: багоюзерство.",sendername); SendClientMessageToAll(ваш цвет,string);//отправит сообщение всем игрокам PlayerInfo[playerid][pBag] = 0; } } } return 1; }
Конечно защита будит сробатовать через раз.Но стоит поставить.Но сам факт что постоянно обходить нереально. Это всё. Доработка by Dangerest. Thanks за внимание Экономь свет!!!Выключай Caps Lock!!!!
Добавлено (11.09.2011, 20:39:46) --------------------------------------------- Данная тема была перемещена из раздела Уроки. Причина перемещения: Повтор