既にプレイヤーに出回っているアイテムのパラメータを修正、スキルキャップの変更など(Deserialize利用)
- カテゴリー: スクリプト
- 重要性: 普通
- 投稿日: 2005-08-04 (木) 22:29:05
自作のアーティファクトを導入したは良いが、後から考えてみると強すぎてバランスを壊してしまう。でも削除するのはプレイヤーに悪い。途中でステータスやスキルキャップを変更したくなったけど、プレイヤー一人一人修正しなくてはならない。そんなことでお困りになったことはありませんか?問題のアイテムを削除してプレイヤーに手作業で再配布したり、一人一人修正してまわるなんてもう古い!これからはDeserializeを利用して再起動一発で全部修正しちゃいましょう!
Deserializeとはなんぞやという人はTips5を読んでください。
Deserializeはデータのロードをするメソッドですが、ロードした後にデータを修正することも出来ます。
スキルキャップの変更
Scripts\Mobiles\PlayerMobile.cs Deserializeの一番最後の部分に
SkillsCap = 700; StatCap = 225;
のように追加で再起動時に変更されます。
Skills[SkillName.MagicResist].Value = 100.0; Skills[SkillName.MagicResist].Cap = 100.0;
のようにスキル値やスキル上限など、キャラクターに存在するパラメータなら変更できます。
アイテムのパラメータ変更
とりあえず分かり易そうなScripts\Items\Wands\BaseWand.csで
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_WandEffect = (WandEffect)reader.ReadInt();
m_Charges = (int)reader.ReadInt();
break;
}
}
//ここから追加
if ( m_Charges >= 100 )
m_Charges = 100;//もしチャージ数が100以上ならば100
else if ( m_Charges < 5 );
++m_Charges; //もしチャージ数が5未満ならば1増加
}
このように条件で変更することも出来ます。