admin admin List
scriptってなんぞや?って方はこちらのサイトで勉強するのが良いです。
ToKの暇つぶしさん
僕もあれ?どうやるんだっけ?てなったりする事があるのでお世話になってます。
ほんとに基礎の基礎が判りやすく解説してあります。

少し判ってきたら、CSwiki日本語版を、さらに上を望むならCSWikiOBSEを参考にするといい感じです。

では、今回はOBSEも使ったscriptingをメモっておきます。
TP武器のscript内訳
長いので続きに

拍手コメ有難う御座います。
解説と言いましても、script書いてる人用ですよね…。
1から始める人には難しいかもしれません。
obse wikiみて来ました。
仰るとおり
AddItemNS
と記述する事でスパムメッセージ消せるんですね!
凄く有難い情報です。
拍手する

武器に付与するscript Script TypeはMagicEffect
マジックエフェクトの再生については別の機会にでも…

scn 00WSTest ;(SCN=SCriptName

ref 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 ;(変数 得TP

float 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 ;(変数プレイヤーの現在TP

Begin 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の有無を設定できる物、服とか)

AnimePlay.jpg
SpecialIdleとして登録する
服アイテムにモーションを登録したという事になってる。

scn 00WSPlayAnim

begin OnAdd player ;(プレイヤーのインベントリに追加された時走る 得TPのスクリプトで、服トークンが追加された瞬間再生されることになる

player.pickIdle 1 ;(Player.=プレイヤーにモーションをとらせる 1=現在のモーションをキャンセルして再生 0=そのまま再生 2=現在のモーションが止まってから再生
playsound aaTU ;(サウンドエフェクトの再生
playsound aaVajraAfterMath
player.PlayMagicShaderVisuals aaWSAnimPlay 1
removeme ;(再生トークンを削除

end
読みにくいけどメモだし、こんなもんか。
[タグ] [MODメモ]


















お忍びでコメント



| HOME |


Design by Vanilla Beans.
Copyright © 2023 Vanilla's Village, All rights reserved.