763 lines
28 KiB
PHP
763 lines
28 KiB
PHP
<?php
|
|
|
|
namespace classes;
|
|
|
|
require_once 'metatable/item.php';
|
|
require_once 'metatable/drop.php';
|
|
require_once 'metatable/parameter.php';
|
|
require_once 'metatable/activityplus.php';
|
|
require_once 'metatable/shop.php';
|
|
|
|
/* error_log('require addreeward.php1');
|
|
if (!class_exists('classes/AddReward111')) {
|
|
error_log('require addreeward.php');
|
|
require 'classes/AddReward.php';
|
|
}
|
|
*/
|
|
use phpcommon;
|
|
use metatable;
|
|
|
|
class RechargeActInfo {
|
|
protected function getMysql($account_id)
|
|
{
|
|
$mysql_conf = getMysqlConfig(crc32($account_id));
|
|
$conn = new phpcommon\Mysql(array(
|
|
'host' => $mysql_conf['host'],
|
|
'port' => $mysql_conf['port'],
|
|
'user' => $mysql_conf['user'],
|
|
'passwd' => $mysql_conf['passwd'],
|
|
'dbname' => DBNAME_PREFIX . $mysql_conf['instance_id']
|
|
));
|
|
return $conn;
|
|
}
|
|
|
|
protected function getExplode($string)
|
|
{
|
|
$delim = "|";
|
|
$drop_multiply = explode($delim, $string);
|
|
$delim1 = ":";
|
|
$arr = array();
|
|
for ($i = 0; $i < count($drop_multiply); $i++) {
|
|
$mul = explode($delim1, $drop_multiply[$i]);
|
|
array_push($arr, $mul);
|
|
}
|
|
return $arr;
|
|
}
|
|
|
|
protected function getVip($vip_id)
|
|
{
|
|
$vip_meta_table = require('../res/vip@vip.php');
|
|
$vip_meta = getVipConfig($vip_meta_table, $vip_id);
|
|
$vip = array(
|
|
'level' => $vip_meta['level'],
|
|
'require' => $vip_meta['require'],
|
|
'reward' => $vip_meta['reward'],
|
|
'dailyreward' => $vip_meta['weekreward'],
|
|
'vipicon' => $vip_meta['vipicon'],
|
|
'viplist' => $vip_meta['viplist'],
|
|
'vipcolor' => $vip_meta['color'],
|
|
);
|
|
return $vip;
|
|
}
|
|
|
|
protected function isVipCondition($act, $account_id)
|
|
{
|
|
$vip_level = 0;
|
|
$conn = $this->getMysql($account_id);
|
|
$row = $conn->execQueryOne('SELECT sum_coin FROM user WHERE accountid=:accountid;',
|
|
array(
|
|
':accountid' => $account_id,
|
|
));
|
|
$vip_meta_table = require('../res/vip@vip.php');
|
|
for ($i = 0; $i < count($vip_meta_table); $i++) {
|
|
$vip_status = 0;
|
|
$vip_today_status = 0;
|
|
$vip = $this->getVip($i);
|
|
if ($row['sum_coin'] >= $vip['require']) {
|
|
$vip_level = $vip['level'];
|
|
}
|
|
}
|
|
if (!empty($act['vip']) && $act['vip'] > $vip_level) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
|
|
public function getActSingleInfo($type, $info_list, $rmb, $account_id)
|
|
{
|
|
$id_list = metatable\getActPlusInfo($type);
|
|
$num = 0;
|
|
if (empty($info_list) || !$info_list) {
|
|
$info_list = array();
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if ($this->isVipCondition($act, $account_id)) {
|
|
$status = 0;
|
|
if ($i['id'] == 1) {
|
|
$status = 1;
|
|
}
|
|
$reward = array();
|
|
$reward = $this->actSingleList($act['condition'], $act['reward']);
|
|
array_push($info_list, array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'reward' => $reward,
|
|
'status' => $status,
|
|
'time' => phpcommon\getNowTime(),
|
|
'act' => $act,
|
|
));
|
|
} else {
|
|
array_push($info_list, array());
|
|
}
|
|
$num++;
|
|
}
|
|
} else {
|
|
$id = 1;
|
|
foreach ($id_list as $i) {
|
|
$status = 0;
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (empty($info_list[$num]) || !$info_list[$num]) {
|
|
if ($this->isVipCondition($act, $account_id)) {
|
|
$reward = array();
|
|
$reward = $this->actSingleList($act['condition'], $act['reward']);
|
|
if ($i['id'] == 1) {
|
|
$status = 1;
|
|
}
|
|
array_push($info_list, array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'reward' => $reward,
|
|
'status' => $status,
|
|
'time' => phpcommon\getNowTime(),
|
|
'act' => $act,
|
|
));
|
|
}
|
|
} else {
|
|
if ($id == $info_list[$num]['id']
|
|
&& $info_list[$num]['status'] == 0
|
|
&& floor((phpcommon\getdayseconds(phpcommon\getNowTime()) - phpcommon\getdayseconds($info_list[$num]['time'])) / (3600 * 24)) >= $act['open']) {
|
|
$info_list[$num]['status'] = 1;
|
|
}
|
|
if ($info_list[$num]['status'] == 3) {
|
|
$id = $i['id'] + 1;
|
|
}
|
|
}
|
|
$num++;
|
|
}
|
|
}
|
|
return $info_list;
|
|
}
|
|
|
|
public function getActSumInfo($type, $info_list, $rmb, $account_id)
|
|
{
|
|
$id_list = metatable\getActPlusInfo($type);
|
|
if (empty($info_list) || !$info_list) {
|
|
$info_list = $this->getDrawActList($type, $account_id);
|
|
} else {
|
|
$num = 0;
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (phpcommon\getNowTime() < strtotime($act['time1']) || phpcommon\getNowTime() > strtotime($act['time2'])) {
|
|
$info_list[$num] = array();
|
|
} else {
|
|
if (empty($info_list[$num]) || !$info_list[$num]) {
|
|
if ($this->isVipCondition($act, $account_id)) {
|
|
$reward = $this->getItemList($act['reward']);
|
|
$temp_list = array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'condition' => $act['condition'],
|
|
'conditionid' => 10003,
|
|
'reward' => $reward,
|
|
'act' => $act,
|
|
);
|
|
$info_list[$num] = $temp_list;
|
|
}
|
|
}
|
|
}
|
|
$num++;
|
|
}
|
|
}
|
|
return $info_list;
|
|
}
|
|
|
|
public function getActQuestInfo($type, $info_list, $rmb, $account_id)
|
|
{
|
|
$id_list = metatable\getActPlusInfo($type);
|
|
$num = 0;
|
|
if (empty($info_list) || !$info_list) {
|
|
$info_list = array();
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (phpcommon\getNowTime() < strtotime($act['time1']) || phpcommon\getNowTime() > strtotime($act['time2'])) {
|
|
array_push($info_list, array());
|
|
$num++;
|
|
continue;
|
|
}
|
|
if ($this->isVipCondition($act, $account_id)) {
|
|
$reward = array();
|
|
$quest_list = $this->actQuestList($act['condition']);
|
|
$reward = $this->actQuestRewardList($act['reward']);
|
|
array_push($info_list, array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'quest_list' => $quest_list,
|
|
'reward' => $reward,
|
|
'time' => phpcommon\getNowTime(),
|
|
'act' => $act,
|
|
));
|
|
} else {
|
|
array_push($info_list, array());
|
|
}
|
|
$num++;
|
|
}
|
|
} else {
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (phpcommon\getNowTime() < strtotime($act['time1']) || phpcommon\getNowTime() > strtotime($act['time2'])) {
|
|
if (!empty($info_list[$num]) && $info_list[$num]) {
|
|
$info_list[$num] = array();
|
|
}
|
|
} else {
|
|
if (empty($info_list[$num]) || !$info_list[$num]) {
|
|
if ($this->isVipCondition($act, $account_id)) {
|
|
$reward = array();
|
|
$quest_list = $this->actQuestList($act['condition']);
|
|
$reward = $this->actQuestRewardList($act['reward']);
|
|
$temp_list = array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'quest_list' => $quest_list,
|
|
'reward' => $reward,
|
|
'time' => phpcommon\getNowTime(),
|
|
'act' => $act,
|
|
);
|
|
$info_list[$num] = $temp_list;
|
|
}
|
|
} else {
|
|
if (phpcommon\getdayseconds(phpcommon\getNowTime()) - phpcommon\getdayseconds($info_list[$num]['time']) > 0) {
|
|
if ($act['isreset'] == 1) {
|
|
$quest_list = $this->actQuestList($act['condition']);
|
|
$info_list[$num]['quest_list'] = $quest_list;
|
|
} else {
|
|
foreach ($info_list[$num]['quest_list'] as &$us) {
|
|
if ($us['id'] != 15 || $us['status'] != 0) {
|
|
continue;
|
|
}
|
|
$us['num'] = $us['num'] + 1;
|
|
if ($us['num'] >= $us['condition']) {
|
|
$us['status'] = 1;
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
$info_list[$num]['time'] = phpcommon\getNowTime();
|
|
}
|
|
}
|
|
}
|
|
$num++;
|
|
}
|
|
}
|
|
return $info_list;
|
|
}
|
|
|
|
public function getActShopInfo($type, $info_list, $rmb, $account_id)
|
|
{
|
|
$id_list = metatable\getActPlusInfo($type);
|
|
$num = 0;
|
|
if (empty($info_list) || !$info_list) {
|
|
$info_list = array();
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (phpcommon\getNowTime() < strtotime($act['time1']) || phpcommon\getNowTime() > strtotime($act['time2'])) {
|
|
array_push($info_list, array());
|
|
$num++;
|
|
continue;
|
|
}
|
|
if ($this->isVipCondition($act, $account_id)) {
|
|
$reward = array();
|
|
$shop_info = $this->getShopListInfo($act['condition']);
|
|
array_push($info_list, array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'reward' => $shop_info,
|
|
'time' => phpcommon\getNowTime(),
|
|
'isopen' => 0,
|
|
'shop_type' => $act['type'],
|
|
'act' => $act,
|
|
));
|
|
} else {
|
|
array_push($info_list, array());
|
|
}
|
|
$num++;
|
|
}
|
|
} else {
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (isset($info_list[$num]) && !empty($info_list[$num])) {
|
|
if ($info_list[$num]['shop_type'] == 1) {
|
|
if ($info_list[$num]['isopen'] == 1) {
|
|
if (floor((phpcommon\getNowTime() - phpcommon\getdayseconds($info_list[$num]['time'])) / (3600 * 24)) >= $act['time3']) {
|
|
$info_list[$num]['isopen'] = 0;
|
|
}
|
|
} else {
|
|
if (floor((phpcommon\getNowTime() - phpcommon\getdayseconds($info_list[$num]['time'])) / (3600 * 24)) >= $act['open']) {
|
|
$info_list[$num]['isopen'] = 1;
|
|
}
|
|
}
|
|
} else {
|
|
if (phpcommon\getNowTime() < strtotime($act['time1']) || phpcommon\getNowTime() > strtotime($act['time2'])) {
|
|
$info_list[$num]['isopen'] = 0;
|
|
} else {
|
|
$info_list[$num]['isopen'] = 1;
|
|
}
|
|
}
|
|
if ($info_list[$num]['reward']['isrefresh'] == 1) {
|
|
$info_list[$num]['reward'] = $this->getShopListInfo($act['condition']);
|
|
}
|
|
}
|
|
$num++;
|
|
}
|
|
}
|
|
return $info_list;
|
|
}
|
|
|
|
protected function getShopListInfo($id)
|
|
{
|
|
$shop_list = array();
|
|
$shop_conf = metatable\getShopById($id);
|
|
if (!$shop_conf) {
|
|
return array();
|
|
}
|
|
$act_shop_list = metatable\randGoods($shop_conf, $shop_list);
|
|
$act_list = array(
|
|
'id' => $shop_conf['shop_id'],
|
|
'isdorefresh' => $shop_conf['isdorefresh'],
|
|
'hasrefreshnum' => 0,
|
|
'refreshnum' => $shop_conf['refreshnum'],
|
|
'shop_list' => $act_shop_list,
|
|
'isrefresh' => $shop_conf['isrefresh'],
|
|
);
|
|
return $act_list;
|
|
}
|
|
|
|
public function getActDressInfo($type, $info_list, $rmb)
|
|
{}
|
|
|
|
public function getActDiscountInfo($type, $info_list, $rmb, $account_id)
|
|
{
|
|
$id_list = metatable\getActPlusInfo($type);
|
|
$num = 0;
|
|
if (empty($info_list) || !$info_list) {
|
|
$info_list = array();
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (phpcommon\getNowTime() < strtotime($act['time1']) || phpcommon\getNowTime() > strtotime($act['time2'])) {
|
|
array_push($info_list, array());
|
|
$num++;
|
|
continue;
|
|
}
|
|
if ($this->isVipCondition($act, $account_id)) {
|
|
$reward = array();
|
|
$shop_conf = metatable\getShopById($act['condition']);
|
|
if (!$shop_conf) {
|
|
return null;
|
|
}
|
|
$sum_list = metatable\shopGoodsList($shop_conf);
|
|
$reward = $this->randDiscount($sum_list, 0);
|
|
array_push($info_list, array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'sum_list' => $sum_list,
|
|
'reward' => $reward,
|
|
'act' => $act,
|
|
));
|
|
} else {
|
|
array_push($info_list, array());
|
|
}
|
|
$num++;
|
|
}
|
|
} else {
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (phpcommon\getNowTime() < strtotime($act['time1']) || phpcommon\getNowTime() > strtotime($act['time2'])) {
|
|
$info_list[$num]['reward'] = array();
|
|
} else {
|
|
if (empty($info_list[$num]['reward'])) {
|
|
$reward = $this->randDiscount($info_list[$num]['sum_list'], 0);
|
|
$info_list[$num]['reward'] = $reward;
|
|
}
|
|
}
|
|
$num++;
|
|
}
|
|
}
|
|
return $info_list;
|
|
}
|
|
|
|
public function getActDrawInfo($type, $info_list, $rmb, $account_id)
|
|
{
|
|
$id_list = metatable\getActPlusInfo($type);
|
|
if (empty($info_list) || !$info_list) {
|
|
$info_list = $this->getDrawActList($type, $account_id);
|
|
} else {
|
|
$num = 0;
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (phpcommon\getNowTime() < strtotime($act['time1']) || phpcommon\getNowTime() > strtotime($act['time2'])) {
|
|
$info_list[$num] = array();
|
|
} else {
|
|
if (empty($info_list[$num]) || !$info_list[$num]) {
|
|
if ($this->isVipCondition($act, $account_id)) {
|
|
$reward = $this->getItemList($act['reward']);
|
|
$temp_list = array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'condition' => $act['condition'],
|
|
'conditionid' => 10003,
|
|
'reward' => $reward,
|
|
'act' => $act,
|
|
);
|
|
$info_list[$num] = $temp_list;
|
|
}
|
|
}
|
|
}
|
|
$num++;
|
|
}
|
|
}
|
|
return $info_list;
|
|
}
|
|
|
|
public function getActTableInfo($type, $info_list, $rmb, $account_id)
|
|
{
|
|
$id_list = metatable\getActPlusInfo($type);
|
|
if (empty($info_list) || !$info_list) {
|
|
$info_list = $this->getDrawActList($type, $account_id);
|
|
} else {
|
|
$num = 0;
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (phpcommon\getNowTime() < strtotime($act['time1']) || phpcommon\getNowTime() > strtotime($act['time2'])) {
|
|
$info_list[$num] = array();
|
|
} else {
|
|
if (empty($info_list[$num]) || !$info_list[$num]) {
|
|
if ($this->isVipCondition($act, $account_id)) {
|
|
$reward = $this->getItemList($act['reward']);
|
|
$temp_list = array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'condition' => $act['condition'],
|
|
'conditionid' => 10003,
|
|
'reward' => $reward,
|
|
'act' => $act,
|
|
);
|
|
$info_list[$num] = $temp_list;
|
|
}
|
|
}
|
|
}
|
|
$num++;
|
|
}
|
|
}
|
|
return $info_list;
|
|
}
|
|
|
|
public function getActDailyInfo($type, $info_list, $rmb, $account_id)
|
|
{
|
|
$id_list = metatable\getActPlusInfo($type);
|
|
if (empty($info_list) || !$info_list) {
|
|
$info_list = $this->getActDailyList($type);
|
|
} else {
|
|
$num = 0;
|
|
$flag = 0;
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
foreach ($info_list as &$in) {
|
|
$n = 0;
|
|
if (isset($in['forever']) && $in['forever'] != 1 && $in['forever'] != 2) {
|
|
continue;
|
|
}
|
|
foreach ($in['daily_list'] as &$key) {
|
|
if ($flag != 0) {
|
|
if ($n == 0) {
|
|
$key['dprice'] = 0;
|
|
} else {
|
|
$key['dprice'] = $key['dprice'] - $flag;
|
|
}
|
|
}
|
|
if ($key['status'] == 1) {
|
|
if (!isset($in['forever'])) {
|
|
continue;
|
|
}
|
|
if (($in['forever'] == 2 && $n == 1) ||
|
|
($in['forever'] == 1 && $n == 0)) {
|
|
if (phpcommon\getNowTime() > $key['buytime'] + $key['day'] * 3600 * 24) {
|
|
$flag = $flag + $key['condition'];
|
|
$key['status'] = 0;
|
|
$key['extra_status'] = 0;
|
|
$key['day'] = 0;
|
|
$in['forever'] = 0;
|
|
$addreward = new Addreward();
|
|
$addreward->updaterechargelv($account_id, 0, 0);
|
|
} else {
|
|
if (phpcommon\getdayseconds(phpcommon\getNowTime()) - phpcommon\getdayseconds($key['time']) > 0) {
|
|
$key['extra_status'] = 1;
|
|
$key['day'] = $key['day'] - (phpcommon\getdayseconds(phpcommon\getNowTime()) - phpcommon\getdayseconds($key['buytime'])) / 3600 / 24;
|
|
$key['time'] = phpcommon\getNowTime();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
$n++;
|
|
}
|
|
}
|
|
$num++;
|
|
}
|
|
}
|
|
return $info_list;
|
|
}
|
|
|
|
protected function getDrawActList($type, $account_id) {
|
|
$id_list = metatable\getActPlusInfo($type);
|
|
$info_list = array();
|
|
$num = 0;
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
if (phpcommon\getNowTime() < strtotime($act['time1']) || phpcommon\getNowTime() > strtotime($act['time2'])) {
|
|
array_push($info_list, array());
|
|
$num++;
|
|
continue;
|
|
}
|
|
if ($this->isVipCondition($act, $account_id)) {
|
|
$reward = $this->getItemList($act['reward']);
|
|
array_push($info_list, array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'condition' => $act['condition'],
|
|
'conditionid' => 10003,
|
|
'reward' => $reward,
|
|
'act' => $act,
|
|
));
|
|
} else {
|
|
array_push($info_list, array());
|
|
}
|
|
$num++;
|
|
}
|
|
return $info_list;
|
|
}
|
|
|
|
protected function getItemList($id) {
|
|
$item_conf = metatable\getItemById($id);
|
|
$item_list = array();
|
|
if (!$item_conf) {
|
|
return $item_list;
|
|
}
|
|
$item_list = metatable\getDropInfoById($item_conf['fuctionindex']);
|
|
return $item_list;
|
|
}
|
|
|
|
public function randDiscount($sum_list, $reward_id)
|
|
{
|
|
$num = 1;
|
|
$goods = array();
|
|
$key = 0;
|
|
foreach ($sum_list as $sum) {
|
|
if ($sum['id'] == $reward_id) {
|
|
break;
|
|
}
|
|
$key++;
|
|
}
|
|
array_splice($sum_list, $key, 1);
|
|
|
|
for ($i = 0; $i < $num; ++$i) {
|
|
$rand_space = 0;
|
|
foreach ($sum_list as $value) {
|
|
$rand_space += $value['weight'];
|
|
}
|
|
|
|
if ($rand_space <= 0) {
|
|
break;
|
|
}
|
|
$rnd_val = rand(0, $rand_space);
|
|
$curr_val = 0;
|
|
for ($ii = 0; $ii < count($sum_list); ++$ii) {
|
|
$curr_val += $sum_list[$ii]['weight'];
|
|
if ($rnd_val <= $curr_val) {
|
|
array_push($goods, array(
|
|
'id' => $sum_list[$ii]['id'],
|
|
'buy' => $sum_list[$ii]['buy'],
|
|
'price' => $sum_list[$ii]['price'],
|
|
'status' => 0,
|
|
'isdiscount' => $sum_list[$ii]['isdiscount'],
|
|
'dis_num' => $sum_list[$ii]['dis_num'],
|
|
'yuanjia' => $sum_list[$ii]['price'],
|
|
));
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
return $goods;
|
|
}
|
|
|
|
protected function actQuestList($quest)
|
|
{
|
|
$quest_conf = $this->getExplode($quest);
|
|
$quest_list = array();
|
|
foreach ($quest_conf as $q) {
|
|
$status = 0;
|
|
if ($q[0] == 1) {
|
|
$status = 1;
|
|
}
|
|
$num = 0;
|
|
if ($q[0] == 15) {
|
|
$num++;
|
|
if ($num >= $q[1]) {
|
|
$status = 1;
|
|
}
|
|
}
|
|
array_push($quest_list, array(
|
|
'id' => $q[0],
|
|
'num' => $num,
|
|
'condition' => $q[1],
|
|
'status' => $status,
|
|
));
|
|
}
|
|
return $quest_list;
|
|
}
|
|
|
|
protected function actQuestRewardList($quest)
|
|
{
|
|
$quest_conf = $this->getExplode($quest);
|
|
$quest_list = array();
|
|
foreach ($quest_conf as $q) {
|
|
array_push($quest_list, array(
|
|
'item_id' => $q[0],
|
|
'item_num' => $q[1],
|
|
'time' => $q[2],
|
|
));
|
|
}
|
|
return $quest_list;
|
|
}
|
|
|
|
protected function actSingleList($condition, $reward)
|
|
{
|
|
$cond_conf = explode('|', $condition);
|
|
$reward_conf = explode('|', $reward);
|
|
$single_list = array();
|
|
$num = 0;
|
|
foreach ($cond_conf as $c) {
|
|
array_push($single_list, array(
|
|
'condition' => $c,
|
|
'reward_id' => $reward_conf[$num],
|
|
'status' => 0,
|
|
));
|
|
$num++;
|
|
}
|
|
return $single_list;
|
|
}
|
|
|
|
protected function getExtraItemList($id) {
|
|
$item_conf = metatable\getItemById($id);
|
|
$item_list = array();
|
|
if (!$item_conf) {
|
|
return $item_list;
|
|
}
|
|
$item_str = $item_conf['buy_reward'];
|
|
if ($item_str && $item_str != '') {
|
|
$it_arr = $this->getExplode($item_str);
|
|
foreach ($it_arr as $i) {
|
|
array_push($item_list, array(
|
|
'item_id' => $i[0],
|
|
'item_num' => $i[1],
|
|
'time' => $i[2],
|
|
));
|
|
}
|
|
}
|
|
return $item_list;
|
|
}
|
|
|
|
protected function getActDailyList($type)
|
|
{
|
|
$info_list = array();
|
|
$id_list = metatable\getActPlusInfo($type);
|
|
$num = 0;
|
|
foreach ($id_list as $i) {
|
|
$act = metatable\getActPlusById($i['id']);
|
|
if (!$act) {
|
|
return null;
|
|
}
|
|
$cond_conf = explode('|', $act['condition']);
|
|
$reward_conf = explode('|', $act['reward']);
|
|
$time_conf = explode('|', $act['time3']);
|
|
$daily_list = array();
|
|
$n = 0;
|
|
foreach ($cond_conf as $c) {
|
|
$reward = $this->getItemList($reward_conf[$n]);
|
|
$extra = $this->getExtraItemList($reward_conf[$n]);
|
|
array_push($daily_list, array(
|
|
'condition' => $c,
|
|
'reward' => $reward,
|
|
'reward_id' => $reward_conf[$n],
|
|
'time_long' => $time_conf[$n],
|
|
'time' => phpcommon\getNowTime(),
|
|
'status' => 0,
|
|
'buytime' => phpcommon\getNowTime(),
|
|
'dprice' => 0,
|
|
'extra' => $extra,
|
|
'day' => 0,
|
|
'extra_status' => 0,
|
|
));
|
|
$n++;
|
|
}
|
|
array_push($info_list, array(
|
|
'id' => $i['id'],
|
|
'idx' => $num,
|
|
'daily_list' => $daily_list,
|
|
'forever' => 0,
|
|
'act' => $act,
|
|
));
|
|
$num++;
|
|
}
|
|
return $info_list;
|
|
}
|
|
}
|
|
?>
|