阅读:2005回复:0
【源码编辑】在NPC上添加一键转职我把这些都在起航上备个份,都是宝贵资源啊 我喜欢共享,我会的东西都将尽我所能写成教程,以作分享并存档。涉及到的文件包括: -------------------------------------------------------------------应该都知道在哪吧- - WorldDialog.txtNpcScript.h NpcScript.cppNpcScriptHelper.cpp ------------------------------------------------------------------下面以在帕里镇长身上添加一键转职为例来说明如何在npc上添加可以点的按钮。 1.在WorldDialog.txt中写下你要加的按键名称和对话,貌似还有按钮。要用能显示行号的文本编辑工具,我用UE做演示,蓝色为UE显示行号。1359 快捷转职 1360 KEY_OKJOB_1 1361KEY_OKJOB_2 1362 KEY_OKJOB_3 1363KEY_OKJOB_4 1364 第一次转职有点繁琐吗?我可以提供快捷转职,不过我要收取#cff0000ff#b10000#nb#nc金币作为转职费用.而且除了只对#cff0000ff#b属性点#nb#nc进行重置外,没有任何其他奖励!#b#cff0000ff一定要认真选择你喜欢的职业!#nc#nbundefined[战 士][KEY_OKJOB_1] 用剑或斧近身攻击undefined[圣职者][KEY_OKJOB_2] 用魔棒治愈朋友,用拳套惩罚敌人undefined[魔导士][KEY_OKJOB_3] 用法杖或魔杖远程攻击undefined[弓箭手][KEY_OKJOB_4] 用弓箭或飞轮高速打击敌人 1365 初心者15级才可以进行第一次转职. 1366 好像你的金币不太够吧? 写好以后可以开始在源码里面添加对话了。2.打开NpcScript.h在你要加的npc后面继续添加,此处为帕里镇长,后面的数字对应行号,由于源文件定义从0开始,而UE从1开始计算行号,所以1359行要写成1358 [table=98%,rgb(153, 230, 0)] [tr][td]void mafl_flamayor_1358();[/td][/tr] [/table] [table=98%,rgb(153, 230, 0)] [tr][td]void mafl_flamayor_1359();[/td][/tr] [/table] [table=98%,rgb(153, 230, 0)] [tr][td]void mafl_flamayor_1360();[/td][/tr] [/table] [table=98%,rgb(153, 230, 0)] [tr][td]void mafl_flamayor_1361();[/td][/tr] [/table] [table=98%,rgb(153, 230, 0)] [tr][td]void mafl_flamayor_1362();[/td][/tr] [/table]这些是要显示的按钮,对话部分无需定义,只要引用即可。 3.打开NpcScriptHelper.cpp一样在对应npc后面继续添加[table=98%,rgb(0, 204, 34)] [tr][td]{"mafl_flamayor_1358", &CNpcScript::mafl_flamayor_1358},[/td][/tr] [/table] [table=98%,rgb(0, 204, 34)] [tr][td]{"mafl_flamayor_1359", &CNpcScript::mafl_flamayor_1359},[/td][/tr] [/table] [table=98%,rgb(0, 204, 34)] [tr][td]{"mafl_flamayor_1360", &CNpcScript::mafl_flamayor_1360},[/td][/tr] [/table] [table=98%,rgb(0, 204, 34)] [tr][td]{"mafl_flamayor_1361", &CNpcScript::mafl_flamayor_1361},[/td][/tr] [/table] [table=98%,rgb(0, 204, 34)] [tr][td]{"mafl_flamayor_1362", &CNpcScript::mafl_flamayor_1362},[/td][/tr] [/table] 这个貌似是一个转意,&CNpcScript::后面的应该可以自己定义,然后在NpcScript.cpp中就可以使用这个别名了。4.打开NpcScript.cpp 在int g_nKeys[] = {下面添加用到的行号,[table=98%,rgb(0, 204, 34)] [tr][td]1358,[/td][/tr] [/table] [table=98%,rgb(0, 204, 34)] [tr][td]1359,[/td][/tr] [/table] [table=98%,rgb(0, 204, 34)] [tr][td]1360,[/td][/tr] [/table] [table=98%,rgb(0, 204, 34)] [tr][td]1361,[/td][/tr] [/table] [table=98%,rgb(0, 204, 34)] [tr][td]1362,[/td][/tr] [/table] 然后搜索帕里镇长mafl_flamayor找到 void CNpcScript::mafl_flamayor_2() { AddKey( 9 );//介绍 AddKey( 10 );//离开 AddKey(1358);//这就是添加了一个以1358行(UE中1359行)为标题的按钮,如同介绍和离开2个按钮一样。 } 找到NPC最后描述那句:void CNpcScript::mafl_flamayor_10() { Speak( NpcId(), 489 ); Exit(); } 在后面继续添加按键功能描述:void CNpcScript::mafl_flamayor_1358() { //快捷转职 if (GetPlayerJob() == 0 && GetPlayerLvl() == 15) { Say(1363); }else{ Say(1364); } } //上面这句实现了点击快速转职按键后出现的信息,15级会显示1363行的信息,不符合会显示1364行信息。//下面是显示1363行信息里面的按钮功能的定义,按钮对应1359-1362四行,从1363行信息能看出来前面[]中的是对话显示的文字,后面是对应的按钮。 void CNpcScript::mafl_flamayor_1359() { if (GetPlayerGold() < 10000) { Say(1365); return; } if (GetPlayerJob() == 0 && GetPlayerLvl() == 15) { //战士1 RemoveGold(10000); ChangeJob(1); InitStat(); Exit(); }else{ Say(1364); } } void CNpcScript::mafl_flamayor_1360() { if (GetPlayerGold() < 10000) { Say(1365); return; } if (GetPlayerJob() == 0 && GetPlayerLvl() == 15) { //圣职3 RemoveGold(10000); ChangeJob(3); InitStat(); Exit(); }else{ Say(1364); } } void CNpcScript::mafl_flamayor_1361() { if (GetPlayerGold() < 10000) { Say(1365); return; } if (GetPlayerJob() == 0 && GetPlayerLvl() == 15) { //魔导士4 RemoveGold(10000); ChangeJob(4); InitStat(); Exit(); }else{ Say(1364); } } void CNpcScript::mafl_flamayor_1362() { if (GetPlayerGold() < 10000) { Say(1365); return; } if (GetPlayerJob() == 0 && GetPlayerLvl() == 15) { //弓箭手2 RemoveGold(10000); ChangeJob(2); InitStat(); Exit(); }else{ Say(1364); } } 好了,编译WorldDialog生成dll文件,并把WorldDialog.txt更新到服务端即可。 如有疑问可以追问。自己可以实验添加一键二转,以及其他功能,就如星辰飞飞那样的兑换NPC也能这样制作。 |
|
100% |