info('开始创建示例合成配方...'); try { DB::beginTransaction(); // 创建木板制作配方 $this->createWoodPlankRecipe(); // 创建高级木材加工配方 $this->createAdvancedWoodRecipe(); DB::commit(); $this->info('示例配方创建完成!'); } catch (\Exception $e) { DB::rollBack(); $this->error('创建失败: ' . $e->getMessage()); return 1; } return 0; } /** * 创建木板制作配方 */ private function createWoodPlankRecipe() { $this->info('创建木板制作配方...'); // 1. 创建消耗组 $consumeGroup = GameConsumeGroup::create([ 'name' => '木板制作消耗', 'code' => 'wood_plank_consume', 'description' => '制作木板需要消耗的材料', ]); // 添加消耗项:1个木材 GameConsumeItem::create([ 'group_id' => $consumeGroup->id, 'consume_type' => 1, // 物品类型 'target_id' => 33, // 木材ID 'quantity' => 1, ]); // 2. 创建奖励组 $rewardGroup = GameRewardGroup::create([ 'name' => '木板制作奖励', 'code' => 'wood_plank_reward', 'description' => '制作木板获得的奖励', 'is_random' => false, // 全部发放 ]); // 添加奖励项:4个木板(假设木板ID为34) GameRewardItem::create([ 'group_id' => $rewardGroup->id, 'reward_type' => 1, // 物品类型 'target_id' => 34, // 木板ID(需要先创建木板物品) 'quantity' => 4, 'weight' => 1.0, 'is_guaranteed' => true, ]); // 3. 创建配方 ItemRecipe::create([ 'name' => '木板制作', 'code' => 'wood_plank_craft', 'description' => '将木材加工成木板,是基础的木工技能', 'consume_group_id' => $consumeGroup->id, 'reward_group_id' => $rewardGroup->id, 'condition_group_id' => null, // 无条件,默认解锁 'success_rate' => 1.0, // 100%成功率 'cooldown_seconds' => 0, 'sort_order' => 100, 'is_active' => true, ]); $this->line(' - 木板制作配方创建完成'); } /** * 创建高级木材加工配方 */ private function createAdvancedWoodRecipe() { $this->info('创建高级木材加工配方...'); // 1. 创建消耗组 $consumeGroup = GameConsumeGroup::create([ 'name' => '高级木材加工消耗', 'code' => 'advanced_wood_consume', 'description' => '高级木材加工需要消耗的材料', ]); // 添加消耗项:3个木材 + 10金币 GameConsumeItem::create([ 'group_id' => $consumeGroup->id, 'consume_type' => 1, // 物品类型 'target_id' => 33, // 木材ID 'quantity' => 3, ]); GameConsumeItem::create([ 'group_id' => $consumeGroup->id, 'consume_type' => 2, // 货币类型 'target_id' => 1, // 金币ID 'quantity' => 10, ]); // 2. 创建奖励组 $rewardGroup = GameRewardGroup::create([ 'name' => '高级木材加工奖励', 'code' => 'advanced_wood_reward', 'description' => '高级木材加工获得的奖励', 'is_random' => true, // 随机发放 'random_count' => 1, // 随机选择1个奖励 ]); // 添加奖励项:随机获得高级木材或特殊木材 GameRewardItem::create([ 'group_id' => $rewardGroup->id, 'reward_type' => 1, // 物品类型 'target_id' => 35, // 高级木材ID(需要先创建) 'quantity' => 2, 'weight' => 70.0, // 70%概率 'is_guaranteed' => false, ]); GameRewardItem::create([ 'group_id' => $rewardGroup->id, 'reward_type' => 1, // 物品类型 'target_id' => 36, // 特殊木材ID(需要先创建) 'quantity' => 1, 'weight' => 30.0, // 30%概率 'is_guaranteed' => false, ]); // 3. 创建条件组 $conditionGroup = GameConditionGroup::create([ 'name' => '高级木材加工条件', 'code' => 'advanced_wood_condition', 'description' => '解锁高级木材加工的条件', 'logic_type' => 1, // 全部满足 ]); // 添加条件项:玩家等级≥5 GameConditionItem::create([ 'group_id' => $conditionGroup->id, 'condition_type' => 1, // 假设1为玩家等级条件 'target_id' => 0, // 玩家等级不需要target_id 'operator' => 4, // 大于等于 'value' => 5, ]); // 4. 创建配方 ItemRecipe::create([ 'name' => '高级木材加工', 'code' => 'advanced_wood_craft', 'description' => '使用特殊工艺加工木材,有机会获得稀有材料', 'consume_group_id' => $consumeGroup->id, 'reward_group_id' => $rewardGroup->id, 'condition_group_id' => $conditionGroup->id, 'success_rate' => 0.8, // 80%成功率 'cooldown_seconds' => 300, // 5分钟冷却 'sort_order' => 50, 'is_active' => true, ]); $this->line(' - 高级木材加工配方创建完成'); } }