|
|
@@ -99,46 +99,22 @@ class AppGameProtobufResponseListener
|
|
|
$p->setGrade($pet->grade);
|
|
|
$lifeSkills=[];
|
|
|
|
|
|
- // 添加调试信息
|
|
|
- Log::debug('处理宠物生活技能数据', [
|
|
|
- 'user_id' => $user_id,
|
|
|
- 'pet_id' => $pet->id,
|
|
|
- 'pet_class' => get_class($pet),
|
|
|
- 'life_skills_type' => gettype($pet->lifeSkills),
|
|
|
- 'life_skills_count' => count($pet->lifeSkills)
|
|
|
- ]);
|
|
|
-
|
|
|
- foreach ($pet->lifeSkills as $index => $lifeSkill){
|
|
|
- // 添加调试信息
|
|
|
- Log::debug('处理单个生活技能', [
|
|
|
- 'user_id' => $user_id,
|
|
|
- 'pet_id' => $pet->id,
|
|
|
- 'skill_index' => $index,
|
|
|
- 'skill_type' => gettype($lifeSkill),
|
|
|
- 'skill_class' => is_object($lifeSkill) ? get_class($lifeSkill) : 'not_object'
|
|
|
- ]);
|
|
|
-
|
|
|
+ foreach ($pet->lifeSkills as $lifeSkill){
|
|
|
$ls = new \Uraus\Kku\Common\PetLifeSkill();
|
|
|
|
|
|
- // 安全地访问属性
|
|
|
+ // 兼容处理:支持对象和数组两种格式
|
|
|
if (is_object($lifeSkill)) {
|
|
|
+ // 对象格式(正常情况)
|
|
|
$ls->setSkillId($lifeSkill->skillId);
|
|
|
$ls->setCanuse($lifeSkill->canuse);
|
|
|
$ls->setCurnum($lifeSkill->curnum);
|
|
|
$ls->setMaxnum($lifeSkill->maxnum);
|
|
|
} elseif (is_array($lifeSkill)) {
|
|
|
- // 如果是数组,使用数组访问方式
|
|
|
- $ls->setSkillId($lifeSkill['skill_id'] ?? 0);
|
|
|
+ // 数组格式(缓存恢复时的兼容处理)
|
|
|
+ $ls->setSkillId($lifeSkill['skill_id'] ?? $lifeSkill['skillId'] ?? 0);
|
|
|
$ls->setCanuse($lifeSkill['canuse'] ?? false);
|
|
|
$ls->setCurnum($lifeSkill['curnum'] ?? 0);
|
|
|
$ls->setMaxnum($lifeSkill['maxnum'] ?? 0);
|
|
|
-
|
|
|
- Log::warning('生活技能数据是数组而不是对象', [
|
|
|
- 'user_id' => $user_id,
|
|
|
- 'pet_id' => $pet->id,
|
|
|
- 'skill_index' => $index,
|
|
|
- 'skill_data' => $lifeSkill
|
|
|
- ]);
|
|
|
}
|
|
|
|
|
|
$lifeSkills[] = $ls;
|