<?php

# заголовок
define('TITLE', 'Задания');

# определение данных
$params = PARAMS;  // получение параметров
$refresh = $FUNC->random(8, true); // случайное число

####################

# выполнение задания
if (isset($params['complete']) && isset($params['token']) && $params['token'] == TOKEN) {

# фильтрация параметра, номер задания
$num = $FUNC->filter($params['complete'], 'int');
$post = array(); // массив, выполнение задания

# проверка задания на наличие, в базе данных
if (db_exist($DB, 'tasks', 'id', array('num' => $num, 'user' => USER['id']))) { $total = false; // итог выполнения
$task = db_output($DB, 'tasks', array('id', 'one', 'price', 'two', 'three'), array('num' => $num, 'user' => USER['id'])); // вывод задания

# проверка заданий на выполнение
$one = explode(':', $task['one']); $post['one'] = (db_exist($DB, 'storage', 'id', array('count;>=' => $one[2], 
'object' => $one[1], 'type' => $one[0], 'user' => USER['id']))) ? 'true' : 'stopped'; // первый пункт
if ($task['two'] != 'none') { $two = explode(':', $task['two']); $post['two'] = (db_exist($DB, 'storage', 'id', array('count;>=' => $two[2], 
'object' => $two[1], 'type' => $two[0], 'user' => USER['id']))) ? 'true' : 'stopped'; } else $post['two'] = 'true'; // второй пункт
if ($task['three'] != 'none') { $three = explode(':', $task['three']); $post['three'] = (db_exist($DB, 'storage', 'id', array('count;>=' => $three[2], 
'object' => $three[1], 'type' => $three[0], 'user' => USER['id']))) ? 'true' : 'stopped'; } else $post['three'] = 'true'; // третий пункт

# успешное выполнение заданий
if (!in_array('stopped', $post)) {

# вывод продуктов на складе, из базы данных
$alone = db_output($DB, 'storage', array('id', 'count'), array('object' => $one[1], 'type' => $one[0], 'user' => USER['id'])); // первый пункт
if ($task['two'] != 'none') $twain = db_output($DB, 'storage', array('id', 'count'), array('object' => $two[1], 'type' => $two[0], 'user' => USER['id'])); // второй пункт
if ($task['three'] != 'none') $trio = db_output($DB, 'storage', array('id', 'count'), array('object' => $three[1], 'type' => $three[0], 'user' => USER['id'])); // третий пункт

# обновление количества продуктов,  в базе данных
$count = $alone['count'] - $one[2]; if ($count == 0) db_delete($DB, 'storage', array('id' => $alone['id'])); // удаление при нуле, первый пункт
else db_update($DB, 'storage', array('count' => $count), array('id' => $alone['id'])); // новое количество, первый пункт
db_update($DB, 'settings', array('storage' => $one[2] .';-'), array ('id' => USER['id'])); // место на складе игрока, первый пункт
if ($task['two'] != 'none') { $count = $twain['count'] - $two[2]; if ($count == 0) db_delete($DB, 'storage', // удаление при нуле, второй пункт
array('id' => $twain['id'])); else db_update($DB, 'storage', array('count' => $count), array('id' => $twain['id'])); // новое количество, второй пункт
db_update($DB, 'settings', array('storage' => $two[2].';-'), array ('id' => USER['id'])); } // место на складе игрока, второй пункт 
if ($task['three'] != 'none') { $count = $trio['count'] - $three[2]; if ($count == 0) db_delete($DB, 'storage', // удаление при нуле, третий пункт
array('id' => $trio['id'])); else db_update($DB, 'storage', array('count' => $count), array('id' => $trio['id'])); // новое количество, третий пункт
db_update($DB, 'settings', array('storage' => $three[2] .';-'), array ('id' => USER['id'])); } // место на складе игрока, третий пункт 

# обновление данных игрока
$points = ($task['three'] != 'none') ? 15 : (($task['two'] != 'none') ? 10 : 5); // подсчет очков
db_update($DB, 'statistic', array('money' => $task['price'] .';+', 'points' => $points .';+', 'tasks' => '1;+'), // обновление в базе
array('id' => USER['id'])); db_update($DB, 'users', array('money' => $task['price'] .';+'), array ('id' => USER['id'])); // обновление монет

# обработка данных, новое задание
$person = $GAME->person(); $image = $person[0]; $name = $person[1]; // создание персонажа
$deuce = (mt_rand(1, 2) == 1) ? true : false; $triple = ($deuce && mt_rand(1, 3) == 1) ? true : false; // количество пунктов

# значения по умолчанию
$jobs = array(); // параметры задач
$price = array(); // начальная цена

# первый пункт задания
$jobs['one'] = $GAME->task(STATS['tasks']); $perc = $GAME->random(2, 10); // получение продукта, процент на цену
$price[] = round(((SALE[$jobs['one'][0] .'_'. $jobs['one'][1]] * $jobs['one'][2]) / 100) * (100 + $perc)); // стоимость заказа

# второй пункт задания
if ($deuce) { $jobs['two'] = $GAME->task(STATS['tasks']); if ($jobs['two'][0] == $jobs['one'][0] &&  // проверка продукта на совпадение
$jobs['two'][1] == $jobs['one'][1]) { $deuce = false; $triple = false; } else { $perc = $GAME->random(2, 10); // получение продукта, процент на цену
$price[] = round(((SALE[$jobs['two'][0] .'_'. $jobs['two'][1]] * $jobs['two'][2]) / 100) * (100 + $perc)); } } // стоимость заказа

# третий пункт задания
if ($triple) { $jobs['three'] = $GAME->task(STATS['tasks']); if (($jobs['three'][0] == $jobs['two'][0] &&  // проверка продукта на совпадение
$jobs['three'][1] == $jobs['two'][1]) || ($jobs['three'][0] == $jobs['one'][0] && $jobs['three'][1] == $jobs['one'][1])) $triple = false; // получение продукта, процент на цену
else { $perc = $GAME->random(2, 10); $price[] = round(((SALE[$jobs['three'][0] .'_'. $jobs['three'][1]] * $jobs['three'][2]) / 100) * (100 + $perc)); } } // стоимость заказа

# подготовка данных к записи, в базу данных
$sum = array_sum($price); $job['one'] = $jobs['one'][0] .':' . $jobs['one'][1] .':' . $jobs['one'][2]; // первый пункт
$job['two'] = ($deuce) ? $jobs['two'][0] .':' . $jobs['two'][1] .':' . $jobs['two'][2] : 'none'; // второй пункт
$job['three'] = ($triple) ?  $jobs['three'][0] .':' . $jobs['three'][1] .':' . $jobs['three'][2]  : 'none'; // третий пункт

# обновление задания, в базе данных
db_update($DB, 'tasks', array('image' => $image, 'name' => $name, 'one' => $job['one'], 
'price' => $sum, 'two' => $job['two'], 'three' => $job['three']), array ('id' => $task['id'])); } } }

####################

# вывод заданий, из базы данных
$query = db_output($DB, 'tasks', array('image', 'name', 'num', 'one', 'price', 'two', 'three'), array('user' => USER['id']), true, 'num', DATA['tasks']);

# количество имеющихся продуктов

# разбор заданий, переработка данных в массиве
$index = 0; while ($assoc = $query->fetch_assoc()) { $tasks[$index] = $assoc; $index++; } foreach ($tasks as &$post) { // вывод заданий
$post['image'] = $FUNC->back($post['image'], true); $one = explode(':', $post['one']); $prod = array(); // картинка, первое задание, продукты
if (db_exist($DB, 'storage', 'id', array('object' => $one[1], 'type' => $one[0], 'user' => USER['id']))) $prod['one'] = db_output($DB, 
'storage', 'count', array('object' => $one[1], 'type' => $one[0], 'user' => USER['id'])); else $prod['one']['count'] = 0; // количество сейчас, первое задание
$post['one_name'] = ($one[0] == 'plant') ? PLANT['name_'. $one[1]] : (($one[0] == 'food') ? ANIMAL['prod_'. $one[1]] : 
TECHNIC['prod_'. $one[1]]); $post['one_count'] = $prod['one']['count'] .' / '. $one[2] .' шт.'; // продукт, первое задание
$post['one_icon'] = (db_exist($DB, 'storage', 'id', array('count;>=' => $one[2], 'object' => $one[1], 'type' => $one[0], // иконка, первое задание
'user' => USER['id']))) ? 'tick' : 'point'; if ($post['two'] != 'none') { $two = explode(':', $post['two']); // картинка, второе задание
if (db_exist($DB, 'storage', 'id', array('object' => $two[1], 'type' => $two[0], 'user' => USER['id']))) $prod['two'] = db_output($DB, 
'storage', 'count', array('object' => $two[1], 'type' => $two[0], 'user' => USER['id'])); else $prod['two']['count'] = 0; // количество сейчас, второе задание
$post['two_name'] = ($two[0] == 'plant') ? PLANT['name_'. $two[1]] : (($two[0] == 'food') ? ANIMAL['prod_'. $two[1]] : 
TECHNIC['prod_'. $two[1]]); $post['two_count'] = $prod['two']['count'] .' / '. $two[2] .' шт.'; // продукт, второе задание
$post['two_icon'] = (db_exist($DB, 'storage', 'id', array('count;>=' => $two[2], 'object' => $two[1], // иконка, второе задание
'type' => $two[0], 'user' => USER['id']))) ? 'tick' : 'point'; } if ($post['three'] != 'none') { $three = explode(':', $post['three']); // картинка, третье задание
if (db_exist($DB, 'storage', 'id', array('object' => $three[1], 'type' => $three[0], 'user' => USER['id']))) $prod['three'] = db_output($DB, 
'storage', 'count', array('object' => $three[1], 'type' => $three[0], 'user' => USER['id'])); else $prod['three']['count'] = 0; // количество сейчас, третье задание
$post['three_name'] = ($three[0] == 'plant') ? PLANT['name_'. $three[1]] : (($three[0] == 'food') ? ANIMAL['prod_'. $three[1]] : 
TECHNIC['prod_'. $three[1]]); $post['three_count'] = $prod['three']['count'] .' / '. $three[2] .' шт.'; // продукт, третье задание
$post['three_icon'] = (db_exist($DB, 'storage', 'id', array('count;>=' => $three[2], 'object' => $three[1], // иконка, третье задание
'type' => $three[0], 'user' => USER['id']))) ? 'tick' : 'point'; } $post['link'] = false; $post['face'] = 'no';  // лицо персонажа, ссылка, по умолчанию
$post['stage_one'] = ($post['one_icon'] == 'tick') ? true : false; // проверка выполнения, первая задача
$post['stage_two'] = (isset($post['two_icon']) && $post['two_icon'] == 'tick' || $post['two'] == 'none') ? true : false; // проверка выполнения, вторая задача
$post['stage_three'] = (isset($post['three_icon']) && $post['three_icon'] == 'tick' || $post['three'] == 'none') ? true : false; // проверка выполнения, третья задача
if ($post['stage_one'] && $post['stage_two'] && $post['stage_three']) { $post['link'] = true; $post['face'] = 'yes'; } // задание выполнено
$post['block'] = ($post['two'] == 'none') ? 'one' : (($post['three'] == 'none') ? 'two' : 'three'); // стиль блока
$post['color'] = ($post['link']) ? '<span class="color">Награда:</span>' : 'Награда:'; } // стиль текста

?>