逆コンパイル向け > 解析情報 > skill_data

skill_data

ステータス、スキル関連

メモリ改造はあんまりやらないから詳しいことは言えないけど。

HSPで扱える数値型変数は4バイト符号付整数と8バイト倍精度浮動小数点のみ。リトルエンディアン。
配列変数は必ず連続した領域が使用され、2次元以上の場合は
array(0,0), array(1,0)....array(n,0), array(0,1), array(1,1)...の順で参照される。

elonaではごく一部の計算の途中経過に浮動小数点が使われる他は全て整数で保存、計算されている。
各キャラクタのデータは2つの配列変数に格納されている。
(フィートとかエーテル病とか呪文のストックとかプレイヤー専用の状態は別変数)
定義はこんな感じ。
dim cdata, 500, 245
dim sdata, 1200, 245
そんでcdata(38,0)がプレイヤーのレベルでsdata(10, 0)がプレイヤーの現在の筋力だったりする。
skillの方はsdata(0~599,ユニットNo)が現在値、sdata(600~1199,ユニットNo)が基本値と経験値と成長値を表している。
(プレイヤーのユニットNoは0)
現在値の方は何かの理由で変動するたびに基本値から再計算されるので書き換えても意味が無い。
基本値のほうは例えば窃盗スキル(識別番号303)を[c]コマンドでスキルを見たときに23.456(123%)となっていたらsdata(303 + 600, 0)には23456123(16進:165E97B)が入ってる。
この形式は筋力等の能力値もスキルも魔法も同じ。
上で書いたように配列変数は必ず連続してるので適当なスキルを元に検索して識別番号の差*4のアドレスを探せばどんなスキルも変えられるはず。

skillで書き換える価値があるのは:解析/魔法スキルリストで書いたのが全部。
statusの方は17:好感度、21:生年、30:金、31:プラチナ、34:名声、35:EXP、36:NextEXP、38:レベル、41:スキルボーナス、49:カルマ、61:信仰する神、62:信仰ポイント、くらいかな。
cdata(85, キャラNo)=雇用回数。雇用するたびに+1。
cdata(100~129, キャラNo)が装備箇所。
無し, "頭", "首", "背中", "胴体", "手", "指", "腕", "腰", "足", "遠隔", "矢弾"
がそれぞれ0、10000、20000……110000に対応。
装備箇所を16個以上にすると装備画面が2ページに。
アイテムを装備している時、その装備箇所の値が+アイテムNoされる。

ユニット別スキル値格納様配列

sdata.s1 ユニットNo. 0 ~ 56の領域
sdata_???_???.s1 ユニットNo. 57 ~ 244の領域
dim sdata, 1200, 245
配列の要素サイズは4バイト(=符号付32ビット整数)

魔法ストック関連

魔法ストックはこんな感じ
spell.s1
dim spell, 200
spell(魔法の識別番号-400)がその魔法のストック数。[v]で表示されるのと同じ値。
識別番号は:解析/魔法スキルリストのやつ。

レシピ関連情報格納配列

krecipe.s1
dim krecipe, 3, 800
各アイテムに対するレシピ習得済みフラグ等が格納される
krecipe(0, アイテムID) レシピ習得済みフラグ
krecipe(1, アイテムID) 未使用
krecipe(2, アイテムID) 未使用

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2011年03月27日 16:15