Вход Регистрация
Файл: alinar.ru/API/fight.php
Строк: 368
<?
header 
("Content-type: text/html; charset=windows-1251");
if (
substr_count($_SERVER['HTTP_REFERER'],'main.php')>0):
    require (
$_SERVER['DOCUMENT_ROOT'].'/maintenance/vars.php');
    require (
ROOT.'/maintenance/dbconn.php');
    require (
ROOT.'/maintenance/vcode.php');
    require (
ROOT.'/maintenance/functions.php');
    if (
VALID):
        if (
$_REQUEST["act"]=='hode'):            
            
            
$pers user(UID);
            
$fight fetch("SELECT * FROM fights WHERE ID=".$pers["cfight"]);
            if (
$fight["type"]=='bfight'):
                
$enemy fight_bot($pers["cfight"]);
                
$enemy["user"] = $enemy["name"];
                
$enemy["uid"] = $enemy["ID"];
            elseif (
$fight["type"]=='duel'):
                
$enemy user($pers["active_enemy"]);
            endif;
            
            if (isset(
$_REQUEST["info"]) && !empty($_REQUEST["info"])):
                
query("UPDATE users SET active_hit='".$enemy["uid"]."@".$_REQUEST["info"]."' WHERE uid=".UID);
            endif;
            
            
$pers_left_hand = array ('none','none','none','none');
            
$pers_right_hand = array ('none','none','none','none');
            
$enemy_left_hand = array ('none','none','none','none');
            
$enemy_right_hand = array ('none','none','none','none');
            
            
$enemy_hit false;
            
$pers_hit false;
            
            if (isset(
$enemy["ID"]) && !empty($enemy["ID"])):
                
$enemy_right_hand[floor(rand(0,4))] = 'hit_1';
                
$enemy_left_hand[floor(rand(0,4))] = 'block_1';
                
$enemy_left_hand[floor(rand(0,4))] = 'block_1';
                
$enemy_hit true;
            else:
                
$info explode('@',$enemy["active_hit"]);
                if (
$info[0]==UID):
                    
$enemy_left_hand explode('|',$info[1]);
                    
$enemy_right_hand explode('|',$info[2]);
                    
$enemy_hit true;
                endif;
            endif;
            
            
$info fetch("SELECT active_hit FROM users WHERE uid=".UID);
            
$info explode ('@',$info["active_hit"]);
            if (
$info[0]==$enemy["uid"]):
                
$pers_left_hand explode('|',$info[1]);
                
$pers_right_hand explode('|',$info[2]);
                
$pers_hit true;
            endif;

            if (
$enemy_hit==true && $pers_hit==true):
                
                
query("UPDATE users SET active_hit='' WHERE uid=".UID);
                if (empty(
$enemy["ID"]) && !isset($enemy["ID"])):
                    
query ("UPDATE users SET active_hit='' WHERE uid=".$enemy["uid"]);
                endif;
                
                
$pers_block_points = array(0,0,0,0);
                
$pers_hits_points = array (0,0,0,0);
                
$enemy_block_points = array(0,0,0,0);
                
$enemy_hits_points = array (0,0,0,0);
    
                
                foreach (
$pers_left_hand as $k=>$v): 
                    if (
substr_count($v,'hit')>0): $pers_hits_points[$k]++;
                    elseif (
substr_count($v,'block')>0): $pers_block_points[$k]++;
                    endif; 
                endforeach;
                foreach (
$pers_right_hand as $k=>$v): 
                    if (
substr_count($v,'hit')>0): $pers_hits_points[$k]++;
                    elseif (
substr_count($v,'block')>0): $pers_block_points[$k]++;
                    endif; 
                endforeach;
                foreach (
$enemy_left_hand as $k=>$v): 
                    if (
substr_count($v,'hit')>0): $enemy_hits_points[$k]++;
                    elseif (
substr_count($v,'block')>0): $enemy_block_points[$k]++;
                    endif; 
                endforeach;
                foreach (
$enemy_right_hand as $k=>$v): 
                    if (
substr_count($v,'hit')>0): $enemy_hits_points[$k]++;
                    elseif (
substr_count($v,'block')>0): $enemy_block_points[$k]++;
                    endif; 
                endforeach;
                
                
$to_log '';
                
                foreach (
$pers_hits_points as $k=>$h):
                    if (
$h>$enemy_block_points[$k]):
                        if (
$enemy["is_hp"]>0):
                        
                            
$hit round(rand($pers["hit_min"]+($pers["st1"]+$pers["st1_g"])/2,$pers["hit_max"]+($pers["st1"]+$pers["st1_g"])/2));
                            
$kb round((($pers["kb"]+1)*($pers["level"]+1)-($enemy["kb"]+1)*($enemy["level"]+1))/(($pers["kb"]+1)*($pers["level"]+1)+($enemy["kb"]+1)*($enemy["level"]+1))*100);
                            
$hit round($hit * (0.7 $kb/100));
                            if (
$hit<0): $hit 0; endif;
                            
                            
$uvorot round ($enemy["mf2"] + ($enemy["st2"]+$enemy["st2_g"])*(($enemy["level"]+1)/2));
                            
$tochn round ($pers["mf3"] + ($pers["st2"]+$pers["st2_g"])*(($pers["level"]+1)/2));
                            
$success round($uvorot/$tochn*100);
                            if (
round(rand(0,$success))>round(rand(75,110))):
                                
$to_log 'uvorot|'.date("H:i").'|2|'.$enemy["user"].'|'.$enemy["level"].'|1|'.$pers["user"].'|'.$pers["level"].'@'.$to_log;
                            else:
                            
                                
$stoik round ($enemy["mf4"] + ($enemy["st3"]+$enemy["st3_g"])*(($enemy["level"]+1)/2));
                                
$krit round ($pers["mf1"] + ($pers["st3"]+$pers["st3_g"])*(($pers["level"]+1)/3));
                                
$success round($stoik/$krit*110);
                                if (
round(rand(0,$success))>round(rand(75,110))):
                                    
$hit round($hit*1.75);
                                    if (
$hit>$enemy["is_hp"]): $hit $enemy["is_hp"]; endif;
                                    
$to_log 'hit|'.date("H:i").')|1|'.$pers["user"].'|'.$pers["level"].'|2|'.$enemy["user"].'|'.$enemy["level"].'|'.$hit.'@'.$to_log;
                                else:
                                    if (
$hit>$enemy["is_hp"]): $hit $enemy["is_hp"]; endif;
                                    
$to_log 'krit|'.date("H:i").'|1|'.$pers["user"].'|'.$pers["level"].'|2|'.$enemy["user"].'|'.$enemy["level"].'|'.$hit.'@'.$to_log;
                                endif;
                                
$enemy["is_hp"] = $enemy["is_hp"] - $hit;
                                if (isset(
$enemy["ID"]) && !empty($enemy["ID"])):
                                    
query ("UPDATE fight_bots SET is_hp=is_hp-".$hit." WHERE ID=".$enemy["ID"]);
                                else:
                                    
query ("UPDATE users SET is_hp=is_hp-".$hit." WHERE uid=".$enemy["uid"]);
                                endif;
                                
query ("UPDATE users SET give_damage=give_damage+".$hit." WHERE uid=".UID);
                            endif;
                        endif;
                    elseif (
$h<=$enemy_block_points[$k] && $h<>0):
                        
$to_log 'block|'.date("H:i").'|2|'.$enemy["user"].'|'.$enemy["level"].'|1|'.$pers["user"].'|'.$pers["level"].'@'.$to_log;
                    endif;
                endforeach;
                
                foreach (
$enemy_hits_points as $k=>$h):
                    if (
$h>$pers_block_points[$k]):
                        if (
$pers["is_hp"]>0):
                        
                            
$hit round(rand($enemy["hit_min"]+($enemy["st1"]+$enemy["st1_g"])/2,$enemy["hit_max"]+($enemy["st1"]+$enemy["st1_g"])/2));
                            
$kb round((($enemy["kb"]+1)*($enemy["level"]+1)-($pers["kb"]+1)*($pers["level"]+1))/(($pers["kb"]+1)*($pers["level"]+1)+($enemy["kb"]+1)*($enemy["level"]+1))*100);
                            
$hit round($hit * (0.7 $kb/100));
                            if (
$hit<0): $hit 0; endif;
                            
                            
$uvorot round ($pers["mf2"] + ($pers["st2"]+$pers["st2_g"])*(($pers["level"]+1)/2));
                            
$tochn round ($enemy["mf3"] + ($enemy["st2"]+$enemy["st2_g"])*(($enemy["level"]+1)/2));
                            
$success round($uvorot/$tochn*110);
                            if (
round(rand(0,$success))>round(rand(75,110))):
                                
$to_log 'uvorot|'.date("H:i").'|1|'.$pers["user"].'|'.$pers["level"].'|2|'.$enemy["user"].'|'.$enemy["level"].'@'.$to_log;
                            else:
                                if (
$hit>$pers["is_hp"]): $hit $pers["is_hp"]; endif;
                                
query ("UPDATE users SET is_hp=is_hp-".$hit." WHERE uid=".UID);
                                
$to_log 'hit|'.date("H:i").'|2|'.$enemy["user"].'|'.$enemy["level"].'|1|'.$pers["user"].'|'.$pers["level"].'|'.$hit.'@'.$to_log;
                            endif;
                        endif;
                    elseif (
$h<=$pers_block_points[$k] && $h<>0):
                        
$to_log 'block|'.date("H:i").'|1|'.$pers["user"].'|'.$pers["level"].'|2|'.$enemy["user"].'|'.$enemy["level"].'@'.$to_log;
                    endif;
                endforeach;
            else:
                
$out 'WAIT';
            endif;
                
            
$pers user(UID);
            
            if (isset(
$enemy["ID"]) && !empty($enemy["ID"])):
                
$enemy fight_bot($pers["cfight"]);
                
$enemy["user"] = $enemy["name"];
            else:
                
$enemy user($enemy["uid"]);
            endif;
            
            if (
$enemy["is_hp"]<=|| $pers["is_hp"]<=0):
                
query ("UPDATE fights SET status='preend' WHERE ID=".$pers["cfight"]);
                
$to_log 'finish|'.date("H:i").'@'.$to_log;
            endif;
            
            
query("UPDATE fights SET log=concat('".$to_log."@',log) WHERE ID=".$pers["cfight"]);
            
            
$fight fetch("SELECT * FROM fights WHERE ID=".$pers["cfight"]);
            
$fight["log"] = str_replace('@@','@',$fight["log"]);
            
$log explode ('@',$fight["log"],6);
            
$log $log[0].'@'.$log[1].'@'.$log[2].'@'.$log[3].'@'.$log[4];
            while (
substr_count($log,'@@')>0):
                
$log str_replace('@@','@',$log);
            endwhile;

            if (
$fight["status"]=='preend'): 
                if (
$pers["is_hp"]>&& $enemy["is_hp"]<=0): $win1 1$win2 0.2;
                elseif (
$pers["is_hp"]<=&& $enemy["is_hp"]>0): $win1 0.2$win2 1;
                elseif (
$pers["is_hp"]<=&& $enemy["is_hp"]<=0): $win1 0.6$win2 0.6;
                endif;
                
$exp1 round($pers["give_damage"]*0.33*(($enemy["level"]+1)/($pers["level"]+1))*$win1);
                
$add '';
                if (
$fight["type"]<>'bfight'):
                    
$exp2 round($enemy["give_damage"]*0.33*(($pers["level"]+1)/($enemy["level"]+1))*$win2);
                    
$add '&'.$enemy["user"].':'.$enemy["level"].':'.$exp2;
                endif;
                
$fight["status"] = $fight["status"].'|'.$pers["user"].':'.$pers["level"].':'.$exp1.$add;
                
query("UPDATE fights SET info='".$fight["status"]."'");
            endif;
            
            if (
$out=='WAIT'):
                if (
$fight["status"]<>'fight'): $out ''; endif;
            endif;
                        
            if (
$out!='WAIT'):
                require (
ROOT.'/modules/wears.php');
                
$pers_wears = new WEARS;
                
$pers_wears->get_wears($pers["uid"]);
                
$out '';
                
$ch1 $pers_wears->wears_API_string().'@'.$pers["user"].'|'.$pers["level"].'|'.$pers["is_hp"].'|'.$pers["mx_hp"].'|'.$pers["is_mp"].'|'.$pers["mx_mp"].'|'.$pers["is_ep"].'|'.$pers["mx_ep"].'';
                if (
$fight["type"]=='bfight'):
                    
$ch2 'weapon1||||&weapon2||||&ring1||||&ring2||||&amulet||||&helmet||||&body||||&belt||||&arms||||&gloves||||&foots||||@'.$enemy["user"].'|'.$enemy["level"].'|'.$enemy["is_hp"].'|'.$enemy["mx_hp"].'|'.$enemy["is_mp"].'|'.$enemy["mx_mp"].'|100|100';
                else:
                    
$enemy_wears = new WEARS;
                    
$enemy_wears->get_wears($enemy["uid"]);
                    
$ch2 $enemy_wears->wears_API_string().'@'.$enemy["user"].'|'.$enemy["level"].'|'.$enemy["is_hp"].'|'.$enemy["mx_hp"].'|'.$enemy["is_mp"].'|'.$enemy["mx_mp"].'|100|100';
                endif;
                
$out $ch1.'@'.$ch2.'@'.VCODE.'@'.$fight["status"].'{log}'.$log;
            endif;
            echo 
$out;
        elseif (
$_REQUEST["act"]=='finish'):
            
$pers user(UID);
            
$fight fetch("SELECT * FROM fights WHERE ID=".$pers["cfight"]);
            if (
$fight["type"]=='bfight'):
                
$enemy fight_bot($pers["cfight"]);
                
$enemy["user"] = $enemy["name"];
                
$enemy["uid"] = $enemy["ID"];
            elseif (
$fight["type"]=='duel'):
                
$enemy user($pers["active_enemy"]);
            endif;
            if (
$pers["is_hp"]>&& $enemy["is_hp"]<=0): $win 1query ("UPDATE users SET pvn_wins=pvn_wins+1 WHERE uid=".UID);
            elseif (
$pers["is_hp"]<=&& $enemy["is_hp"]>0): $win 0.2;  query ("UPDATE users SET pvn_loses=pvn_loses+1 WHERE uid=".UID);
            elseif (
$pers["is_hp"]<=&& $enemy["is_hp"]<=0): $win 0.6;
            endif;
            
$exp round($pers["give_damage"]*0.33*(($enemy["level"]+1)/($pers["level"]+1))*$win);
            
$message 'Бой против '.$enemy["user"].' ['.$enemy["level"].'] завершен. Получено боевого опыта: '.$exp.'.';
            
chat(time(),date("H:i:s"),$pers["uid"],'system','system',$message);
            if (
$fight["users"]==1):
                
query ("UPDATE fights SET status='finished' WHERE ID=".$pers["cfight"]);
            else:
                
query ("UPDATE fights SET users=users-1 WHERE ID=".$pers["cfight"]);
            endif;
            
query ("UPDATE users SET cfight='', exp=exp+".$exp.", give_damage=0, cpage='pers', last_query=".time().",arena_fight='', active_hit='', active_enemy='' WHERE uid=".UID);
        endif;
    endif;
else:
    echo 
'ERROR';
endif;
?>
Онлайн: 2
Реклама