Вобщем я ставлю игру (типа БК) 2 Д БРАУЗЕРНАЯ и все норм но когда идет бой персонажей в конце пишетса что проигравший выиграл а опыта оба бойцам 0 Вот что пишет апаче Warning: Division by zero in z:\home\localhost\www\battle.php on line 392 Вот сам скрипт скажите что подправить надо PHP: <?session_start(@$sid); Error_Reporting(E_ALL & ~E_NOTICE); include("connect.php"); include("battle/class_user.php"); include("battle/class_battle.php"); $myself=new user; $opponent=new user; $kick_opponent=new user; $battle=new battle; if(!$_SESSION[id]) { echo"<b>Ошибка:</b> Вам нужно войти в игру с <a href=javascript:top.window.location='index.php'>главной страницы</a>"; exit(); } if($myself->get_info($_SESSION[id])==false) { echo"Ошибка: невозможно получить данные о персонаже, возможно сервер в данный момент перегружен, попробуйте обновить страницу через несколько минут. "; exit(); } if(!$myself->battle_id) { Header("Location: home.php"); exit(); } if($battle->get_info($myself->battle_id)==false) { echo"<b>Ошибка:</b> Невозможно получить данные о поединке(возможно сервер в данный момент перегружен), попробуйте обновить страницу через несколько минут. Если ошибка будет повторяться - обратитесь за помощью на <a href=mailto:[email protected]>[email protected]</a>."; exit(); } $myself->param(); // ** // ** if(strstr($battle->side1,$_SESSION[id].";")) { $myside="side1"; $opp_side="side2"; } else { $myside="side2"; $opp_side="side1"; } // ** // ** if(!$battle->winner) { $a_mass = explode(";",$battle->kick_time); for($i=0;$i<=count($a_mass)-2;$i++) { $b_mass = explode("=",$a_mass[$i]); if(time()>($battle->timeout+$b_mass[1])) { if(strstr($battle->side1,$b_mass[0].","))$winner_side="side2"; else $winner_side="side1"; $battle->winner=$winner_side; $battle->finish=Date("Y-m-d H:i:s"); mysql_query("update users set hp='0' where id=".$b_mass[0]); $battle->put_note("<i>Бой закончен по таймауту...</i>"); } } } if($_POST[act]=="kick" and !$battle->winner) { if($kick_opponent->get_info($_POST[opponent_id])==true) { $kick_opponent->param(); for($i=1;$i<=5;$i++) { if($f==$i)$f_true=1; } for($i=1;$i<=5;$i++) { if($b==$i)$b_true=1; } if($f_true==1 and $b_true==1 and !$battle->winner and $kick_opponent->hp) { $battle->kick($f,$b,$_POST[opponent_id],$opp_side,$myself,$kick_opponent); $myself->get_info($_SESSION[id]); $battle->winner(); } } } $action_mass = explode(";",$battle->action); $mass_opponent_unavaible = array(); for($i=0;$i<=count($action_mass)-2;$i++) { $a_mass = explode("(",$action_mass[$i]); $id_mass = explode(":",$a_mass[0]); $b_mass = explode(")",$a_mass[1]); $kick_mass = explode(":",$b_mass[0]); if($id_mass[0]==$_SESSION[id] and $kick_mass[0])$mass_opponent_unavaible[]=$id_mass[1]; elseif($id_mass[1]==$_SESSION[id] and $kick_mass[1])$mass_opponent_unavaible[]=$id_mass[0]; } //: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : // ***************** // Список игроков // $list_side1 = array(); $list_side2 = array(); $players_mass=$battle->side1.$battle->side2; $players_mass=explode(";",$players_mass); $players_mass_side1 = explode(";",$battle->side1); $players_mass_side2 = explode(";",$battle->side2); for($i=0;$i<=count($players_mass)-2;$i++) { if($i==0)$query=" id='".$players_mass[$i]."'"; else $query=$query." or id='".$players_mass[$i]."'"; } $res_users = mysql_query("select id,login,hp,maxhp from users where ".$query); $num_users = mysql_num_rows($res_users); for($i=1;$i<=$num_users;$i++) { $row_users = mysql_fetch_array($res_users); if($row_users[hp]>0) { if($i<=count($players_mass_side1)-1) { $list_side1[]="<a style='cursor:hand;font-weight:bold;color:#A0522D'>".$row_users[login]."</a>(".$row_users[hp]."/".$row_users[maxhp].")"; } else { $list_side2[]="<a style='cursor:hand;font-weight:bold;color:#708090'>".$row_users[login]."</a>(".$row_users[hp]."/".$row_users[maxhp].")"; } } else { $mass_opponent_unavaible[]=$row_users[id]; } } function list_players($list_side1,$list_side2) { if($battle->winner!="side2") { for($i=0;$i<=count($list_side1)-1;$i++) { if($i!=0)echo", "; echo $list_side1[$i]; } } if(count($list_side1)==0 or $battle->winner=="side2")echo"<i>[вся команда убита]</i> "; echo" против: "; if(count($list_side2)==0 or $battle->winner=="side1")echo"<i>[вся команда убита]</i> "; if($battle->winner!="side1") { for($i=0;$i<=count($list_side2)-1;$i++) { if($i!=0)echo", "; echo $list_side2[$i]; } } } //: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // //: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : $mass_opponent = array(); $side_mass = explode(";",$battle->$opp_side); if(count($mass_opponent_unavaible)==0) { for($i=0;$i<=count($side_mass)-2;$i++) { $mass_opponent[]=$side_mass[$i]; } } elseif(count($mass_opponent_unavaible)>0) { for($i=0;$i<=count($side_mass)-2;$i++) { for($i1=0;$i1<=count($mass_opponent_unavaible)-1;$i1++) { if($side_mass[$i]==$mass_opponent_unavaible[$i1])$ins=1; } if($ins==1) { $ins=0; } else { $mass_opponent[]=$side_mass[$i]; } } } // ********** // Одежда // if(count($mass_opponent)>0 and $myself->hp>0 and !$battle->winner) { $opponent_id=rand(0,(count($mass_opponent)-1)); if($opponent->get_info($mass_opponent[$opponent_id])==false) { echo"Ошибка: невозможно получить данные о персонаже, возможно сервер в данный момент перегружен, попробуйте обновить страницу через несколько минут. "; exit(); } $opponent->param(); } if(count($mass_opponent)==0)$kol_opp=1; else $kol_opp=2; for($m=1;$m<=$kol_opp;$m++) { $id_bag = array(); $iznos_bag = array(); $present_bag = array(); $dressed_bag = array(); if($m==1) { $result_bag = mysql_query("select owner,id,iznos,srab from bag where owner='".$myself->id."' and dressed='y'"); } elseif($m==2) { $result_bag = mysql_query("select owner,id,iznos,srab from bag where owner='".$opponent->id."' and dressed='y'"); } $num_bag = mysql_num_rows($result_bag); for($i=1;$i<=$num_bag;$i++) { $row_bag = mysql_fetch_array($result_bag); $id_bag[] = $row_bag[id]; $iznos_bag[] = $row_bag[iznos]."/".$row_bag[srab]; } $bag_found_dressed=0; for($i=0;$i<=count($id_bag)-1;$i++) { if($i==0)$query_it=" id='".$id_bag[$i]."'"; else $query = $query_it." or id='".$id_bag[$i]."'"; $bag_found_dressed+=1; } if($bag_found_dressed>0) { $result_item = mysql_query("select otdel,name,sname,hp from items where ".$query_it.""); $num_item = mysql_num_rows($result_item); for($i=0;$i<=$num_item-1;$i++) { $row_item = mysql_fetch_array($result_item); if($row_item[otdel]>0 and $row_item[otdel]<6)$th="w5"; elseif($row_item[otdel]==6)$th="w8"; elseif($row_item[otdel]==7)$th="w14"; elseif($row_item[otdel]>7 and $row_item[otdel]<11)$th="w4"; elseif($row_item[otdel]==11)$th="w1"; elseif($row_item[otdel]==12)$th="w15"; elseif($row_item[otdel]==13)$th="w7"; elseif($row_item[otdel]==14)$th="w6"; elseif($row_item[otdel]==15)$th="w3"; elseif($row_item[otdel]==16)$th="w2"; elseif($row_item[otdel]==17)$th="w9"; if($m==1) { $w_mass_myself[]=$row_item[sname]."-".$row_item[name]."-".$row_item[hp]."-".$iznos_bag[$i]."-".$th; } elseif($m==2) { $w_mass_opponent[]=$row_item[sname]."-".$row_item[name]."-".$row_item[hp]."-".$iznos_bag[$i]."-".$th; } } } } function dress($dress,$w_mass) { $mass_i=-1; for($i=0;$i<=count($w_mass)-1;$i++) { if(strstr($w_mass[$i],$dress))$mass_i=$i; } if($mass_i>=0) { $row_w_mass=explode("-",$w_mass[$mass_i]); echo"<img src='img/w/".$row_w_mass[0].".gif' border=0 alt='".$row_w_mass[1]."\n(".$row_w_mass[3].")\n"; if($w_mass[$mass_i][2])echo"Уровень жизни: + ".$row_w_mass[2].""; echo"'>"; } else { echo "<img src='img/w/".$dress.".gif' border=0 alt='Пустой слот'>"; } } // // Одежда // *********** echo"<html>\n<head>\n<META HTTP-EQUIV='Content-Type' CONTENT='text/html; charset=windows-1251'>\n<link rel=stylesheet href=index.css>\n </head>\n<body bgcolor=#F0E68C>\n <script language=javascript> var inf=''; function lifeline(login,level,klan,now,max){ var grn_life_pr=(now*100)/max; var grn_life_width=(grn_life_pr*160)/100; var red_life_width=160-grn_life_width; document.write('<table border=0 cellspacing=0 cellpadding=0><tr><td>'); if(klan)document.write('<a href=\"/information/klan/info.php?klan='+klan+'\"><img src=\"/img/klan/'+klan+'.gif\" border=0></a>'); document.write('<b>'+login+'</b>['+level+']<a href=\"/info.php?login='+login+'\" target=_blank><img src=/img/inf.gif border=0></a></td></tr><tr><td><table border=0 cellspacing=0 cellpadding=0><tr><td><img src=/img/grn_life.gif width='+grn_life_width+' height=10></td><td><img src=/img/red_life.gif width='+red_life_width+' height=10></td><td align=right>'+now+'/'+max+'</td></tr></table></td></tr></table>'); } </script> <center> <table border=0 width=95% cellspacing=0 cellpadding=0> <tr> <td width=227 valign=top> <br> <script language=javascript>lifeline(\"".$myself->login."\",\"".$myself->level."\",\"".$myself->klan."\",\"".$myself->hp."\",\"".$myself->maxhp."\");</script> <table border='1' width='227' bordercolor=#dfd78f cellpadding=1 bordercolordark='#000000' bordercolorlight='#000000'> <tr> <td width='60' height='219' align='left' valign='top' ><p style='border-collapse:collapse;'>";dress('w1',$w_mass_myself);dress('w5',$w_mass_myself);dress('w4',$w_mass_myself);dress('w7',$w_mass_myself);echo"</p> </td> <td width='92' height='219' align='center' valign='middle' ><p style='border-collapse:collapse;' align='center'><img src='img/icons/".$myself->icon.".gif' border='0' alt='".$row[login]."'></p> </td> <td width='61' height='219' align='right' valign='bottom' ><p style='border-collapse:collapse;'>";dress('w3',$w_mass_myself);dress('w2',$w_mass_myself);dress('w6',$w_mass_myself);dress('w14',$w_mass_myself);dress('w15',$w_mass_myself);echo"<br>";dress('w9',$w_mass_myself);dress('w10',$w_mass_myself);dress('w11',$w_mass_myself);dress('w8',$w_mass_myself);echo"<br></p> </td> </tr> </table> <br> Удар: ".$myself->u." <br>\nГибкость: ".$myself->g."<br>\nЛогика: $myself->l <br>\nЗдоровье: $myself->z <br><br> </td> <td valign=top> <br>"; if($battle->winner and $myself->battle_id==$battle->id) { echo"<center><span style='color:darkred;font-weight:bold'>Бой закончен!</span><br>"; $hp_mass = explode(";",$battle->hp); for($i=0;$i<=count($hp_mass)-2;$i++) { $myhp_array = explode("=",$hp_mass[$i]); if($myhp_array[0]==$_SESSION[id])$myhp=$myhp_array[1]; } if($battle->winner==$myside) { $result_exp = mysql_query("select base_exp from exptable where level='".$myself->level."' LIMIT 1"); $row_exp = mysql_fetch_array($result_exp); if($myself->level<3) { $exp = round($myhp/$row_exp[base_exp]); } else { $exp = round(($myhp/$row_exp[base_exp])*2); } $sec_query = ",victory=victory+1 "; 392 ЛИНИЯ } else { $exp=0; $sec_query = ",lose=lose+1 "; } if($exp>0) { $plus_ups=0; $plus_golds=0; $result_exptable = mysql_query("select * from exptable where id>$myself->num_up and exp<=$myself->exp+$exp"); $num_exptable = mysql_num_rows($result_exptable); for($i=1;$i<=$num_exptable;$i++) { $row_exptable = mysql_fetch_array($result_exptable); $new_level=$row_exptable[level]; $plus_ups+=$row_exptable[ups]; $plus_golds+=$row_exptable[golds]; $num_up=$row_exptable[id]; } if(!$new_level)$new_level=$myself->level; if(!$num_up)$num_up=$myself->num_up; $new_exp = $myself->exp+$exp; mysql_query("update users set level='".$new_level."',ups=ups+$plus_ups, money=money+$plus_golds,battle_id=0,exp='".$new_exp."',num_up='".$num_up."'".$sec_query." where id='".$myself->id."'"); } else { mysql_query("update users set battle_id=0".$sec_query." where id='".$myself->id."'"); } echo"Всего вами нанесено: ".$myhp." HP. "; echo"Получено опыта: ".$exp.".<br>"; echo"<input type=button value='вернуться' onclick='location.href=\"battle.php\"'></center>"; } elseif($myself->hp<=0) { echo"<center><span style='color:darkred;font-weight:bold'>Вы убиты. Ждите окончания поединка!</span><br><input type=button value='обновить' onclick='location.href=\"battle.php\"'></center>"; } elseif(!$opponent->id) { echo"<center><span style='font-weight:bold'>Ожидаем хода соперника</span><br><input type=button value='обновить' onclick='location.href=\"battle.php\"'></center>\n"; } else { echo"<form action=battle.php method=post> <input type=hidden name=act value=kick> <input type=hidden name=opponent_id value=".$opponent->id."> <center> <table border=0 width=230 cellspacing=1 cellpadding=0 height=20> <tr><td width=100 bgcolor=#BDB76B style='color:#000000;font-weight:bold' align=center>Удар</td> <td width=130 bgcolor=#BDB76B style='color:#000000;font-weight:bold' align=center>Блок</td> </tr><tr><td> <input type=radio name=f value=1> в голову<br> <input type=radio name=f value=2> в грудь<br> <input type=radio name=f value=3> в живот<br> <input type=radio name=f value=4> в пояс<br> <input type=radio name=f value=5> в ноги<br> </td><td><input type=radio name=b value=1> голова и грудь<br> <input type=radio name=b value=2> грудь и живот<br> <input type=radio name=b value=3> живот и пояс<br> <input type=radio name=b value=4> пояса и ног<br> <input type=radio name=b value=5> головы и ног<br> </td></tr><tr><td colspan=2 align=center><input type=submit value='нанести Удар'></td></tr> </table></form> </center> "; } echo"<hr size=1 color=gray> "; list_players($list_side1,$list_side2); echo"<hr size=1 color=#000000> <center><b>Комментарий к бою:</b> <table border=0 width=90%><tr><td width=100%><br>"; if($battle->winner) { echo" Победа за <b>"; $winner_side=$battle->winner; $winners_mass = explode(";",$battle->$winner_side); for($i=0;$i<=count($winners_mass)-2;$i++) { if($i==0)$query=" id='".$winners_mass[$i]."'"; else $query=$query." or id='".$winners_mass[$i]."'"; } $res_users = mysql_query("select login from users where ".$query); $num_users = mysql_num_rows($res_users); for($i=1;$i<=$num_users;$i++) { $row_users = mysql_fetch_array($res_users); echo $row_users[login]; if($i!=$num_users)echo","; else echo"."; } echo"</b><br><hr size=1 color=darkred>"; } $file = file("battle/log/log.dat"); $count = count($file); $col = 0; for($i=$count-1;$i>=0;$i--) { $row = explode("|",$file[$i]); if($row[0]==$battle->id) { if($col>20)$more=1; if($col<=20 and $row[2]) { $col+=1; echo"<u>".$row[1]."</u> ".$row[2]."<br>\n"; } } } if($more==1) { echo"<br><small>Записи наблюдателя были обрезаны для ускорения загрузки страницы, полностью записи вы можите увидеть <a href='log.php?id=".$battle->id."' target=_blank><b><small>здесь »</small></b></a></small>"; } echo"</td></tr></table> </td><td width=227 valign=top><br>"; if(!$opponent->id) { echo"<img src=battle/kol.jpg>"; } else { echo"<script language=javascript>lifeline(\"".$opponent->login."\",\"".$opponent->level."\",\"".$opponent->klan."\",\"".$opponent->hp."\",\"".$opponent->maxhp."\");</script> <table border='1' width='227' bordercolor=#dfd78f cellpadding=1 bordercolordark='#000000' bordercolorlight='#000000'> <tr> <td width='60' height='219' align='left' valign='top' ><p style='border-collapse:collapse;'>";dress('w1',$w_mass_opponent);dress('w5',$w_mass_opponent);dress('w4',$w_mass_opponent);dress('w7',$w_mass_opponent);echo"</p> </td> <td width='92' height='219' align='center' valign='middle' ><p style='border-collapse:collapse;' align='center'><img src='img/icons/".$opponent->icon.".gif' border='0' alt='".$opponent->login."'></p> </td> <td width='61' height='219' align='right' valign='bottom' ><p style='border-collapse:collapse;'>";dress('w3',$w_mass_opponent);dress('w2',$w_mass_opponent);dress('w6',$w_mass_opponent);dress('w14',$w_mass_opponent);dress('w15',$w_mass_opponent);echo"<br>";dress('w9',$w_mass_opponent);dress('w10',$w_mass_opponent);dress('w11',$w_mass_opponent);dress('w8',$w_mass_opponent);echo"<br></p> </td> </tr> </table> <br> Удар: ".$opponent->u." <br>\nГибкость: ".$opponent->g."<br>\nЛогика: ".$opponent->l." <br>\nЗдоровье: ".$opponent->z; } echo" </td></tr> </table> </body>"; $battle->write(); ?> Вот скриншот
PHP: $exp = round($myhp/$row_exp[base_exp]); Он тебе говорит, что на ноль делить низзя... Попробуй влепить собаку, хотя это не выход и надо искать где трабла.
Я делал ошибки то нету а вот опыта ни тот не тот перс не получает ето всего лиш подавление ошибок... А нме нуно исправить
кажется у тебя скрипт из базы данных пустую строку возвращает, проверь вручную. $result_exp = mysql_query("select base_exp from exptable where level='".$myself->level."' LIMIT 1"); $row_exp = mysql_fetch_array($result_exp);
Ой я немного нетак написал а если тебе на до выполнить твой то просто удали двойные кавычки а вот сам запрос посмотри сто он тебе возвращает