秦殇吧 关注:15,565贴子:233,132
  • 11回复贴,共1

[天骄修改教程] 新建NPC

只看楼主收藏回复

如图所视,不是移动.此为新建(并非复制,意义不同)


IP属地:广东1楼2019-11-21 15:27回复
    首先我们要大概知道NPC是怎么创建出来的
    1.天骄里面的新建 道具 NPC 怪物 场景都是一个来自同一个抽象类
    2.这个新建的派生类的每个函数需要重新定义在实例化出来,所以需要一个虚表指向类的函数
    这个是创建汉中郡的虚表(上面说到的抽象类就是这样的)

    .链表结构如下
    1.析构(也就是释放,即有析构肯定有*构造函数,下面在说在那里)
    2.CERPerson::Create创建,这个函数有点讲头,看图解释

    2.1.创建默认属性,注意这里是Person也就是拟人的创建(设置等级/属性/声望/金钱/HMP/乱七八糟的,NPC就没有尊严有属性的吗?)
    2.2.NPC怎么增加修理/打造/鉴定,也是在这里SetInt
    2.3.看下面这张图片,我先说作用,是生成一个物品,为什么要说这个?因为在这里设置的物品是属于这个人的,你买了不需要刷新一直都存在.注意这里的asc_xxxx是必须先创建*字符串索引,下面说

    3.类似析构(没跟过代码,稍微看了下,类析构的时候会删除内存并调用这个析构函数)
    4.加载(没啥好说的)
    5.保存(没啥好说的)
    6.获取保存长度(没啥好说的)
    7.CERObject::Init初始化(我的理解是刷新,看解释)因为这里是商人的购买界面的物品生成物品的函数,这里的跟上面的不同之处在于你买完就没了,得等服务端刷新

    8.删除Init生成的物品
    9.不知道拿来干嘛的,没用,二次生成物品?
    10.复制(没分析,不清楚,应该是字面意思)
    11.On析构(这里无用)
    12.On使用(这里无用)
    13.On死亡(这里无用)
    14.验证(这里无用)
    15.接受对象(这里无用)
    16.属于(这里无用)
    17.确认?(这里无用)
    18.最后还有一句dd offset zahuoshang_hz_Ask,这个函数是对话选项
    上面提到字符串索引是什么呢?我说过 来自同一个抽象类,就是创建这个派生类,在虚表[1]的Create函数里面设置索引,注意这里是物品所以是CERItem::Create,Init Ask都是无用的
    然后就是析构函数 3步走1分配内存 2实例化 3指向链表

    最后还有一步准备创建物品
    ER_createPrepareObject(构造函数,字符串索引, 类型, 0);
    类型需要说下 1 NPC 2物品
    上面创建道具其实已经说完了,NPC还有要说的
    CERRoom::SetObject(this指针, 字符串索引, 数量);
    this指针,参考之前的帖子.数量 NPC一般是1,大于1的一般是场景出口.注意这里是Room,也可以创建出口
    大概说完了,下面实战结果


    IP属地:广东2楼2019-11-21 16:43
    回复
      此为之前贴的注入DLL接管天骄的高级方法,采用内连汇编混合C++.之所以是新建,那是因为都是通过修改天骄调到我的代码里面创建处理的,没有依赖天骄本身代码(有,懒得复制修改了,相同的函数就直接交给天骄内部函数)
      1.创建Create函数

      如果需要添加NPC本身物品则添加

      2.创建Init函数

      如果需要添加刷新生成物品,取消注释
      3.创建Ask函数

      4.构建链表

      链表数组指向自定义的创建函数,相同的直接指指向天骄自己处理了
      5.构造函数

      这里把链表赋值到内存地址
      6.创建预读Object,并在场景中设置Object

      7.最后一步,创建链表指针,接管天骄ER_createPrepareObject以及createRoom


      IP属地:广东3楼2019-11-21 17:19
      回复
        补充:
        还需要在Scene\int\目录的*.ont目录添加一个结构,修改 事件ID=步骤1.Create函数的alias


        IP属地:广东4楼2019-11-21 17:25
        回复
          对于有修改研究爱好者 可以到https://tieba.baidu.com/p/5488105213 2楼找群,免得某些人阴阳怪气


          IP属地:广东5楼2019-11-21 17:28
          收起回复
            有个问题麻烦一下大佬,就是前一段时间我看了一个刷仙灵商人的帖子后把仙灵商人杀了,东西爆了一地但是不知怎么复活,后来只能重装游戏了,那么问题是怎么复活仙灵商人呢


            IP属地:山东来自Android客户端7楼2019-11-28 13:53
            收起回复
              很少有人研究这么深了,反正我是看不懂


              IP属地:辽宁8楼2021-07-24 21:08
              回复
                大佬还在完善呢,加油啊


                IP属地:广东来自iPhone客户端9楼2021-08-02 15:45
                回复