From 0ec41feaa2e80f422a0a96d1bf9f1d2795b591db Mon Sep 17 00:00:00 2001 From: aozhiwei Date: Tue, 8 Dec 2020 19:50:53 +0800 Subject: [PATCH] 1 --- sql/gamedb.sql | 13 + sql/gamedb2004_n_migrate_201208_01.sql | 18 + webapp/classes/AddReward.php | 43 ++ webapp/classes/Quest.php | 114 ++++ .../controller/ActivityController.class.php | 5 +- webapp/controller/AdditemController.class.php | 2 +- .../FesActivityController.class.php | 485 +++++++++++++++++- .../controller/GameOverController.class.php | 65 ++- webapp/controller/RoleController.class.php | 15 +- webapp/metatable/activityplus.php | 54 ++ 10 files changed, 806 insertions(+), 8 deletions(-) create mode 100644 sql/gamedb2004_n_migrate_201208_01.sql create mode 100644 webapp/metatable/activityplus.php diff --git a/sql/gamedb.sql b/sql/gamedb.sql index e4b1c1e..0504ba1 100644 --- a/sql/gamedb.sql +++ b/sql/gamedb.sql @@ -305,4 +305,17 @@ CREATE TABLE `festival_activity` ( UNIQUE KEY `accountid` (`accountid`) ) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; +DROP TABLE IF EXISTS `holiday`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `holiday` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `accountid` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id', + `blobdata` mediumblob COMMENT '活动数据json', + `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', + `modify_time` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', + PRIMARY KEY (`idx`), + UNIQUE KEY `accountid` (`accountid`) +) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + -- Dump completed on 2015-08-19 18:51:22 diff --git a/sql/gamedb2004_n_migrate_201208_01.sql b/sql/gamedb2004_n_migrate_201208_01.sql new file mode 100644 index 0000000..118513f --- /dev/null +++ b/sql/gamedb2004_n_migrate_201208_01.sql @@ -0,0 +1,18 @@ +begin; + +DROP TABLE IF EXISTS `holiday`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `holiday` ( + `idx` bigint NOT NULL AUTO_INCREMENT COMMENT '自增id', + `accountid` varchar(60) NOT NULL DEFAULT '' COMMENT '账号id', + `blobdata` mediumblob COMMENT '活动数据json', + `create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间', + `modify_time` int(11) NOT NULL DEFAULT '0' COMMENT '修改时间', + PRIMARY KEY (`idx`), + UNIQUE KEY `accountid` (`accountid`) +) ENGINE=InnoDB AUTO_INCREMENT=10001 DEFAULT CHARSET=utf8 COLLATE=utf8_bin; + +insert into version (version) values(2020120801); + +commit; diff --git a/webapp/classes/AddReward.php b/webapp/classes/AddReward.php index b1a701e..fad278d 100644 --- a/webapp/classes/AddReward.php +++ b/webapp/classes/AddReward.php @@ -104,6 +104,8 @@ class AddReward { $this->addweizhuang($item['item_id'], $item['item_num'], $account_id); } else if ($i['type'] == 12) { $item_list = $this->addEquip($item['item_id'], $account_id); + } else if ($i['type'] == 16) { + $this->addSpoilsItem($item['item_id'], $item['item_num'], $account_id); } else { $price = $i['diamond']; if ($time != 0) { @@ -119,6 +121,47 @@ class AddReward { return $item_list; } + public function addSpoilsItem($id, $num, $accountid) + { + $conn = $this->getMysql($accountid); + if (!$conn) { + phpcommon\sendError(ERR_USER_BASE + 1, '没有这个玩家'); + die(); + } + $row = $conn->execQueryOne('SELECT num FROM bag WHERE accountid=:accountid AND id=:id;', + array( + ':accountid' => $accountid, + 'id' => $id + )); + if (!$row && $id != 0) { + $ret = $conn->execScript('INSERT INTO bag(accountid, id, color_id, status, num, active_time, create_time, modify_time) ' . + ' VALUES(:account_id, :id, 0, 1, :num, 0, :create_time, :modify_time) ' . + ' ON DUPLICATE KEY UPDATE accountid=:account_id, id=:id, color_id=0, status=1, num=:num, active_time=0, modify_time=:modify_time;', + array( + ':account_id' => $accountid, + ':id' => $id, + ':num' => $num, + ':create_time' => time(), + ':modify_time' => time() + )); + if(!$ret){ + die(); + } + } else { + $ret = $conn->execScript('UPDATE bag SET num=:num, modify_time=:modify_time ' . + ' WHERE accountid=:account_id AND id=:id;', + array( + ':account_id' => $accountid, + ':id' => $id, + ':num' => $row['num'] + $num, + ':modify_time' => time() + )); + if (!$ret) { + die(); + } + } + } + public function getCoinNum($accountid) { $conn = $this->getMysql($accountid); diff --git a/webapp/classes/Quest.php b/webapp/classes/Quest.php index 5955e97..e4c53dd 100644 --- a/webapp/classes/Quest.php +++ b/webapp/classes/Quest.php @@ -132,5 +132,119 @@ class Quest{ } } } + + //提交假日活动任务 + public function flushHolidayQuest($quest_id, $quest_num, $account_id) + { + $conn = $this->getMysql($account_id); + if (!$conn) { + return; + } + $user_db = $this->readHolidayDB($account_id); + if (!$user_db || empty($user_db)) { + return; + } + $id = $quest_id; + $flag = 0; + foreach ($user_db['quest_list'] as &$user) { + if (isset($user['quest_list']) && !empty($user['quest_list'])) { + foreach ($user['quest_list'] as &$us) { + if ($us['id'] != $id || $us['status'] != 0) { + continue; + } + if ($id == 72009) { + if($quest_num <= $us['condition']) { + $us['status'] = 1; + $flag = 1; + } + } else { + $us['num'] = $us['num'] + $quest_num; + if ($us['num'] >= $us['condition']) { + $us['status'] = 1; + $flag = 1; + } + } + } + } + } + $this->saveHolidayDB($account_id, $user_db); + if ($flag == 1 && $id != 72010) { + $this->flushAllQuest($account_id); + } + } + + public function flushAllQuest($account_id) + { + $conn = $this->getMysql($account_id); + if (!$conn) { + return; + } + $user_db = $this->readHolidayDB($account_id); + if (!$user_db || empty($user_db)) { + return; + } + $id = 72010; + foreach ($user_db['quest_list'] as &$user) { + if (isset($user['quest_list']) && !empty($user['quest_list'])) { + foreach ($user['quest_list'] as &$us) { + if ($us['id'] != $id || $us['status'] != 0) { + continue; + } + $us['num'] = $us['num'] + 1; + if ($us['num'] >= $us['condition']) { + $us['status'] = 1; + } + } + } + } + $this->saveHolidayDB($account_id, $user_db); + } + + protected function readHolidayDB($account_id) { + $conn = $this->getMysql($account_id); + $row = $conn->execQueryOne('SELECT blobdata FROM holiday WHERE accountid=:accountid;', + array( + ':accountid' => $account_id + )); + if (!empty($row)) { + $hol_db_str = $row['blobdata']; + $hol_db = json_decode($hol_db_str, true); + return $hol_db; + } else { + return null; + } + } + + protected function saveHolidayDB($account_id, $hol_db) { + $conn = $this->getMysql($account_id); + $row = $conn->execQueryOne('SELECT accountid FROM holiday WHERE accountid=:accountid;', + array( + ':accountid' => $account_id + )); + $hol_db_str = ""; + if (!empty($hol_db)) { + $hol_db_str = json_encode($hol_db); + } + if (!empty($row)) { + //update + $row = $conn->execScript('UPDATE holiday SET blobdata=:blobdata, modify_time=:modify_time WHERE accountid=:accountid;', + array( + ':accountid' => $account_id, + ':blobdata' => $hol_db_str, + ':modify_time' => time() + )); + } else { + //insert + $row = $conn->execScript('INSERT INTO holiday(accountid, blobdata, create_time, modify_time) ' . + ' VALUES(:account_id, :blobdata, :create_time, :modify_time) ' . + ' ON DUPLICATE KEY UPDATE accountid=:account_id, blobdata=:blobdata, modify_time=:modify_time;', + array( + ':account_id' => $account_id, + ':blobdata' => $hol_db_str, + ':create_time' => time(), + ':modify_time' => time(), + )); + } + } } ?> diff --git a/webapp/controller/ActivityController.class.php b/webapp/controller/ActivityController.class.php index 4703236..52e8e6c 100644 --- a/webapp/controller/ActivityController.class.php +++ b/webapp/controller/ActivityController.class.php @@ -426,6 +426,7 @@ class ActivityController{ $item_list = array(); $quest = new classes\Quest(); $quest->triggerQuest(71004, 1, 1, $account_id); + $quest->flushHolidayQuest(72004, 1, $account_id); array_push($item_list,array( 'item_id' => $item_id, 'item_num' => $item_num, @@ -714,7 +715,7 @@ class ActivityController{ } $quest = new classes\Quest(); $quest->triggerQuest(71004, 1, 1, $account_id); - + $quest->flushHolidayQuest(72004, 1, $account_id); foreach ($user_db['drawtable_list'] as $draw) { if ($draw['key'] == $key - 1) { $item_id = $draw['item_id']; @@ -902,6 +903,7 @@ class ActivityController{ $item_list = array(); $quest = new classes\Quest(); $quest->triggerQuest(71004, 1, 1, $account_id); + $quest->flushHolidayQuest(72004, 1, $account_id); array_push($item_list,array( 'item_id' => $item_id, 'item_num' => $item_num, @@ -1202,6 +1204,7 @@ class ActivityController{ $diamond_num = $addreward->getDiamondNum($account_id); $quest = new classes\Quest(); $quest->triggerQuest(71004, 1, 1, $account_id); + $quest->flushHolidayQuest(72004, 1, $account_id); echo json_encode(array( 'errcode' => 0, 'errmsg'=> '', diff --git a/webapp/controller/AdditemController.class.php b/webapp/controller/AdditemController.class.php index 44ef8f5..a17778d 100644 --- a/webapp/controller/AdditemController.class.php +++ b/webapp/controller/AdditemController.class.php @@ -100,7 +100,7 @@ class AdditemController{ if ($it['type'] == 12) { $this->addEquip($item_id, $item_num, $time, $accountid); } else { - if ($it['type'] == 10 || $it['type'] == 11) { + if ($it['type'] == 10 || $it['type'] == 11 || $it['type'] == 16) { $item_num = $row['num'] + $item_num; } else { $item_num = 1; diff --git a/webapp/controller/FesActivityController.class.php b/webapp/controller/FesActivityController.class.php index 3c0f9d8..aab13af 100644 --- a/webapp/controller/FesActivityController.class.php +++ b/webapp/controller/FesActivityController.class.php @@ -2,6 +2,8 @@ require 'classes/AddReward.php'; require_once 'metatable/activity.php'; +require_once 'metatable/activityplus.php'; +require 'classes/Quest.php'; class FesActivityController{ @@ -287,10 +289,6 @@ class FesActivityController{ } //更新奖励状态 $this->saveFesActDB($account_id, $user_db); - // if (empty($reward) || !$reward) { - // phpcommon\sendError(ERR_USER_BASE + 5, '没有这个奖励'); - // return; - // } $item_list = array(); $all_item_list = array(); $addreward = new classes\AddReward(); @@ -330,5 +328,484 @@ class FesActivityController{ 'id' => $id, )); } + + + + protected function readHolidayDB($account_id) { + $conn = $this->getMysql($account_id); + $row = $conn->execQueryOne('SELECT blobdata FROM holiday WHERE accountid=:accountid;', + array( + ':accountid' => $account_id + )); + if (!empty($row)) { + $hol_db_str = $row['blobdata']; + $hol_db = json_decode($hol_db_str, true); + return $hol_db; + } else { + return null; + } + } + + protected function saveHolidayDB($account_id, $hol_db) { + $conn = $this->getMysql($account_id); + $row = $conn->execQueryOne('SELECT accountid FROM holiday WHERE accountid=:accountid;', + array( + ':accountid' => $account_id + )); + $hol_db_str = ""; + if (!empty($hol_db)) { + $hol_db_str = json_encode($hol_db); + } + if (!empty($row)) { + //update + $row = $conn->execScript('UPDATE holiday SET blobdata=:blobdata, modify_time=:modify_time WHERE accountid=:accountid;', + array( + ':accountid' => $account_id, + ':blobdata' => $hol_db_str, + ':modify_time' => time() + )); + } else { + //insert + $row = $conn->execScript('INSERT INTO holiday(accountid, blobdata, create_time, modify_time) ' . + ' VALUES(:account_id, :blobdata, :create_time, :modify_time) ' . + ' ON DUPLICATE KEY UPDATE accountid=:account_id, blobdata=:blobdata, modify_time=:modify_time;', + array( + ':account_id' => $account_id, + ':blobdata' => $hol_db_str, + ':create_time' => time(), + ':modify_time' => time(), + )); + } + } + + //假日活动 + public function holidayInfo() + { + $account_id = $_REQUEST['account_id']; + //登录校验 + $login = loginVerify($account_id, $_REQUEST['session_id']); + if (!$login) { + phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); + return; + } + $conn = $this->getMysql($account_id); + if (!$conn) { + phpcommon\sendError(ERR_USER_BASE + 2, '没有这个玩家'); + return; + } + //假日活动信息 + $this->getHolidayInfo($account_id); + $user_db = $this->readHolidayDB($account_id); + echo json_encode(array( + 'errcode' => 0, + 'errmsg'=> '', + 'quest_list' => $user_db['quest_list'], + 'exchange_list' => $user_db['exchange_list'], + )); + } + + protected function getHolidayInfo($account_id) + { + $user_db = $this->readHolidayDB($account_id); + //$quest_list = $this->getActQuestInfo(3, array(), $account_id); + //$exchange_list = $this->getActExchangeInfo(9, array(), $account_id); + $quest_list = $this->getActQuestInfo(3, $user_db['quest_list'], $account_id); + $exchange_list = $this->getActExchangeInfo(9, $user_db['exchange_list'], $account_id); + $hol_db = array( + 'quest_list' => $quest_list, + 'exchange_list' => $exchange_list, + ); + $this->saveHolidayDB($account_id, $hol_db); + } + + protected function insertQuestInfo($act, $id, $num, $account_id) + { + $info_list = array(); + $reward = array(); + $quest_list = $this->actQuestList($act['condition'], $account_id); + $reward = $this->actQuestRewardList($act['reward']); + array_push($info_list, array( + 'id' => $id, + 'idx' => $num, + 'quest_list' => $quest_list, + 'reward' => $reward, + 'time' => time(), + 'act' => $act, + )); + return $info_list; + } + + protected function updateQuestInfo($act, $info_list, $id, $num, $account_id) + { + $reward = array(); + $temp_list = array(); + $quest_list = $this->actQuestList($act['condition'], $account_id); + $reward = $this->actQuestRewardList($act['reward']); + //$info_list[$num] = $temp_list; + array_push($temp_list, array( + 'id' => $id, + 'idx' => $num, + 'quest_list' => $quest_list, + 'reward' => $reward, + 'time' => time(), + 'act' => $act, + )); + $info_list = $temp_list; + return $info_list; + } + + + protected function actQuestList($quest, $account_id) + { + $task = new classes\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] == 72001 || + $q[0] == 72010) { + $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; + } + + public function getActQuestInfo($type, $info_list, $account_id) + { + $quest = new classes\Quest(); + $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 (time() < strtotime($act['time1']) || time() > strtotime($act['time2'])) { + array_push($info_list, array()); + $num++; + continue; + } + $info_list = $this->insertQuestInfo($act, $i['id'], $num, $account_id); + $num++; + } + } else { + foreach ($id_list as $i) { + $act = metatable\getActPlusById($i['id']); + if (!$act) { + return null; + } + if (time() < strtotime($act['time1']) || time() > strtotime($act['time2'])) { + if (!empty($info_list[$num]) && $info_list[$num]) { + $info_list[$num] = array(); + } + } else { + if (empty($info_list[$num]) || !$info_list[$num]) { + $info_list = $this->updateQuestInfo($act, $info_list, $i['id'], $num, $account_id); + } else { + if (phpcommon\getdayseconds(time()) - phpcommon\getdayseconds($info_list[$num]['time']) > 0) { + if ($act['isreset'] == 1) { + $quest_list = $this->actQuestList($act['condition'], $account_id); + $info_list[$num]['quest_list'] = $quest_list; + } + $info_list[$num]['time'] = time(); + } + } + } + $num++; + } + } + return $info_list; + } + + protected function actExchangeList($exc) + { + $exc_conf = $this->getExplode($exc); + $exc_list = array(); + foreach ($exc_conf as $e) { + $status = 0; + $num = 0; + array_push($exc_list, array( + 'id' => $e[0], + 'num' => $num, + 'condition' => $e[1], + 'status' => $status, + )); + } + return $exc_list; + } + + public function actExchangeRewardList($exc) + { + $exc_list = explode('|', $exc); + return $exc_list; + } + + protected function insertExchangeInfo($act, $id, $num) + { + $info_list = array(); + $exc_list = $this->actExchangeList($act['condition']); + $reward = $this->actExchangeRewardList($act['reward']); + $times_list = explode('|', $act['exchange_times']); + array_push($info_list, array( + 'id' => $id, + 'idx' => $num, + 'exc_list' => $exc_list, + 'reward' => $reward, + 'time' => time(), + 'act' => $act, + 'times_list' => $times_list, + )); + return $info_list; + } + + protected function updateExchangeInfo($act, $info_list, $id, $num) + { + $temp_list = array(); + $exc_list = $this->actExchangeList($act['condition']); + $reward = $this->actExchangeRewardList($act['reward']); + $times_list = explode('|', $act['exchange_times']); + array_push($temp_list, array( + 'id' => $id, + 'idx' => $num, + 'exc_list' => $exc_list, + 'reward' => $reward, + 'time' => time(), + 'act' => $act, + 'times_list' => $times_list, + )); + $info_list = $temp_list; + return $info_list; + } + + public function getActExchangeInfo($type, $info_list, $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 (time() < strtotime($act['time1']) || time() > strtotime($act['time2'])) { + array_push($info_list, array()); + $num++; + continue; + } + $info_list = $this->insertExchangeInfo($act, $i['id'], $num); + $num++; + } + } else { + foreach ($id_list as $i) { + $act = metatable\getActPlusById($i['id']); + if (!$act) { + return null; + } + if (time() < strtotime($act['time1']) || time() > strtotime($act['time2'])) { + if (!empty($info_list[$num]) && $info_list[$num]) { + $info_list[$num] = array(); + } + } else { + if (empty($info_list[$num]) || !$info_list[$num]) { + $info_list = $this->updateExchangeInfo($act, $info_list, $i['id'], $num); + } + } + $num++; + } + } + return $info_list; + } + + //假日活动奖励 + public function holidayReward() + { + $account_id = $_REQUEST['account_id']; + //登录校验 + $login = loginVerify($account_id, $_REQUEST['session_id']); + if (!$login) { + phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); + return; + } + $conn = $this->getMysql($account_id); + if (!$conn) { + phpcommon\sendError(ERR_USER_BASE + 2, '没有这个玩家'); + return; + } + $user_db = $this->readHolidayDB($account_id); + if (!$user_db || empty($user_db)) { + phpcommon\sendError(ERR_USER_BASE + 2, '没有这个玩家'); + return; + } + $type = $_REQUEST['type']; + $id = $_REQUEST['id']; + $idx = $_REQUEST['idx']; + + $addreward = new classes\AddReward(); + $item_list = $this->getHolidayRewardList($account_id, $user_db, $type, $id, $idx); + $all_item_list = array(); + foreach ($item_list as $item) { + $items = $addreward->addReward($item['item_id'], $item['item_num'], $account_id, $item['time'], 0); + foreach($items as $i) { + array_push($all_item_list, array( + 'item_id' => $i['item_id'], + 'item_num' => $i['item_num'], + 'time' => $i['time'], + )); + } + } + $coin_num = $addreward->getCoinNum($account_id); + $diamond_num = $addreward->getDiamondNum($account_id); + echo json_encode(array( + 'errcode' => 0, + 'errmsg' => '', + 'item_list' => $item_list, + 'coin_nums' => $coin_num, + 'diamond_nums' => $diamond_num, + 'all_item_list' => $all_item_list, + )); + } + + protected function getHolidayRewardList($account_id, $user_db, $type, $id, $idx) + { + $item_list = array(); + if ($type == 3) { + $item_list = $this->getQuestReward($account_id, $user_db, $type, $id, $idx); + } else if ($type == 9) { + $item_list = $this->getExchangeReward($account_id, $user_db, $type, $id, $idx); + } + return $item_list; + } + + protected function getQuestReward($account_id, $user_db, $type, $id, $idx) + { + $item_list = array(); + foreach ($user_db['quest_list'] as &$us) { + if ($us['id'] != $id) { + continue; + } + $num = 0; + foreach ($us['quest_list'] as &$q) { + if ($q['id'] != $idx || $q['status'] != 1) { + $num++; + continue; + } + array_push($item_list, array( + 'item_id' => $us['reward'][$num]['item_id'], + 'item_num' => $us['reward'][$num]['item_num'], + 'time' => $us['reward'][$num]['time'], + )); + $q['status'] = 2; + $num++; + break; + } + break; + } + $this->saveHolidayDB($account_id, $user_db); + return $item_list; + } + + protected function getExchangeReward($account_id, $user_db, $type, $id, $idx) + { + $item_list = array(); + foreach ($user_db['exchange_list'] as &$us) { + if ($us['id'] != $id) { + continue; + } + $num = 0; + foreach ($us['exc_list'] as &$q) { + if ($num != $idx || $q['status'] == 1) { + $num++; + continue; + } + $item_list = $this->subItem($q['id'], $q['condition'], $us['reward'][$num], $account_id); + $q['status'] = 0; + $q['num']++; + if ($q['num'] >= $us['times_list'][$num]) { + $q['status'] = 1; + } + $num++; + break; + } + break; + } + $this->saveHolidayDB($account_id, $user_db); + return $item_list; + } + + protected function subItem($id, $num, $arr, $account_id) + { + $item_list = array(); + $conn = $this->getMysql($account_id); + if (!$conn) { + return null; + } + $row = $conn->execQueryOne('SELECT num FROM bag WHERE accountid=:accountid AND id=:id;', + array( + ':accountid' => $account_id, + 'id' => $id + )); + if (!$row || $row['num'] - $num < 0) { + phpcommon\sendError(ERR_USER_BASE + 3, '道具不足'); + die(); + return null; + } + $ret = $conn->execScript('UPDATE bag SET num=:num, modify_time=:modify_time ' . + ' WHERE accountid=:accountid AND id =:id;', + array( + ':accountid' => $account_id, + ':id' => $id, + ':num' => $row['num'] - $num, + ':modify_time' => time() + )); + if (!$ret) { + die(); + return null; + } + $arr1 = explode(';', $arr); + $arr2 = array(); + foreach ($arr1 as $a) { + $mul = explode(':', $a); + array_push($arr2, $mul); + } + + foreach ($arr2 as $a2) { + array_push ($item_list, array( + 'item_id' => $a2[0], + 'item_num' => $a2[1], + 'time' => $a2[2], + )); + } + return $item_list; + } } ?> diff --git a/webapp/controller/GameOverController.class.php b/webapp/controller/GameOverController.class.php index c3a41b2..f0d6d26 100644 --- a/webapp/controller/GameOverController.class.php +++ b/webapp/controller/GameOverController.class.php @@ -225,6 +225,19 @@ class GameOverController{ return; } $item_list = $user_db['first_list']; + if (isset($_REQUEST['data'])) { + $arr = json_decode($_REQUEST['data'], true); + if ($arr) { + foreach ($arr as $a) { + $val = $a['values']; + array_push($item_list, array( + 'item_id' => $val[0], + 'item_num' => $val[1], + 'time' => 0, + )); + } + } + } } foreach($item_list as $it) { $items = $addreward->addReward($it['item_id'], $it['item_num'], $account_id, $it['time'], 0); @@ -497,7 +510,7 @@ class GameOverController{ $conn = $this->getMysql($account_id); if (!$conn) { phpcommon\sendError(ERR_USER_BASE + 2, '没有这个玩家'); - die(); + return; } $rowUser = $conn->execQueryOne('SELECT diamond_num FROM user WHERE accountid=:accountid;', array( @@ -521,4 +534,54 @@ class GameOverController{ 'diamond_nums' => $diamond_num, )); } + + public function addSpoilsItems() + { + $account_id = $_REQUEST['account_id']; + //登录校验 + $login = loginVerify($account_id, $_REQUEST['session_id']); + if (!$login) { + phpcommon\sendError(ERR_USER_BASE + 1, 'session无效'); + return; + } + $conn = $this->getMysql($account_id); + if (!$conn) { + phpcommon\sendError(ERR_USER_BASE + 2, '没有这个玩家'); + return; + } + $arr = json_decode($_REQUEST['data'], true); + $addreward = new classes\AddReward(); + $item_list = array(); + $all_item_list = array(); + if (!$arr) { + phpcommon\sendError(ERR_USER_BASE + 3, '没有这个道具'); + return; + } + foreach ($arr as $a) { + $val = $a['values']; + array_push($item_list, array( + 'item_id' => $val[0], + 'item_num' => $val[1], + 'time' => 0, + )); + $items = $addreward->addReward($val[0], $val[1], $account_id, 0, 0); + foreach($items as $it) { + array_push($all_item_list, array( + 'item_id' => $it['item_id'], + 'item_num' => $it['item_num'], + 'time' => $it['time'], + )); + } + } + $coin_num = $addreward->getCoinNum($account_id); + $diamond_num = $addreward->getDiamondNum($account_id); + echo json_encode(array( + 'errcode' => 0, + 'errmsg'=> '', + 'coin_nums' => $coin_num, + 'diamond_nums' => $diamond_num, + 'item_list' => $item_list, + 'all_item_list' => $all_item_list + )); + } } diff --git a/webapp/controller/RoleController.class.php b/webapp/controller/RoleController.class.php index 761dc7b..53ed3c2 100644 --- a/webapp/controller/RoleController.class.php +++ b/webapp/controller/RoleController.class.php @@ -677,11 +677,18 @@ class RoleController{ $quest->triggerQuest(QUEST_DAY_ALIVE, 1, (int)($alive_time / 1000 / 60), $account_id); $quest->triggerQuest(QUEST_DAY_HARM, 1, $harm, $account_id); $quest->triggerQuest(QUEST_DAY_KILL, 1, $kills, $account_id); + + $quest->flushHolidayQuest(72003, 1, $account_id); + $quest->flushHolidayQuest(72006, $harm, $account_id); + $quest->flushHolidayQuest(72007, $kills, $account_id); + $quest->flushHolidayQuest(72008, (int)($alive_time / 1000 / 60), $account_id); if ($team_status == 1 && $rank <= 5) { $quest->triggerQuest(QUEST_DAY_RANK, 1, 1, $account_id); + $quest->flushHolidayQuest(72009, $rank, $account_id); } if ($team_status == 1) { $quest->triggerQuest(QUEST_DAY_TEAM, 1, 1, $account_id); + $quest->flushHolidayQuest(72005, 1, $account_id); } echo json_encode(array( @@ -968,13 +975,18 @@ class RoleController{ $quest->triggerQuest(QUEST_DAY_HARM, 1, $harm, $account_id); $quest->triggerQuest(QUEST_DAY_KILL, 1, $kills, $account_id); $quest->triggerQuest(QUEST_DAY_HELP, 1, $rescue_member, $account_id); + $quest->flushHolidayQuest(72003, 1, $account_id); + $quest->flushHolidayQuest(72006, $harm, $account_id); + $quest->flushHolidayQuest(72007, $kills, $account_id); + $quest->flushHolidayQuest(72008, (int)($alive_time / 1000 / 60), $account_id); if ($team_status == 1 && $rank <= 5) { $quest->triggerQuest(QUEST_DAY_RANK, 1, 1, $account_id); + $quest->flushHolidayQuest(72009, $rank, $account_id); } if ($team_status == 1) { $quest->triggerQuest(QUEST_DAY_TEAM, 1, 1, $account_id); + $quest->flushHolidayQuest(72005, 1, $account_id); } - echo json_encode(array( 'errcode' => 0, 'errmsg' => '', @@ -1044,6 +1056,7 @@ class RoleController{ } $quest = new classes\Quest(); $quest->triggerQuest(QUEST_DAY_SHARE, 1, 1, $account_id); + $quest->flushHolidayQuest(72002, 1, $account_id); echo json_encode(array( 'errcode' => 0, 'errmsg' => '', diff --git a/webapp/metatable/activityplus.php b/webapp/metatable/activityplus.php new file mode 100644 index 0000000..88042cf --- /dev/null +++ b/webapp/metatable/activityplus.php @@ -0,0 +1,54 @@ + $act['id'], + )); + } + return $info_list; +}