記事一覧

収集品に光を その2

ファイル 348-1.jpg

前回の改造術でモンスターから複数個のアイテムドロップ法を紹介しました。
しかし、欠点は毎度同じような個数でつまらないという事です。
そこで今回は確率という概念を見直し、倍率の仕様を大幅に変えることに挑戦してみます。

説明しますと、50%確率のアイテムで倍率5倍のドロップ率で、今までの倍率では
50% * 5 = 250%
でした。
しかし今回は、「倍率の回数分ドロップ判定を行う」という仕様にします。
50% * 5回判定 = 0~5
これである程度バラつきを再現し、本来の"確率"の概念を活かすことができます。
続きを読む

コメント一覧

ジッタ (06/25 16:37) 編集・削除

こんにちは。
こちらの方法をためそうとしたのですが、コンパイルするときにエラーがでてしまいました;
どうすればいいのかくわしく教えてくれませんか??

Blaze (06/25 22:27) 編集・削除

ジッタさん、こんにちは。
ちょっと情報が少なくて指摘箇所が見つからないのですが・・・
使用環境・エラー内容などを書いてくださると心強いです。

参考までに、この改造術を紹介したときのAthena環境は2304を使用しています。
もう一度、弄った所などをご確認ください。

ゼル (04/25 19:31) 編集・削除

100倍なら100回判定となっていますが
この判定を倍率ではなく、個別にはできないでしょうか?
例えば、100倍だけど10回しか判定はしない。という事です。
これができれば、倍率を高めてもなんとかなりそうなので…
自力でやれないのに要望を出してしまってすみません。
もしやっていただけるのなら、その時はよろしくお願いします。

収集品に光を

ファイル 347-1.jpg

ROの収入源の1つである収集品アイテム。
モンスターを倒し、戦利品として入手し、店で売ってお金を得る。
また一部の収集品は作成アイテムの材料だったりします。

しかし、Athenaではいまいち実用感が薄い収集品。
高倍率になってくると、収集品を売るよりレアな装備品などを売った方が効率的だからです。
これでは材料として集める機会も少なくなり、作成アイテムの存在感が無くなってきます。

そもそもドロップが高倍率なのに、収集品1つずつしかドロップしないのがいけません。
レアな装備品が出る確率と収集品の入手数のバランスを保つのが本来のMMOの形です。

そこで今回の改造術「収集品のドロップ率で倍率をかけた時、キャリーオーバー分を複数ドロップさせる」を紹介します。

簡単に説明すると、ドロップ率50%のアイテムで倍率5倍の場合、
50% × 5 = 250%
本来ならばここで100%ドロップで済みますが、
キャリーオーバー分150%の分も考慮しここでは2個、50%の確立で+1個という具合にします。
続きを読む

コメント一覧

auriga (12/07 21:16) 編集・削除

aurigaでは行がずれおり記述も若干違うようですがそれぞれどのようにすればaurigaで動きますか?

ななし (12/25 21:45) 編集・削除

aurigaの回答まだ?

TheSignダンス挙動修正

各所でTheSignのダンスで詰まってしまうという声をたくさん頂いております。
ただ、これに関してはソースの不具合なので、スクリプトとは別途に修正を要します。

不具合の内容は
OnTouchしているNPCがハイドすると、タッチしているプレイヤーがNPC情報を保持したままとなり、連続した他のNPCのOnTouchが認識されない
というものです。

ここでは、次の対処法
npc.cのnpc_enableに、ハイドした時(無効になった時)にnpc_enable_subを呼び出すようにし、
npc_enable_subの処理に無効時にTouchしているプレイヤーがいる場合はareanpc_id情報をリセットする
を紹介します。

修正対象はnpc.cのみです。
続きを読む

コメント一覧

ほえほえ (06/10 22:41) 編集・削除

いつもお世話になります~。
そのように修正してみたんですが、やはり、チャットルームが
出なくて先に進めなくなってしまうようです。
お時間がありましたら、検証、よろしくお願いします。

Blaze (06/10 23:18) 編集・削除

もしかして、スクリプト本体を古いバージョンをお使いでしょうか?
AthenaDevさんにて最新の物がありますので、そちらもご確認ください。

チャットルームが出ない件について、古いものはNPC座標が
「cmd_in01.gat」→「ccmd_in01.gat」
となっているので、変なマップを指定してしまっています。
cを一つ削除することで表示されると思いますが、どうでしょうか。

ほえほえ (06/11 14:06) 編集・削除

やはり、スクリプトが5/11時点の物でその後、大きく変わったんですね。
最新のにしたらチャットルームが出るようになり、先に進めるようになりました。

そして、6012行目辺り、ヴァルキリーのところへ転送される、
ところで進めないという報告があったので、
//if(SIGN_QUE > 80) {
//warp "himinn.gat",49,10;
//end;
//}
この条件文がじゃまで先に進まないようなので削除してみて、
進めたのですがこれでいいのでしょうか。

Blaze (06/11 16:46) 編集・削除

今確認してみました。
どうやらフラグ判定の順序がおかしく、判定が正しくなくなるようです。
対処は、#himinnwarpのOnTouchから3つのif文のうち
    if(SIGN_QUE != 80 || countitem(907) < 4 || countitem(953) < 12 || countitem(7013) < 365)
と長いif文を一番下に、
フラグ203の処理が一番上に、80より上のワープ処理が真ん中にくるように入れ替えてみてください。
ご報告ありがとうございました。

取巻きモンスター挙動

ファイル 286-1.jpgファイル 286-2.jpg
※今回は中途半端なものとなっていますので、適用はオススメできません。

現在のAthenaでは、取巻きモンスターは召還者の9x9マスに入った時点で移動を止めます。
そのため、召還者が移動すると取巻きは範囲内ギリギリの位置で移動を止めてしまうため、取巻きモンスターが1箇所に固まりやすいです。
本鯖の仕様では「範囲外に外れた場合、範囲内のランダムな位置まで移動」となっています。
これを実装させようと今回弄ってみたいと思います。

改造対象はmob.cの722行目あたり

    dx=mmd->bl.x - md->bl.x;
    dy=mmd->bl.y - md->bl.y;
    if(dx<0) dx+=(atn_rand()%( (dx<-3)?3:-dx )+1);
    else if(dx>0) dx-=(atn_rand()%( (dx>3)?3:dx )+1);
    if(dy<0) dy+=(atn_rand()%( (dy<-3)?3:-dy )+1);
    else if(dy>0) dy-=(atn_rand()%( (dy>3)?3:dy )+1);

を次のように置き換えてみました。

    dx=atn_rand()%9-4+mmd->bl.x - md->bl.x;
    dy=atn_rand()%9-4+mmd->bl.y - md->bl.y;

これで範囲外の場合、範囲内のランダムな位置に収まろうとします。
が、いくつか問題点が発覚しました。
召還者との距離が5マス以上離れてる時点で取り巻きが移動します。
ですが、召還者の移動距離が長かったりすると、範囲内に落ち着いた取り巻きがまた5マス以上離れたりして再度移動をしたりします。
その動きがあまりにも不自然だったり。

安易に考えた改造内容なので、まだまだ改良の余地がありそうです。
本鯖のMob同士の同位置移動回避も実装しないといけなかったり。
そういえば、本鯖の取り巻き範囲って9x9だったかな・・・
また色々と手を加えたりしていきます。

LvUP時のステP獲得値を変えてみよう

Baseレベルアップ時に得られるステータスポイント値。
本鯖仕様では以下のように得られます。

BaseLv … Point
2~5 … 3
6~10 … 4
11~15 … 5
16~20 … 6
21~25 … 7
26~30 … 8

81~85 … 19
86~89 … 20
91~95 … 21
96~99 … 22

つまり、(BaseLv + 14) / 5 の計算式の元に得られています。

99の時点の累計ポイントは1225。
このステータスポイントをもうちょっと上げてみたい!
又は得られるポイントを一定にしてみたい!
などの方の今回の改造術です。

改造対象はpc.cの1点のみです。
簡単なのでサクッと行ってみましょう。
続きを読む

コメント一覧

こより (03/21 14:10) 編集・削除

だいぶ前にここをえらく急激な単調増加式にして、オーバーフローしちゃった記憶がある(・x・`)

一閃の挙動修正

ファイル 261-1.jpgファイル 261-2.jpg
色々と差違点がある追加職スキル。少しずつ直していきます。
今回は一閃の挙動を本鯖仕様に修正してみましょう。

現Athenaでは射程1マス、瞬間移動なしですが、
本鯖では射程5マス、チャージアタックのように対象まで接近移動します。
既存の処理部分を借りるだけの変更点なので、今回は簡単な改造術です。

改造対象は
db/skill_db.txt
src/map/skill.c
の2ファイルです。
続きを読む

心休まる街にしよう

ファイル 207-1.jpg

街は休まる場所でなくてはいけません。
ゆっくりできる環境、拠点としての機能を持ち合わせてこそ街という居場所ができます。
・・・という概念の元、今回の改造術「街にいる間はHP・SPの自然回復が早くなる」という効果を設定したいと思います。
テンションリラックスみたいな感じです。

具体的には「マップフラグnopenaltyが設定されている場所にいる間、自然回復力が向上する」という具合にします。

改造対象は
pc.c
の1点のみです。
続きを読む

スキル使用時、Zenyを消費しない新ボーナス

BBSでジョーカーさんが質問されていた「スキル使用時、ゼニー消費しない」という効果を持ったアイテムなどの実装をしたいと思います。
具体的には bonus bNoZeny という新ボーナスを作ってみます。

改造対象は
db/const.txt
src/map/map.h
src/map/pc.c
src/map/skill.c
の4ファイルです。
今までと比べると難しくなりますが、頑張っていきましょう。
続きを読む

コメント一覧

Blaze (01/09 23:41) 編集・削除

書いた後に気付いたのですが、skill.cの弄る箇所、メマーナイトの箇所よりも最終的のZeny消費の箇所を弄った方が賢明のようです。
skill.cの8954行あたり、Zeny消費の項

    if(zeny > 0) // Zeny消費
        pc_payzeny(sd,zeny);

の部分を

    if(zeny > 0 && !(sd->special_state.no_zeny)) // Zeny消費
        pc_payzeny(sd,zeny);

に変更するだけで他のスキルもZenyを消費するのを抑える事が出来ます。

宝剣強化

カードの効果が強力で、その分イマイチ使い辛いLv4武器。
そこで、カードに負けないように効果を改造してあげます。
今日は宝剣(ファイアーブランド、アイスファルシオンなど)のオートスペル効果に着目してみます。

紹介するのは、「精錬値分のLvのオートスペルが発動」です。
例えば、+7ファイアーブランドだとLv7のファイアーボルトが発動するようになります。
結果的に過剰精錬をあまりしないLv4武器の需要度が上がるとかそこまで考えてなかったり。

ここから改造術

コメント一覧

Cocoa URL (11/19 14:00) 編集・削除

うちの鯖では全Lv4武器に精錬効果をつけてますが、
需要が高いのは宝剣2種、村正、裏切りぐらいですね・・・
もともと効果の弱い武器に需要を持たせるなら飛び出た効果がないとなんとも・・・

Blaze (11/21 21:00) 編集・削除

MMORPGの特徴として、日々キャラの強さと強い武器を求めるのは当然の欲求ですよね。
弱い武器、使えないキャラ等が出るのは仕方ないことかもしれません。悲しいことですが・・・

けど、そういった存在の物も必要だとは思います。
装備や職業などの考案の幅が広がりますし。
そういった意味では、戦略の幅が広がるオリジナル要素も大事だと思いますよ。

Gokismith (12/19 23:30) 編集・削除

防具につけても面白い効果ですよね。
Sアーマー、みたいな劣化のさらに劣化みたいな防具は
エミュ鯖で倍率が高いと重い割にNPC売りがしょぼく、
廃棄しまくりになってしまいます。
これを使うといきなり価値が出てくるかもしれませんね。

MAXレベル10でないと使えないのが一寸残念ですが。

歩行速度を変えてみよう

プレイヤーが歩く速度が遅くてイライラしていませんか?
ROの広いマップを歩くのに時間がかかる・・・移動が面倒くさい・・・
そこで、今回はプレイヤーの歩行速度を変えてみる改造法を紹介します。
今回も簡単な改造法からです。

改造対象は、src → common → mmo.h ファイル。
改造する前にバックアップを取っておきましょう。といっても、簡単ですが・・・

mmo.hの29行目に

#define DEFAULT_WALK_SPEED 150

という箇所があります。
DEFAULT_WALK_SPEED = 標準の歩く速度。そのまんまですね。

初期は150になっています。この数値を変えるだけでプレイヤーの歩行速度が自由自在です。
値が小さくなるほど速く、値が大きくなるほど遅くなります。
あまり小さくしすぎると動作がおかしくなる可能性があるので、50より上に設定するのが好ましいです。

#define DEFAULT_WALK_SPEED 135

10程度変わるだけでも体感は結構違ってきます。
あまり速過ぎず、遅過ぎず、適切な数値を探してみましょう。
書き換えた後はリメイクを忘れずに!

mmo.hは他にも各種設定が可能です。
ほとんど読めば分かりますが、後々紹介していこうと思います。

ページ移動