| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- <?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\ItemDismantleRule;
- class CreateSampleDismantleRules extends Command
- {
- /**
- * The name and signature of the console command.
- *
- * @var string
- */
- protected $signature = 'dismantle:create-samples';
- /**
- * The console command description.
- *
- * @var string
- */
- protected $description = '创建示例分解规则(使用组系统)';
- /**
- * Execute the console command.
- */
- public function handle()
- {
- $this->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(' - 高级装备分解规则创建完成');
- }
- }
|