高効率なジャンプ鯖向けのHPリジェネプラグイン試作してみた
概要
いわゆる、ダメージくらった時に自動でヘルスマックスに回復(リジェネ)するプラグイン。それを負荷を抑えた実装にしてみたというやつ
詳細
https://github.com/kimoto/sourcemod-plugins/blob/master/scripting/nj_regen.sp
withgod作のscriptがベースだが、プレイヤーごとにCreateTimerを発行して0.N秒おきにRegeneteする実装だと、なんか人が増えた時に重くなりそうな気がする。
そこでplayer_hurtイベント発生時にリジェネする感じの実装を作ってみた。コンセプトコードなので細かいエラー処理とか省いてるけどまぁちゃんと動く。player_hurtはプレイヤーがダメージを受けた時に発生するイベントで、このダメージ受けたというイベント自体を潰してかつ、その瞬間にリジェネしてるのでダメージ食らったとしてもまったくhealth減らないみたいな感じ。この方式だと常にmax healthの状態になる。
どういうことかっていうとCreateTimerほうしきだと
200 175 200
みたいな感じで一瞬ダメージ受けた時はその分ライフへって、次のtimerタイミングで200に戻る感じだけど、player_hurtをトリガーとしたこのリジェネ方式だとダメージ受けた瞬間に、しかもPreHookなのでダメージ受ける前にダメージイベント自体を消してリジェネしてる感じかな? (あんま詳しくない。)なので
200 200 200
みたいな感じ。ワンチャンさえ死ぬ可能性がないし、おそらく負荷も小さいんじゃないかな。Timer一個も使ってないので。CreateTimer方式だとワンチャン死ぬんじゃないかな。瞬間的に5000とかダメージ入ったら。
この方式だと
hurtme 5000
でも死なない