Просмотр полной версии : [Вопрос] Как сделать что бы не флудило.
Kenny_Dalglish
28.05.2014, 17:05
Как сделать что бы не флудило Обнаружено использование чит-программ (#Rapid)
Данный код ставиться в OnPlayerWeaponShot
if(weaponid != 38)
{
if((gettime() - shotTime[playerid]) < 1) shot[playerid] += 1;
else shot[playerid] = 0;
if(shot[playerid] > 10) SendClientMessage(playerid,COLOR_ARPCVET228, "Обнаружено использование чит-программ {ff0000}(#Rapid)"), KickNew(playerid);
shotTime[playerid] = gettime();
}
new
server_tick = GetTickCount()
;
if(weaponid != 38 && GetPVarInt(playerid, "StopFlood") < server_tick)
{
if((gettime() - shotTime[playerid]) < 1)
shot[playerid] += 1;
else
shot[playerid] = 0;
if(shot[playerid] > 10)
SendClientMessage(playerid, -1, "Обнаружено использование чит-программ {ff0000}(#Rapid)"),
SetPVarInt(playerid, "StopFlood", server_tick + 10000),
KickNew(playerid);
shotTime[playerid] = gettime();
}
10000 (10 секунд) - это время через которое игрок снова увидит сообщение, если значение shot[playerid] больше чем 10.
Kenny_Dalglish
28.05.2014, 19:06
new
server_tick = GetTickCount()
;
if(weaponid != 38 && GetPVarInt(playerid, "StopFlood") < server_tick)
{
if((gettime() - shotTime[playerid]) < 1)
shot[playerid] += 1;
else
shot[playerid] = 0;
if(shot[playerid] > 10)
SendClientMessage(playerid, -1, "Обнаружено использование чит-программ {ff0000}(#Rapid)"),
SetPVarInt(playerid, "StopFlood", server_tick + 10000),
KickNew(playerid);
shotTime[playerid] = gettime();
}
10000 (10 секунд) - это время через которое игрок снова увидит сообщение, если значение shot[playerid] больше чем 10.
Сообщение - не доставляться вообще, и теперь если даже без рапида все рао кикнет.
if(weaponid != 38 && gettime() >= shotTime[playerid]
{
if((gettime() - (shotTime[playerid]-30)) < 1) shot[playerid] += 1;//30 - число секунд, после которых проверка вновь сработает (зависит от значения ниже)
else shot[playerid] = 0;
if(shot[playerid] > 10) SendClientMessage(playerid,COLOR_ARPCVET228, "Обнаружено использование чит-программ {ff0000}(#Rapid)"), KickNew(playerid);
shotTime[playerid] = gettime()+30;//30 - число секунд, после которых проверка вновь сработает
}
Kenny_Dalglish
29.05.2014, 15:57
if(weaponid != 38 && gettime() >= shotTime[playerid]
{
if((gettime() - (shotTime[playerid]-30)) < 1) shot[playerid] += 1;//30 - число секунд, после которых проверка вновь сработает (зависит от значения ниже)
else shot[playerid] = 0;
if(shot[playerid] > 10) SendClientMessage(playerid,COLOR_ARPCVET228, "Обнаружено использование чит-программ {ff0000}(#Rapid)"), KickNew(playerid);
shotTime[playerid] = gettime()+30;//30 - число секунд, после которых проверка вновь сработает
}
Вообще не срабатывает код.
Эмм, скобку то поставить сами догадались?
Ну и попробуйте вот
if(weaponid != 38 && gettime() >= shotTime[playerid])
{
if((gettime() - (shotTime[playerid]-30)) < 1 && shotTime[playerid]) shot[playerid] += 1;//30 - число секунд, после которых проверка вновь сработает (зависит от значения ниже)
else shot[playerid] = 0;
if(shot[playerid] > 10)
{
SendClientMessage(playerid,COLOR_ARPCVET228, "Обнаружено использование чит-программ {ff0000}(#Rapid)");
KickNew(playerid);
return 1;
}
shotTime[playerid] = gettime()+30;//30 - число секунд, после которых проверка вновь сработает
}
- - - Добавлено - - -
Так, стоп... Чем вообще флудит? И что за KickNew?
Kenny_Dalglish
29.05.2014, 16:26
Эмм, скобку то поставить сами догадались?
Ну и попробуйте вот
if(weaponid != 38 && gettime() >= shotTime[playerid])
{
if((gettime() - (shotTime[playerid]-30)) < 1 && shotTime[playerid]) shot[playerid] += 1;//30 - число секунд, после которых проверка вновь сработает (зависит от значения ниже)
else shot[playerid] = 0;
if(shot[playerid] > 10)
{
SendClientMessage(playerid,COLOR_ARPCVET228, "Обнаружено использование чит-программ {ff0000}(#Rapid)");
KickNew(playerid);
return 1;
}
shotTime[playerid] = gettime()+30;//30 - число секунд, после которых проверка вновь сработает
}
- - - Добавлено - - -
Так, стоп... Чем вообще флудит? И что за KickNew?
Скобку, поставил сам. Флудит сообщением SendClientMessage(playerid,COLOR_ARPCVET228, "Обнаружено использование чит-программ {ff0000}(#Rapid)"); т.к сам колэбек вызывается при каждом выстреле. KickNew это что бы успевало доставлять сообщение.
stock KickNew(playerid)
{
SetTimerEx("KickPublic", 1000, false, "d", playerid);
SetPVarInt(playerid, "kicked", 1);
return true;
}
forward KickPublic(playerid);
public KickPublic(playerid)
{
if(IsPlayerConnected(playerid))
{
ResetPlayerWeapons(playerid);
DeletePVar(playerid, "kicked");
Kick(playerid);
}
}
Во 1:
stock KickNew(playerid)
{
if(GetPVarInt(playerid, "kicked")) return 1;
SetTimerEx("KickPublic", 1000, false, "d", playerid);
SetPVarInt(playerid, "kicked", 1);
return true;
}
Во вторых:
if(weaponid != 38)
{
if(GetPVarInt(playerid, "kicked")) return 0;
if((gettime() - shotTime[playerid]) < 1) shot[playerid] += 1;
else shot[playerid] = 0;
if(shot[playerid] > 10) SendClientMessage(playerid,COLOR_ARPCVET228, "Обнаружено использование чит-программ {ff0000}(#Rapid)"), KickNew(playerid);
shotTime[playerid] = gettime();
}
Kenny_Dalglish
29.05.2014, 16:48
Во 1:
stock KickNew(playerid)
{
if(GetPVarInt(playerid, "kicked")) return 1;
SetTimerEx("KickPublic", 1000, false, "d", playerid);
SetPVarInt(playerid, "kicked", 1);
return true;
}
Во вторых:
if(weaponid != 38)
{
if(GetPVarInt(playerid, "kicked")) return 0;
if((gettime() - shotTime[playerid]) < 1) shot[playerid] += 1;
else shot[playerid] = 0;
if(shot[playerid] > 10) SendClientMessage(playerid,COLOR_ARPCVET228, "Обнаружено использование чит-программ {ff0000}(#Rapid)"), KickNew(playerid);
shotTime[playerid] = gettime();
}
Функция кика работает все нормально зачем мне ей переделывать?
Функция кика работает все нормально зачем мне ей переделывать?
Потому что если часто вызывать этот паблик - каждый раз будет создаваться таймер, не? -_-
Kenny_Dalglish
29.05.2014, 17:04
Вот сейчас не флудит но почему вызываеться 2 секунды хотя таймер на 1000?
Это у вас надо спрашивать. Вы же писали функцию кика.
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot