Файл: 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) < 5 && 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(500, Yii::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(500, Yii::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_price, 1000, 5000, 25000, 100000, 500000);
$value = array(1=>75, 100, 150, 200, 250, 350);
$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 < 2 && $params[$enchant]['price'] > $user->iron) {
Yii::app()->user->setFlash('error', 'Недостаточно железа');
}
elseif ($enchant > 1 && $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 < 6 && rand(1,100) > 89) {
$enchant++;
$text = ' Удача улыбнулась Вам!';
}
$item->enchant_type = $enchant;
$item->$item_name = $params[$enchant]['value'];
if (!$user->save(false)) {
throw new CHttpException(500, Yii::t('layout', 'Ошибка при сохранении данных пользователя!'));
}
if (!$item->save(false)) {
throw new CHttpException(500, Yii::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,
));
}
}
}