народ такая фишка стоит батл бои работают, ошибок нету, а вот опыта хрен там ни персу ни животному
я не великий кодер поэтому может я чего не понимаю
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
// ----- # Функция расчёта опыта # ----- //
function get_exp () {
global $stat, $petexp, $levelup, $addexp, $Battles, $now, $level, $w_img, $BattleFighter, $opp_stat, $p_har;
$expbonus=mysql_result(mysql_query("SELECT `expbonus` FROM person_har WHERE p_id=$stat[id]"),0);
$levelup = mysql_fetch_array(mysql_query("SELECT `id` FROM levels WHERE level = ".$stat['level']." AND up = ".$stat['up'].""));
$level = mysql_fetch_array(mysql_query("SELECT `exp` FROM levels WHERE id=".$levelup['id']."+1"));
if (mysql_num_rows(mysql_query("SELECT id FROM person WHERE zver_id=$stat[id]"))>0) {
$mypet=mysql_result(mysql_query("SELECT id FROM person WHERE zver_id=$stat[id]"),0);
$mypetlevel=mysql_result(mysql_query("SELECT level FROM person WHERE zver_id=$stat[id]"),0);
$pet=mysql_query("SELECT * FROM BattleFighter WHERE BattleID='".$stat["battle"]."' AND FighterID=$mypet");
if (mysql_num_rows($pet)>0) {
$petinfo=mysql_fetch_array($pet);
if ($petinfo['damage']>0) {
if ($mypetlevel>0) {
$petexp=($mypetlevel*10+round(($petinfo['damage']*rand(1.2,1.5))/3))*$expbonus;
} else {
$petexp=(10+round(($petinfo['damage']*rand(1.2,1.5))/3))*$expbonus;
}
} else {
$petexp=10*$expbonus;
}
} else $petexp=0;
} else $petexp=0;
// ----- # Расчитываем получаемый опыт для физического поединка # ----- //
if ($Battles['BattleType'] == 1 OR $Battles['BattleType'] == 4) {
$single_exp=mysql_fetch_array(mysql_query("SELECT * FROM BattleFighter WHERE BattleID = '".$stat['battle']."' AND FighterID = '".$stat['id']."' LIMIT 1"));
$koef = mysql_query("SELECT `koef` FROM `experience` WHERE `id` = ".$stat['level']."");
$kof = mysql_fetch_array($koef);
$addexp=round(($single_exp['damage']*rand(1.2,1.5)))*$expbonus;
if ($addexp > 8000) $addexp=8000*$expbonus;
}
// ----- # ... для группового поединка # ----- //
elseif ($Battles['BattleType'] == 2 || $Battles['BattleType'] == 3) { include("./includes/battle/exp.php"); }
$addexp*=1.2;
if ($Battles['BattleType'] == 3) $addexp*=1.2;
// ----- # Если есть ускорение, то опыта в 2 раза больше # ----- //
if ($stat['sign'] > $now) $addexp*=1.8;
// ----- # Если есть вип значёк, то опыта в 3 раза больше # ----- //
if ($stat['vip'] == 1) $addexp*=2.3;
// ----- # Если противник бот, то опыта в 2 раза меньше # ----- //
if ($opp_stat['rank']==60) $addexp*=0.5;
if ($addexp > 8000) $addexp=8000;
// ----- ----- //
$addexp = $addexp*(1+($p_har['sp_8']/101));
$addexp=round($addexp);
}
</div>
выделю эту строчку
$expbonus=mysql_result(mysql_query("SELECT `expbonus` FROM person_har WHERE p_id=$stat[id]"),0);
я так понел в начале или в период боя в этой таблице должена быть созданна строка на основании ее потом пересчитывается опыт, так аль нет?
мот где пра на файлик не дал так не создает
я не великий кодер поэтому может я чего не понимаю
<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space:pre;overflow:auto'>
// ----- # Функция расчёта опыта # ----- //
function get_exp () {
global $stat, $petexp, $levelup, $addexp, $Battles, $now, $level, $w_img, $BattleFighter, $opp_stat, $p_har;
$expbonus=mysql_result(mysql_query("SELECT `expbonus` FROM person_har WHERE p_id=$stat[id]"),0);
$levelup = mysql_fetch_array(mysql_query("SELECT `id` FROM levels WHERE level = ".$stat['level']." AND up = ".$stat['up'].""));
$level = mysql_fetch_array(mysql_query("SELECT `exp` FROM levels WHERE id=".$levelup['id']."+1"));
if (mysql_num_rows(mysql_query("SELECT id FROM person WHERE zver_id=$stat[id]"))>0) {
$mypet=mysql_result(mysql_query("SELECT id FROM person WHERE zver_id=$stat[id]"),0);
$mypetlevel=mysql_result(mysql_query("SELECT level FROM person WHERE zver_id=$stat[id]"),0);
$pet=mysql_query("SELECT * FROM BattleFighter WHERE BattleID='".$stat["battle"]."' AND FighterID=$mypet");
if (mysql_num_rows($pet)>0) {
$petinfo=mysql_fetch_array($pet);
if ($petinfo['damage']>0) {
if ($mypetlevel>0) {
$petexp=($mypetlevel*10+round(($petinfo['damage']*rand(1.2,1.5))/3))*$expbonus;
} else {
$petexp=(10+round(($petinfo['damage']*rand(1.2,1.5))/3))*$expbonus;
}
} else {
$petexp=10*$expbonus;
}
} else $petexp=0;
} else $petexp=0;
// ----- # Расчитываем получаемый опыт для физического поединка # ----- //
if ($Battles['BattleType'] == 1 OR $Battles['BattleType'] == 4) {
$single_exp=mysql_fetch_array(mysql_query("SELECT * FROM BattleFighter WHERE BattleID = '".$stat['battle']."' AND FighterID = '".$stat['id']."' LIMIT 1"));
$koef = mysql_query("SELECT `koef` FROM `experience` WHERE `id` = ".$stat['level']."");
$kof = mysql_fetch_array($koef);
$addexp=round(($single_exp['damage']*rand(1.2,1.5)))*$expbonus;
if ($addexp > 8000) $addexp=8000*$expbonus;
}
// ----- # ... для группового поединка # ----- //
elseif ($Battles['BattleType'] == 2 || $Battles['BattleType'] == 3) { include("./includes/battle/exp.php"); }
$addexp*=1.2;
if ($Battles['BattleType'] == 3) $addexp*=1.2;
// ----- # Если есть ускорение, то опыта в 2 раза больше # ----- //
if ($stat['sign'] > $now) $addexp*=1.8;
// ----- # Если есть вип значёк, то опыта в 3 раза больше # ----- //
if ($stat['vip'] == 1) $addexp*=2.3;
// ----- # Если противник бот, то опыта в 2 раза меньше # ----- //
if ($opp_stat['rank']==60) $addexp*=0.5;
if ($addexp > 8000) $addexp=8000;
// ----- ----- //
$addexp = $addexp*(1+($p_har['sp_8']/101));
$addexp=round($addexp);
}
</div>
выделю эту строчку
$expbonus=mysql_result(mysql_query("SELECT `expbonus` FROM person_har WHERE p_id=$stat[id]"),0);
я так понел в начале или в период боя в этой таблице должена быть созданна строка на основании ее потом пересчитывается опыт, так аль нет?
мот где пра на файлик не дал так не создает