想必很多魔域私服玩家都比较好奇在游戏中各个高级怪物或者boss怪物的装备武器爆率是多少,其实这个问题不单单是玩家想要知道很多魔域私服gm也是非常想要知道的。在游戏里装备武器爆率绝对不是直接用一个百分比来形容,这涉及到一个非常复杂的计算公式很多魔域私服gm或许都找不到这个公式所在的文件更加谈不上进行相关修改了。今天我们就来详细聊一聊这个问题在魔域游戏中其实这些设置还是比较简单的是每个魔域私服gm都必须掌握的技巧。
算法设计:
========
掉物品概率计算:
1、根据monstertype表的drop_item_chance、explode_item_chance1、explode_item_chance2、explode_item_chance3字段值计算是否掉物品、掉几个物品,如果计算结果不掉,或者drop_item_rule不存在,则退出;
2、根据dropitemrule表的Probability字段,按照概率从低到高计算是否掉物品,如果计算出来掉落某条规则的物品,则从该规则的物品列表中随机选择一个,重复以上步骤直到找到足够数量的物品(爆的时候物品数大于1)。
★★按照掉物品的概率从低到高计算,会导致降低高概率物品的实际概率值。
例如:某个规则组有10%和50%两个概率的规则,则50%的规则实际概率为(100 - 10)% * 50% = 45%
内存中规则的存储格式:
应该以规则组id为键存储规则组,每个规则组又分别以规则id存储各自的规则
★★??是否考虑把所有概率相同的规则合并为一条
任务日志系统
====================================================
冷紫龙 2003-11-25
功能:
====
1、记录数据到日志数据库
2、删除指定的日志
3、根据给定条件查询相应的日志
dingwei、查找日志需要指定两个键:id和time,
数据结构:
========
1) 需要记录的数据
日志系统需要记录的数据主要有:id、时间、数据、参数串
各种数据类型:
id INT UNSIGNED OBJID
time DATETIME char [20]
data INT int
param VARCHAR(255) char [255]
2) 数据库结构
CREATE TABLE cq_log (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
logid INT UNSIGNED NOT NULL,
time DATETIME NOT NULL,
data INT NOT NULL,
param VARCHAR(255) NOT NULL,
PRIMARY KEY(id),
INDEX(logid), INDEX(time),
UNIQUE(logid, time)
); 内容来自dedecms
###################################################################
1) 已经完成的CLogData类完全可以通过继承CGameData来实现
2) 还需要一个CLogMap类来管理CLogData。CLogMap并不在创建的时候一次载入所有的LogData,而仅仅在请求一个LogData找不到时才动态从数据库中创建这个LogData。CLogMap类最好能以双键的形式存储,便于以logid+time组合的方式查找,因为id有可能重复不能单独作为键查找。(或者将logid和time组合起来形成一个键?)
################################################################### 内容来自dedecms
关于任务日志系统的设计
==========================================================
冷紫龙 2003-11-15
功能:
====
1、支持多线任务的功能;
1)每个玩家在中都可以领取到若干个任务,这些任务可以并行进行;
2)任务之间可以有依赖关系,如任务B依赖于任务A,则必须完成任务A才可以领取任务B;
cq_task表中增加依赖任务字段(最多可以依赖几个??),可以允许一个任务依赖于多个任务,也允许多个任务依赖于同一个任务,这样整个任务树结构可以分支也可以合并;
2、每个任务执行的进度直接记录在数据库中,而不再依靠身上的物品来判断当前任务执行进度;
由于不必依赖于身上的任务物品来判断任务执行进度,任务系统可以更加灵活
需要解决的问题:
==============
1、玩家完成某个任务后,为了避免重复做任务,或者判断任务的依赖关系,必须保留任务完成的记录,这样导致一个问题是任务记录表的容量会越来越大(不过任务记录表每个记录也仅仅几个int字段而已——如果仅记录任务进度的话,只需要:任务ID、玩家ID、进度三个INT字段)
实现设计:
========
1、在玩家任务记录表cq_usertask中为取得的每个任务记录执行进度
物品类型:
const int ITEMTYPE_CHEST = 30000;
1) 不允许丢弃
[ 修改CItem::IsDiscardable(); OK ]
2) 不允许放入另外一个百宝囊
[ CMsgPackage消息中处理 OK ]
3) 允许存入仓库
4) 不允许交易
[ 修改CItem::IsExchangeEnable(); OK ]
6) 不允许放入摆摊交易
[ 修改CBooth::AddItem OK ]
7) 死亡的时候不会掉
[ 掉物品必须调用CUser:ropItem,根据CItem::IsDiscardable()判断此物品是否能丢弃,因此这里无需修改,因为第一步已经保证了物品不会丢弃。是否还有必要修改CUser::BeKill? ]
以上就是一为原创分享给大家的魔域私服服务器中装备武器道具爆率相关算法及设置详细攻略,其实对于一个魔域私服gm来说修改装备武器爆率是一个非常重要的事情,因为我们既然是做了私服游戏里的爆率就不能像当初正式版本那样低,这样对于玩家来说是非常不公平的事情,因为这些玩家之所以来玩魔域私服就是想要花更小的代价获取更多的玩法。
|
|