scriptってなんぞや?って方はこちらのサイトで勉強するのが良いです。
ToKの暇つぶしさん
僕もあれ?どうやるんだっけ?てなったりする事があるのでお世話になってます。
ほんとに基礎の基礎が判りやすく解説してあります。
少し判ってきたら、CSwiki日本語版を、さらに上を望むなら
CSWikiOBSEを参考にするといい感じです。
では、今回はOBSEも使ったscriptingをメモっておきます。
TP武器のscript内訳
長いので続きに
拍手コメ有難う御座います。
解説と言いましても、script書いてる人用ですよね…。
1から始める人には難しいかもしれません。
obse wikiみて来ました。
仰るとおり
AddItemNS
と記述する事でスパムメッセージ消せるんですね!
凄く有難い情報です。
武器に付与するscript Script TypeはMagicEffectマジックエフェクトの再生については別の機会にでも…
scn 00WSTest
;(SCN=SCriptNameref me
;(誰に効果を付与するかなどref myBall
;(オリジナルの魔法エフェクトを使う場合Midas先生の参考にさせてもらってます。
float STR
;(変数float Blade
;(変数float LV
;(変数float LUK
;(変数float RandomDMG
;(変数float WSDMG1 ;
(変数 TP100%時float WSDMG2 ;
(変数 TP200%時float WSDMG3 ;
(変数 TP300%時float GainTP
;(変数 得TPfloat ang
;(変数 魔法の座標とかfloat zPos
;(変数Begin ScriptEffectStart
;(Ench武器が敵にHitした時発動 set me to GetSelf
;(変数meが誰か決める。この場合Hitした敵=meとなる set ang to me.GetAngle z
;(的の座標チェック set myBall to aWSProtesEffectRef
;(マジックエフェクトのRef、リファレンスをMyBallと定める 何処でもいいのでCellにアクティベーターカテゴリにマジックエフェクトを登録して設置、Persistent Referenceにチェック ReferenceID=aWSProtesEffectRefと決める set STR to player.getav strength
;(プレイヤーの腕力をSTRと定める set LUK to player.getav luck
;(運を~ set Blade to player.getav Blade
;(刀剣スキルを~ set LV to player.getLevel
;(LVを~ set RandomDMG to LUK/100 + (GetRandomPercent/100)
;(乱数ダメージを設定 運が250で乱数0~1.0の数値を足す 2.5~3.5 この数値はちょっと高すぎるので要検証 現在ではクリティカルっぽくなってる set GainTP to LV/25 + 2 + (GetRandomPercent/50)
;(得TPの計算 基本値+2 LV25毎に+1 ランダムに 0~100分の50=+0~2 set WSDMG1 to -(LV * 5 - ((1 + Blade/250) + (1 + STR/200))) * RandomDMG
;(TP100%時の補正、これも要検証 基本ダメージがLV依存なのでこの数値が鍵となっている 敵とのLV差にしてもおもしろそう その場合は set EnemyLV to me.getlevel を設定して Player.LV - EnemyLVとすればいい set WSDMG2 to -(LV * 8 - ((1 + Blade/245) + (1 + STR/195))) * RandomDMG
;(TP200%時の補正 set WSDMG3 to -(LV * 11.1 - ((1 + Blade/240) + (1 + STR/190))) * RandomDMG
;(TP300%時の補正 if player.getitemcount 00TPToken300 == 1
;(プレイやーがTP300%のトークンを所持してる場合 myBall.SetDestroyed 0
myBall.moveto player 0 0 zpos
myBall.SetAngle Z ang
myBall.Activate me 1
;(魔法エフェクトの再生 me.ModActorValue Health WSDMG3
;(ダメージを対象から減らしてる WSDMG3の値が-なため Health + 10 -10 はできるが変数に-を書き加えることが出来ないので 変数を設定する際に-にしておく PlayMagicShaderVisuals 00ProtesEffectGroup 1
;(マジックエフェクト以外にエフェクトを再生させる message " "
;(空メッセージを二つ置く事で、直後のメッセージを消すことができる message " "
player.removeitem 00TPToken300 1
;(判定に使ったアイテムを削除=TP300%消費したって事で elseif player.getitemcount 00TPToken200 == 1
(;以下同じ myBall.SetDestroyed 0
myBall.moveto player 0 0 zpos
myBall.SetAngle Z ang
myBall.Activate me 1
me.ModActorValue Health WSDMG2
PlayMagicShaderVisuals 00ProtesEffectGroup 1
message " "
message " "
player.removeitem 00TPToken200 1
elseif player.getitemcount 00TPToken100 == 1
myBall.SetDestroyed 0
myBall.moveto player 0 0 zpos
myBall.SetAngle Z ang
myBall.Activate me 1
me.ModActorValue Health WSDMG1
PlayMagicShaderVisuals 00ProtesEffectGroup 1
message " "
message " "
player.removeitem 00TPToken100 1 else
message " "
message " "
;(
この紫色の部分はOBSEだとAdditemNSと同様RemoveItemNSでメッセージの表示を切る事ができます。よってMessage""は必要ないですね。)
player.additem xTPToken GainTP
;(プレイヤーがTP100,200.300のトークンを持っていないときは、得TPが加えられますendif
end
得TPの変換 ScriptType object所持してるTPを100,200,300%のトークンに変換、と同時にアニメーションを再生させている。scn xTPCheck
float MyTP
;(変数プレイヤーの現在TPBegin OnEquip
;(プレイヤーがこのスクリプトを付与されたアイテムをクリックした時走るset MyTP to player.getitemcount xTPToken
;(プレイヤーが所持してるTPトークンの量をチェック message " "
message " "
if player.getitemcount xTPToken >= 300
;(TP量が300以上のとき アイテムをクリック、装備した場合 message " "
message " "
player.additem 00TPToken300 1
;(TP300%のトークンを入手 message " "
message " "
player.additem 00WSAnimPlay 1
;(WSの構えるアニメーションを再生させるためのトークンを入手 message " "
message " "
player.Removeitem xTPToken 100000
;(TPの余剰分を含めて削除 elseif player.getitemcount xTPToken >= 200
;(TPが200以上のとき~ message " "
message " "
player.additem 00TPToken200 1
message " "
message " "
player.additem 00WSAnimPlay 1
message " "
message " "
player.Removeitem xTPToken 100000
message " "
message " "
elseif player.getitemcount xTPToken >= 100
message " "
message " "
player.additem 00TPToken100 1
message " "
message " "
player.additem 00WSAnimPlay 1
message " "
message " "
player.Removeitem xTPToken 100000
message " "
message " "
else
message " "
message " "
Message "現在のTP:%.0f" MyTP ;(TPが100未満の場合 現在のTPを教えてくれる
endif
end
WSアニメーションの再生方法再生させるために必要なのはアイテムトークン(Playableの有無を設定できる物、服とか)
SpecialIdleとして登録する
服アイテムにモーションを登録したという事になってる。
scn 00WSPlayAnim
begin OnAdd player
;(プレイヤーのインベントリに追加された時走る 得TPのスクリプトで、服トークンが追加された瞬間再生されることになる player.pickIdle 1
;(Player.=プレイヤーにモーションをとらせる 1=現在のモーションをキャンセルして再生 0=そのまま再生 2=現在のモーションが止まってから再生 playsound aaTU
;(サウンドエフェクトの再生 playsound aaVajraAfterMath
player.PlayMagicShaderVisuals aaWSAnimPlay 1
removeme
;(再生トークンを削除
end
読みにくいけどメモだし、こんなもんか。