Вход Регистрация
Файл: public_html/core/modules.func.php
Строк: 671
<?php
$max_rating 
30000;
function 
updateCaveAttack()
{
    global 
$db$u;
    if(
$u['cave_attacks'] == 10)
    {
        
$db->query("UPDATE `users` SET `cave_attacks` = `cave_attacks` - '1', `cave_restore_time` = '".(time()+600)."' WHERE `id` = '".$u['id']."'");
    }
    else
    {
        
$db->query("UPDATE `users` SET `cave_attacks` = `cave_attacks` - '1' WHERE `id` = '".$u['id']."'");
    }
    return 
true;
}

function 
restoreCaveAttack()
{
    global 
$db$u;
    if(
$u['cave_attacks'] < 10)
    {
        if(
$u['cave_restore_time'] <= time())
        {
            if(
$u['cave_attacks'] == 9)
            {
                
$db->query("UPDATE `users` SET `cave_attacks` = `cave_attacks` + '1' WHERE `id` = '".$u['id']."'");
                
redirect('/caves');
            }
            else
            {
                
$db->query("UPDATE `users` SET `cave_attacks` = `cave_attacks` + '1', `cave_restore_time` = `cave_restore_time` + '600' WHERE `id` = '".$u['id']."'");
                
redirect('/caves');
            }
        }
    }
    return 
true;
}

function 
getChanceDropResource()
{
    
$chance rand(1,100);
    if(
$chance >=&& $chance <= 5)
    {
        return 
rand(1,4);
    }
    else
    {
        return 
0;
    }
}

function 
dropResource($type)
{
    global 
$db$u;
    
$count rand(1,2);
    
$db->query("UPDATE `resources` SET `count` = `count` + '".$count."' WHERE `resource_type` = '".$type."'");
    
campaignUpdate($u['id'],4,3,$count,[0],[0]);
    return [
'resources' => $count'restype' => $type];
}

function 
getExp()
{
    global 
$db$u;
    
$damage rand(1000,5000);
    
$exp floor($damage/100);
    
$vipBoost getVipBoost($u['id']);
    
$leagueBoost getLeagueBonus($u['id']);
    
updateUserStats($u['id'], $exp00);
    return [
'damage' => $damage"exp" => round($exp*$vipBoost->exp*$leagueBoost['exp'])];
}

function 
getMegaBonus()
{
    global 
$db$u;
    if(
$u['cave_bonus'] == 1)
    {
        
$chance rand(1,100);
        if(
$chance == 50)
        {
            
$db->query("UPDATE `users` SET `cave_bonus` = '0' WHERE `id` = '".$u['id']."'");
            
updateUserStats($u['id'], 0050);
            
$message = ['chest' => 1];
        }
    }
    else
    {
        
$message null;
    }
    return 
$message;
}

function 
getGems()
{
    global 
$db$u;
    
$chance rand(1,20);
    if(
$chance == 10)
    {
        
updateUserStats($u['id'], 001);
        
$message = ['gems' => 1];
    }
    else
    {
        
$message null;
    }
    return 
$message;
}

function 
addResources()
{
    global 
$db$u;
    
$resources = ['res1''res2''res3''res4'];
    for(
$i=0;$i<4;$i++)
    {
        
$resource $db->query("SELECT * FROM `resources` WHERE `resource_type` = '".$resources[$i]."' AND `user` = '".$u['id']."'")->num_rows;
        if(
$resource == 0$db->query("INSERT INTO `resources` (`user`,`resource_type`) VALUES ('".$u['id']."', '".$resources[$i]."')");
    }
}

function 
getRandOpponentForBattleground($issetOpponent 0)
{
    global 
$db$u;
    
$player $db->query("SELECT * FROM `battleground_players` WHERE `battle` = '".$u['battleground_id']."' AND `user` = '".$u['id']."'")->fetch_object();
    if(
$issetOpponent == 0)
    {
        
$randOpponent $db->query("SELECT * FROM `battleground_players` WHERE `battle` = '".$u['battleground_id']."' AND `user` != '".$u['id']."' AND `health` > '0' ORDER BY RAND() LIMIT 1")->fetch_object();
        
$db->query("UPDATE `battleground_players` SET `opponent` = '".$randOpponent->user."' WHERE `battle` = '".$u['battleground_id']."' AND `user` = '".$u['id']."'");
    }
    else
    {
        
$randOpponent $db->query("SELECT * FROM `battleground_players` WHERE `battle` = '".$u['battleground_id']."' AND `user` != '".$u['id']."' AND `user` != '".$player->opponent."' AND `health` > '0' ORDER BY RAND() LIMIT 1")->fetch_object();
        
$db->query("UPDATE `battleground_players` SET `opponent` = '".$randOpponent->user."' WHERE `battle` = '".$u['battleground_id']."' AND `user` = '".$u['id']."'");
    }
    return 
true;
}


function 
updateBattleGroundRating($user_id$rate$type)
{
    global 
$db;
    
$us $db->query("SELECT * FROM `users` WHERE `id` = '".$user_id."'")->fetch_object();
    if(
$type == '+')
    {
        
$rating $rate;
        
$db->query("UPDATE `users` SET `battleground_rating` = `battleground_rating` + '".$rating."' WHERE `id` = '".$user_id."'");
        
campaignUpdate($user_id,3,4,$rate,[0],[0]);
        
campaignUpdate($user_id,5,1,$rate,[0],[0]);
    }
    else
    {
        if(
$rate >= $us->battleground_rating$rating $us->battleground_rating;
        else 
$rating $rate;
        
$db->query("UPDATE `users` SET `battleground_rating` = `battleground_rating` - '".$rating."' WHERE `id` = '".$user_id."'");
    }
    return 
true;
}

function 
issetLocationBattles()
{
    global 
$db$u;
    
$battles $db->query("SELECT * FROM `locations_battles` WHERE `user` = '".$u['id']."'")->num_rows;
    if(
$battles 0)
    {
        
$btl $db->query("SELECT * FROM `locations_battles` WHERE `user` = '".$u['id']."' LIMIT 1")
            ->
fetch_object();
        return 
redirect('/locations/'.$btl->location.'/battle');
    }
    else
    {
        return 
false;
    }
}

function 
locationResult($btl_id$loc_id$mob_name)
{
    global 
$db$u$memcache;
    
$battle $db->query("SELECT * FROM `locations_battles` WHERE `id` = '".$btl_id."'");
    if(
$battle->num_rows == 0) return false;
    
$battle $battle->fetch_object();
    
$mob $db->query("SELECT * FROM `locations_mobs` WHERE `id` = '".$battle->mob."'")->fetch_object();
    
$vipBoost getVipBoost($u['id']);
    
$leagueBoost getLeagueBonus($u['id']);
    if(
$battle->my_health && $battle->mob_health <= 0)
    {
        
$crown dropCrowns();
        if(
$crown == 1$crownMsg '1 корона, ';
        else 
$crownMsg null;
        
$resultMsg 'Вы победили '.$mob->name.'! Награда: '.$crownMsg.round($mob->exp*$vipBoost->exp*$leagueBoost['exp']).' опыта и '.round($mob->silver*$vipBoost->silver*$leagueBoost['exp']).' серебра!';
        
updateUserStats($u['id'], $mob->exp$mob->silver0);
        
$db->query("UPDATE `locations_mobs` SET `cooldown_time` = '".(time()+15)."' WHERE `id` = '".$battle->mob."'");
        
$db->query("DELETE FROM `locations_battles` WHERE `id` = '".$btl_id."'");
        
campaignUpdate($u['id'],2,4,1,['Йорогумо'],[$mob_name]);
        
campaignUpdate($u['id'],3,3,1,['Kaппa'],[$mob_name]);
        
campaignUpdate($u['id'],6,4,1,['Менехуне'],[$mob_name]);
        
questUpdate($u['id'],2);
        return 
redirect('/locations'$resultMsg);
    }
    elseif(
$battle->my_health <= && $battle->mob_health <= 0)
    {
        
$resultMsg 'Ничья! Награда: '.round(5*$vipBoost->exp*$leagueBoost['exp']).' опыта и '.round(10*$vipBoost->silver*$leagueBoost['exp']).' серебра!';
        
updateUserStats($u['id'], 5100);
        
$memcache->delete('log_'.$u['id'].'',0);
        
$db->query("DELETE FROM `locations_battles` WHERE `id` = '".$btl_id."'");
        return 
redirect('/locations'$resultMsg);
    }
    elseif(
$battle->my_health <= && $battle->mob_health 0)
    {
        
$resultMsg 'Вы проиграли!';
        
$memcache->delete('log_'.$u['id'].'',0);
        
$db->query("DELETE FROM `locations_battles` WHERE `id` = '".$btl_id."'");
        return 
redirect('/locations/'.$loc_id$resultMsg);
    }
}

function 
updateAllianceExp($uid$exp)
{
    global 
$db;
    
$us_info $db->query("SELECT * FROM `users` WHERE `id` = '".$uid."'")->fetch_object();
    
$db->query("UPDATE `alliances` SET `exp` = `exp` + '".$exp."' WHERE `id` = '".$us_info->alliance_id."'");
    
$db->query("UPDATE `alliance_members` SET `exp` = `exp` + '".$exp."' WHERE `alliance` = '".$us_info->alliance_id."'  AND `user` = '".$uid."'");
    
campaignUpdate($uid,7,3,$exp,[0],[0]);
    return 
true;
}

function 
getDamage($userDamage$opponentDefense$out=0)
{
    if(
$userDamage $opponentDefense)
    {
        
$min_damage round($userDamage/2);
        
$max_damage round($userDamage/1.5);
    }
    elseif(
$userDamage == $opponentDefense)
    {
        
$min_damage round($userDamage/4);
        
$max_damage round($userDamage/3);
    }
    else
    {
        
$min_damage round($userDamage/6);
        
$max_damage round($userDamage/5);
    }
    if(
$out == 1) return ['min_damage' => $min_damage'max_damage' => $max_damage];
    else return 
rand($min_damage$max_damage);
}

function 
updateUserStats($user_id$exp$silver$gems)
{
    global 
$db;
    
$user $db->query("SELECT * FROM `users` WHERE `id` = '".$user_id."'")->fetch_object();
    
$vip getVipBoost($user_id);
    
$leagueBoost getLeagueBonus($user_id);
    
$altarBoost getAltarBoost($id);
    
$finalExp $exp*$vip->exp*$leagueBoost['exp']+round($exp*$altarBoost->exp);
    
$finalSilver $silver*$vip->silver*$leagueBoost['silver']+round($silver*$altarBoost->silver);
    
$finalGems $gems;
    if(
$user->alliance_id != 0updateAllianceExp($user_id$finalExp);
    
$db->query("UPDATE `users` SET `exp` = `exp` + '".$finalExp."', `silver` = `silver` + '".$finalSilver."', `gold` = `gold` + '".$finalGems."' WHERE `id` = '".$user->id."'");
    return 
true;
}

function 
allianceStatus($status)
{
    global 
$u;
    if(
$status == 0)
    {
        if(
$u['alliance_id'] != 0redirect('/alliance/my');
    }
    else
    {
        if(
$u['alliance_id'] == 0redirect('/alliance');
    }
}

function 
allianceInfo($alliance_id$column)
{
    global 
$db;
    
$allianceInfo $db->query("SELECT * FROM `alliances` WHERE `id` = '".$alliance_id."'");
    if(
$allianceInfo->num_rows == 0) return 'error';
    
$allianceInfo $allianceInfo->fetch_object();
    return 
$allianceInfo->$column;
}

function 
loggingAllianceAction($msg)
{
    global 
$db$u;
    
$db->query("INSERT INTO `alliance_journal` (alliance, msg, time) VALUES ('".$u['alliance_id']."', '".$msg."', '".time()."')");
}

function 
getAllianceReward($level)
{
    global 
$db;
    
$exp 1000;
    
$silver 2000;
    
$gems 10;
    if(
$level 1)
    {
        
$levels $db->query("SELECT * FROM `alliance_chest_levels` WHERE `level` <= '".$level."'");
        while(
$l $levels->fetch_object())
        {
            
$exp += $l->alliance_exp;
            
$silver += $l->alliance_silver;
            
$gems += $l->alliance_gems;
        }
    }
    return [
'exp' => $exp'silver' => $silver'gems' => $gems];
}

function 
getUserReward($level)
{
    global 
$db;
    
$exp 100;
    
$silver 200;
    
$gems 1;
    if(
$level 1)
    {
        
$levels $db->query("SELECT * FROM `alliance_chest_levels` WHERE `level` <= '".$level."'");
        while(
$l $levels->fetch_object())
        {
            
$exp += $l->user_exp;
            
$silver += $l->user_silver;
            
$gems += $l->user_gems;
        }
    }
    return [
'exp' => $exp'silver' => $silver'gems' => $gems];
}

function 
dropCrowns()
{
    global 
$db$u;
    
$event $db->query("SELECT * FROM `events_config` WHERE `event_name` = 'alliance_chest'")->fetch_object();
    if(
$event->status == 1)
    {
        
$rand rand(1,3);
        if(
$rand == 2)
        {
            
$db->query("UPDATE `alliances` SET `chest_crowns` = `chest_crowns` + '1' WHERE `id` = '".$u['alliance_id']."'");
            
$db->query("UPDATE `alliance_members` SET `crowns` = `crowns` + '1' WHERE `alliance` = '".$u['alliance_id']."' AND `user` = '".$u['id']."'");
            
campaignUpdate($u['id'],7,1,1,[0],[0]);
            return 
1;
        }
        else return 
0;
    }
}

function 
captureResult($id)
{
    global 
$db;
    
$btl $db->query("SELECT * FROM `capture_battles` WHERE  `id` = '".$id."'")->fetch_object();
    if(
$btl->status == 'battle' && ($btl->endtime <= time() || $btl->tower_health <= 0))
    {
        
$players $db->query("SELECT * FROM `capture_players` WHERE `battle` = '".$id."'");
        if(
$btl->side1_damage $btl->side2_damage$winner 1;
        elseif(
$btl->side1_damage == $btl->side2_damage$winner 0;
        else 
$winner 2;
        
$exp rand(1000,2500);
        
$silver rand(2000,5000);
        if(
$winner != 0)
        {
            
$winner_exp round($exp*1.5);
            
$winner_silver round($silver*1.5);
        }
        if(
$winner == 0)
        {
            while(
$pl $players->fetch_object())
            {
                
updateUserStats($pl->user$exp$silver0);
                
$captureResult 'Ничья! Награда: '.$exp.' опыта и '.$silver.' серебра!';
                
$db->query("UPDATE `users` SET `capture_result` = '".$captureResult."' WHERE `id` = '".$pl->user."'");
            }
        }
        else
        {
            while(
$pl $players->fetch_object())
            {
                if(
$pl->side == $winner)
                {
                    
updateUserStats($pl->user$winner_exp$winner_silver0);
                    
$captureResult 'Победа! Награда: '.$winner_exp.' опыта и '.$winner_silver.' серебра!';

                }
                else
                {
                    
updateUserStats($pl->user$exp$silver0);
                    
$captureResult 'Поражение! Награда: '.$exp.' опыта и '.$silver.' серебра!';
                }
                
$db->query("UPDATE `users` SET `capture_result` = '".$captureResult."' WHERE `id` = '".$pl->user."'");
            }
        }
        
$db->query("UPDATE `capture_battles` SET `status` = 'end' WHERE `id` = '".$btl->id."'");
    }
    return 
true;
}

function 
setTutorialNum($num)
{
    global 
$u$db;
    
$db->query("UPDATE `users` SET `tutorial` = '".$num."' WHERE `id` = '".$u['id']."'");
    return 
true;
}

function 
campaignUpdate($uId$chapter$quest$count$requirement$result)
{
    global 
$db;
    
$u $db->query("SELECT * FROM `users` WHERE `id` = '".$uId."'")->fetch_assoc();
    if(
$chapter == $u['campaign_chapter'])
    {
        
$questUser $db->query("SELECT * FROM `campaign_user` WHERE `user` = '".$u['id']."' AND `quest` = '".$quest."' AND `chapter` = '".$chapter."'");
        if(
$questUser->num_rows == 0)
        {
            
$db->query("INSERT INTO `campaign_user` (user, chapter, quest) VALUES ('".$u['id']."', '".$chapter."', '".$quest."')");
        }
        
$qU $questUser->fetch_object();
        
$questInfo $db->query("SELECT * FROM `campaign_quests` WHERE `chapter` = '".$chapter."' AND `quest` = '".$quest."'")->fetch_object();
        if(
$requirement == $result && $qU->count $questInfo->target)
        {
            
$db->query("UPDATE `campaign_user` SET `count` = `count` + '".$count."' WHERE `user` = '".$u['id']."' AND `quest` = '".$quest."' AND `chapter` = '".$chapter."'");
        }
    }
    return 
true;
}

function 
addQuest()
{
    global 
$u$db;
    
$quests $db->query("SELECT * FROM `quests` WHERE `stage` = '1'");
    while(
$qu $quests->fetch_object())
    {
        
$qUs $db->query("SELECT * FROM `quest_user` WHERE `quest` = '".$qu->quest."' AND `user` = '".$u['id']."'");
        if(
$qUs->num_rows == 0)
        {
            
$db->query("INSERT INTO `quest_user` (user, quest, stage) VALUES ('".$u['id']."', '".$qu->quest."', '1')");
        }
    }
    return 
true;
}

function 
questUpdate($uid$quest_id$count=1)
{
    global 
$db;
    
$quest $db->query("SELECT * FROM `quest_user` WHERE `quest` = '".$quest_id."' AND `user` = '".$uid."'")->fetch_object();
    if(
$quest->rewarded == 0)
    {
        
$db->query("UPDATE `quest_user` SET `count` = `count` + '".$count."' WHERE `id` = '".$quest->id."'");
    }
}

function 
getVipBoost($uId)
{
    global 
$db;
    
$us $db->query("SELECT * FROM `users` WHERE `id` = '".$uId."'")->fetch_object();
    if(
$us->vip_type == 1) return (object) ['exp' => 1.15'silver' => 1.15'params' => 30];
    elseif(
$us->vip_type == 2) return (object) ['exp' => 1.5'silver' => 1.5'params' => 70];
    elseif(
$us->vip_type == 3) return (object) ['exp' => 2'silver' => 2'params' => 300];
    else return (object) [
'exp' => 1'silver' => 1'params' => 0];
}

function 
updateVipStatus()
{
    global 
$db$u;
    if(
$u['vip_type'] > && $u['vip_time'] <= time()) $db->query("UPDATE `users` SET `vip_type` = '0', `vip_time` = '0' WHERE `id` = '".$u['id']."'");
    return 
true;
}

function 
checkReferals()
{
    global 
$db;
    
$refs $db->query("SELECT * FROM `referals` WHERE `rewarded` = '0'");
    while(
$r $refs->fetch_object())
    {
        
$usInfo $db->query("SELECT * FROM `users` WHERE `id` = '".$r->referal."'")->fetch_object();
        if(
$usInfo->level >= 15)
        {
            
$db->query("UPDATE `referals` SET `rewarded` = '1' WHERE `id` = '".$r->id."'");
            
updateUserStats($r->user,0,0,5);
            
updateUserStats($r->referal,0,0,20);
        }
    }
}

function 
getCompletedCampaignOrQuest($type)
{
    global 
$db$u;
    if(
$type == 'campaign')
    {
        
$count 0;
        
$camp_quest $db->query("SELECT * FROM `campaign_user` WHERE `chapter` = '".$u['campaign_chapter']."' AND `user` = '".$u['id']."'");
        while(
$cq $camp_quest->fetch_object())
        {
            
$camp $db->query("SELECT * FROM `campaign_quests` WHERE `chapter` = '".$u['campaign_chapter']."' AND `quest` = '".$cq->quest."'")->fetch_object();
            if(
$cq->count >= $camp->target$count++;
        }
        if(
$count >= $camp_quest->num_rows) return 1;
        else return 
0;
    }
    elseif(
$type == 'tasks')
    {
        
$count 0;
        
$questUser $db->query("SELECT * FROM `quest_user` WHERE `user` = '".$u['id']."' AND `rewarded` = '0'");
        while(
$qU $questUser->fetch_object())
        {
            
$questInfo $db->query("SELECT * FROM `quests` WHERE `quest` = '".$qU->quest."' AND `stage` = '".$qU->stage."'")->fetch_object();
            if(
$qU->count >= $questInfo->target$count++;
        }
        if(
$count 0) return 1;
        else return 
0;

    }
}

function 
setUserStats()
{
    global 
$db$u;
    if(
$u['health_stat'] != get_health($u['id']) || $u['power_stat'] != get_power($u['id']) || $u['block_stat'] != get_block($u['id']))
    {
        
$db->query("UPDATE `users` SET `health_stat` = '".get_health($u['id'])."', `power_stat` = '".get_power($u['id'])."', `block_stat` = '".get_block($u['id'])."' WHERE `id` = '".$u['id']."'");
    }
    return 
true;
}

function 
setAntiSpamTime($time)
{
    global 
$db$u;
    
$db->query("UPDATE `users` SET `antispam` = '".(time()+$time)."' WHERE `id` = '".$u['id']."'");
    return 
true;
}

function 
getLeagueBonus($uId)
{
    global 
$db$max_rating;
    
$userInfo $db->query("SELECT * FROM `users` WHERE `id` = '".$uId."'")->fetch_object();
    if(
$userInfo->battleground_rating >= $max_rating)
    {
        
$league $db->query("SELECT * FROM `battleground_leagues` WHERE `id` >= '10' LIMIT 1")->fetch_object();
    }
    else
    {
        
$league $db->query("SELECT * FROM `battleground_leagues` WHERE `min_rating` >= '".$u['battleground_rating']."' LIMIT 1")->fetch_object();
    }
    
$bonus 1+($league->exp_bonus/100);
    return [
'exp' => $bonus'silver' => $bonus];
}

function 
dropStar($uId)
{
    global 
$db;
    
$chance rand(1,2);
    if(
$chance == 1)
    {
        
$db->query("UPDATE `users` SET `stars` = `stars` + '1' WHERE `id` = '".$uId."'");
        return 
1;
    }
    return 
0;
}

function 
getAvatar($id$width=110$height=160)
{
    global 
$db;
    
$userInfo $db->query("SELECT * FROM `users` WHERE `id` = '".$id."'")->fetch_object();
    if(
$userInfo->avatar == '0.jpg')
    {
        if(
$userInfo->sex == 0$avatar '/0.png';
        else 
$avatar '/1.png';
    }
    else 
$avatar '/images/avatars/'.$userInfo->avatar;
    return 
'<img src="'.$avatar.'" width="'.$width.'" height="'.$height.'">';
}

function 
isDungeon()
{
    global 
$db$u;
    
$issetLeader $db->query("SELECT * FROM `dungeon_battles` WHERE `leader` = '".$u['id']."'");
    
$issetBtl $db->query("SELECT * FROM `dungeon_players` WHERE `user` = '".$u['id']."'");
    if(
$issetLeader->num_rows 0)
    {
        
$issetLeaderQ $issetLeader->fetch_object();
        
redirect('/dungeon/battle/'.$issetLeaderQ->id);
    }
    if(
$issetBtl->num_rows 0)
    {
        
$issetBtlQ $issetBtl->fetch_object();
        
redirect('/dungeon/battle/'.$issetBtlQ->battle);
    }
    return 
true;
}

function 
addStageMobs($battle$dungeon$stage)
{
    global 
$db;
    
$mob $db->query("SELECT * FROM `dungeon_stages` WHERE `dungeon` = '".$dungeon."' AND `stage` = '".$stage."'")
        ->
fetch_object();
    for(
$i=0;$i<$mob->count;$i++)
    {
        
$db->query("INSERT INTO `dungeon_mobs` (`battle`,`stage`,`health`,`attack_cd`) VALUES ('".$battle."', '".$stage."', '".$mob->health."', '".(time()+rand(3,10))."')");
    }
    return 
true;
}

function 
getSkillBonus($skill)
{
    global 
$u;
    if(
$skill == 'heal')
    {
        
$heal_percent ceil(get_health($u['id'])*0.1);
        
$hh_percent ceil(get_health($u['id'])*0.01);
        
$skill_bonus $heal_percent+($hh_percent*(($u['heal_skill'] == 1) ? : ($u['heal_skill']-1)));
    }
    else
    {
        
$arrow_percent ceil(get_power($u['id'])*0.03);
        
$skill_bonus = (get_power($u['id'])*2)+($arrow_percent*(($u['arrow_skill'] == 1) ? : ($u['arrow_skill']-1)));
    }
    return 
$skill_bonus;
}

function 
dungeonMobAttacks()
{
    global 
$db;
    
$attacks = [' ударил'' зацепил'' порезал'];
    
$dungeons $db->query("SELECT * FROM `dungeon_battles` WHERE `status` = 'battle'");
    if(
$dungeons->num_rows 0)
    {
        while(
$dung $dungeons->fetch_object())
        {
            
$mob $db->query("SELECT * FROM `dungeon_stages` WHERE `dungeon` = '".$dung->dungeon."' AND `stage` = '".$dung->stage."'")->fetch_object();
            
$mobs $db->query("SELECT * FROM `dungeon_mobs` WHERE `battle` = '".$dung->id."' AND `health` > '0'");
            while(
$m $mobs->fetch_object())
            {
                if(
$m->attack_cd <= time())
                {
                    
$cd rand(3,10);
                    
$randPlayer $db->query("SELECT * FROM `dungeon_players` WHERE `health` > '0' AND `battle` = '".$dung->id."' ORDER BY RAND() LIMIT 1")->fetch_object();
                    
$dmg getDamage($mob->damageget_block($randPlayer->user));
                    
$db->query("UPDATE `dungeon_players` SET `health` = `health` - '".$dmg."' WHERE `id` = '".$randPlayer->id."'");
                    
$db->query("UPDATE `dungeon_mobs` SET `attack_cd` = '".(time()+$cd)."' WHERE `id` = '".$m->id."'");
                    
$log $mob->mob_name.$attacks[rand(0,2)].' '.name($randPlayer->user).' на '.$dmg.'.';
                    
$db->query("INSERT INTO `battle_logs` (`type`,`battle`,`msg`,`time`) VALUES ('dungeon', '".$dung->id."', '".$log."', '".time()."')");
                }
            }
        }
    }
    return 
true;
}

function 
setTextColor($author$text)
{
    global 
$db;
    
$usInfo $db->query("SELECT * FROM `users` WHERE `id` = '".$author."'")->fetch_object();
    if(
$usInfo->admin == 2$color 'orange';
    elseif(
$usInfo->admin == 3$color 'lightblue';
    else 
$color 'white';
    return 
'<font color="'.$color.'">'.$text.'</font>';
}

function 
getTrainCost($level)
{
    
$costs = [null,null,100,150,200,250,300,350,400,450,10,650,850,1050,1250,1450,1650,1850,2050,2250,25,2750,3250,
        
3750,4250,4750,5250,5750,6250,6750,50,7500,8250,9000,9750,10500,11250,12000,12750,13500,75,14500,15500,16500,
        
17500,18500,19500,20500,21500,22500,100,24000,25500,27000,28500,30000,31500,33000,34500,36000,150,38000,
        
40000,42000,44000,46000,48000,50000,52000,54000,200,57000,60000,63000,66000,69000,72000,75000,78000,81000,
        
300,85500,90000,94500,99000,103500,108000,112500,117000,121500,500,127500,133500,139500,145500,151500,157500,
        
163500,169500,175500,750];
    return 
$costs[$level+1];
}

function 
ifNotExistTower()
{
    global 
$u$db;
    
$query $db->query("SELECT * FROM `towers` WHERE `user` = '".$u['id']."'");
    if(
$query->num_rows == 0)
    {
        
$db->query("INSERT INTO `towers` (`user`) VALUES ('".$u['id']."')");
    }
    return 
true;
}

function 
getGremlinParams($level$wizardLevel)
{
    
$cost = [null,null,600,800,1000,1200,2400,4800,9600,19200,38400,76800,153600,307200,614400,1228800];
    
$income = [null,50,110,362,790,1790,2685,4028,6041,9062,13593,20389,30584,45876,68814,103221];
    
$time = [null,3,5,7,10,15,23,34,51,76,114,171,256,384,577,865,1297];
    
$wizardBonus getWizardParams($wizardLevel);
    return [
'nextLevelCost' => $cost[$level+1], 'currentIncome' => $income[$level]+$wizardBonus['currentIncome'], 'nextLevelIncome' => $income[$level+1]+$wizardBonus['currentIncome'], 'currentTime' => $time[$level], 'nextLevelTime' => $time[$level+1]];
}

function 
getHunterParams($level$wizardLevel)
{
    
$cost = [null,null,600,800,1000,1200,2400,4800,9600,19200,38400,76800,153600,307200,614400,1228800];
    
$income = [null,880,1320,1980,2970,4455,6683,10024,15036,22553,33830,50745,76118,114177,171265,256897];
    
$time = [null,30,40,53,70,92,121,159,209,274,359,471,618,810,1062,1392];
    
$wizardBonus getWizardParams($wizardLevel);
    return [
'nextLevelCost' => $cost[$level+1], 'currentIncome' => $income[$level]+$wizardBonus['currentIncome'], 'nextLevelIncome' => $income[$level+1]+$wizardBonus['currentIncome'], 'currentTime' => $time[$level], 'nextLevelTime' => $time[$level+1]];
}

function 
getWizardParams($level)
{
    
$cost = [null,null,5,10,15,17,19,20,22,25,27,30,33,36,39,43,48,52,57,63,69,76,84,92,101,112,123,135,148,163,179,197,217,238,262,288,317,349,384,422,464];
    
$params = [null,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,410];
    
$income = [null,90,117,153,199,259,337,439,571,743,966,1256,1633,2123,2760,3588,4665,6065,7885,10251,13327,17326,22524,29282,38067,49488,64335,83636,108727,141346,183750,238875,310538,403700,524810,682253,886929,1153008,1498911,1948585,2533160];
    return [
'nextLevelCost' => $cost[$level+1], 'currentParams' => $params[$level], 'nextLevelParams' => $params[$level+1], 'currentIncome' => $income[$level], 'nextLevelIncome' => $income[$level+1]];
}

function 
setStage($stage$battle)
{
    global 
$db;
    
$players $db->query("SELECT * FROM `demons_players` WHERE `battle` = '".$battle."'");
    
$bossHealth 0;
    while(
$pl $players->fetch_object())
    {
        
$db->query("UPDATE `demons_players` SET `health` = '".get_health($pl->user)."', `opponent` = '0' WHERE `id` = '".$pl->id."'");
        
$bossHealth += $pl->health;
    }
    if(
$stage == 'mobs')
    {
        
$mobsCount $players->num_rows*2;
        
$mobsAttack 100;
        
$mobsBlock 150;
        
$mobsHealth 3000;
        for(
$i=0;$i<$mobsCount;$i++)
        {
            
$db->query("INSERT INTO `demons_mobs` (`battle`,`health`,`attack`,`defense`,`stage`) VALUES ('".$battle."', '".$mobsHealth."', '".$mobsAttack."', '".$mobsBlock."', 'mobs')");
        }
        
$db->query("UPDATE `demons_battles` SET `stage` = 'mobs' WHERE `id` = '".$battle."'");
    }
    elseif(
$stage == 'boss')
    {
        
$bH round($bossHealth*1.5);
        
$bA 250;
        
$bB 250;
        
$db->query("INSERT INTO `demons_mobs` (`battle`,`health`,`attack`,`defense`,`stage`) VALUES ('".$battle."', '".$bH."', '".$bA."', '".$bB."', 'boss')");
        
$db->query("UPDATE `demons_battles` SET `stage` = 'boss' WHERE `id` = '".$battle."'");
        
$db->query("DELETE FROM `battle_logs` WHERE `type` = 'demons-mobs' AND `battle` = '".$battle."'");
    }
    elseif(
$stage == 'players')
    {
        
$db->query("UPDATE `demons_battles` SET `stage` = 'players' WHERE `id` = '".$battle."'");
        
$db->query("DELETE FROM `battle_logs` WHERE `type` = 'demons-boss' AND `battle` = '".$battle."'");
    }
    return 
true;
}

function 
demonsMobAttack()
{
    global 
$db,$u;
    
$btl $db->query("SELECT * FROM `demons_battles` WHERE `status` = 'battle' LIMIT 1")->fetch_object();
    
$mobs $db->query("SELECT * FROM `demons_mobs` WHERE `stage` = '".$btl->stage."' AND `battle` = '".$btl->id."' AND `health` > '0'");
    while(
$m $mobs->fetch_object())
    {
        if(
$m->attack_cd time())
        {
            
$attackCD time()+rand(5,20);
            
$randPlayer $db->query("SELECT * FROM `demons_players` WHERE `health` > '0' AND `battle` = '".$btl->id."' ORDER BY RAND() LIMIT 1")->fetch_object();
            
$damage getDamage($m->attackget_block($randPlayer->user));
            if(
$btl->stage == 'mobs'$name 'Прислужник Демона';
            else 
$name 'Демон';
            
$stage 'demons-'.$btl->stage;
            if(
$damage >= $randPlayer->health$logMsg $name.' убил '.name($randPlayer->user).'.';
            else 
$logMsg $name.' ударил '.name($randPlayer->user).' на '.$damage.'.';
            
$db->query("UPDATE `demons_players` SET `health` = `health` - '".$damage."' WHERE `id` = '".$randPlayer->id."'");
            
$db->query("INSERT INTO `battle_logs` (`type`,`battle`,`msg`,`time`) VALUES ('".$stage."', '".$btl->id."', '".$logMsg."', '".time()."')");
            
$db->query("UPDATE `demons_mobs` SET `attack_cd` = '".$attackCD."' WHERE `id` = '".$m->id."'");
        }
    }
    return 
true;
}

function 
startDemons()
{
    global 
$db;
    
$btl $db->query("SELECT * FROM `demons_battles` WHERE `status` = 'prepare' ORDER BY `id` DESC LIMIT 1")->fetch_object();
    if(
$btl->starttime <= time())
    {
        
$players $db->query("SELECT * FROM `demons_players` WHERE `battle` = '".$btl->id."'");
        
$mobsCount $players->num_rows*2;
        
$mobsAttack 100;
        
$mobsBlock 150;
        
$mobsHealth 3000;
        for(
$i=0;$i<$mobsCount;$i++)
        {
            
$db->query("INSERT INTO `demons_mobs` (`battle`,`health`,`attack`,`defense`,`stage`) VALUES ('".$btl->id."', '".$mobsHealth."', '".$mobsAttack."', '".$mobsBlock."', 'mobs')");
        }
        
$db->query("UPDATE `demons_battles` SET `stage` = 'mobs', `status` = 'battle' WHERE `id` = '".$btl->id."'");
    }
}
Онлайн: 1
Реклама