| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206 |
- <?php
- namespace App\Console\Commands;
- use Illuminate\Console\Command;
- use Illuminate\Support\Facades\DB;
- use App\Module\Game\Models\GameConsumeGroup;
- use App\Module\Game\Models\GameConsumeItem;
- use App\Module\Game\Models\GameRewardGroup;
- use App\Module\Game\Models\GameRewardItem;
- use App\Module\Game\Models\GameConditionGroup;
- use App\Module\Game\Models\GameConditionItem;
- use App\Module\GameItems\Models\ItemRecipe;
- class CreateSampleRecipes extends Command
- {
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'recipes:create-samples';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '创建示例合成配方(使用组系统)';
- /**
- * Execute the console command.
- */
- public function handle()
- {
- $this->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(' - 高级木材加工配方创建完成');
- }
- }
|