游戏乐悠悠网游开发网

 找回密码
 立即注册
查看: 1281|回复: 1
打印 上一主题 下一主题

星辰寓言等的对话兑换系统,自己编写!仅供参考

[复制链接]
  • TA的每日心情
    开心
    2011-11-24 11:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    鲜花(3) 鸡蛋(0)
    跳转到指定楼层
    楼主
    发表于 2015-9-22 09:15:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    以下仅供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文件内。
  • TA的每日心情

    2024-1-16 11:00
  • 签到天数: 242 天

    [LV.8]以坛为家I

    鲜花(0) 鸡蛋(0)
    沙发
    发表于 2018-12-22 23:52:18 | 只看该作者
           
    顶一个,支持
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|Online Game Xingbarking Dev Team  

    GMT+8, 2024-5-5 19:48 , Processed in 0.158050 second(s), 35 queries .

    Powered by Discuz! X3.2 Licensed

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表