--.--.-- *--*
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

はじめてのAurigaスクリプト 番外編(3)

2012.05.25 *Fri*
■アイテムスクリプトについて。

アイテムスクリプトは、アイテム使用時、装備時に実行されるスクリプトです。
アイテムボーナスとも呼ばれます。
アイテムスクリプトは、db/item_db.txtの各データの末尾に記述されています。

 <ItemID>,<英語名>,<日本名>,~~略~~,{~使用時スクリプト~},{~装備時スクリプト~} 
見ると気づくと思いますが、アイテムスクリプトは通常のスクリプトと違い、
一行にまとめて書かないといけません。

毒薬の瓶のスクリプト
if((Job == Job_Assassin) && (Upper == UPPER_HIGH) || (Job == Job_Guillotine)){ sc_start SC_SpeedPot2,60000,0; }else{ percentheal -100,0; }


※こういう1行に複数の命令を記述する事を「マルチステートメント」と呼びます。
 8bitマイコン全盛期の当時では処理速度の向上にもなるため、主流な書き方でしたが、
 PCの高速化と、可読性の悪さによるメンテナンス性低下につながるため、
 現在では、こういった制約のある場合を除き、あまりお薦めできる書き方ではありません。


■記述方法

アイテムスクリプトは、アイテム専用の命令を使う場合がほとんどの為、
普通のNPCのスクリプトとは違い、命令が並んでいるだけの場合がほとんどです。

アイテムスクリプトの命令の詳細は、doc/item_bonus.txt に記載されています。

例えば、装備すると、Mdef+2、INT+1、LUK+1のアイテムの場合、
 bonus bMdef,2; bonus bInt,1; bonus bLuk,1; 

という感じになります。


■精錬値、セット効果

最近の追加アイテムはセット効果や精錬効果のあるものが増えてきました。
そのようなアイテムには、便利な命令はありませんので、
スクリプトで条件分岐したりして記述しないといけません。

以下はitem_bonus.txt に記載されていない、よく使われる関数です。

 getequiprefinerycnt(<pos>) …… 指定位置の装備品の精錬値を調べる。
 getequipid(<pos>)  ……………… 指定位置の装備品のitemIDを調べる。
 equippeditem(<itemID>) ………… 指定のアイテムが装備中か調べる。(こちらが便利)
 readparam(<status>) ……………… ステータスの値を見る。bStr、bInt、bMatkなど。


【例】
2374#ディアボロスローブ#
人間が使わない文字が
書かれた正体不明の衣服。
身に着けた者は新しい存在の
言語を習得するようだ。
―――――――――――――
MSP + 150、MDEF + 5。
―――――――――――――
スキルディレイ 10% 減少。

[ヒール]、
[サンクチュアリ]、
[ポーションピッチャー]、
[ハイネスヒール]、
[コルセオヒール]の
効果が 6% 増加。

ディアボロスリングと共に
装備時、物理攻撃で与える
ダメージ + 3%。
MATK + 3%。
―――――――――――――
系列 : 鎧
防御 : 57
重量 : 30
要求レベル : 60
装備 : 転生アーチャー系 転生マジシャン系 転生アコライト系

装備時スクリプト
bonus bMaxSP,150;
bonus bSkillDelayRate,-10;
bonus2 bAddSkillHealRate,28,6;
bonus2 bAddSkillHealRate,70,6;
bonus2 bAddSkillHealRate,231,6;
bonus2 bAddSkillHealRate,2043,6;
bonus2 bAddSkillHealRate,2051,6;
if(equippeditem(2729)) {
bonus2 bAddRace,10,3;
bonus2 bAddRace,11,3;
bonus bMatkRate,3;
}


1641#グロリアス治癒の杖#
Matk + 135。
―――――――――――――
自分が使用する
[ヒール]、
[サンクチュアリ]、
[ハイネスヒール]、
[コルセオヒール]の
回復量が + 14。
―――――――――――――
精錬値が 5以上の時、
スキルディレイ - 5%。
―――――――――――――
精錬値が 7以上の時、
スキルディレイ - 5%。
[ヒール]、
[サンクチュアリ]、
[ハイネスヒール]、
[コルセオヒール]の
回復量 + 5%。
[祝福]Lv 1。
―――――――――――――
精錬値が 9以上の時、
スキル[ヒール]使用時、
一定確率でオートスペル
[ヒール]Lv 10発動。
―――――――――――――
精錬値が 10の時、
[ヒール]、
[サンクチュアリ]、
[ハイネスヒール]、
[コルセオヒール]の
回復量 + 10%。
―――――――――――――
絶対に破損しない。
―――――――――――――
系列 : 片手杖
攻撃 : 70
重量 : 70
武器レベル : 4
要求レベル : 80
装備 : マジシャン系 アコライト系 ソウルリンカー

装備時スクリプト
bonus bMatk2Rate,15;
bonus2 bMagicAddRace,7,15;
bonus bUnbreakableWeapon,1;
bonus bSkillDelayRate,-10;
bonus2 bAddSkillHealRate,70,14;
bonus2 bAddSkillHealRate,28,14;
bonus2 bAddSkillHealRate,2043,14;
bonus2 bAddSkillHealRate,2051,14;
if(getequiprefinerycnt(4)<6) end;
bonus2 bAddSkillHealRate,70,5+(getequiprefinerycnt(4)-5)*2;
bonus2 bAddSkillHealRate,28,5+(getequiprefinerycnt(4)-5)*2;
bonus2 bAddSkillHealRate,70,5;
bonus2 bAddSkillHealRate,28,5;
if(getequiprefinerycnt(4)<9) end;
bonus4 bSkillAutoSelfSpell2,8,28,10,1000;
if(getequiprefinerycnt(4)<10) end;
bonus2 bAddSkillHealRate,70,14;
bonus2 bAddSkillHealRate,28,14;


例えば、精錬値が +7 の場合、このスクリプトでは

ヒールの増加量は、
 bonus2 bAddSkillHealRate,28,14;
 bonus2 bAddSkillHealRate,28,5+(7-5)*2; // +9

このように2つの同じ効果が重複して + 23% となります。


ただし、すべての設定値が必ずしも加算されるとは限らないので注意です。


また、以下のように1回の命令でセットさせることもできます。
Matk +3%。
精錬値 +5 以上の場合、
追加でMATK が 1%ずつ加算。

装備時スクリプト
bonus bMatkRate,3+(getequiprefinerycnt(1)-4)*(getequiprefinerycnt(1)>=5);

関連記事

COMMENT

Comment Form


秘密にする
 


TRACKBACK

TrackBack List



プロフィール

Author:みのり

すごく面倒臭がりで大雑把です。
なので、すぐ楽をしようとして
ツールを作り始めます。
ツールを作る時間と手作業で費やす時間
はたしてどちらが短いのか……


-構築環境-

Auriga0945 MySQL 5.5
with 2011-12-20bRagexeRE

3CeAM rev525
with 2010-07-30aRagexeRE



カテゴリ

未分類 (9)
RagexeRE (9)
eAthena (1)
Auriga (5)
ツール:eAthena用 (4)
ツール:Auriga用 (6)
ツール:その他 (14)
はじめてのAurigaスクリプト (8)
はじめてのAurigaスクリプト基本編 (21)
はじめてのAurigaスクリプト応用編 (7)
Aurigaスクリプト (3)
本鯖 (7)
Aurigaスクリプト:冒険者アカデミー (6)
ドラクエ10 (2)
新生FF14 (3)
EVE Online (2)



最新記事



最新コメント



月別アーカイブ



検索フォーム



リンク

このブログをリンクに追加する



ブロとも申請フォーム

この人とブロともになる



QRコード

QR



12
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Copyright © Rocco di Forte All Rights Reserved.
テンプレート配布者: サリイ  ・・・  素材: HELIUM  ・・・ 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。