实现目标
- 只有在接到特定任务后NPC才显示特定对话面板选项,未接到该任务前不显示相应对话面板选项
实现方法
conditions
- SourceTypeOrReferenceId:15(CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION)
- SourceGroup:gossip_menu_option.menu_id (menu entry)
- SourceEntry:gossip_menu_option.id
- ConditionTypeOrReference:9(CONDITION_QUESTTAKEN)
- ConditionValue1:quest_template.id
或:
- SourceTypeOrReferenceId:15(CONDITION_SOURCE_TYPE_GOSSIP_MENU_OPTION)
- SourceGroup:gossip_menu_option.menu_id (menu entry)
- SourceEntry:gossip_menu_option.id
- ConditionTypeOrReference:47(CONDITION_QUESTSTATE)
- ConditionValue1:quest_template.id
- ConditionValue2:state_mask,取值如下
- 1 = 任务未接取
- 2 = 任务已完成,但未提交
- 8 = 任务已接取
- 32 = 任务失败
- 64 = 任务已提交
注意事项
- 对应 gossip_menu 和 gossip_menu_option 表应有对应数据
举例
-- e.g.1
INSERT INTO `world`.`conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(15, 11209, 0, 0, 0, 9, 0, 25205, 0, 0, '', 0, 0, 0, '', 'Shin Stonepillar - On Quest Accepted - Gossip Menu Option Available');
-- e.g.2
INSERT INTO `world`.`conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ConditionStringValue1`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
(15, 11189, 0, 0, 0, 47, 0, 25171, 1, 0, '', 1, 0, 0, '', 'Raider Jhash - On Quest Not Taken - Gossip Menu Option Unavailable'),
(15, 11189, 0, 0, 0, 47, 0, 25171, 64, 0, '', 1, 0, 0, '', 'Raider Jhash - On Quest Rewarded - Gossip Menu Option Unavailable');
参考阅读: