作者laechan (小太保)
看板mud_sanc
标题Re: [问题] 现在的bousou
时间Mon Jun 28 23:04:00 2010
用这篇解释暴走部份的程式设定流程,会有一些程式码,
看不懂程式码的就专看解说也可以。
暴走由 heart bousou 发动,发动後会在玩家身上设定两
个参数..
#define BASIC_BOUSOU_TIMES 60 // 基本暴走时间
t=time(); // 现在时间
i=(int)me->query("skill/fighter heart")/100; // 战士之心/100
me->set_temp("time_record/bousou_times",t+BASIC_BOUSOU_TIMES+i);
me->set("record_data/next_bousou_times",t+300); // 下次可再使用时间
最高持续时间 159 秒,再使用时间为施展後 +300 秒。
与 bousou 参数有关的指令则是..
cast 在暴走持续时间内无法 cast
drink 在暴走持续时间内无法 drink
heart 在暴走持续势间内无法 heart
recall 在暴走持续时间内无法 recall
spell 在暴走持续时间内无法 spell
steal 在暴走持续时间内无法 steal <= 不过这有设跟没设一样
swoop 只有在暴走状态才可以使用
系统部份与 bousou 有关的部份则是..
一、/adm/daemons/user_d.c 的 continue_attack 函数
里面有一行「若玩家血量 < 1」就阵亡......囧rz
这行已经顺手改掉了,改成若在暴走状态就不会死。
(然後若是直接 call die 式的攻击仍会死)
二、/std/user.c 的 heart_beat(心跳周期循环函数)
// Laechan@Sanc add in 2010/06/09
// 唯有玩家处於有心跳的状态, 暴走的参数才可能解除
// 否则即便在断线状态中暴走参数已过期仍无法解除
// 在 improve_skill 中则会有相关判断
if(query_temp("time_record/bousou_times")<now_times2)
delete_temp("time_recofrd/bousou_times");
else
data["pp"]=data["pp_src"];
上面的意思是如果你在暴走中断线,暴走参数会在,只要
该参数还在就完全无法获得技能熟练度。另外目前在暴走
中断线也会送 shout 讯息,方便判断是否不当使用暴走。
若该参数在且未过期,就回不断地回复暴走中的玩家的pp
Laechan
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.9.179
1F:→ golds :bousou时间跟以前比起来 似乎缩短不少 06/28 23:28
2F:→ golds :不过我想问的是 能否自我解除bousou? 例如时间到了 06/28 23:28
3F:→ laechan :不行, 但可以讨论"不行"能否做为施放的代价 06/28 23:28
4F:→ golds :PP不会恢复 也会被打死了 但是仍然在bousou 06/28 23:28
那就改成暴走无过期的问题也可以。
但相对的代价就是..
一、你本次的暴走时间越长,到下一次能再使用的间隔
时间就越长。--代价一
二、应统一有暴走後遗症。--代价二
例如到下次能再施展前的这段期间,有些指令不能
用、有些道具不能用、etc...
三、暴走仍会死於一些特殊的死法,而且其 range可能
更宽,例如会直接解除你暴走再瞬杀你的。
无过期的好处就是不用判断 time,缺点就是断线者不
判断 time 就得判断别的,所以有一种改法就是暴走中
断线就是暴水晶。
(不判断 time 的好处就是减轻系统负担)
但同样的,以一来说将来般若忏同样可以缩短其再使用
时间,以二来说牧师将来某些法术可能可以「解除或减
轻」其副作用。
5F:→ golds :此时系统不给你重新bousou赚PP的机会 06/28 23:29
6F:→ golds :不给解也无所谓 只是想重新bousou 确保不死之身这样 06/28 23:31
※ 编辑: laechan 来自: 122.117.9.179 (06/28 23:40)