▲HPに戻る

+++ MS Tactics 改造サポート +++

LAK氏が配布されているフリーCGIゲーム「MS Tactics」での
  機体・アイテム・特殊台詞の追加方法など簡単な改変方法、及びセキュリティ情報を紹介します。
■これは「スクリプトの改造」に該当しますので、スクリプト配布ページで触れられているように
  「自力で設置、運営、改造できる自信のある人」が改造する際に参考になさって下さい。
■ここで挙げるソースはあくまで「例」です。そのまま使用してのトラブル・損害に関して責任は持ちません。
■当ページに関する内容、及び改造方法に関して、LAK氏に対して絶対に質問をしないで下さい。
  当ページは当ページ管理人yotsuの責任において記述しています。
■文法、記述内容に間違い・錯誤がありましたらご連絡下さい。
■ここで紹介している内容についての個別質問、改造や改変の相談には応じていません。
■当ページの記述内容を無断転載することはご遠慮下さい。
 bugfix、セキュリティ関連のルーチンに関してはLAK氏、MS Tacticsサポーターズ様のご好意により転載させて頂いています。
■スクリプトを変更する前にはスクリプトをバックアップしておきましょう。
  よく分からなくなった、動作がおかしくなったら「変更前に戻す」ことが鉄則です。

※なお、全ての説明は「MS Tactics V1 SP2 bugfix1(add_original_ver)」をベースにしています。
 「MS Tactics V1 SP2 bugfix1(add_original_ver)」に含まれていないスクリプトはSP2、あるいはV1を参照して下さい。


■目次■
[追加方法]
特殊機体の追加方法(???からの派生 / 改造での派生) [2006/03/28ReNEW!]
武器・装備の追加方法(通常武器・装備の追加方法 / 特殊武器・装備の追加方法)
脱出機体の追加方法
特殊台詞の追加方法(機体側特殊台詞の追加方法 / 武器・装備側特殊台詞の追加方法)>

[TIPS]
「ランキング一覧」の「詳細」ボタンを表示・非表示

[bugfix & Security]
不正乗り換えの防止
ID&PASS漏洩防止

■復習その1  特殊武器画像の追加方法



+++ 特殊機体の追加方法 +++

(1) 「???」での派生

[例]
機体名 … ジュドー専用ZZガンダム
画像名 … MSZ-010(Judo).gif
乗り換え条件 …
 FAZZ(機体No.395)からの派生
 NT+6以上のNT適正
 操縦・直感が280以上
 必要な名声150
変更箇所 …
 unit_ini.cgi
 unit_ini2.cgi
 msinfo_ini2.cgi

 ※必須変更点は赤字で表示



unit_ini.cgi 377行目に変更

395<>FAZZ<>680<>70<>87<>100<>700<>240<>240<>240<>240<>260<>4<>2<>-2<>3<>0<>2000<>62<>50<>FA-010-A.gif<>184<>395<>2##7<>0<>100<>160O

unit_ini2.cgi 232行目に追加

867<>ジュドー専用ZZガンダム<>650<>55<>105<>95<>650<>280<>280<>200<>200<>220<>6<>2<>-1<>3<>0<>2500<>56<>45<>MSZ-010(Judo).gif<>395<>0<>1##2##7##109<>0<>150<>160i

msinfo_ini2.cgi 232行目に追加

867<>ZZガンダムをジュドーの特性により近づけてカスタマイズした機体。カラーリングも赤を主体として塗装されている。

[解説]
アナハイムで「???」と表示される乗り換え機体の追加方法です。
乗り換えのベースとなる機体の「表示ポイント」にその機体の機体No.を新たに記述し、新規機体はその元機体の機体No.を「表示LV」に記述する必要があります。
ZZガンダム(機体No.184)を元機体に指定しようとする場合、既に表示ポイントに機体番号が振られていれば元機体のデータを変更する必要はなく、新規機体側のみを変更して下さい。
機体を追加する際には、unit_ini2.cgi、msinfo_ini2.cgiの最後尾にある改行を必ず残しておくことが必須です。余計な改行を入れたり削除すると、機体番号を認識しなくなってボール(機体番号0)が消える場合があります。
また機体側にマイナス表示の特殊能力を追加する際には、特殊能力欄の後ろに持っていくようにしましょう。-51##1##2などではなく、1#32##-51にしないと、特殊能力が発動しない場合もあります。


▲TOPに戻る

(2) 改造での派生

[例]
機体名 … EWACボール・カスタム
画像名 … RB-79K-EWAC.gif
乗り換え条件 …
 ボール・カスタム(機体No.1)からの改造
 近距離・中距離が50以上
 必要な名声10
変更箇所 …
 unit_ini.cgi
 unit_ini2.cgi
 msinfo_ini2.cgi

 ※必須変更点は赤字で表示



unit_ini.cgi 2行目を変更

1<>ボール・カスタム<>160<>18<>30<>40<>175<>0<>0<>0<>10<>0<>0<>-3<>-3<>2<>-1<>20<>17<>9<>RB-79K.gif<>0<>0<>0<>867<>0<>48C

unit_ini2.cgi 232行目に追加

867<>EWACボール・カスタム<>160<>18<>30<>90<>175<>0<>0<>50<>50<>0<>0<>-3<>-3<>2<>-1<>20<>17<>9<>RB-79K-EWAC.gif<>999<>0<>0<>0<>10<>48i

msinfo_ini2.cgi 232行目に追加

867<>地球連邦軍の早期警戒型戦闘ポッド。上部のキャノン砲を廃して巨大なドームが設置されているのが特徴である。数機が同仕様に改修されてソロモン戦線に投入されたという。

[解説]
アナハイムで「○×にできるぞ」といわれる改造機体の追加方法です。
元機体の「改造先」に新規機体の機体No.を指定して、新規機体の表示ポイントを「999」に指定すればOKです。
ちなみに「機体一覧」に出てこない機体にするには、新規機体の表示ポイントを「9999」に指定すれば一覧には表示されません。これは「???での派生」ではできませんので注意です。
また変形する機体から「改造での派生」はできません。さらに改造先機体を複数選択することもできません。ご注意下さい。


▲TOPに戻る

 

+++ 武器・装備の追加方法 +++

通常武器の追加方法

[例]
通常武器名 … MMI−M8A3 76mm重突撃機銃
武器能力 … 威力80、弾数20、EN消費1、射程19〜39、重量10
変更箇所 … item_ini.cgi

 ※必須変更点は赤字で表示



item_ini.cgi 383行目に追加

0393<>ランゲブルーノ砲<><>99<><><>90<>40<>1<>3<>80<>99<>16<>3<>0<>0<>
0394<>MMI−M8A3 76mm重突撃機銃<><>1<>0<>0<>80<>20<>1<>1<>19<>39<>10<>2<>0<>0<>
9998<>なし<><>1<><><>1<>99<>1<>0<>0<>99<>0<>0<>0<>0<>

[解説]
通常武器の場合、先頭の数値が「1」、通常装備なら「2」、特殊系なら「99」になります。
詳しい各数値の解説はスクリプトに添付されているエクセル表を参照して下さい。
LAKさんのご好意で、実に把握しやすくなっています。


▲TOPに戻る

特殊武器・装備の追加方法

[例]
特殊武器名 … ウェイブライダー突撃
使用機体名 … Zガンダム(機体No.155)
使用条件 … Zガンダムが「ショルダータックル(武器No.0059)」を装備時
武器能力 … 威力199、EN消費97、射程7〜18、シールド無効効果
変更箇所 … item_ini.cgi

 ※必須変更点は赤字で表示



item_ini.cgi 59行目に追加

0059<>ショルダータックル<><>1<>0122##0170##0326##0394<>2##354##338##155<>50<>99<>1<>1<>0<>20<>0<>1<>0<>0<>

item_ini.cgi 383行目に追加

0393<>ランゲブルーノ砲<><>99<><><>90<>40<>1<>3<>80<>99<>16<>3<>0<>0<>
0394<>ウェイブライダー突撃<><>99<>0<>0<>199<>99<>97<>1<>7<>18<>0<>1<>21<>0<>
9998<>なし<><>1<><><>1<>99<>1<>0<>0<>99<>0<>0<>0<>0<>

[解説]
詳しい各数値の解説はスクリプトに添付されているエクセル表を参照して下さい。
LAKさんのご好意で、実に把握しやすくなっています。


▲TOPに戻る

 

+++ 脱出機体の追加方法 +++

[例]
脱出機体名 … キュベレイ(機体No.156)
脱出変化先画像 … AMX-004(AURA).gif
脱出後の残り耐久値 … 150
変更箇所 … 
 data_ini/battle_ini.cgi
 unit_ini.cgi

 ※必須変更点は赤字で表示



data_ini/battle_ini.cgi 76行目に追加

$unit_img[55]="DETHARMY.gif";
$unit_img[56]="AMX-004(AURA).gif";

data_ini/battle_ini.cgi 135行目に追加

$unit_msg[55]= "<font size=4><b>は四\脚\ユニットを捨てた!</b></font><p>";
$unit_msg[56]= "<font size=4><b>の機体はオーラに囲まれた!</b></font><p>";

data_ini/battle_ini.cgi 194行目に追加

$uint_hp[55]= 75;
$uint_hp[56]= 150;

unit_ini.cgi 157行目に追加

156<>キュベレイ<>550<>40<>110<>80<>500<>250<>200<>205<>210<>215<>5<>0<>-2<>4<>0<>2000<>53<>20<>AMX-004.gif<>0<>156<>2##156<>865<>100<>19I


[解説]
ここではオーラ化したような表現で記述していますが、「の機体はオーラに囲まれた!」を「は○×で脱出した!」と記述すれば文字通りの脱出機体となります。
改造そのものは特に難しくはありませんが、data_ini/battle_ini.cgiは3箇所ともに手を加えないといけないので注意です。
また追加方法とは関係ないですが、脱出機能は機体を強くします。
その点で他の機体とのバランス取りが必要になりますのでご注意下さい。



▲TOPに戻る

 

+++ 特殊台詞の追加方法 +++

機体側特殊台詞の追加方法

[例]
対象機体名 … ホワイトベース(機体No.212)
変更箇所 … 
 data_ini/itemmsg.cgi
 unit_ini.cgi

追加アイコン … 
 brite0a.gif
 brite0b.gif
 brite0c.gif
 mirai0a.gif

 ※必須変更点は赤字で表示



data_ini/itemmsg.cgi 61行目に追加

シロー「俺はアイナと添い遂げるっ!」
brite0a.gif<>ブライト「ミサイル・主砲・ビーム砲、発射用意…撃てっ!!」
<>マーカー「ECM、レーザーサーチャー、最大発信。ミノフスキー粒子、戦闘値散布」
mirai0a.gif<>ミライ「全速前進。全員、何かにつかまって」
brite0b.gif<>ブライト「おとり専門、というわけですか…」
brite0c.gif<>ブライト「弾幕が薄いぞ! 相手は動いてくれるんだ、なまじ狙わずに撃てと言え!!」


unit_ini.cgi 213行目に追加

212<>ホワイトベース<>1200<>32<>25<>110<>1000<>170<>270<>130<>150<>230<>0<>-5<>-5<>2<>3<>15000<>68<>100<>WHITEBASE.gif<>0<>212<>6##-112##134<>0<>100<>38A

imgディレクトリに追加用アイコンを転送


[解説]
data_ini/itemmsg.cgiに記述される特殊台詞は5行で一組です。
上3行が戦闘時にランダムで表示されるもので、4行目が敗北時、5行目が勝利時の台詞となっています。
機体側に特殊台詞を付属する場合には-100番代になります。
また特殊台詞発動時のアイコンは不要という場合には、上記例で挙げたソースのdata_ini/itemmsg.cgi 62行目のようにアイコンの記述をなくせばOKです。最初の<>はあってもなくてもよさげです。

[2004/08/15更新]
LAKさんからツッコミがあったので補足。先頭の<>を無くしてはいけません。アイコンを使用しない場合には
<>ラァ・・・ラァ・・・・・・
というようにしておきましょう。


ちなみにこの特殊台詞、機体・武器・装備と都合3つから同時にしゃべらせることができますが、はっきり言いましてやかましくなります。特にそれぞれにアイコンを付けていると戦闘時に重たくなるし、戦闘経過も見づらくなります。賑やかにしたいと思っても、せいぜい2つ程度にしておきしょう。



▲TOPに戻る

武器・装備側特殊台詞の追加方法

[例]
対象武器名 … ガンダムチーム(武器No.345)
変更箇所 … 
 data_ini/itemmsg.cgi
 data_ini/item_ini.cgi

追加アイコン … 
 amuro1.gif
 sleggar1.gif
 kai1.gif
 hayato1.gif
 saira2.gif

 ※必須変更点は赤字で表示



item_ini.cgi 345行目に追加

0345<>ガンダムチーム<>ガンダムチームを出撃させ攻撃<>99<><><>45<>30<>30<>250<>10<>60<>75<>2<>500##112<>0

data_ini/itemmsg.cgi 61行目に追加

シロー「俺はアイナと添い遂げるっ!」
amuro1.gif<>アムロ「逃がすものか、四機や五機のモビルスーツなぞ」
sleggar1.gif<>スレッガー「ははは、なんてお上手なんでしょ僕。おっと」
kai1.gif<>カイ「こんな所まで追いかけてくるのかよ、ジオンめ」
hayato1.gif<>ハヤト「く、悔しいな、僕だけこんなんじゃ。セイラさんにもカイさんにもかなわないなんて。な、情けないよ」
saira2.gif<>セイラ「やったわ。…あっけないものね」


imgディレクトリに追加用アイコンを転送


[解説]
機体側特殊台詞の追加方法とほぼ同様です。
注意すべきは武器・装備側に特殊台詞を付属する場合には100番代になるという点です。
この辺りは混同しやすいので気を付けましょう。

[2004/08/15更新]
LAKさんからツッコミがあったので補足。先頭の<>を無くしてはいけません。アイコンを使用しない場合には
<>ラァ・・・ラァ・・・・・・
というようにしておきましょう。



▲TOPに戻る

 

+++ [TIPS] +++

「ランキング一覧」の「詳細」ボタンを表示・非表示

変更箇所 … ranking.cgi

 ※必須変更点は赤字で表示



ranking.cgi 181行目以降を変更

●改変前
<table border=0 width=100%>
<tr><td rowspan=2 width=1 nowrap>
<form action="info.cgi" method="post">
<input type=hidden name=mode value="info">
<input type=hidden name=data value="$rid">
<input type=hidden name=id value="$in{'id'}">
<input type=hidden name=pass value="$in{'pass'}">
<input type=submit class=btn value="詳細">
</td><td align=left>


●改変後
<table border=0 width=100%>
<tr><td rowspan=2 width=1 nowrap>
EOM
if($in{'id'} && $in{'id'} ne $id && !$notdel)
{
$page_dsp .= <<"EOM";
<form action="info.cgi" method="post">
<input type=hidden name=mode value="info">
<input type=hidden name=data value="$rid">
<input type=hidden name=id value="$in{'id'}">
<input type=hidden name=pass value="$in{'pass'}">
<input type=submit class=btn value="詳細">
EOM
}
$page_dsp .= <<"EOM";
</td><td align=left>


[解説]
「ランキング一覧」をそのまま公開した場合、「詳細」ボタンから顔アイコンや機体画像、伝言も外部から見ることができますが、こうすれば「詳細」ボタンはログインした状態以外からは非表示になります。
実働状態は当サイトで確認できますので、どんなものかは実際に見て下さい。
実はinfo.cgiの342行にある処理をそのまま流用してるだけですけど、結構使えます。


▲TOPに戻る

 

+++ [bugfix & Security] +++

不正乗り換えの防止

変更箇所 … anaheim_act.cgi

 ※必須変更点は赤字で表示



anaheim_act.cgi 564行目以降に以下を追加

●改変前
@u_tokusyu = split(/##/,$unit_tokusyu);

#金額設定
if($in{'gold'} ){ $unit_point = $gold; }
if($in{'mode2'}){ $unit_point = 10; $unit_mesei = 0;}
if($kgold < $unit_point) { &error("ポイントが足りません"); }
if($kmesei < $unit_mesei) { &error("名声が足りません"); }


●改変後
@u_tokusyu = split(/##/,$unit_tokusyu);
#HTML直指定対策
@mu_tokusyu = split(/##/,$munit_tokusyu);
$cheatflg = 0;

if($in{'mode2'})
{
#変形時
#元機体が非変形機はインチキ
if( $mu_tokusyu[0] != 1 ){ $cheatflg = 1; }
#先機体が変形先と異なるものはインチキ
if( $munit_kaizo != $csyoku ){ $cheatflg = 2; }
}
else
{
#乗り換え時
if( $unit_viewlv != 0 && $unit_viewlv != 999 && $unit_viewlv != 9999 )
{
if( $munit_kaizo != $csyoku )
{
#隠し乗り換え時
#乗り換え元と乗り換え先のリンクが異なったらインチキ
if( $munit_viewpoint != $unit_viewlv ){ $cheatflg = 3; }
}
}
elsif( $unit_viewlv == 999 || $unit_viewlv == 9999 )
{
#改造乗り換え時
#先機体が改造先と異なるものはインチキ
if( $munit_kaizo != $csyoku ){ $cheatflg = 4; }
}
#改造or乗り換え時
#必要能力(NTor強化人間)を満たしていないのはインチキ
if($kn_0 < $unit_tyokan || $kn_1 < $unit_sojyu || $kn_2 < $unit_kin || $kn_3 < $unit_tyu || $kn_4 < $unit_en || ($unit_nt > 0 && $unit_nt < 20 && $kn_13 < $unit_nt) || ($unit_nt < 0 && $unit_nt > -20 && $kn_13 > $unit_nt) ){ $cheatflg = 5; }
}

if( $cheatflg )
{
$opplog_dat =
"CHET_MS_CHG:$kname:$in{'id'}:CheatMSNo:$csyoku:CHEAT:$cheatflg";
&opp_log;
&error("機体乗り換えで、不正が行われました。");
}
#金額設定
if($in{'gold'} ){ $unit_point = $gold; }
if($in{'mode2'}){ $unit_point = 10; $unit_mesei = 0;}
if($kgold < $unit_point) { &error("ポイントが足りません"); }
if($kmesei < $unit_mesei) { &error("名声が足りません"); }


[解説]
MS Tactics改造クラブLAKさんが公開されていたbugfixに、MS Tacticsサポーターズ様の御影樹璃さんがロジックを追加したものです。
転載をご快諾頂いたお二方には感謝します。有難う御座いました。
追加されたロジックは以前のものを見たことがある方ならお分かりと思いますが、「#隠し乗り換え時」と「#必要能力」の二箇所です。改造クラブを見て不正に対処された方も、ロジックを追加しておきましょう。

またbugfix_1配布後にも、各種bugfixが本家MS Tacticsの掲示板(書き込み不可)で公開されています。まだ未チェックの方がいれば、利用者のためにも【必ず】対処しておきましょう。



▲TOPに戻る

ID&PASS漏洩防止

変更箇所 … groupwork.cgi
追加スクリプト … link.cgi

 ※必須変更点は赤字で表示



groupwork.cgi 72行目を以下に変更

●改変前
#グループ設定ファイルの読み込み
&group_read($in{'grpid'});
if ($grp_adrs) { $grp_adrs = "<a href=\"http://$grp_adrs\" target='_blank'><img src=\"$hp_gif\" border=0 alt='HomePage' ></a>"; }

# 統計率を計算(四捨五入)-ポイント

●改変後
#グループ設定ファイルの読み込み
&group_read($in{'grpid'});
if ($grp_adrs) { $grp_adrs = "<a href=\"link.cgi?url=http://$grp_adrs\" target='_blank'><img src=\"$hp_gif\" border=0 alt='HomePage' ></a>"; }

# 統計率を計算(四捨五入)-ポイント

link.cgiをmstディレクトリに追加

public_html /

┗ cgi-bin [777 or 766] / # CGIが動作可能な場所
   |
   └mst [777 or 766] / # 任意の名称
      ├ groupwork.cgi [755] # 勢力用プログラム
       ・
       ・
       ・
      ├ link.cgi [755] # 追加スクリプト


[解説]
MS Tacticsサポーターズ様の御影樹璃さんから転載許諾を頂きました。有難う御座いました。
これはどういうことかと説明すると、「勢力一覧」のHPからそのHPにアクセスすると、IDとPASSがアクセス解析などに残ってしまうという状況を防止するためのものです。
link.cgiはこちら(当サイト上)MS Tacticsサポーターズ様からダウンロードできます(DLの内容は同じです)。


▲TOPに戻る

 

+++ 復習その1 +++

特殊武器画像の追加方法

[例]
特殊武器名 … 68センチカノン砲(武器No.0201)
使用機体名 … ザメル(機体ファイル名 YMS-16M.gif)
変化先画像 … 2_YMS-16M.gif
変更箇所 … data_ini/item_ini.cgi

 ※必須変更点は赤字で表示



item_ini.cgi 201行目に追加

0201<>68センチカノン砲<><>99<><><>120<>10<>1<>7<>60<>99<>10<>3<>500<>0<><>1

img/unitディレクトリに2_YMS-16M.gifを転送

[解説]
スクリプトに付属しているエクセル表にも説明されてますが、一応復習ということで紹介しました。
ここの例そのままで説明すると、変化先画像(2_YMS-16M.gif)をまず用意し、画像変化させたい武器・装備の「特殊」項に500を追加すればOKです。
その武器に加えて、例えば別の装備でも画像を変化させたい場合には追加分画像を3_YMS-16M.gifとして、画像変化させたい装備の特殊項は501とします。
item_ini.cgi特殊項500 = 2_(元の機体画像名)となっており、追加する際には501=3_(元の機体画像名)、502=4_(元の機体画像名)と覚えておくと楽です。
ちなみに追加する際には必ず500から指定しなければならない、ということはないので、500番台で好きな番号を振ることも可能です。後々画像の管理などで面倒なことになりますが。

(上記に一部誤解があったようです。「500番台で好きな番号を振ることも可能」とは、画像ファイル2_○×.gifを530で指定できる、という意味ではありません。500から始めず、例えば530から指定しても画像変化になる、という意味です。もちろん530と指定するなら画像ファイルは32_○×.gifにしなければいけません)

さて、ここでの注意点としては「画像変化する武器と装備を同時装着させないようにする」ことです。
「共に装備禁止」項に、同時装着させたくない武器(装備)のNo.を書き込んでおきましょう。
item_ini.cgiの352、353行目の処理を参考にして下さい。


▲TOPに戻る