游戏乐悠悠网游开发网

标题: 星辰寓言等的对话兑换系统,自己编写!仅供参考 [打印本页]

作者: mythosdev    时间: 2015-9-22 09:15
标题: 星辰寓言等的对话兑换系统,自己编写!仅供参考
以下仅供V19文件参考,自己未测试,有两个部分未完成,请自行参考我的代码完成,但是应该是没有问题的。
NpcScript.cpp找到:
40,
41,
42,
43,
865,
866,
下面添加
//兑换
1732,
1736,
1737,
1738,
1739,
1740,
1741,
1742,
1743,
1744,
   
1747,
1748,
1749,
1750,
1751,
1752,
1753,
1754,
1755,
   
1757,
1758,
1759,
   
1761,
1762,
1763,
1764,
1765,
   
1767,
1768,
1769,
1770,
1771,
1772,
   
1776,
1777,
1778,
1779,
找到
BOOL MakeKeyIndex()
之前添加:
//兑换
void CNpcScript::mafl_duihuan_0()
{
Speak( NpcId(), 1730 );
SetScriptTimer( 10 );
}
void CNpcScript::mafl_duihuan_1()
{
Say(1731);
AddKey(1732);
AddKey(1736);
AddKey(1747);
AddKey(1757);
AddKey(1761);
AddKey(1767);
AddKey(1776);
}
void CNpcScript::mafl_duihuan_1731()
{
Say(1733);
Say(1734);
Say(1735);
}
void CNpcScript::mafl_duihuan_1736()
{
Say(1745);
Say(1746);
}
void CNpcScript::mafl_duihuan_1737()
{
if (GetItemNum(3200) < 600)
{
  SayString("你还未收集足够的奇异金属,请收集齐后再次进行兑换!");
}else{
  RemoveItem(3200,600);//移除
  CreateItem(60120,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1738()
{
if (GetItemNum(3201) < 600)
{
  SayString("你还未收集足够的绿磷石矿,请收集齐后再次进行兑换!");
}else{
  RemoveItem(3201,600);//移除
  CreateItem(60121,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1739()
{
if (GetItemNum(3202) < 600)
{
  SayString("你还未收集足够的炽红石花,请收集齐后再次进行兑换!");
}else{
  RemoveItem(3202,600);//移除
  CreateItem(60122,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1740()
{
if (GetItemNum(3203) < 600)
{
  SayString("你还未收集足够的石电磁矿,请收集齐后再次进行兑换!");
}else{
  RemoveItem(3203,600);//移除
  CreateItem(60123,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1741()
{
if (GetItemNum(3200) < 1000)
{
  SayString("你还未收集足够的奇异金属,请收集齐后再次进行兑换!");
}else
{
  switch( Random ( 2 ) )
  {
   case 0:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23920,1);
    Say(1781);
   }
   break;
   case 1:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23921,1);
    Say(1781);
   }
   break;
   case 2:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23922,1);
    Say(1781);
   }
   break;
  }
}
}
void CNpcScript::mafl_duihuan_1742()
{
if (GetItemNum(3201) < 1000)
{
  SayString("你还未收集足够的绿磷石矿,请收集齐后再次进行兑换!");
}else
{
  switch( Random ( 2 ) )
  {
   case 0:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23920,1);
    Say(1781);
   }
   break;
   case 1:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23921,1);
    Say(1781);
   }
   break;
   case 2:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23922,1);
    Say(1781);
   }
   break;
  }
}
}
void CNpcScript::mafl_duihuan_1743()
{
if (GetItemNum(3200) < 1000)
{
  SayString("你还未收集足够的炽红石花,请收集齐后再次进行兑换!");
}else
{
  switch( Random ( 2 ) )
  {
   case 0:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23920,1);
    Say(1781);
   }
   break;
   case 1:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23921,1);
    Say(1781);
   }
   break;
   case 2:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23922,1);
    Say(1781);
   }
   break;
  }
}
}
void CNpcScript::mafl_duihuan_1744()
{
if (GetItemNum(3200) < 1000)
{
  SayString("你还未收集足够的石电磁矿,请收集齐后再次进行兑换!");
}else{
  switch( Random ( 2 ) )
  {
   case 0:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23920,1);
    Say(1781);
   }
   break;
   case 1:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23921,1);
    Say(1781);
   }
   break;
   case 2:
   {
    RemoveItem(3200,1000);//移除
    CreateItem(23922,1);
    Say(1781);
   }
   break;
  }
}
}
void CNpcScript::mafl_duihuan_1747()
{
Say(1757);
}
void CNpcScript::mafl_duihuan_1748()
{
if (GetItemNum(26918) < 5000)
{
  SayString("你还未收集足够的福袋,请收集齐后再次进行兑换!");
}else{
  RemoveItem(26918,5000);//移除
  CreateItem(23381,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1749()
{
if (GetItemNum(26918) < 5000)
{
  SayString("你还未收集足够的福袋,请收集齐后再次进行兑换!");
}else{
  RemoveItem(26918,5000);//移除
  CreateItem(23380,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1750()
{
if (GetItemNum(26918) < 5000)
{
  SayString("你还未收集足够的福袋,请收集齐后再次进行兑换!");
}else{
  RemoveItem(26918,5000);//移除
  CreateItem(23285,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1751()
{
if (GetItemNum(26918) < 5000)
{
  SayString("你还未收集足够的福袋,请收集齐后再次进行兑换!");
}else{
  RemoveItem(26918,5000);//移除
  CreateItem(23284,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1752()
{
if (GetItemNum(30311) < 5000)
{
  SayString("你还未收集足够的新年福袋,请收集齐后再次进行兑换!");
}else{
  RemoveItem(30311,5000);//移除
  CreateItem(23381,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1753()
{
if (GetItemNum(30311) < 5000)
{
  SayString("你还未收集足够的新年福袋,请收集齐后再次进行兑换!");
}else{
  RemoveItem(30311,5000);//移除
  CreateItem(23069,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1754()
{
if (GetItemNum(30311) < 5000)
{
  SayString("你还未收集足够的新年福袋,请收集齐后再次进行兑换!");
}else{
  RemoveItem(30311,5000);//移除
  CreateItem(23260,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1755()
{
if (GetItemNum(30311) < 5000)
{
  SayString("你还未收集足够的新年福袋,请收集齐后再次进行兑换!");
}else{
  RemoveItem(30311,5000);//移除
  CreateItem(23261,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1757()
{
Say(1760);
}
void CNpcScript::mafl_duihuan_1758()
{
if (GetItemNum(23751) < 1000)
{
  SayString("你还未收集足够红章,请收集齐后再次进行兑换!");
}else{
  switch( Random ( 2 ) )
  {
   case 0:
   {
    RemoveItem(23751,1000);//移除
    CreateItem(23680,1);
    Say(1781);
   }
   break;
   case 1:
   {
    RemoveItem(23751,1000);//移除
    CreateItem(23681,1);
    Say(1781);
   }
   break;
   case 2:
   {
    RemoveItem(23751,1000);//移除
    CreateItem(23682,1);
    Say(1781);
   }
   break;
  }
}
}
void CNpcScript::mafl_duihuan_1759()
{
if (GetItemNum(23750) < 1000)
{
  SayString("你还未收集足够的蓝章,请收集齐后再次进行兑换!");
}else{
  switch( Random ( 2 ) )
  {
   case 0:
   {
    RemoveItem(23750,1000);//移除
    CreateItem(23680,1);
    Say(1781);
   }
   break;
   case 1:
   {
    RemoveItem(23750,1000);//移除
    CreateItem(23681,1);
    Say(1781);
   }
   break;
   case 2:
   {
    RemoveItem(23750,1000);//移除
    CreateItem(23682,1);
    Say(1781);
   }
   break;
  }
}
}
void CNpcScript::mafl_duihuan_1762()
{
Say(1766);
}
void CNpcScript::mafl_duihuan_1767()
{
Say(1773);
Say(1774);
Say(1775);
}
void CNpcScript::mafl_duihuan_1768()
{
if (GetItemNum(23752) < 1)
{
  SayString("你还未收集到一张斗士的证明,请无法进行兑换!");
}else{
  RemoveItem(23752,1);//移除
  CreateItem(23712,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1769()
{
if (GetItemNum(23752) < 1)
{
  SayString("你还未收集到一张斗士的证明,请无法进行兑换!");
}else{
  RemoveItem(23752,1);//移除
  CreateItem(23711,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1770()
{
if (GetItemNum(23752) < 1)
{
  SayString("你还未收集到一张斗士的证明,请无法进行兑换!");
}else{
  RemoveItem(23752,1);//移除
  CreateItem(23710,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1771()
{
if (GetItemNum(23752) < 1)
{
  SayString("你还未收集到一张斗士的证明,请无法进行兑换!");
}else{
  RemoveItem(23752,1);//移除
  CreateItem(23709,1);
  Say(1781);
}
}
void CNpcScript::mafl_duihuan_1772()
{
if (GetItemNum(23709) < 1 && GetItemNum(23710) < 1 && GetItemNum(23711) < 1 && GetItemNum(23712) < 1)
{
  SayString("你没有王章的证明(红)、王章的证明(黄)、王章的证明(蓝)、王章的证明(绿)各一张,请收集齐后再次进行兑换!");
}else{
  switch( Random ( 9 ) )
  {
   case 0:
   {
    RemoveItem(23709,1);
    RemoveItem(23710,1);
    RemoveItem(23711,1);
    RemoveItem(23712,1);
    CreateItem(23554,1);
    Say(1781);
   }
   break;
   case 1:
   {
    RemoveItem(23709,1);
    RemoveItem(23710,1);
    RemoveItem(23711,1);
    RemoveItem(23712,1);
    CreateItem(23555,1);
    Say(1781);
   }
   break;
   case 2:
   {
    RemoveItem(23709,1);
    RemoveItem(23710,1);
    RemoveItem(23711,1);
    RemoveItem(23712,1);
    CreateItem(23556,1);
    Say(1781);
   }
   break;
   case 3:
   {
    RemoveItem(23709,1);
    RemoveItem(23710,1);
    RemoveItem(23711,1);
    RemoveItem(23712,1);
    CreateItem(23557,1);
    Say(1781);
   }
   break;
   case 4:
   {
    RemoveItem(23709,1);
    RemoveItem(23710,1);
    RemoveItem(23711,1);
    RemoveItem(23712,1);
    CreateItem(23558,1);
    Say(1781);
   }
   break;
   case 5:
   {
    RemoveItem(23709,1);
    RemoveItem(23710,1);
    RemoveItem(23711,1);
    RemoveItem(23712,1);
    CreateItem(23559,1);
    Say(1781);
   }
   break;
   case 6:
   {
    RemoveItem(23709,1);
    RemoveItem(23710,1);
    RemoveItem(23711,1);
    RemoveItem(23712,1);
    CreateItem(23560,1);
    Say(1781);
   }
   break;
   case 7:
   {
    RemoveItem(23709,1);
    RemoveItem(23710,1);
    RemoveItem(23711,1);
    RemoveItem(23712,1);
    CreateItem(23561,1);
    Say(1781);
   }
   break;
   case 8:
   {
    RemoveItem(23709,1);
    RemoveItem(23710,1);
    RemoveItem(23711,1);
    RemoveItem(23712,1);
    CreateItem(23562,1);
    Say(1781);
   }
   break;
   case 9:
   {
    RemoveItem(23709,1);
    RemoveItem(23710,1);
    RemoveItem(23711,1);
    RemoveItem(23712,1);
    CreateItem(23563,1);
    Say(1781);
   }
   break;
  }
}
}
void CNpcScript::mafl_duihuan_1776()
{
Say(1780);
}

NpcScript.h
找到
};
#endif
之前添加:
/*************************兑换*************************/
void mafl_duihuan_0();
void mafl_duihuan_1();
void mafl_duihuan_1731();

void mafl_duihuan_1736();
void mafl_duihuan_1737();
void mafl_duihuan_1738();
void mafl_duihuan_1739();
void mafl_duihuan_1740();
void mafl_duihuan_1741();
void mafl_duihuan_1742();
void mafl_duihuan_1743();
void mafl_duihuan_1744();

void mafl_duihuan_1747();
void mafl_duihuan_1748();
void mafl_duihuan_1749();
void mafl_duihuan_1750();
void mafl_duihuan_1751();
void mafl_duihuan_1752();
void mafl_duihuan_1753();
void mafl_duihuan_1754();
void mafl_duihuan_1755();

void mafl_duihuan_1757();
void mafl_duihuan_1758();
void mafl_duihuan_1759();
void mafl_duihuan_1762();

void mafl_duihuan_1767();
void mafl_duihuan_1768();
void mafl_duihuan_1769();
void mafl_duihuan_1770();
void mafl_duihuan_1771();
void mafl_duihuan_1772();

void mafl_duihuan_1776();
/*************************兑换*************************/

NpcScriptHelper.cpp
找到
};
static map< string, PFN > g_functions;
之前添加:
/*************************兑换*************************/
{"mafl_duihuan_0", &CNpcScript::mafl_duihuan_0},
{"mafl_duihuan_1", &CNpcScript::mafl_duihuan_1},
{"mafl_duihuan_1731", &CNpcScript::mafl_duihuan_1731},
   
{"mafl_duihuan_1736", &CNpcScript::mafl_duihuan_1736},
{"mafl_duihuan_1737", &CNpcScript::mafl_duihuan_1737},
{"mafl_duihuan_1738", &CNpcScript::mafl_duihuan_1738},
{"mafl_duihuan_1739", &CNpcScript::mafl_duihuan_1739},
{"mafl_duihuan_1740", &CNpcScript::mafl_duihuan_1740},
{"mafl_duihuan_1741", &CNpcScript::mafl_duihuan_1741},
{"mafl_duihuan_1742", &CNpcScript::mafl_duihuan_1742},
{"mafl_duihuan_1743", &CNpcScript::mafl_duihuan_1743},
{"mafl_duihuan_1744", &CNpcScript::mafl_duihuan_1744},
   
{"mafl_duihuan_1747", &CNpcScript::mafl_duihuan_1747},
{"mafl_duihuan_1748", &CNpcScript::mafl_duihuan_1748},
{"mafl_duihuan_1749", &CNpcScript::mafl_duihuan_1749},
{"mafl_duihuan_1750", &CNpcScript::mafl_duihuan_1750},
{"mafl_duihuan_1751", &CNpcScript::mafl_duihuan_1751},
{"mafl_duihuan_1752", &CNpcScript::mafl_duihuan_1752},
{"mafl_duihuan_1753", &CNpcScript::mafl_duihuan_1753},
{"mafl_duihuan_1754", &CNpcScript::mafl_duihuan_1754},
{"mafl_duihuan_1755", &CNpcScript::mafl_duihuan_1755},
   
{"mafl_duihuan_1757", &CNpcScript::mafl_duihuan_1757},
{"mafl_duihuan_1758", &CNpcScript::mafl_duihuan_1758},
{"mafl_duihuan_1759", &CNpcScript::mafl_duihuan_1759},
{"mafl_duihuan_1762", &CNpcScript::mafl_duihuan_1762},
   
{"mafl_duihuan_1767", &CNpcScript::mafl_duihuan_1767},
{"mafl_duihuan_1768", &CNpcScript::mafl_duihuan_1768},
{"mafl_duihuan_1769", &CNpcScript::mafl_duihuan_1769},
{"mafl_duihuan_1770", &CNpcScript::mafl_duihuan_1770},
{"mafl_duihuan_1771", &CNpcScript::mafl_duihuan_1771},
{"mafl_duihuan_1772", &CNpcScript::mafl_duihuan_1772},
   
{"mafl_duihuan_1776", &CNpcScript::mafl_duihuan_1776},
/*************************兑换*************************/
重新编译对话的DLL文件,然后服务端文件WorldDialog.txt文件,1731行开始添加以下对话:
欢迎来到巨峰飞飞,这里是V19版,希望能给带来快乐的游戏体验!
你好,我是兑换使者,专门帮助进行兑换工作,你可以通过一些途径获取到所需的物品,然后到我这里进行兑换!
灵兽说明
游戏中每片大陆都生存着一种为数不多的灵兽,灵兽出现在大路上固定的区域,每隔指定的时间会自动刷新。
杀死灵兽后通过各种采集器获得灵兽所具备的特有资源,主要是各种矿石。
帕里灵兽产出的矿石为绿磷石矿,晨光灵兽产出的矿石为炽红石花,达肯灵兽产出的矿石为奇异金属,来斯灵兽产出的矿石为石电磁矿。每一种矿物都有他们兑换物品,要怎么利用矿石就看你的需要了。
矿石兑换
KEY_DH_1
KEY_DH_2
KEY_DH_3
KEY_DH_4
KEY_DH_5
KEY_DH_6
KEY_DH_7
KEY_DH_8
请问你要兑换那种矿石呢?每600个矿石可以兑换下列物品!\n [奇异金属->超强攻击眼镜][KEY_DH_5]\n [绿磷石矿->超强防御眼镜][KEY_DH_6]\n [炽红石花->超强攻击眼镜][KEY_DH_7]\n [石电磁矿->超强防御眼镜][KEY_DH_8]
每组矿石1000个可以随机兑换出以下3种物品之一:\n 麋鹿角戒1个,麋鹿项链1个,麋鹿耳环1个。\n [兑换1000个奇异金属][KEY_DHKS_5]\n [兑换1000个绿磷石矿][KEY_DHKS_6]\n [兑换1000个炽红石花][KEY_DHKS_7]\n [兑换1000个石电磁矿][KEY_DHKS_8]
福袋兑换
KEY_DH_9
KEY_DH_10
KEY_DH_11
KEY_DH_12
KEY_DH_13
KEY_DH_14
KEY_DH_15
KEY_DH_16
收集福袋喽,收集福袋和新年福袋可以在我这里进行兑换,赶紧整理行装去收集吧!\n 5000个福袋可以兑换以下物品: \n[男水滴木绒套装][KEY_DH_9]  [女水滴木绒套装][KEY_DH_10]\n[男罗马竞技套装][KEY_DH_11]  [女罗马竞技套装][KEY_DH_12]\n 5000个新年福袋可以兑换以下物品: \n[男甜美套装][KEY_DH_13]  [女甜美套装][KEY_DH_14]\n[男森巴套装][KEY_DH_15]  [女森巴套装][KEY_DH_16]
披风兑换
KEY_DH_17
KEY_DH_18
想拥有强大而潇洒的披风吗?也许我可以帮你实现这个小小的心愿。\n 1000个红章或者蓝章兑换物攻的龙王披风、爆击的龙王披风、魔攻的龙王披风三种之中随机一件\n 红章1000个->[我要兑换][KEY_DH_17]\n 蓝章1000个->[我要兑换][KEY_DH_18]
特殊卷轴兑换
KEY_DH_19
KEY_DH_20
KEY_DH_21
KEY_DH_22
暂时未开放特殊卷轴兑换,详情请关注后期更新!
斗士证明兑换
KEY_DH_23
KEY_DH_24
KEY_DH_25
KEY_DH_26
KEY_DH_27
远古时期只有强大战士才能征服草原上的最强BOSS,赶紧行动吧,勇士们,挥舞起你们手中的武器挑战凯伦伊草原最强BOSS#b拉肯巴勒卡#nb。从它的身上收集一张斗士的证明,来我这里证明你是一个合格的勇者。
合格的勇士们我将为你们准备一张王室证书赠送给你。\n 斗士证明->王室证书(红) [确定我要兑换][KEY_DH_23]\n 斗士证明->王室证书(黄) [确定我要兑换][KEY_DH_24]\n 斗士证明->王室证书(蓝) [确定我要兑换][KEY_DH_25]\n 斗士证明->王室证书(绿) [确定我要兑换][KEY_DH_26]
收集4张不同颜色的王室证书我将随机送一把王室武器作为礼物\n 我已收集齐王室证书(红),王室证书(黄),王室证书(蓝),王室证书(绿)\n [我想兑换][KEY_DH_27]
征服者的證明
KEY_DH_28
KEY_DH_29
KEY_DH_30
暂时未开放特征服者的證明系统任务,详情请关注后期更新!
#b#cff0000ff你已经兑换成功!#nb#nc\n#b#cff0000ff如果还想兑换其他东西,请再次收集物品找我进行兑换!#nb#nc
#b#cff0000ff对不起,你还未收集兑换所需的物品,请收集齐后再次进行兑换!#nb#nc

服务端NPC文件请自行添加,对话定义为m_szDialog= "MaFl_DuiHuan.txt",请自行添加到NPC文件内。

作者: dianpula    时间: 2018-12-22 23:52
       
顶一个,支持




欢迎光临 游戏乐悠悠网游开发网 (http://bbs.yxlyy.club/) Powered by Discuz! X3.2