したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

【Weiss】技術的なスレ

210Cardinal:2003/06/01(日) 01:37 ID:2Xv3z3i2
l := ts.Data.EXP * (ts.EXPDist[i].Dmg) div total;
式の計算は左から行われます。
つまり、まず、敵の経験値に各自の与えたダメージが掛けられ、
その後に全員の与えたダメージの合計(ほんとはMAXHPなんだけど、
途中で死んだ人が与えた分のダメージは除外しないといけないため)
で割られます。
ここで、HPとEXPの高い敵を倒した場合、かけ算が発生した瞬間、
数値が32ビット整数値の限界(4Gか2Gくらい)を超えてエラーになります。
つまり、経験値とMVP経験値の部分をそれぞれ
l := 100 * (ts.EXPDist[i].Dmg) div total;
l := ts.Data.EXP * l div 100;
これに置き換えればエラーがでないはずです。

ごめんなさい。既に手元では修正済みです・・・
うぉるやふぁC等でステータス補正がマイナスになると落ちる現象も確認してます。
(これはパケット送信部の数値を型変換で修正可能)

あと、mob_dbとかitem_dbとかの空白欄は0として扱われます。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板