scripts里的startup.tcl里的部分中文说明
更新时间:2012-07-17 01:31
文章作者:
浏览次数: 次
这里存在设置变量的问题 比如set f_factor 0.5 这里 set是设置的意思 f_factor就是个变量 0.5就是设置变量为0.5 set DEBUG 1 load ini.dll namespace eval WoWEmu { proc CalcXP { killer victim } {ClearQFlag $killer mobspoke set f_factor 0.50 #设置结局因数为0.5(直接翻译叫 设置结局因数 T-T不理解 知道的回帖说下) set max_distance 75 #设置最大距离为75 (下面距离怪多少远没有经验用到) set max_killer_level 60 #设置玩家最高等级为60 set max_victim_level [expr {[GetLevel $killer]*5}] #设置最大受害者变量(就是被打的怪拉~)等级为玩家的5倍(用在 骷髅等级的boss) set level_factor 0.5 #设置等级因数为 0.5 后面用到 内容来自dedecms set up_bonus 0.04 # +等级奖励 0.04 后面经验公式中用到 set down_bonus 0.12 # -等级奖励 0.12 同上 set elite_1 1.3 #设置4个类型 下面经验公式用到 set elite_2 1.5 set elite_3 2.2 set elite_4 1.8 #Check if player kills a mob too higher level than him.. and give to him 0 xp (change 0 to 1 to activate it) set checklvl 0 #设置个变量 checklvl 字面意思就是 检查等级 当为 = 0 不激活 当=1 激活 #Don't get xp only from legendary mobs (change 0 to 1 to activate it) set legendaryxp 0 #汗 翻译过来是 神话的经验 什么东东? 大概意识跟上面那句一样 #Implementation #上面是 设置 下面的就是具体的执行代码了 (单词是这个意思) set killer_level [GetLevel $killer] #设置 玩家等级变量( 是指杀死怪的玩家) set max_lvldiff [expr {(($killer_level/4)+5)}] #设置变量 max_lvldiff= 杀死怪的玩家的等级/4+5(最大等级差异) set class_pl [GetClass $killer] # 不懂 懂的回复给我解释下 class_PL是 设置什么变量 没明白 织梦内容管理系统
#Set Level Bonus acording to factor. #设置等级经验奖励 这里就用到了上面的 factor 和 bonus的 变量设置 set level_bonus [expr {$killer_level * $level_factor} ] #设置 等级经验奖励变量为 杀死怪玩家的等级 乘以 等级的奖励因数 # Get level difference between victim and killer #下面是为了使不同等级的玩家杀不同等级的怪 所得到的经验不同 而写的句子 set victim_creature_type [GetCreatureType $victim] #设置怪的类型变量 从creature的文件中得到怪的类型 set victim_level [GetLevel $victim] #设置怪的等级变量 从怪本身得到怪的等级 set lvldiff [expr {$victim_level-$killer_level}] #设置等级差异变量 从怪的等级 减去 玩家等级得到 (比如怪60级玩家50 等级差异就是10) # Check for elite. #用来检查是否是类型 set entry [GetEntry $victim] #设置 变量entry(估计是怪的类型吧) 得到记录从怪本身 set elite [GetScpValue "creatures.scp" "creature $entry" "elite"] #设置elite (上面有设置过) 这句 我也不明白 是个TCL语句的格式吧 copyright dedecms if {[string is digit -strict $elite] != 1} {set elite 0} #不懂 太专业了 不过我估计是 跟 elite有关 if { $legendaryxp == 1 } { #如果legendaryxp=1 (上面 0/1激活的那个) if { $elite == 3 } { return 0 } #elite=3 (返回0) 就是得到经验 是0 } if {[Distance $killer $victim] > $max_distance} { return 0 } #如果 玩家和被杀的怪距离大于 最大距离(上面设置了75) 就没经验了
if {$victim_creature_type == 8} { return 0 } #如果杀死的怪 类型是8 不得到经验 (什么怪啊??) if {[GetEntry $victim] == 6491} { #如果杀死怪的 entry记录是 6491(6491是数据代码吧 ) 扣除1000经验 (有人说是灵魂医者 ! 汗) if { $class_pl != 0 } { return -1000 } } # Starting XP #设置基本经验为 5 x (玩家等级-1)+50 比如玩家60级 得到经验就是5 x (60 -1) +50=300 (这是基本经验) set base_xp [expr {(5.0*($killer_level-1))+50.0}] set xp $base_xp #设置xp变量为基础经验
# No Xp if player kills a mob too higher level than him dedecms.com # Avoid power lvl up. Usually low level players in party with high level players. if {($killer_level < 50) && ($checklvl == 1)} { #如果玩家的等级小于50 并且checklvl设置为1(上面设置的) (不明白为什么设置等级小于50) set max_victim_level [expr {$killer_level + ($killer_level/4)+8}] #设置怪最大等级变量=杀怪的玩家等级+( 杀怪玩家的等级/4)+8) if {$victim_level > $max_victim_level } { return 0 } #如果 你杀的怪的等级大与怪最大等级变量 就没经验了 (这里就可以改杀怪得经验的等级范围了 }
if {$killer_level >= $max_killer_level} { #如果玩家等级超过了最大等级 得到经验为 0 if { $class_pl != 0 } { return -$xp } } if { $lvldiff > $max_lvldiff } { set $lvldiff $max_lvldiff } #如果等级差异大于最大等级差异 那么设置这个等级差异为最大等级差异 if {$lvldiff < 0} { set xp [expr {$base_xp + ($base_xp * 0.12 * $lvldiff)}] } #当你等级大与怪等级是 得到的经验是 基本经验+基本经验*0.12*等级差异 本文来自织梦 if {$lvldiff > 0} { set xp [expr {$base_xp + ($killer_level * 0.5) + ($base_xp * 0.04 * $lvldiff)}] } #同上 是你等级小与怪等级 就是越级打怪经验更多拉 # Elites switch $elite { #设置4个类型的经验奖励 1 { set xp [expr {$xp * $elite_1}]} 2 { set xp [expr {$xp * $elite_2}]} 3 { set xp [expr {$xp * $elite_3}]} 4 { set xp [expr {$xp * $elite_4}]} }
# Paranoid check. OBs. Players should get XP from Bosses if { $xp < 0 } { return 0 } #如果得到的经验<0 那么只得到 0的经验 set xp [expr {$f_factor * $xp}] #设置经验 为 f_factor*xp 就是0.5*xp #RESTSATE SYSTEM BY GOLGORTH set state [reststate::check $killer] #看不懂 state状况??? 什么状况? 检查杀手的状况 set statesaid [GetQFlag $killer statesaid] #QFlag??? 什么东东 晕了 set staterested [GetQFlag $killer staterested] #不看了 直接不懂 反正是设置什么 变量 从 QFlag中得到数据 if { $state == 1 } { # if { $staterested == 0 } { # 看花了不看了 有什么人给我解释下 本文来自织梦 SetQFlag $killer staterested ClearQFlag $killer statesaid Say $killer 0 "I feel rested!!" return [expr { int($xp*2) }] } return [expr { int($xp*1.5) }] } if { ($state == 0) && ($statesaid == 0) } { SetQFlag $killer statesaid ClearQFlag $killer staterested Say $killer 0 "I feel normal" return [expr { int($xp) }] } #puts "XP: Player: $killer_level, Mob: $victim_level, Elite: $elite...XP: $xp" ClearQFlag $killer mobspoke return [expr { int($xp) }] #返回 因该是语句结束吧 }
proc ExplorationXP { player location } { #这是探索地图得到的经验 # Define Maximum Player Level set maxplylvl 60 #设置变量 Maxplylvl=60 翻译过来是 最大玩家等级=60 set level [GetLevel $player] # 设置变量等级 从玩家的等级得到 if {$level < $maxplylvl} { #如果 等级小与 最大玩家等级 set expxp [expr $level*10] #设置 经验为 玩家等级*10 比如你60级 得到的经验就是 600 } else { set expxp 0 #否则 就得到 0 就是 等级如果超过了 最大等级 就没经验了 本文来自织梦 } #puts "Exploration: $player just explore to $location" return [expr int($expxp)] }
先翻译到这里 还有好多哦 不过就这里比较重要 这里是官服的经验倍数, 如果要改就要把 基本经验修改下改大一点
if {$lvldiff < 0} { set xp [expr {$base_xp + ($base_xp * 0.12 * $lvldiff)}] } 把这句改成 if {$lvldiff < 0} { se)t xp [expr {$base_xp + ($base_xp * 0.12 ) 要不 打小于你等级的怪 经验就太少了 其他的自己44看吧
| |
|