二维体
1级·灵魂力量
1级·灵魂力量
  • UID20078
  • 注册日期2011-12-18
  • 最后登录2011-12-28
  • 粉丝1
  • 关注0
  • 发帖数15
  • QQ
  • 铜币0枚
  • 威望0点
  • 银元3个
阅读:2005回复:0

【源码编辑】在NPC上添加一键转职

楼主#
更多 发布于:2011-12-24 05:26

我把这些都在起航上备个份,都是宝贵资源啊



我喜欢共享,我会的东西都将尽我所能写成教程,以作分享并存档。涉及到的文件包括:
-------------------------------------------------------------------应该都知道在哪吧- -
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也能这样制作。
游客

返回顶部