Posted on Poniedziałek, 20th kwiecień 2009 by admin
Postanowiłem poprawić odrobinę kawałek kodu z Santic Engine odpowiadający za blokadę przy zbyt częstym i zbyt szybkim odświeżaniu gry. Wcześniejszy kod był mało wydajny, zapisywał ilość odświeżeń do bazy danych.
Oto nowy kod, do wstawienia w head.php gdzieś na dole. Stare anty-makro przyda się wykasować/zakomentować :)
if ($_SESSION[‘macro’] == ”) $_SESSION[‘macro’] = 0;
$test = time() - $_SESSION[‘time’];
$_SESSION[‘time’] = time();
if ($test <= 0)
{
$_SESSION[‘macro’] = $_SESSION[‘macro’] + 1;
if ($_SESSION[‘macro’] >= 200)
{
$strDate = $db -> DBDate($newdate);
$db -> Execute("INSERT INTO `log` (`owner`, `log`, `czas`) VALUES(1,’".$player -> user." ID: ".$player -> id." - macro IP: ".$player -> ip."’, ".$strDate.")");
exit(‘Zbyt szybko i często od¶wieżasz stronę. Wpis został wysłany do dziennika władcy. Stosowanie makr będzie karane! Je¶li bł±d pojawił się podczas normalnej gry napisz do ID 1′);
}
} else
{
if ($_SESSION[‘macro’] >= $test * 5) $_SESSION[‘macro’] = $_SESSION[‘macro’] - $test * 5;
else $_SESSION[‘macro’] = 0;
}
Poprawiona wersja :)
jeśli gracz kliknie 200 razy pod rząd w odstępach krótszych niż sekunda wyświetli mu się błąd :)
200 odświeżeń, każde z osobna w odstępie poniżej sekundy. Nabija non stop, czyli np jeśli ktoś odświeży 400 razy za szybko to musi poczekać 40 sekund bez lub z dłuższym odstępem odświeżania aż przejdzie poniżej limitu.
Odstęp można zmienić, np jeśli ktoś chce ustawić odstęp między odświeżeniami do 2 sekund:
if ($test <= 2)
ale z moich testów wynika że niektórzy w górach czy sprzedając jakieś przedmioty mieszczą się w takim limicie :P
Sugestie mile widziane
Tags: anty-makro, Santic Engine, vallheru
Posted in Santic Engine | Comments (0)