找回密码
 注册传奇GM论坛会员
996
查看: 1893|回复: 2

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

[复制链接]

2032

主题

324

回帖

3万

积分

管理员

积分
38864
发表于 2018-7-15 10:35:58 | 显示全部楼层 |阅读模式
可编译的传奇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维护 应该做到自维护。
在加入新土城格式 需要在此单元内做兼容。 1.png




下载地址.txt

1.46 KB, 下载次数: 2

售价: 100 金钱  [记录]





上一篇:传奇游戏GEE引擎免费下载,官方原版更新包GeeM2[20180702]
下一篇:传奇945登陆器(LEG,BLUE引擎)登录器配置器_官方原版
回复

使用道具 举报

0

主题

34

回帖

34

积分

英勇青铜

积分
34
发表于 2018-8-12 20:25:13 | 显示全部楼层
看起来不错哦
回复

使用道具 举报

0

主题

427

回帖

471

积分

不屈白银

积分
471
发表于 2023-8-22 20:32:19 | 显示全部楼层
感谢分享!!!!
回复

使用道具 举报

本版积分规则

2444100141|手机版|小黑屋|传奇版本

GMT+8, 2024-4-26 17:32 , Processed in 0.118680 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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