02.兑换码和奖励模板
【__兑换码】的功能是,弹出输入框,玩家输入兑换码,直接获得指定的奖励,然后此兑换码失效。
此功能,主要用来,发放福利,吸引人气。比如在直播间发放,在群里发放,等等...
此功能可以做到NPC对话框,物品使用对话框,物体交互对话框。这次先做在NPC上。
先执行sql脚本,创建一个NPC模板:

INSERT INTO `acore_world`.`creature_template` (`entry`, `difficulty_entry_1`, `difficulty_entry_2`, `difficulty_entry_3`, `KillCredit1`, `KillCredit2`, `modelid1`, `modelid2`, `modelid3`, `modelid4`, `name`, `subname`, `IconName`, `gossip_menu_id`, `minlevel`, `maxlevel`, `exp`, `faction`, `npcflag`, `speed_walk`, `speed_run`, `scale`, `rank`, `mindmg`, `maxdmg`, `dmgschool`, `attackpower`, `DamageModifier`, `BaseAttackTime`, `RangeAttackTime`, `unit_class`, `unit_flags`, `unit_flags2`, `dynamicflags`, `family`, `trainer_type`, `trainer_spell`, `trainer_class`, `trainer_race`, `minrangedmg`, `maxrangedmg`, `rangedattackpower`, `type`, `type_flags`, `lootid`, `pickpocketloot`, `skinloot`, `resistance1`, `resistance2`, `resistance3`, `resistance4`, `resistance5`, `resistance6`, `spell1`, `spell2`, `spell3`, `spell4`, `spell5`, `spell6`, `spell7`, `spell8`, `PetSpellDataId`, `VehicleId`, `mingold`, `maxgold`, `AIName`, `MovementType`, `InhabitType`, `HoverHeight`, `HealthModifier`, `ManaModifier`, `ArmorModifier`, `RacialLeader`, `movementId`, `RegenHealth`, `mechanic_immune_mask`, `flags_extra`, `ScriptName`, `VerifiedBuild`) VALUES (99000, 0, 0, 0, 0, 0, 16135, 0, 0, 0, '功能测试', '', NULL, 0, 80, 80, 2, 35, 1, 1, 1.14286, 0.6, 3, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, '', 0, 3, 1, 1, 1, 1, 0, 0, 1, 0, 0, 'Func_CreatureScript', 1);

这个NPC有两个要求:
1. 必须是可交互的,{npcflag}字段包含1 。
2. {ScriptName}字段必须是 'Func_CreatureScript'
在游戏中,使用 .npc add 99000 就会生成一个如下的NPC

然后在【__主功能配置】给这个NPC添加一个对话菜单:

INSERT INTO `acore_world`.`__主功能配置` (`类型`, `生物物品或物体ID`, `菜单ID`, `上级菜单ID`, `阵营`, `功能选择`, `需求模板ID`, `奖励模板ID`, `GM命令组`, `小图标ID`, `大图标`, `菜单文本`, `弹窗文本`, `联盟传送坐标ID`, `部落传送坐标ID`) VALUES ('NPC', 99000, 4, 0, '中立', '兑换码', 0, 0, NULL, 0, '', '兑换码', NULL, 0, 0);

游戏中,执行 .rl all 重载所有配置,然后再和NPC对话,发现他出现了一个“兑换码”选项,

点击后,弹出一个输入框,随便输入,会提示兑换码错误,

所有可用的兑换码,在数据表【__兑换码】里,这个表的字段是:【备注】【ID】【兑换码】【奖励模板ID】。
其他都很好理解,只有【奖励模板ID】需要重点说明,这里只有一个ID,那么奖励内容在哪里定义呢?
首先,魔兽世界的内容是非常丰富的,所以可以奖励给玩家的东西很多,比如,金币,物品,经验,等级,技能,等等...
为了统一管理和调用,小环端,专门做了一个数据表【_模板_奖励】,里面的字段,涵盖了常用的可以奖励的内容,最后还有【GM命令组】,基本可以满足99%的奖励需求了~
你可以在这里定义要奖励的内容, 然后把奖励id 填到兑换码表里的奖励模板ID里,当玩家输入这个兑换码的时候,就可以获得对应奖励模板里的物品。
整理下结构:
