Zitat geschrieben von
Mairu
Ok so hat das kein Sinn, ich sehe da ehrlich gesagt nicht durch, man kann ja keinen Spieler auswählen oder so, rufst du die Seite immer über eine andere auf, so dass man auch immer die ID des Users, den man herausfordert hat?
Also soll so sein das bei der Auflistung der Spieler
externer Link nen button drücken kannst von wegen Herrausfordern
dann geht das an Challenge-{ID}
dort kann man Kalenderdatum+ Uhrzeit angeben
der Herausgeforderte bekommt ne PM und kann über challenged ablehnen oder zustimmen
bei ablehnung bekommt er punkt abzug
bei zustimmen bekommt er punkte + das datum & uhrzeit wird im Kalender eingetragen
Zitat geschrieben von
Mairu
Dann die Einschränkung mit den 6 Spielen, ist die generell nur 6 Spiele in einer Woche oder so wie du es hast, 6 mal gegen einen Spieler in einer Woche?
6 Spiele die woche gegen selben gegner ist Aktuell Maximum (gab son fall da ham 2Spieler 40 games gemacht ging garnicht)
Zitat geschrieben von
Mairu
Dann das mit den Punkten, points = cpoints + 1 ergibt nicht wirklich sinn, da cpoints nicht verändert wird, also points immer gleich bleibt bzw. immer 1 mehr als cpoints?
da war vertippt x_X cpoints =cpoints +1 muss das sein
da points ladderpunkte sind
Zitat geschrieben von
Mairu
Und wie das mit dem Ablehnen etc. gehen soll, wenn es doch keine Übersicht oder ein Link in einer PM dazu gibt, ist mir auch nicht klar.
Die übersicht der herrausforderungen hab ich ja nicht hinbekommen eingelich sollst da ne übersicht geben
Zitat geschrieben von
Mairu
Also ich brauche alle Dateien und das SQL was damit im Zusammenhang steht und eine genaue Beschreibung was es werden soll, aber bitte nicht zu viele Anforderung, ich will dafür ehrlich gesagt nicht viel länger als eine Stunde brauchen.
So ladder script
CREATE TABLE `ic2_ladder_match` (
`id` int(10) unsigned NOT NULL auto_increment,
`loser` mediumint(9) NOT NULL,
`winner` mediumint(9) NOT NULL,
`dif` smallint(2) NOT NULL,
`time` int(12) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=14 ;
Da hab ich das noch nciht das beim user die ID angegeben wird
Ladder.php
<?php
# Copyright by: Manuel Staechele
# Support: www.ilch.de
# Ladderscript by Mairu
defined ('main') or die ( 'no direct access' );
require_once('include/includes/func/ladder.php');
if ($menu->get(1) == 'matches') {
$title = $allgAr['title'].' :: Ladder :: Spiele';
$hmenu = 'Ladder » Spiele';
$design = new design ( $title , $hmenu );
$design->header();
$tpl = new tpl('ladder');
//Spiele anzeigen
$tpl->out(3); $limit = 30; //Spiele pro Seite
$page = ( $menu->getA(2) == 'p' ? $menu->getE(2) : 1 );
$MPL = db_make_sites ($page , '' , $limit , '?ladder-match' , 'ladder_match' );
$anfang = ($page - 1) * $limit;
//Spiele ausgeben
$q = db_query("SELECT a.id,FROM_UNIXTIME(a.time,'%d.%m.%Y - %H:%i') as time,b.name as verlierer,c.name as gewinner FROM prefix_ladder_match a
LEFT JOIN prefix_user b ON a.loser = b.id LEFT JOIN prefix_user c ON a.winner = c.id ORDER BY a.time DESC LIMIT $anfang,$limit");
while ($r = db_fetch_assoc($q)) {
$class = $class == 'Cmite' ? 'Cnorm' : 'Cmite';
$r['class'] = $class;
$tpl->set_ar_out($r,4);
}
$tpl->set('MPL',$MPL);
$tpl->out(5);
$design->footer();
} elseif($menu->get(1) == 'insert') {
$title = $allgAr['title'].' :: Ladder :: Spiel eintragen';
$hmenu = 'Ladder » Spiel eintragen';
$design = new design ( $title , $hmenu );
$design->header();
$tpl = new tpl('ladder');
if (db_num_rows(db_query("SELECT id FROM prefix_user WHERE gesperrt = 0 AND id = ".$_SESSION['authid'])) == 1) {
//Spiel eintragen
if (isset($_POST['insertmatch'])) {
$loser = escape($_SESSION['authid'],'integer');
$winner = escape($_POST['winner'],'integer');
if ($loser == $winner) {
$msg = 'Man kann nicht gegen sich selbst spielen, Verlierer und Gewinner dürfen nicht der gleiche User sein';
} else {
if (@db_result(db_query("SELECT COUNT(id) FROM prefix_ladder_match WHERE time >= (UNIX_TIMESTAMP()-7*24*60*60) AND ( (loser = $loser AND winner = $winner) OR (loser=$winner AND winner=$loser) )"),0) >= 6) {
$msg = 'Die beiden User haben schon 6 Spiele innerhalb der letzten Woche bestritten<br />';
} elseif (insertmatch($loser,$winner)) {
wd('index.php?ladder-match','Spiel erfolgreich eingetragen',5);
sendpm($loser, $winner, 'Ladder', "Dir wurde ein Win zugesprochen\! \rDu steigst in der Rangliste\!\n\nYou won a Laddermatch\nMore \@ www.torridOrbs.com?ladder-matches");
$design->footer(1);
} else {
$msg = 'Fehler beim Eintragen des Spieles aufgetretet<br />';
}
}
}
$tpl->set('msg',$msg);
$tpl->set('user',dbliste(0,$tpl,'user','SELECT a.id,a.name FROM prefix_user a INNER JOIN prefix_user b ON a.id = b.id WHERE b.gesperrt = 0 AND a.id != '.$_SESSION['authid'].' ORDER BY name'));
$tpl->out(6);
} else {
echo 'Dies ist nur für ungesperrte Laddermitspieler möglich<br />';
}
$design->footer();
} else {
$title = $allgAr['title'].' :: Ladder :: Spieler';
$hmenu = 'Ladder » Spieler';
$design = new design ( $title , $hmenu );
$design->header();
$tpl = new tpl('ladder');
//Laddermember anzeigen
$tpl->out(0);
$limit = 30; //Spieler pro Seite
$page = ( $menu->getA(1) == 'p' ? $menu->getE(1) : 1 );
$MPL = db_make_sites ($page , '' , $limit , '?ladder' , 'user' );
$anfang = ($page - 1) * $limit;
$q = db_query("SELECT a.id,a.punkte,a.spiele,b.name FROM prefix_user a INNER JOIN prefix_user b ON a.id = b.id ORDER BY a.gesperrt,a.punkte DESC, b.name LIMIT $anfang,$limit");
while ($r = db_fetch_assoc($q)) {
$class = $class == 'Cmite' ? 'Cnorm' : 'Cmite';
$r['class'] = $class;
if ($r['gesperrt'] == 0) {
$r['jepnop'] = 'jep';
$r['ent'] = '';
} else {
$r['jepnop'] = 'nop';
$r['ent'] = 'ent';
}
$r['level'] = getLadderLevel($r['punkte']);
$tpl->set_ar_out($r,1);
}
$tpl->set_out('MPL',$MPL,2);
$design->footer();
}
?>
und nu die ladder funktion
<?php
# Copyright by: Manuel Staechele
# Support: www.ilch.de
# Ladderscript by Mairu
defined ('main') or die ( 'no direct access' );
//Gibt Level zurück, gegeben werden Punkte
function getLadderLevel($p) {
if ($p >= -50 && $p <= 10) { return 1; }
if ($p >= 11 && $p <= 30) { return 2; }
if ($p >= 31 && $p <= 60) { return 3; }
if ($p >= 61 && $p <= 100) { return 4; }
if ($p >= 101 && $p <= 150) { return 5; }
if ($p >= 151 && $p <= 201) { return 6; }
if ($p >= 201 && $p <= 260) { return 7; }
if ($p >= 261 && $p <= 320) { return 8; }
if ($p >= 321 && $p <= 400) { return 9; }
if ($p >= 401 && $p <= 480) { return 10; }
if ($p >= 481 && $p <= 580) { return 11; }
if ($p >= 581 && $p <= 680) { return 12; }
if ($p >= 681 && $p <= 800) { return 13; }
if ($p >= 801 && $p <= 920) { return 14; }
if ($p >= 921 && $p <= 1060) { return 15; }
if ($p >= 1061 && $p <= 1200) { return 16; }
if ($p >= 1201 && $p <= 1360) { return 17; }
if ($p >= 1361 && $p <= 1520) { return 18; }
if ($p >= 1521 && $p <= 1700) { return 19; }
if ($p >= 1701 && $p <= 1900) { return 20; }
if ($p >= 1901 && $p <= 2100) { return 21; }
if ($p >= 2101 && $p <= 2300) { return 22; }
if ($p >= 2301 && $p <= 2500) { return 23; }
if ($p >= 2501 && $p <= 2700) { return 24; }
if ($p >= 2701) { return 25; }
}
//Wandelt Levelunterschied zu Punkten um, die dem Gewinner hinzuaddiert und dem Verlierer abgezogen werden,
//wobei $dif die Leveldifferent ist(Gewinnerlevel-Verliererlevel) und $ws und $ls sind dann die Punkte die dem Gewinner
//oder verlieren hinzegerechnet/abgezogen werden
function getLadderPoints($dif,&$ws,&$ls) {
switch ($dif) {
case -25: case -24: case -23: case -22: case -21: case -20: case -19: case -18: case -17: case -16:
case -15: case -14: case -13: case -12: case -11: case -10: case -9: case -8: case -7: case -6:
case -5: $ws = 20; $ls = -11; break;
case -4: $ws = 18; $ls = -10; break;
case -3: $ws = 16; $ls = -9; break;
case -2: $ws = 14; $ls = -8; break;
case -1: $ws = 10; $ls = -7; break;
case 0: $ws = 8; $ls = -6; break;
case 1: $ws = 6; $ls = -5; break;
case 2: $ws = 5; $ls = -4; break;
case 3: $ws = 4; $ls = -3; break;
case 4: $ws = 3; $ls = -2; break; default:
case 5: $ws = 2; $ls = -1; break;
}
}
//Fügt ein Spiel ein, als Parameter Verlierer und Gewinner
function insertmatch($l,$w) {
$lp = @db_result(db_query("SELECT punkte FROM prefix_user WHERE id = $l"),0);
$ll = getLadderLevel($lp);
$wp = @db_result(db_query("SELECT punkte FROM prefix_user WHERE id = $w"),0);
$wl = getLadderLevel($wp);
$dif = $wl-$ll;
if (db_query("INSERT INTO prefix_ladder_match (loser,winner,dif,time) VALUES ($l,$w,$dif,UNIX_TIMESTAMP())")) {
getLadderPoints($dif,$ws,$ls);
if ($ll >= 20) { $ls = 2*$ls; }
db_query("UPDATE prefix_user SET punkte = punkte + $ws, spiele = spiele + 1 WHERE id = $w");
db_query("UPDATE prefix_user SET punkte = IF(punkte + $ls<0,0,punkte + $ls), spiele = spiele + 1 WHERE id = $l");
return true;
} else {
return false;
}
}
//Entfernt ein Spiel wieder, Parameter Spielid
function deletematch($id) {
$q = db_query("SELECT * FROM prefix_ladder_match WHERE id = $id");
if (!$q or db_num_rows($q) != 1) { return false; }
$r = db_fetch_object($q);
if (db_query("DELETE FROM prefix_ladder_match WHERE id = $id")) {
getLadderPoints($r->dif,$ws,$ls);
if ($ll >= 20) { $ls = 2*$ls; }
db_query("UPDATE prefix_user SET punkte = punkte - $ws, spiele = spiele - 1 WHERE id = $r->winner");
db_query("UPDATE prefix_user SET punkte = punkte - $ls, spiele = spiele - 1 WHERE id = $r->loser");
return true;
} else {
return false;
}
}
?>
Also vom ding her soll man bei der Ladder übersicht
den nächsten gegner auswählen
dem dann ne uhrzeit + datum mitteilen und der lehnt ab
darauf bekommt er nen punkt abzug und honor wird 1 hochgesetzt (alles inner ic2_user drinnen)
oder an dann kommt das in den kalender