|
@@ -69,19 +69,17 @@ class TaskProc {
|
|
|
if (null == $userInfo->taskCardShop) { # 防御
|
|
|
$userInfo->taskCardShop = new Info_TaskCard_Shop();
|
|
|
}
|
|
|
- $nextTs = $userInfo->taskCardShop->lastRefreshTs + GameConfig::globalsettings()->TaskCardShop_Refresh_TS;
|
|
|
- if ($nextTs <= now()) { # 已经到达刷新时间, 刷新任务卡
|
|
|
+ if (null == $userInfo->taskCardShop->curCards || count($userInfo->taskCardShop->curCards) < 1) {
|
|
|
$arr = (array) GameConfig::taskcard_shop(); # 奖池配置
|
|
|
$arr = self::FilterPrizepool($req, $arr); # 利用玩家等级进行过滤
|
|
|
- $rewardStr = "";
|
|
|
- $err = self::Dice($arr, self::TaskCardShop_Refresh_ItemNum, $rewardStr); # 获得随机结果
|
|
|
+ $reward = ArrayInit();
|
|
|
+ $err = self::Dice($arr, self::TaskCardShop_Refresh_ItemNum, $reward); # 获得随机结果
|
|
|
my_Assert(ErrCode::ok == $err, $err);
|
|
|
-
|
|
|
- $userInfo->taskCardShop->curCards = $rewardStr; # 更新任务卡列表
|
|
|
+ $userInfo->taskCardShop->curCards = $reward; # 更新任务卡列表
|
|
|
$req->userInfo->game = $userInfo;
|
|
|
UserProc::updateUserInfo(); # 回写玩家数据
|
|
|
}
|
|
|
- return \Resp::ok(array('taskCardShop' => $userInfo->taskCardShop)); # 返回最新任务卡列表
|
|
|
+ return Resp::ok(array('taskCardShop' => $userInfo->taskCardShop)); # 返回最新任务卡列表
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -93,12 +91,30 @@ class TaskProc {
|
|
|
$shopItemMo = GameConfig::taskcard_shop_getItem($typeId);
|
|
|
my_Assert(null != $shopItemMo, ErrCode::err_const_no); # 常量异常
|
|
|
my_Assert($num == 1, ErrCode::paras_err); # 数量异常
|
|
|
- my_Assert($shopItemMo->pricetype == 1, ErrCode::pay_m_type_err); # 定价类型异常
|
|
|
$userInfo = $req->userInfo->game;
|
|
|
- my_Assert($userInfo->Consume_Cash($userInfo, $shopItemMo->price), ErrCode::notenough_cash_msg); # 扣除费用
|
|
|
+ switch ($shopItemMo->pricetype) {
|
|
|
+ case 0: # 人民币
|
|
|
+ Err(ErrCode::err_method_notimplement);
|
|
|
+// my_Assert(Data_UserGame::Consume_Cash($userInfo->baseInfo, $shopItemMo->price), ErrCode::notenough_cash_msg); # 扣除费用
|
|
|
+ break;
|
|
|
+ case 1: # 钻石
|
|
|
+ my_Assert(Data_UserGame::Consume_Cash($userInfo->baseInfo, $shopItemMo->price), ErrCode::notenough_cash_msg); # 扣除费用
|
|
|
+ break;
|
|
|
+ case 2: # 金币
|
|
|
+ my_Assert(Data_UserGame::Consume_Gold($userInfo->baseInfo, $shopItemMo->price), ErrCode::notenough_gold_msg); # 扣除费用
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ Err(ErrCode::pay_m_type_err); # 定价类型异常
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
$cid = StoreProc::PutTaskCardInStore($typeId, $req); # 添加任务卡到背包
|
|
|
+ UserProc::updateUserInfo();
|
|
|
NormalEventProc::OnTaskBag_new_Card($cid, $num); # 播放获得任务卡事件
|
|
|
- return Resp::ok(array('store' => $req->userInfo->game->store)); # 返回成功
|
|
|
+ return Resp::ok(array(
|
|
|
+ 'gold' => $req->userInfo->game->baseInfo->gold,
|
|
|
+ 'cash' => $req->userInfo->game->baseInfo->cash,
|
|
|
+ 'store' => $req->userInfo->game->store)); # 返回成功
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -108,20 +124,24 @@ class TaskProc {
|
|
|
public static function OnTaskCardShopRefresh($req) {
|
|
|
$cost = GameConfig::globalsettings()->TaskCardShop_Refresh_Cash; # 消耗
|
|
|
$userInfo = $req->userInfo->game;
|
|
|
- my_Assert($userInfo->Consume_Cash($userInfo, $cost), ErrCode::notenough_cash_msg); # 扣除费用
|
|
|
+// var_dump(Data_UserGame::Consume_Cash($userInfo->baseInfo, $cost));
|
|
|
+ my_Assert(Data_UserGame::Consume_Cash($userInfo->baseInfo, $cost), ErrCode::notenough_cash_msg); # 扣除费用
|
|
|
// 刷新任务卡
|
|
|
$arr = (array) GameConfig::taskcard_shop(); # 奖池配置
|
|
|
$arr = self::FilterPrizepool($req, $arr); # 利用玩家等级进行过滤
|
|
|
- $rewardStr = "";
|
|
|
- $err = self::Dice($arr, self::TaskCardShop_Refresh_ItemNum, $rewardStr); # 获得随机结果
|
|
|
+ $reward = ArrayInit();
|
|
|
+ $err = self::Dice($arr, self::TaskCardShop_Refresh_ItemNum, $reward); # 获得随机结果
|
|
|
my_Assert(ErrCode::ok == $err, $err);
|
|
|
if (null == $userInfo->taskCardShop) { # 防御
|
|
|
$userInfo->taskCardShop = new Info_TaskCard_Shop();
|
|
|
}
|
|
|
- $userInfo->taskCardShop->curCards = $rewardStr; # 更新任务卡列表
|
|
|
+ $userInfo->taskCardShop->curCards = $reward; # 更新任务卡列表
|
|
|
$req->userInfo->game = $userInfo;
|
|
|
UserProc::updateUserInfo(); # 回写玩家数据
|
|
|
- return \Resp::ok(array('taskCardShop' => $userInfo->taskCardShop)); # 返回最新任务卡列表
|
|
|
+ return Resp::ok(array(
|
|
|
+ 'gold' => $req->userInfo->game->baseInfo->gold,
|
|
|
+ 'cash' => $req->userInfo->game->baseInfo->cash,
|
|
|
+ 'taskCardShop' => $userInfo->taskCardShop)); # 返回最新任务卡列表
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -141,9 +161,9 @@ class TaskProc {
|
|
|
* 投骰子
|
|
|
* @param assoc_array $arr 抽奖物品概率
|
|
|
* @param int $number 连抽次数
|
|
|
- * @return string itemid,num;itemid,num;...
|
|
|
+ * @return array[] itemids
|
|
|
*/
|
|
|
- static function Dice($arr, $number, &$rewardstr) {
|
|
|
+ static function Dice($arr, $number, &$reward) {
|
|
|
$max = 0; # 计算物品权重总和
|
|
|
array_walk($arr, function ($value) use(&$max) {
|
|
|
$max += $value->probability;
|
|
@@ -168,7 +188,7 @@ class TaskProc {
|
|
|
}
|
|
|
$reward[] = $rew->typeId;
|
|
|
} # for end
|
|
|
- $rewardstr = implode(',', $reward);
|
|
|
+// $rewardstr = implode(',', $reward);
|
|
|
return ErrCode::ok;
|
|
|
}
|
|
|
|
|
@@ -296,7 +316,10 @@ class TaskProc {
|
|
|
NormalEventProc::OnTaskCard_Reward($taskCard->mo()->reward, null); # 带入事件
|
|
|
StlUtil::dictRemove($req->userInfo->game->store->taskcards, $taskCardUID); # 移除任务卡
|
|
|
UserProc::updateUserInfo(); # 回存玩家数据
|
|
|
- return Resp::ok(array('store' => $req->userInfo->game->store)); # 返回值更新背包
|
|
|
+ return Resp::ok(array(
|
|
|
+ 'gold' => $req->userInfo->game->baseInfo->gold,
|
|
|
+ 'cash' => $req->userInfo->game->baseInfo->cash,
|
|
|
+ 'store' => $req->userInfo->game->store)); # 返回值更新背包
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -477,7 +500,7 @@ class TaskProc {
|
|
|
}
|
|
|
}
|
|
|
if ($bUpdate) {
|
|
|
- NormalEventProc::OnTaskCardStep_Complete(null, null); # 任务有更新
|
|
|
+ Resp::addTag("isTaskUpdated", true); # 附加tag信息, 任务有更新
|
|
|
CornerSignEventProc::OnTask_Plot_new(req());
|
|
|
}
|
|
|
}
|
|
@@ -705,20 +728,19 @@ class TaskProc {
|
|
|
}
|
|
|
foreach ($task->curSteps as &$tsp) { # 初期里面只有一个任务
|
|
|
$tsp = new Ins_TaskStep($tsp);
|
|
|
- $bUpdate = $tsp->check_new($taskParam);
|
|
|
-
|
|
|
- if ($bUpdate) {
|
|
|
- NormalEventProc::OnTaskCardStep_Complete($task->uid, $tsp->typeId); # 广播任务步骤完成事件
|
|
|
+ if ($tsp->check_new($taskParam)) {
|
|
|
+ $bUpdate = true;
|
|
|
$tsp->propel($taskParam);
|
|
|
-
|
|
|
+ NormalEventProc::OnTaskCardStep_Process($task->uid, $tsp->typeId); # 任务进度更新
|
|
|
if ($tsp->isFinish()) {
|
|
|
$task->state = Enum_TaskCardStateType::finish;
|
|
|
+ NormalEventProc::OnTaskCardStep_Complete($task->uid, $tsp->typeId); # 广播任务步骤完成事件
|
|
|
NormalEventProc::OnTaskCard_Finish($task->uid, null); # 广播卡完成事件
|
|
|
}
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
if ($bUpdate) { # 带回数据到客户端
|
|
|
req()->userInfo->game->store->taskcards = $tasks;
|
|
|
UserProc::updateUserInfo(); # 更新玩家数据
|
|
@@ -729,7 +751,6 @@ class TaskProc {
|
|
|
|
|
|
static function OnKillMonster($monsterID, $num) {
|
|
|
$taskParam = new Ins_TaskEventArgs(Enum_TaskCmdType::KillMonster, Enum_PropelType::add, $num, array($monsterID));
|
|
|
- var_dump($taskParam);
|
|
|
return self::CheckTaskCardConditions($taskParam);
|
|
|
}
|
|
|
|