找回密码
 注册传奇版本库账号
搜索
热搜: DBC2000 1.76 1.80
查看: 6882|回复: 3

[传奇引擎M2] 韩国《热血传奇》源码泄露版,可编译的传奇2客户端和服务端源码

[复制链接]
  • TA的每日心情
    开心
    7 小时前
  • 1362

    主题

    204

    回帖

    16万

    积分

    管理员

    积分
    167025
    发表于 2018-7-15 10:34:17 | 显示全部楼层 |阅读模式
    GameServer VC++源代码,包括地图,脚本,人物处理,协议加密,带数据
    库,由于源码为商业性质的,请使用者注意其版权和不要擅自公开发布和传播源码。
    WEMADE 公司于 Delphi 版本服务器端程序后,修改为 VC++ 版本。
    可编译的传奇2客户端和服务端源码,在VS2005下编译通过,此版本较齐全,研究传奇的朋友绝对不能错过
    RunDB.pas 维护DBServer和M2 的数据交换。
    RunSock.pas 维护 M2和网关的数据交换。
    LocalDB.pas 用于读取标准数据库(物品 技能 怪物)内的数据。
    其中可以看到 在读取物品数据库的时候
    StdItem.AC := MakeLong(Round(Query.FieldByName('Ac').AsInteger * (g_Config.nItemsACPowerRate / 10)), Round(Query.FieldByName('Ac2').AsInteger * (g_Config.nItemsACPowerRate / 10)));
    StdItem.MAC := MakeLong(Round(Query.FieldByName('Mac').AsInteger * (g_Config.nItemsACPowerRate / 10)), Round(Query.FieldByName('MAc2').AsInteger * (g_Config.nItemsACPowerRate / 10)));
    StdItem.DC := MakeLong(Round(Query.FieldByName('Dc').AsInteger * (g_Config.nItemsPowerRate / 10)), Round(Query.FieldByName('Dc2').AsInteger * (g_Config.nItemsPowerRate / 10)));
    StdItem.MC := MakeLong(Round(Query.FieldByName('Mc').AsInteger * (g_Config.nItemsPowerRate / 10)), Round(Query.FieldByName('Mc2').AsInteger * (g_Config.nItemsPowerRate / 10)));
    StdItem.SC := MakeLong(Round(Query.FieldByName('Sc').AsInteger * (g_Config.nItemsPowerRate / 10)), Round(Query.FieldByName('Sc2').AsInteger * (g_Config.nItemsPowerRate / 10)));
    物品的防御、魔法防御 、攻击这种 一个字段内包含了 攻击上限了下限。类型为4字节。 这里也就限制了 物品的属性无法超越2字节限制。 0-65535 。要超过此限制 必须使用8字节数据。
    --------------------------------------------------------以上是M2和外部数据交换的操作--------------------------------------------
    Magic.pas 内实现了一个魔法管理器 TMagicManager 所有魔法的伤害都在此进行管理和统计。源代码很冗余。相同的代码有太多重复。如果考虑将物品属性改成4字节 那么这里面有很多代码需要重新维护 防止数据溢出。
    Guild.pas内 实现 了2个类,TGuild(行会) 和TGuildManager  (行会管理)。那么关于行会的操作都将在此进行。
    UsrEngn.pas内是对所有Actor数据的处理。包含处理NPC  人物  怪物 和英雄 的数据
    在TUserEngine.ProcessHumans 我发现在处理全局公告的时候的逻辑 也在这里面处理 实在是很不应该。这应该是公告类自身来处理的。主要负责前端  不过职责太混乱 啥都有。
    而frnEngn.pas  内 TFrontEngine = class(TThread) 虽然从字面上来理解是前端。。但是做的是后勤工作。。反正这两个类的职责比较混乱!是处理数据的主要类!
    Event.pas 内实现的是事件类。安全区的光环 以及地图上的特效 都是以事件来实现的。比如困魔咒。在游戏网络突然中断我们可以看到困魔咒的光环依旧是动态的。这说明。这些地图特效的帧率 是不受服务端控制 的 主要逻辑在客户端 服务端只是告诉客户端 有这么一个事件  什么时候消亡!
    TEvent = class(TBaseObject)
    Envir.pas 内维护了一个TEnvirmonent  在服务端 如果服务端有1000个地图map  那么会有1000个TEnvirMonent 对象。每个对象维护各自地图内的玩家怪物列表。 而此类并不是线程类的子类。也就就是表示服务端在处理数据并不是并行处理的。而是线性处理。那么随着对象纵深越来越深  效率也是会降低。所以此类应该独立出来 不受M2维护 应该做到自维护。
    在加入新土城格式 需要在此单元内做兼容。
    DataEngn.pas 此单元与RunDB.pas配合   DataEngn.pas主要是处理底层Socket链接 而RunDB.pas主要负责合适发送者这种高层逻辑。是线程类。
    Castle.pas 是城堡处理实现单元内部实现了TCastle 和 TCastleManager。关于城堡的操作 在此单元内。
    StorageEngn.pas 仓库实现单元。其保存的为本地文件 并非数据库内。 需要改进
    其他以Obj开头的单元是怪物 以及NPC的 AI实现。
    1.png
    2.jpg


    下载地址.txt

    1.46 KB, 下载次数: 10

    售价: 100 金钱  [记录]





    上一篇:传奇yesm2引擎_2018.06.23[jjj版-官方原版]
    下一篇:传奇(LEG,BLUE引擎)945登陆器,登录器配置器_官方原版免费下载
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    9

    回帖

    73

    积分

    英勇青铜

    积分
    73
    发表于 2019-5-15 16:55:07 | 显示全部楼层
    [传奇引擎M2] 韩国《热血传奇》源码泄露版,可编译的传奇2客户端和服务端源码
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2022-5-6 08:48
  • 1

    主题

    33

    回帖

    150

    积分

    不屈白银

    积分
    150
    发表于 2019-5-16 14:45:27 | 显示全部楼层
    [传奇引擎M2] 韩国《热血传奇》源码泄露版,可编译的传奇2客户端和服务端源码
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    13

    回帖

    52

    积分

    英勇青铜

    积分
    52
    发表于 2020-1-26 03:44:14 | 显示全部楼层
    回复

    使用道具 举报

    本版积分规则

    QQ:2444100141|网站地图|传奇标签|手机版|小黑屋|传奇版本服务端 ( 滇ICP备13005504号-5 )

    GMT+8, 2024-4-26 18:15 , Processed in 0.121504 second(s), 30 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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