PDA

Просмотр полной версии : Help кто знает


bxN5
25.04.2006, 17:33
Вобщем я ставлю игру (типа БК) 2 Д БРАУЗЕРНАЯ и все норм но когда идет бой персонажей в конце пишетса что проигравший выиграл а опыта оба бойцам 0

Вот что пишет апаче Warning: Division by zero in z:\home\localhost\www\battle.php on line 392

Вот сам скрипт скажите что подправить надо

<?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:support@streefight.ru>support@streefight.ru</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_mys elf);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_mys elf);dress('w6',$w_mass_myself);dress('w14',$w_mas s_myself);dress('w15',$w_mass_myself);echo"<br>";dress('w9',$w_mass_myself);dress('w10',$w_mass_my self);dress('w11',$w_mass_myself);dress('w8',$w_ma ss_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>&nbspв голову<br>
<input type=radio name=f value=2>&nbspв грудь<br>
<input type=radio name=f value=3>&nbspв живот<br>
<input type=radio name=f value=4>&nbspв пояс<br>
<input type=radio name=f value=5>&nbspв ноги<br>
</td><td><input type=radio name=b value=1>&nbspголова и грудь<br>
<input type=radio name=b value=2>&nbspгрудь и живот<br>
<input type=radio name=b value=3>&nbspживот и пояс<br>
<input type=radio name=b value=4>&nbspпояса и ног<br>
<input type=radio name=b value=5>&nbspголовы и ног<br>
</td></tr><tr><td colspan=2 align=center><input type=submit value='нанести Удар'></td></tr>
</table></form>
</center>
";
}

echo"<hr size=1 color=gray>&nbsp";

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"&nbspПобеда за <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_o pponent);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_o pponent);dress('w6',$w_mass_opponent);dress('w14', $w_mass_opponent);dress('w15',$w_mass_opponent);ec ho"<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();
?>


Вот скриншот
http://forum.prostointer.net/uploads/post-3-1145967900.gif

ferryman
25.04.2006, 17:41
$exp = round($myhp/$row_exp[base_exp]);

Он тебе говорит, что на ноль делить низзя...

Попробуй влепить собаку, хотя это не выход и надо искать где трабла.

bxN5
01.05.2006, 14:37
Собака не помагает(( Кто найдет ошибку и поможет мне получит бесплатно приватного троянца=)

max_pain89
01.05.2006, 15:20
Error_Reporting(0);

И делофф то.

bxN5
01.05.2006, 16:37
Я делал ошибки то нету а вот опыта ни тот не тот перс не получает ето всего лиш подавление ошибок... А нме нуно исправить

DetMyl
03.05.2006, 02:23
кажется у тебя скрипт из базы данных пустую строку возвращает, проверь вручную.

$result_exp = mysql_query("select base_exp from exptable where level='".$myself->level."' LIMIT 1");
$row_exp = mysql_fetch_array($result_exp);

bxN5
03.05.2006, 03:18
КАк проверить?и как исправить?

EST a1ien
03.05.2006, 07:57
Выполни SQL запрос вида
select base_exp from exptable where level='"_твой текущий уровень и посмотри что он тебе вернёт_"' LIMIT 1

bxN5
03.05.2006, 12:11
SQL-запрос:
SELECT base_exp
FROM exptable
WHERE LEVEL = '"10"'
LIMIT 1

EST a1ien
03.05.2006, 17:18
Ой я немного нетак написал а если тебе на до выполнить твой то просто удали двойные кавычки а вот сам запрос посмотри сто он тебе возвращает SELECT base_exp
FROM exptable
WHERE LEVEL = '10'
LIMIT 1