info('开始创建示例分解规则...'); try { DB::beginTransaction(); // 创建基础物品分解规则 $this->createBasicItemDismantleRule(); // 创建高级装备分解规则 $this->createAdvancedEquipmentDismantleRule(); DB::commit(); $this->info('示例分解规则创建完成!'); } catch (\Exception $e) { DB::rollBack(); $this->error('创建失败: ' . $e->getMessage()); return 1; } return 0; } /** * 创建基础物品分解规则 */ private function createBasicItemDismantleRule() { $this->info('创建基础物品分解规则...'); // 1. 创建奖励组 $rewardGroup = GameRewardGroup::create([ 'name' => '基础物品分解奖励', 'code' => 'basic_item_dismantle_reward', 'description' => '分解基础物品获得的奖励', 'is_random' => false, // 全部发放 ]); // 添加奖励项:获得一些基础材料 GameRewardItem::create([ 'group_id' => $rewardGroup->id, 'reward_type' => 1, // 物品类型 'target_id' => 33, // 木材ID 'quantity' => 1, 'weight' => 1.0, 'is_guaranteed' => true, ]); // 2. 创建分解规则 ItemDismantleRule::create([ 'name' => '基础物品分解', 'code' => 'basic_item_dismantle', 'description' => '分解基础物品,获得原材料', 'item_id' => null, // 通用规则,不限定特定物品 'category_id' => 1, // 假设分类ID为1的是基础物品 'consume_group_id' => null, // 无额外消耗 'reward_group_id' => $rewardGroup->id, 'condition_group_id' => null, // 无条件限制 'priority' => 10, 'sort_order' => 100, 'is_active' => true, ]); $this->line(' - 基础物品分解规则创建完成'); } /** * 创建高级装备分解规则 */ private function createAdvancedEquipmentDismantleRule() { $this->info('创建高级装备分解规则...'); // 1. 创建消耗组(需要分解工具) $consumeGroup = GameConsumeGroup::create([ 'name' => '高级装备分解消耗', 'code' => 'advanced_equipment_dismantle_consume', 'description' => '分解高级装备需要的工具', ]); // 添加消耗项:需要分解工具 GameConsumeItem::create([ 'group_id' => $consumeGroup->id, 'consume_type' => 1, // 物品类型 'target_id' => 50, // 分解工具ID(需要先创建) 'quantity' => 1, ]); // 2. 创建奖励组 $rewardGroup = GameRewardGroup::create([ 'name' => '高级装备分解奖励', 'code' => 'advanced_equipment_dismantle_reward', 'description' => '分解高级装备获得的奖励', 'is_random' => true, // 随机发放 'random_count' => 2, // 随机选择2个奖励 ]); // 添加奖励项:随机获得高级材料 GameRewardItem::create([ 'group_id' => $rewardGroup->id, 'reward_type' => 1, // 物品类型 'target_id' => 51, // 高级金属ID(需要先创建) 'quantity' => 3, 'weight' => 60.0, // 60%概率 'is_guaranteed' => false, ]); GameRewardItem::create([ 'group_id' => $rewardGroup->id, 'reward_type' => 1, // 物品类型 'target_id' => 52, // 稀有宝石ID(需要先创建) 'quantity' => 1, 'weight' => 30.0, // 30%概率 'is_guaranteed' => false, ]); GameRewardItem::create([ 'group_id' => $rewardGroup->id, 'reward_type' => 2, // 货币类型 'target_id' => 1, // 金币ID 'quantity' => 100, 'weight' => 100.0, // 100%概率 'is_guaranteed' => true, ]); // 3. 创建条件组 $conditionGroup = GameConditionGroup::create([ 'name' => '高级装备分解条件', 'code' => 'advanced_equipment_dismantle_condition', 'description' => '分解高级装备的条件', 'logic_type' => 1, // 全部满足 ]); // 添加条件项:玩家等级≥10 GameConditionItem::create([ 'group_id' => $conditionGroup->id, 'condition_type' => 1, // 假设1为玩家等级条件 'target_id' => 0, // 玩家等级不需要target_id 'operator' => 4, // 大于等于 'value' => 10, ]); // 4. 创建分解规则 ItemDismantleRule::create([ 'name' => '高级装备分解', 'code' => 'advanced_equipment_dismantle', 'description' => '分解高级装备,需要分解工具,有机会获得稀有材料', 'item_id' => null, // 通用规则 'category_id' => 2, // 假设分类ID为2的是高级装备 'consume_group_id' => $consumeGroup->id, 'reward_group_id' => $rewardGroup->id, 'condition_group_id' => $conditionGroup->id, 'priority' => 20, 'sort_order' => 50, 'is_active' => true, ]); $this->line(' - 高级装备分解规则创建完成'); } }