|
Posté par Darkmore, le 09/05/2007 à 14:19:41 Bonjour, j'ai codé un nouveau pvp car l'ancien buggait trop.
Pour commencer, ouvrer index.php. Apres :
Code :
elseif ($do[0] == "map") { include('map.php'); map(); }
Rajouter :
Code :
elseif ($do[0] == "combat") { include('map.php'); combat(); }
Ensuite ouvrer map.php, après :
Code :
.blancmap2 {
color: #ffffff;
font: 10px verdana;
}
Rajouter :
Code :
.combat {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #990066;
border: 1px solid #a38611;
background-color: #fbe0e2;
margin-top: 5px;
margin-bottom: 5px;
}
Ensuite toujours dans map.php apres :
Code :
// Affichage de la position.
echo "
<div id="Layer3" style="position:absolute; right:8px; top:9px; width:156px; height:17px; z-index:1">
<table width="156" border="0" cellspacing="0" cellpadding="0" height="17" background="images/carte/haut1.gif">
<tr>
<td align="center">
<span class="mauve"><b>Long:</b></span> ".$userrow[longitude]." - <span class="mauve"><b>Lat:</b></span> ".$userrow[latitude]."
</td>
</tr>
</table>
</div>";
Rajouter :
Code :
// Affichage du choix de l'adversaire.
echo "
<div id="Layer3" style="position:absolute; left:9px; top:0.5px; width:409px; height:15;">
<form action='index.php?do=combat' method='post'>
<table border="0" width='309' cellspacing="0" cellpadding="0" background="images/carte/haut2.gif">
<tr>
<td align="center">
<select name='adversaire' class='combat'>
<option value='-1'>Choisissez votre adversaire</option>";
$pseudo = $userrow['username'];
$position = doquery("SELECT longitude,latitude FROM {{table}} WHERE username='$pseudo'", "users");
$coordonnee = mysql_fetch_assoc($position);
$longitude = $coordonnee['longitude'];
$latitude = $coordonnee['latitude'];
$ennemi_selection = "0";
$query = doquery("SELECT * FROM {{table}} WHERE longitude BETWEEN ".$longitude."-1 AND ".$longitude."+1 AND latitude BETWEEN ".$latitude."-1 AND ".$latitude."+1 AND id!='".$userrow['id']."'", "users");
for ( $count = 1 ; $count <= 8 && $ennemi_selection != null ; $count ++ ) {
$ennemi_selection = mysql_fetch_array($query);
if ( $ennemi_selection != null ) {
echo "<option value='$ennemi_selection[id]'>$ennemi_selection[charname] (Long : $ennemi_selection[longitude] , Lat : $ennemi_selection[latitude])</option>";
}
}
echo "</select>
<input type='submit' name='submit' value='Attaquer' class='combat' />
</form>";
echo "</td>
</tr>
</table>
</div>";
}
Et enfin toujours et encore dans map.php avant ?> et apres }, rajouter :
Code :
function combat() {
global $userrow ;
if ($_POST['adversaire'] == -1) {
header("LOCATION: index.php?do=map");
}
$id = $_POST['adversaire'];
$id2 = $userrow['id'];
$adversaire_query = doquery("SELECT * FROM {{table}} where id='$id'", "users");
$adversaire = mysql_fetch_assoc($adversaire_query);
$joueurs_query = doquery("SELECT * FROM {{table}} where id='$id2'", "users");
$joueurs = mysql_fetch_assoc($joueurs_query);
if ($adversaire['longitude'] == $joueurs['longitude'] AND $adversaire['latitude'] == $joueurs['latitude']) {
header("LOCATION: index.php?do=map");
}
if ($adversaire['currenthp'] <= 0) {
$xp1 = $adversaire['experience'] - 15;
$query = doquery("UPDATE {{table}} set experience='$xp1',currenthp='$adversaire[maxhp]',longitude='0',latitude='0' where id='$id'", "users");
header("LOCATION: index.php?do=map");
}
$nb = mt_rand(1,3);
$nb2 = mt_rand(1,3);
$nb = $nb * 2;
$nb2 = $nb2 * 2;
$attaque_joueurs = $joueurs['attackpower'] * $nb;
$defense_joueurs = $joueurs['defensepower'] * $nb;
$attaque_adversaire = $adversaire['attackpower'] * $nb2;
$defense_adversaire = $adversaire['defensepower'] * $nb2;
if ($attaque_joueurs == $defense_adversaire)
{
$attaque = $attaque_joueurs / 2;
$defense = $defense_adversaire / 2;
$degat = $joueurs['strength'] / 2;
$xp = $attaque - $defense + 1;
$phrase = "Vous avez touché et vous infligez $degat dégats.<BR>Vous et votre adversaire gagnez $xp Points d'expérience.";
$xp1 = $adversaire['experience'] + $xp;
$xp2 = $joueurs['experience'] + $xp;
$vie = $adversaire['currenthp'] - $degat;
$query = doquery("UPDATE {{table}} set experience='$xp1',currenthp='$vie' where id='$id'", "users");
$query = doquery("UPDATE {{table}} set experience='$xp2' where id='$id2'", "users");
}
if ($attaque_joueurs < $defense_adversaire)
{
$attaque = $attaque_joueurs / 2;
$defense = $defense_adversaire / 2;
$degat = 0;
$xp = ($defense - $attaque) / 4;
$phrase = "Vous avez echoué et vous infligez $degat dégats.<BR>Votre adversaire gagne $xp Points d'expérience.";
$xp = $adversaire['experience'] + $xp;
$query = doquery("UPDATE {{table}} set experience='$xp' where id='$id'", "users");
}
if ($attaque_joueurs > $defense_adversaire)
{
$attaque = $attaque_joueurs / 2;
$defense = $defense_adversaire / 2;
$degat = $joueurs['strength'];
$xp = ($attaque - $defense) / 4;
$phrase = "Vous avez touché et vous infligez $degat dégats.<BR>Vous gagnez $xp Points d'expérience.";
$vie = $adversaire['currenthp'] - $degat;
$xp2 = $joueurs['experience'] + $xp;
$query = doquery("UPDATE {{table}} set currenthp='$vie' where id='$id'", "users");
$query = doquery("UPDATE {{table}} set experience='$xp2' where id='$id2'", "users");
}
$page = <<<COMBAT
<body bgcolor='#ffffff'>
<center>
<table width="100%" border="1">
<tr><td>
<table><tr><td>
Attaque de $joueurs[charname] ($joueurs[charclass] matricule $joueurs[id]) :</td><td><b>$attaque</b>
</td></tr>
<tr><td>Défense de $adversaire[charname] ($adversaire[charclass] matricule $adversaire[id]) :</td><td> <b>$defense</b></td></tr></table>
$phrase</td></tr></table>
</center>
COMBAT;
echo $page;
}
On remercieras tous inko qui ma aidé pour une des requete mysql ce qui a alleger le scripts.
Inko ma reduit 8 ligne en une seul, celle la :
Code :
$query = doquery("SELECT * FROM {{table}} WHERE longitude BETWEEN ".$longitude."-1 AND ".$longitude."+1 AND latitude BETWEEN ".$latitude."-1 AND ".$latitude."+1 AND id!='".$userrow['id']."'", "users");
A la base c'etait un truc du genre :
Code :
$x1 = joueurs['latitude'] + 1 ; $y1 = joueurs['longitude'] - 1 ;
$x2 = joueurs['latitude'] + 0 ; $y2 = joueurs['longitude'] + 1 ;
$x3 = joueurs['latitude'] + 1 ; $y3 = joueurs['longitude'] + 0 ;
$x4 = joueurs['latitude'] - 1 ; $y4 = joueurs['longitude'] + 1 ;
$x5 = joueurs['latitude'] - 1 ; $y5 = joueurs['longitude'] + 0 ;
$x6 = joueurs['latitude'] + 1 ; $y6 = joueurs['longitude'] + 1 ;
$x7 = joueurs['latitude'] - 1 ; $y7 = joueurs['longitude'] - 1 ;
$x8 = joueurs['latitude'] + 0 ; $y8 = joueurs['longitude'] + 1 ;
Avec un update super long O_o
En meme temsp ca m'a appris ds truc sur les requete mysql (connaissait pas les BETWEEN) Donc un grand merci a inko
A oui et a la base ce mod n'étais pas pour illusion mais pour un tres bonne amis (david) et donc je l'ai adapter a illusion pour qu'il puisse comprendre comment l'installer.
-------------------------------------------------------
|