mmofacts.com

Bash Kontrolle

gepostet vor 18 Jahre von sami06
folgende tabelle steht dem ganzen zu grunde (in der werden die Kämpfe gespeichert
id - start - ziel - time

1 - 4 - 5 - 0h*
2 - 4 - 5 - 1h*
3 - 4 - 5 - 2h*
4 - 4 - 6 - 3h
5 - 5 - 6 - 4h?
6 - 5 - 6 - 5h?
7 - 6 - 4 - 5h
8 - 4 - 5 - 5h*
...
..
.
also, ein kleines Beispiel, vorne die id, dann die id des starts und dann die vom ziel... und zuletzt time (wobei in wirklichkeit dort keine Stundenangabe steht sondern ein timestamp)
nun das Ergebniss, dass ich gerne hätte
wobei ich aus dem Zeitraum von 24h hier für das Beispiel nur 3h mache und anstatt "ob öfter als drei mal in 24 Stunden" nur noch wissen möchte, ob "mehr als zwei mal in 3 Stunden"...
das vereinfacht es ein wenig...
nun werden die, die identisch sind, markiert (* steht für die Kombination start=4 und ziel =5)
dann würde es für die mit * markierten zutreffen
nun wird der zeitintervall von 3h dazugenommen, dann kann man sehen, dass es im Zeitintervall von 0 bis 2h drei angriffe mit selben start wie ziel gegeben hat, also mehr als 2 also ausgeben... (und zwar die start wie auch die ziel id)
bei denen mit Fragezeichen markiert, waren es nicht mehr als 2 datensätze innerhalb von 3h, also keine Ausgabe...
verständlich?
freue mich um jede Hilfe
mfg
topo
gepostet vor 18 Jahre von Kaiser Nero
Original von sami06
verständlich?

ähm.. nein...
Könntest du bitte etwas klarer Formulieren, was du haben möchtest?
mfg
gepostet vor 18 Jahre von sami06
ok, ich versuchs mal, ich habe eine Tabelle (siehe oeb), in der alle angriffe und deren ausgang, sowohl auch der start user und der ziel user gepeichert wird...
in dieser tabelle sind etwa 3000 Datensätze (und jeden Tag etwa 500 neue), weswegen ich es nicht von hand machen kann...
nun will ich kontrollieren, ob irgendwann mal die bashregel verletzt wurde
die bash regel lautet, dass ein spieler einen anderen nur 3 mal innerhalb von 24h angreifen darf...
und die abfrage soll konntrollieren, ob in irgendeinen zeitintervall der länge 24h einmal ein user einen anderen öfter als 3 mal angegriffen hat...
gepostet vor 18 Jahre von Störti

$sql = "SELECT COUNT(*) AS num
FROM angriffe_log
WHERE
angreifer = $angreifer
AND verteidiger = $verteidiger
AND zeit > " . (time()-86400);

Das führt du jedes Mal aus, wenn ein Angriff gestartet werden soll. Kommt als "num" eine 2 raus, daf nicht angegriffen werden.
Nachträglich zu kontrollieren, ob die Regel verletzt wurde und den Spieler dann bestrafen, ist unfair, denn diese Regel kann man technisch sehr einfach umsetzen, manchmal vertut man sich auch einer nur um eine Stunde und schon hat man den Salat.

Auf diese Diskussion antworten