Вход Регистрация
Файл: app/Http/Controllers/ChestController.php
Строк: 63
<?php

namespace AppHttpControllers;

use 
IlluminateHttpRequest;
use 
AppServicesServices;
use 
Auth;
use 
AppModelsUserModel;
use 
AppModelsCardModel;
use 
AppModelsCardUserModel;

class 
ChestController extends Controller
{
    private 
$chestTypes$chests;

    public function 
__construct()
    {
        
$this->chestTypes = ['common''rare''legendary'];
        
$this->chests =  config('chests');
    }

    public function 
index()
    {
        return 
view('game.chest.index');
    }

    public function 
open($chest)
    {
        if(!
in_array($chest$this->chestTypes)) return back()->with('error''Ошибка!');
        
$chestName $chest.'_chest';
        if(
Auth::user()->$chestName time()) return back()->with('error''Сундук закрыт!');
        
$chance Services::getChance();
        
$rewardType = [];
        while(
true)
        {
            
$rewardType $this->chests[$chest]['rewards'][array_rand($this->chests[$chest]['rewards'])];
            if(
$chance >= $rewardType['chance']['min'] && $chance <= $rewardType['chance']['max']) break;
        }
        if(
$rewardType['type'] == 'exp')
        {
            
$count rand($rewardType['count']['min'], $rewardType['count']['max']);            
    
Services::addMoney($count0);
            
$message 'Получено: '.$count.' монет!';
        }
        elseif(
$rewardType['type'] == 'valmers')
        {
            
$count rand($rewardType['count']['min'], $rewardType['count']['max']);
            
Services::addMoney(0$count);
            
$message 'Получено: '.$count.' вальмер!';
        }
        elseif(
$rewardType['type'] == 'card')
        {
            
$randomCard CardModel::whereIn('level'$rewardType['level'])->whereNotIn('type', ['tutorial-common''tutorial-premium'])->inRandomOrder()->first();
            
CardUserModel::create([
                
'user' => Auth::user()->id,
                
'card' => $randomCard->id,
                
'learn_time' => time()+$randomCard->learn_time*60,
                
'status' => 'redeemed'
            
]);
            
$message 'Получена карта '.$randomCard->level.' уровня "'.$randomCard->name.'"!';
        }
        
UserModel::find(Auth::user()->id)->update([
            
$chestName => time()+$this->chests[$chest]['time']
        ]);
        return 
back()->with('ok'$message);
    }
}
Онлайн: 3
Реклама