关于4735版经验修改心得体会
经过几番摸索,终于得出以下结论:
namespace eval WoWEmu {
proc CalcXP { killer victim } {
set victim_creature_type [GetCreatureType $victim]
set killer_level [GetLevel $killer]
set victim_level [GetLevel $victim]
if {$victim_creature_type ==8} { return 0 }
if {$killer_level >= 60} { return 0 }×××××××等级上限限制 注1
set lvldiff [expr {$victim_level-$killer_level}]
if {$lvldiff <= -5} { return 0 }××××××××××等级差限制 注2
set xp [expr {5*$victim_level+5}]××××××××总所得经验倍率 注3
if {$lvldiff < 0} { set xp [expr {$xp-($xp/10*(-$lvldiff))}] }
if {$lvldiff > 0} { set xp [expr {$xp+($xp/10*$lvldiff)}] }
if {[GetEntry $victim] == 6491} { return -1000 }
return $xp
}
proc ExplorationXP { player location } {××××××探索地图所得经验倍率
return [expr {[GetLevel $player] * 10} ]
}
proc CalcReputation { killer victim } {
AddReputation $killer $victim -100 ×××声望
}
proc DamageReduction { player mob armor } {
set level [GetLevel $mob] ××××攻击与伤害
set denominator [expr {($level *85.0) +400.0 +$armor}]
set damage_reduction [expr { $armor /$denominator}]
if {$damage_reduction <0.0} { set damage_reduction 0.0 }
if {$damage_reduction >1.0} { set damage_reduction 1.0 }
return $damage_reduction
}
proc OnPlayerDeath { player killer } {
}
proc OnPlayerResurrect { player } {
}
}
注1:新我原以为又是把这个等级限制弄到某个地方去了,经过仔细分析我才发现原来已经整合进经验代码里了~此处if {$killer_level >= 60} { return 0 }表示如果$killer等级大于或者等于60级则所得经验为0,说白了就是等级到了60级以后就不会有经验了,也就是最高等级上限为60级(默认)
注2:if {$lvldiff <= -5} { return 0 }乍一看似乎就是经验中得某一段普通代码而已~仔细分析,原来就是他控制着我们在里得经验差,这句话得意思就是 如果攻击者与被攻击者之间等级相差有5级或者以上的话,就没有经验,这就是为什么我们现在使用23级的号杀几级的怪没有经验的原因之一,不过我个人认为,这个设置太过死板,应用价值不是说没有,不过始终觉得不如从前好,不知道大家是如何想的。
注3:set xp [expr {5*$victim_level+5}]这个就是调整总体经验的语句了,大家其实只要调整前面一个5的数值就可以了,后面的都可以不管了,不过这个调整力度不是那么明显,不知道是否是我没找对地方,我调整成70左右,进差不多才勉强可以,大家视自己情况调整吧。
以上是我个人的部分看法和经验,如果有什么疑问,可以跟贴。谢谢你的观看~
商业版发布站程序下载:发布站程序下载:
namespace eval WoWEmu {
proc CalcXP { killer victim } {
set victim_creature_type [GetCreatureType $victim]
set killer_level [GetLevel $killer]
set victim_level [GetLevel $victim]
if {$victim_creature_type ==8} { return 0 }
if {$killer_level >= 60} { return 0 }×××××××等级上限限制 注1
set lvldiff [expr {$victim_level-$killer_level}]
if {$lvldiff <= -5} { return 0 }××××××××××等级差限制 注2
set xp [expr {5*$victim_level+5}]××××××××总所得经验倍率 注3
if {$lvldiff < 0} { set xp [expr {$xp-($xp/10*(-$lvldiff))}] }
if {$lvldiff > 0} { set xp [expr {$xp+($xp/10*$lvldiff)}] }
if {[GetEntry $victim] == 6491} { return -1000 }
return $xp
}
proc ExplorationXP { player location } {××××××探索地图所得经验倍率
return [expr {[GetLevel $player] * 10} ]
}
proc CalcReputation { killer victim } {
AddReputation $killer $victim -100 ×××声望
}
proc DamageReduction { player mob armor } {
set level [GetLevel $mob] ××××攻击与伤害
set denominator [expr {($level *85.0) +400.0 +$armor}]
set damage_reduction [expr { $armor /$denominator}]
if {$damage_reduction <0.0} { set damage_reduction 0.0 }
if {$damage_reduction >1.0} { set damage_reduction 1.0 }
return $damage_reduction
}
proc OnPlayerDeath { player killer } {
}
proc OnPlayerResurrect { player } {
}
}
注1:新我原以为又是把这个等级限制弄到某个地方去了,经过仔细分析我才发现原来已经整合进经验代码里了~此处if {$killer_level >= 60} { return 0 }表示如果$killer等级大于或者等于60级则所得经验为0,说白了就是等级到了60级以后就不会有经验了,也就是最高等级上限为60级(默认)
注2:if {$lvldiff <= -5} { return 0 }乍一看似乎就是经验中得某一段普通代码而已~仔细分析,原来就是他控制着我们在里得经验差,这句话得意思就是 如果攻击者与被攻击者之间等级相差有5级或者以上的话,就没有经验,这就是为什么我们现在使用23级的号杀几级的怪没有经验的原因之一,不过我个人认为,这个设置太过死板,应用价值不是说没有,不过始终觉得不如从前好,不知道大家是如何想的。
注3:set xp [expr {5*$victim_level+5}]这个就是调整总体经验的语句了,大家其实只要调整前面一个5的数值就可以了,后面的都可以不管了,不过这个调整力度不是那么明显,不知道是否是我没找对地方,我调整成70左右,进差不多才勉强可以,大家视自己情况调整吧。
以上是我个人的部分看法和经验,如果有什么疑问,可以跟贴。谢谢你的观看~
商业版发布站程序下载:发布站程序下载:
Tags:
作者:佚名评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论