暗黑破坏神3玩家中文网
主站 暗黑3 暗黑2 基础介绍 任务帮助 场景地图 怪物资料 攻略 装备库 NPC 角色职业 魔法技能 精彩视频 图库 人物存档 下载 CNBN战网
您现在的位置: 暗黑破坏神2中文网 >> 暗黑2攻略 >> 正文 收藏本文
暗黑Beta | 暗黑1 | 地狱火 | 暗黑2 | 毁灭之王 | 暗黑3

有关D2X的随机系统

..::| 暗黑破坏神2资料站 · 收藏本文 · 【字体: 】 |::..

欢迎光临暗黑破坏神2 。。发表自己的看法和感受。解答你的疑惑

有关D2X的随机系统
Author: Onlyer
Last update: 2002-05-22

D2X中大量使用到了随机数, 各个Game都一个独立的随机数序列,
序列中的每个成员都为一个LARGE_INTEGER(即LONGLONG)数值,对于每个
Game的建立最初将按照如下方式建立初始随机数:
(对于Game的随机数我们称为该Game的全局随机数)

LARGE_INTEGER InitRand;
LARGE_INTEGER pc;

InitRand.HighPart = 0x29A;
QueryPerformanceCounter(&pc);
InitRand.LowPart = pc.LowPart + time(NULL) + GetTickCount();
InitRand.LowPart *= 0x2F490A95;
InitRand.LowPart -= 0x2E330917;
InitRand.LowPart &= 0x7FFFFFFF;
ptGame->HRand = InitRand;

之后,对于该Game中的任何Unit, 在其创建时都将更新该随机数,
方式如下:

DWORD __fastcall update_random(LARGE_INTEGER * ptr)
{
ptr->QuadPart = (LONGLONG)((LONGLONG)ptr->LowPart * 0x6AC690C5L)
+ ptr->HighPart;
return ptr->LowPart;
}
NewGameUnit(...)
{
....
update_random(&ptGame->hRand);
if (ptUnit->dwUnitType == UNIT_ITEM) {
ptUnit->HInitRand.LowPart = update_random(&ptGame->hRand);
ptUnit->hInitRand.HighPart = 0x29A;
ptUnit->hRand = ptUnit->hInitRand;
}
}
这里所提到的Unit包括了Game中的几乎任何东西, 比如Player, Chest, Monster,
NPC,Shrine, Missile, Item等等. Unit的创建与摧毁更新是相当频繁的,举个简单的例
子, Sor的一次Frozen Orb就将生成上十个Missile Unit, 一次Fire wall也与之类似.
同时, 对于新建立的任何Item Unit, 其本身也包含了一个随机数序列,这个随
机数序列将以该Item创建时当前的Game随机数进行初始化, 之后在任何对Item进行
属性修改时都将利用该Item的随机数参与运算并且以类似Game随机数序列的方式
进行更新. 比如Item的种类,包含的属性等等. 这里举一个比较简单而且结果可见的
例子:
Act5 Quest1的Socket任务, 其操作过程如下:
1. 首先对当前需要Socket的Item进行备份(这也是以前一些相关Dupe漏洞的出处之一),
然后对新生成的Item进行Socket尝试, 这里既然是新生成的Item, 其初始随机数就
只与当前Game中的当前全局随机数有关, 且HighPart必定为0x29A.

2. 对于Magic item其应该Socket一孔或者两孔的判断依据是
ptUnit->hRand.LowPart * 0x6AC690C5 + ptUnit->hRand.HighPart的运算结果.
如果该结果为偶数,则1 Socket, 否则为2 Sockets.
由1可以得知, HighPart必定为0x29A(偶数), 所以2 Socket则必须是
ptUnit->hRand.LowPart为奇数.

3. 同样的由1可以得知, 因为Socket时当前Game的全局随机数将决定该Item的初始随机
数.(两次更新后的结果), ptUnit->HRand.LowPart实际上将由该Game的当前全局随机数
决定.而Game的全局随机数只要能够获得其随机序列中的任何一个, 按照其更新法则,
则理论上是可以得出整个序列并且加以控制的. (不过我想这种内部关键数据应该是
不会发给客户端的, 而且里面的关联因素相当复杂,以前的一些MF工具基本上都
是在随意猜测)

4. 角色的RP之类的, 也都是谣传而已, 不过Game创建的初始随机数的确能够决定该
Game的整个随机数序列,不过仍然都是一个随机关系, 控制的决定性仍然在于你的MF
率等相关因素.在对象趋向无穷时,如果随机系统设计无误的话, 应该是能满足所设
定的关系的.

5. 同时其他的一些相关测试结果也表明Monster或者Chest Drop Item的种类不是在其
创建最初决定的,而是Drop时候进行判断决定. 这里的种类包括基本种类以及属性
等所有因子.

·暗黑破坏神中文网 ·点击:2881次 · Www.Diablo2.Com.Cn ·
  • 上一篇文章:
  • 下一篇文章:
  • ..:: 版权声明 ::..
    · 凡本网署名文字、图片和音视频稿件,版权均属 暗黑破坏神中文网 [Diablo2.Com.cn] 所有。
    · 任何媒体、网站或个人未经本网协议授权不得转载、链接、转贴或以其他方式复制发表。
    · 本网协议授权的媒体、网站,在转载使用时必 须注明“稿件来源: 暗黑破坏神中文网[Diablo2.Com.cn] ”。
    · 未经本站明确许可,任何网站不得盗链及抄袭;如引用页面,请务必注明来自本站( 含域名连接),谢谢!
     
     

    ..::暗黑破坏神III游戏下载::..
    暗黑破坏神1下载 暗黑破坏神1:地狱火下载 暗黑破坏神2下载 暗黑破坏神2:毁灭之王下载 暗黑破坏神3下载
    暗黑破坏神2战网开荒

    新手入门
    基础知识 | 角色介绍 | 角色类型
    硬件支持 | 游戏问题 | 物品管理
    人物技能 | 多人游戏 | 游戏交易

    游戏资料
    场景地形 | 妖魔鬼怪 | N P C
    任务帮助 | 祭台神龛 | 经 验 值
    角色属性 | 游戏组队 | 雇 佣 兵
    自然抵抗 | 游戏难度 | 交易买卖
    玩家对战 | 游戏控制 | 赌博系统
    游戏国度 | 怪物属性 | 专家模式
    暗黑俗语 | 魔法物品 | 奶牛关卡

    人物角色
    女 巫 | 男 巫 | 刺 客 | 游 侠
    亚 马 逊 | 野 蛮 人 | 德 鲁 伊

    魔法技能
    基础知识 | 野 蛮 人 | 刺 客
    施放延迟 | 亚 马 逊 | 死灵法师
    分配策略 | 德 鲁 伊 | 女 法 师
    圣 骑 士 | 地 狱 火 | 暗 黑 1

    物品装备
    物品基础 | 普通物品 | 宝石珠宝
    扩展物品 | 精华物品 | 魔法词缀
    绿色套装 | 暗金物品 | 赫拉迪克
    精彩图片 | 合成物品 | 神符之语
    插槽 | 护符 | 戒指 | 项链 | 头饰

    在线模拟器
    角色技能计算器|BUG打孔公式
    神符之语图文版 | 跑速计算器
    暗黑2盾牌的最终格挡率计算器
    人物攻击命中率(准确率)计算器
    武器攻速计算器|武器伤害计算器
    暗黑破坏神1
    暗黑破坏神1:地狱火
    暗黑破坏神2
    暗黑破坏神2:毁灭之王