Script of Saga III

Adaptation

Script of Saga III 改造メモ

このページはhttp://sos3.sakura.ne.jp/で施した改造箇所を紹介します。
正直言ってまずいスパゲティですのでご注意を。

改造に当たり次のサイトを参考にしました。

Script of Saga III 本体

元サイトが消失したので、本体スクリプトを入手するには以下のリストのいずれかを利用することになります

ギルド機能の強化

2008/04/05 作成
2008/04/07 説明文の更新
2008/04/10 プログラムの更新

  • 共同倉庫
  • 紹介状
  • リーダーの変更機能
  • ギルドの簡易説明
  • ギルド内メッセージ
  • 加入と脱退の記録
    共同倉庫
    ギルドメンバーのみ利用可能なアイテム保管場所
    紹介状
    ギルドリーダーの発行する紹介状が必要かどうか
    加入制限を行うかどうか
    リーダーの変更
    リーダーのみ利用可能な機能が増えたので引退時に別なプレイヤーに運営を引き継がせる機能
    ギルドの簡易説明
    [ギルドへ加入する]画面でPR文を載せる
    ギルド内メッセージ
    ギルド所属員だけに見せるメッセージを設定する。
    加入と脱退の記録
    加入または脱退したメンバーを記録

設置準備

無料ゲームコム http://members.jcom.home.ne.jp/masimaro/cgi.html にて再配布されているSOS3をダウンロードし、展開しておく。
guild.zipをダウンロードし、展開しておく。

set.cgi

  
追加 # ギルドデータ Guild Data ############################## # @gld = ('nm', # 名前 Name 'id', # ID ID 'cr', # リーダーID Create 'kg', # リーダー名 King 'pl', # 現在場所 Place 'gl', # 所持金 Gold 'bf', # 直前に利用した人 'bg', # 利用金額 'bk', # 利用可能スロット 'rt', # 加入制限 'w1', # リーダーから一言 'mb', # 統計取得時の登録人数 'w2', # ギルド内部向けの伝言 'al', # ギルドへの変更を通知するか ); $gdx = 21; # ギルド数 $gcp = 60000; # ギルド結成費 $gep = 100; # ギルド加入費 $gbk = 20000; # ギルド倉庫拡張料 追加 # パス Path ########################################## # $Gub_dir = './guildbank'; # guildbankディレクトリ(700,707,777) $gld_dir = './guild'; # guildディレクトリ(700,707,777) $bbs_dir = './bbs'; # bbsディレクトリ(700,707,777)

ディレクトリとファイルを作成

[guildbank],[guild],[bbs] ディレクトリを用意
bbsディレクトリは伝言板機能を使うときに必要。
[guildbank]と[bbs]ディレクトリには $gdx で指定した数だけ空のcgiファイルが必要。
ex) 0.cgi ~ n.cgi

base.cgi ※ギルド倉庫を利用するときのみ変更

base.cgi sub get_item $V = $T == 1 ? "$set::bmk_dir/$I->{Pl}{bm}":
$T == 2 ? "$set::Uop_dir/$S->{id}.cgi": $T == 3 ? "$set::Ubk_dir/$S->{id}.cgi":
$T == 9 ? "$set::Gub_dir/$S->{gu}.cgi":
"$set::Uit_dir/$S->{id}.cgi"; (中略) $S->{Bs} = @K if $T == 0; $S->{Bk} = @K if $T == 3; $S->{Bk} = @K if $T == 9; base.cgi sub set_item $V = $T == 1 ? "$set::bmk_dir/$I->{Pl}{bm}": $T == 2 ? "$set::Uop_dir/$S->{id}.cgi": $T == 3 ? "$set::Ubk_dir/$S->{id}.cgi": $T == 9 ? "$set::Gub_dir/$S->{gu}.cgi": "$set::Uit_dir/$S->{id}.cgi";

紹介状の準備

  itemフォルダ  otheritem.cgi 追加
  
  'Inv' =>             { nm => "$G->{kg}からの紹介状",
  cl => 'Inv',               id => "Invention_$I->{gu}",
  ql => 'Tr',               im => 'deed.gif',
  ef => "$I->{gu}", 
  qn => 1,
  bp => 500,
  wt => 0.1 },

画像の準備

ギルド旗を必要な数だけ用意します。
加入制限のON/OFFをしらせるアイコン gd0.gif, gd1.gif を用意し、mainimageフォルダへ

CSS

sub.css に追加

.guild_alert_box {
  border:solid 1px #CFCFCF;
  background-color:#f4f8f6;/*#E7EAEF;*/
  padding:5px;
  border-spacing:0;
} 

設置

  1. 無料ゲームコムで再配布されているSOS3の library から guild.cgi, bbs.cgi などを抜き出しlibraryディレクトリにコピー
  2. guild.zipを展開して出てきたファイルをすべて libraryディレクトリにコピー
  3. 必要に応じて main.cgi を再設定する。

モバイル版

参考:
http://www.nttdocomo.co.jp/service/imode/make/content/xhtml/
http://www.nttdocomo.co.jp/service/imode/make/content/xhtml/notice/basis/index.html
http://k-tai.impress.co.jp/cda/article/keyword/34122.html
http://p4room.mda.or.jp/book/i-mode/

3G携帯向けSOS3です。通常のPC版で登録済みであることが条件です。外出先でも携帯からログインして手紙のやりとりや販売などを行えるようになります。 i-XHTML向けにプログラムが書かれているのでドコモのFOMA(一部端末を除く)以外からは機能が制限されたり、上手く表示されないなどの障害が起こるおそれがあります。

設置方法

必要なファイルをダウンロード
必要なライブラリをダウンロード

通常のSOS3が完全に動作していれば設置自体は簡単です。

i-set.cgi にフォルダパスが書かれていますのでそちらを参照の上、設置してください。

注意

MIMEタイプを、application/xhtml+xmlとしているためにInternet Explorerからアクセスするとダウンロード画面がでます。これはIE固有の仕様です。

改造するときに

iモード向けのCGIはHTTPヘッダに「Content-Type」、「Content-Length」の情報を添えることが必要になっています。
そのため i-base.cgi Sub xhtmlout を通してxhtmlデータを出力させます。

また、作ろうiモード:iモードコンテンツ作成時の仕様 | サービス・機能 | NTTドコモ のその他の特徴にあるようにタグはすべて閉じること、属性値は引用符で括るなどStrictなソースコードを書かなければなりません。
携帯のブラウザは禁則処理を行わないのでエラーが表示されるということはありませんが、PCから動作確認のためにアクセスする場合、FireFoxやSafariなどでは出力されるxhtmlにエラーがあるとエラーページが表示されたりしますのでご注意を。

クエスト

2009/03/01 初版

クエストっぽいプログラムを追加します。

設置方法

必要なファイルをダウンロード

展開して出てきたファイルをSOS3にコピーするだけです。
また set.cgi にいくつか

set.cgi

追加
   # ユーザーデータ User Data ########################### #
    @udt = ('id', # ID               Identification
            'nm', # 名前             Name
            'ps', # パスワード       Password
            'vp', # 対戦受付フラグ   Versus Player
            'dg', # ダンジョンデータ Dungeon Data
            'Qpt', # クエストボーナスポイント
            'Qpr', # クエスト達成率
    );
  # パス Path ########################################## #
  $Uqt_dir = './userquest02';     # userquestディレクトリ(700,707,777)

備考

プレイヤーがこなしていくクエストの内容は ./data/quest_data.cgi に記述します。