·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

[X3.5教程] DZ X3.5新增 必须未领取指定任务 (互斥的任务分支体系)

660 1
发表于 2020-12-31 11:32:42 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

Discuz X3.5 新增 必须未领取指定任务 (互斥的任务分支体系)


  1. ALTER TABLE `pre_common_task` ADD `exclusivetaskid` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0' AFTER `relatedtaskid`
复制代码


我要说一句 收起回复
一花一世界,一叶一追寻。一曲一场叹,一生为一人。

评论1

Discuz智能体Lv.8 发表于 2025-3-19 08:37:25 | 查看全部
在 Discuz X3.5 中,新增了一个功能,允许你设置任务之间的互斥关系。具体来说,你可以通过 `exclusivetaskid` 字段来指定某个任务必须未领取指定任务才能被领取。这个功能可以用于创建互斥的任务分支体系。

你提供的 SQL 语句是正确的,它会在 `pre_common_task` 表中添加一个名为 `exclusivetaskid` 的字段。这个字段的类型是 `SMALLINT(6) UNSIGNED`,默认值为 `0`,并且它会被添加到 `relatedtaskid` 字段之后。

### 具体解释:
- `exclusivetaskid`:这个字段用于存储与当前任务互斥的任务ID。如果用户已经领取了 `exclusivetaskid` 指定的任务,那么他们将无法领取当前任务。
- `SMALLINT(6) UNSIGNED`:这个字段的数据类型是 `SMALLINT`,长度为6,并且是无符号的(即只能存储非负整数)。
- `DEFAULT '0'`:默认值为 `0`,表示如果没有指定互斥任务,则该字段的值为 `0`。

### 如何使用这个功能:
1. **添加字段**:首先,你需要运行你提供的 SQL 语句来添加 `exclusivetaskid` 字段。
  
  1. ALTER TABLE `pre_common_task` ADD `exclusivetaskid` SMALLINT(6) UNSIGNED NOT NULL DEFAULT '0' AFTER `relatedtaskid`;
复制代码


2. **设置互斥任务**:在后台管理面板中,当你创建或编辑任务时,你可以设置 `exclusivetaskid` 字段的值。这个值应该是另一个任务的ID,表示如果用户已经领取了该任务,则无法领取当前任务。

3. **逻辑处理**:在任务领取的逻辑中,你需要检查用户是否已经领取了 `exclusivetaskid` 指定的任务。如果已经领取,则阻止用户领取当前任务。

### 示例代码:
假设你有一个任务A,它的 `exclusivetaskid` 设置为任务B的ID。那么当用户尝试领取任务A时,系统会检查用户是否已经领取了任务B。如果已经领取了任务B,则用户无法领取任务A。

  1. // 假设 $taskid 是当前任务的ID
  2. // $exclusivetaskid 是当前任务的 exclusivetaskid 字段值
  3. // $uid 是当前用户的ID

  4. $exclusivetaskid = DB::result_first("SELECT exclusivetaskid FROM ".DB::table('common_task')." WHERE taskid='$taskid'");

  5. if ($exclusivetaskid > 0) {
  6.     $has_exclusive_task = DB::result_first("SELECT COUNT(*) FROM ".DB::table('common_task_log')." WHERE taskid='$exclusivetaskid' AND uid='$uid'");
  7.     if ($has_exclusive_task > 0) {
  8.         // 用户已经领取了互斥任务,无法领取当前任务
  9.         showmessage('您已经领取了互斥任务,无法领取当前任务。');
  10.     }
  11. }

  12. // 用户可以领取当前任务
  13. // 继续执行领取任务的逻辑
复制代码


### 总结:
通过添加 `exclusivetaskid` 字段,你可以在 Discuz X3.5 中实现任务之间的互斥关系。这个功能可以用于创建复杂的任务分支体系,确保用户在同一时间只能领取某些特定的任务组合。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

最新热评 加载中...
AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:216.73.216.212,GMT+8, 2025-6-14 18:43 , Processed in 0.230042 second(s), 73 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表