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 (!isset($_SESSION[‘time’])) $_SESSION[‘time’] = time();
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: , ,
Posted in Santic Engine | Comments (0)

Comments are closed.