Вход Регистрация
Файл: silawar.ru/protected/controllers/MastersController.php
Строк: 205
<?php
class MastersController extends Controller {
    public function 
accessRules() {
        return array(
            array(
'deny',
                
'roles' => array('banned'),
                
'deniedCallback' => array(Yii::app()->controller'redirectToHome'),
            ),
            array(
'allow',
                
'actions' => array('index''ironmaster''enchants'),
                
'users' => array('@'),
            ),
            array(
'deny',
                
'users' => array('*'),
                
'deniedCallback' => array(Yii::app()->controller'redirectToHome'),
            )
        );
    }
    
    public function 
actionIndex() {
        
$this->render('index');
    }
    
    public function 
actionIronmaster($getXP null) {
        
$user Users::findUser();
        
$params = array();
        
$min BattleHelper::maxXP($user->level-1);
        
$max BattleHelper::maxXP($user->level);
        if (
$user->xp 0)
            
$percent 100-round(($user->xp-$min)*100/($max-$min));
        else
            
$percent 100;
        if (
$user->level 24) {
            
$params[1] = array(
                
'percent' => $percent,
                
'value' => ($max-$user->xp),
                
'price' => round((1000/100)*$percent)
                );
            
$params[2] = array(
                
'percent' => 10,
                
'value' => round((($max-$min)/100)*10),
                
'price' => 100
                
);
            if (!
UserDaily::check('ironmaster')) {
                
$params[3] = array(
                    
'percent' => 5,
                    
'value' => round((($max-$min)/100)*5),
                    
'price' => 10000
                    
);
                
$params[4] = array(
                    
'percent' => 2,
                    
'value' => round((($max-$min)/100)*2),
                    
'price' => 5000
                    
); 
            }
        }
        elseif (
$user->level 30) {
            
$params[1] = array(
                
'percent' => $percent,
                
'value' => ($max-$user->xp),
                
'price' => round((2000/100)*$percent)
                );
            
$params[2] = array(
                
'percent' => 10,
                
'value' => round((($max-$min)/100)*10),
                
'price' => 200
                
);
            if (!
UserDaily::check('ironmaster')) {
                
$params[3] = array(
                    
'percent' => 5,
                    
'value' => round((($max-$min)/100)*5),
                    
'price' => 10000
                    
);
                
$params[4] = array(
                    
'percent' => 2,
                    
'value' => round((($max-$min)/100)*2),
                    
'price' => 5000
                    
); 
            }
        }
        if (
$getXP && intval($getXP) < && intval($getXP) > 0) {
            if (
$params[$getXP] && $getXP 3) {
                if (
$params[$getXP]['price'] > $user->money) {
                    
Yii::app()->user->setFlash('error''Недостаточно денег');
                }
                else {
                    
Yii::app()->user->setFlash('info''Вы получили '.$params[$getXP]['value'].' опыта');
                    
$user->money -= $params[$getXP]['price'];
                    
$user->xp += $params[$getXP]['value'];
                    if (
$user->xp >= $max && $user->level 30) {
                        
$user->level += 1;
                        
$params Users::calcParam($user->id_user);
                        
$user->health_now $params->totalHealth*2;
                        
$user->energy_now $params->totalEnergy*2;
                    }
                    if (!
$user->save(false)) {
                        throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении данных пользователя!'));
                    }
                }
            }
            elseif (
$params[$getXP] && $getXP 2) {
                if (
$params[$getXP]['price'] > $user->iron) {
                    
Yii::app()->user->setFlash('error''Недостаточно железа');
                }
                else {
                    
Yii::app()->user->setFlash('info''Вы получили '.$params[$getXP]['value'].' опыта');
                    
UserDaily::addToDaily('ironmaster');
                    
$user->iron -= $params[$getXP]['price'];
                    
$user->xp += $params[$getXP]['value'];
                    if (
$user->xp >= $max && $user->level 30) {
                        
$user->level += 1;
                        
$params Users::calcParam($user->id_user);
                        
$user->health_now $params->totalHealth*2;
                        
$user->energy_now $params->totalEnergy*2;
                    }
                    if (!
$user->save(false)) {
                        throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении данных пользователя!'));
                    }
                }
            }
            
$this->redirect('/masters/ironmaster');
        }

        
$this->render('ironmaster', array(
            
'params' => $params
        
));
    }
    
    public function 
actionEnchants($id null) {
        
$user Users::findUser();
        
        if (
$id && UserItems::checkBodyItem($id)) {
            
$item UserItems::model()->findByPk($id);
            
            if (
$item->quality >5
                
$iron_price 5000;
            elseif (
$item->quality >4
                
$iron_price 2500;
            elseif (
$item->quality >3
                
$iron_price 1000;
            else 
                
$iron_price 250;
            
            
$prices = array(1=>$iron_price1000500025000100000500000);
            
$value = array(1=>75100150200250350);

            
$stats_list = array(
                
'1' => array('health'=>'здоровья''armor'=>'брони'),
                
'2' => array('health'=>'здоровья''energy'=>'энергии'),
                
'3' => array('health'=>'здоровья''regeneration'=>'регенерации'),
                
'4' => array('regeneration'=>'регенерации''energy'=>'энергии'),
                
'5' => array('energy'=>'энергии''armor'=>'брони'),
                
'6' => array('strength'=>'силы''health'=>'здоровья'),
                
'7' => array('armor'=>'брони''regeneration'=>'регенерации'),
                
'8' => array('energy'=>'энергии''health'=>'здоровья'),
                
'9' => array('strength'=>'силы''armor'=>'брони'),
                
'10' => array('regeneration'=>'регенерации''strength'=>'силы'),
                
'11' => array('strength'=>'силы''regeneration'=>'регенерации'),
                
'12' => array('energy'=>'энергии''strength'=>'силы'),
            );
            
$stats $stats_list[$item->type];
            for (
$i = ($item->enchant_type $item->enchant_type 1); $i<=6$i++) {
                
$params[$i] = array(
                    
'price' => $prices[$i],
                    
'value' => $value[$i]
                );
            }
            
            if (
Yii::app()->request->getParam('type') && array_key_exists(Yii::app()->request->getParam('type'), $stats) && Yii::app()->request->getParam('enchant')) {
                
$enchant Yii::app()->request->getParam('enchant');
                
$type Yii::app()->request->getParam('type');
                
$item_name 'enchant_'.$type;
                if (
$item->enchant_type $enchant || $enchant 6) {
                    
$this->redirect(array('/masters/enchants''id'=>$id));
                }
                if (
$enchant && $params[$enchant]['price'] > $user->iron) {
                    
Yii::app()->user->setFlash('error''Недостаточно железа');                    
                }
                elseif (
$enchant && $params[$enchant]['price'] > $user->money) {
                    
Yii::app()->user->setFlash('error''Недостаточно золота');                    
                } 
                else {
                    if (
$item->enchant_type) {
                        
$item->enchant_strength 0;
                        
$item->enchant_health 0;
                        
$item->enchant_energy 0;
                        
$item->enchant_regeneration 0;
                        
$item->enchant_armor 0;
                    }
                    if (
$enchant 2) {
                        
$user->iron -= $params[$enchant]['price'];
                    }
                    else {
                        
$user->money -= $params[$enchant]['price'];
                    }
                    
/*Срабатывает шанс рандома лучшей чары*/
                    
$text='';
                    if (
$enchant && rand(1,100) > 89) {
                        
$enchant++;
                        
$text ' Удача улыбнулась Вам!';
                    }
                    
$item->enchant_type $enchant;
                    
$item->$item_name $params[$enchant]['value'];
                    if (!
$user->save(false)) {
                        throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении данных пользователя!'));
                    }
                    if (!
$item->save(false)) {
                        throw new 
CHttpException(500Yii::t('layout''Ошибка при сохранении информации о предмете!'));
                    }
                    
Yii::app()->user->setFlash('info''Вы зачаровали вещь.'.$text);
                }
                
$this->redirect(array('/masters/enchants''id'=>$id));
            }
            
$this->render('enchants_view', array(
                
'item' => $item,
                
'params' => $params,
                
'stats' => $stats,
            )); 
        }
        else {
            
$criteria = new CDbCriteria;
            
$criteria->select = array('id_item''level''img');
            
$criteria->compare('id_user'Yii::app()->user->id);
            
$criteria->compare('status'ITEM_ON_BODY);
            
$criteria->order 'type ASC';
            
$user_items UserItems::model()->findAll($criteria);

            
$this->render('enchants', array(
                
'user_items' => $user_items,
            )); 
        }
    }
}
Онлайн: 1
Реклама