батл чтоб его побрало

anssk

Новичок
Репутация
0 / 20
народ такая фишка стоит батл бои работают, ошибок нету, а вот опыта хрен там ни персу ни животному
я не великий кодер поэтому может я чего не понимаю

<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);
я так понел в начале или в период боя в этой таблице должена быть созданна строка на основании ее потом пересчитывается опыт, так аль нет?
мот где пра на файлик не дал так не создает
 
Ничего себе) мой скрипт до сих пор лапают) Народ, если вы не знаете PHP не беритесь за этот скрипт) Бесполезно) :)
 
Скорей твою сборку насилуют XDDD

По теме, распиши скрипт от а до я на листике посмотри что куда идёт и как завершается, присмотрись и ты точно найдёшь ошибку, строку что выделил это просто выборка из бд...
 
<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);
}

выделю эту строчку
$expbonus=mysql_result(mysql_query("SELECT `expbonus` FROM person_har WHERE p_id=$stat[id]"),0);
я так понел в начале или в период боя в этой таблице должена быть созданна строка на основании ее потом пересчитывается опыт, так аль нет?
мот где пра на файлик не дал так не создает[/quote]

Хватаешься немного за не тот кусок- эта функция дает именно формулу расчета опытв, она никаким боком не связана с "добавлением опыта тебе после успешного проведения боя".

Распиши функции по физическому поединку и по групповому. там поидее где то кроется ошибка.
Имхо насколько я смог понять код ИВ :) так что не судите строго.
 
да фиг его знает хватался за что было) я с этой сборки вообще фигею, на 2 операционных системах из 3 которых пробывал гора ошибок, + локалка не тут наверно прав на файлы не всем дал вот он и конючит, на локалке вроде как дают опыта)
 
Первым дело проверь подключение к бд, потом Register_global_on должен быть! А вообще если нехочешь лагов бери начальную сборку... :)
 
Первым дело проверь подключение к бд, потом Register_global_on должен быть! А вообще если нехочешь лагов бери начальную сборку... :)

с этим все норм) не первую сборку ставлю) дизайн тут понравился и несколько модулей, и лень пытатся перетягивать в другую, вот и добиваюсь работоспособности этой
 

Похожие темы

Сверху