!!!{{category SOS2改造}}ギルドシステムお試し版 {{font color=red,注意!}}  現在も調整中であり、正規の版ではありません。 !!概要 SOSIIにいわゆるプレイヤーズギルドの概念を取り付けます。 共通の目的やもった仲間や、知り合い同士で集まりごにょごにょします。 現在はギルドという看板が作れるだけで大した機能は備わっていません。 また、今後リリースされるであろう SOSIIWiki汎用チャット をアドオンとして使うことで、ギルドチャット機能が使用できます。 !!改造 !1. ファイルのダウンロード 以下のどちらかのファイルをダウンロードします。 *{{ref guild_beta.lzh}} *{{ref guild_beta.zip}} !2. その他 ファイルの解凍後、以下2点のテキストを参考にしてください。 *readme.txt *manual.txt(補足説明) !!修正 !補足説明の訂正と補足 :ギルドの評価: ・トップページにギルドのランキングを表示させる。 # Sub Saga # 任意の場所に if ($gld_chck) { require './guild.pl'; &evaluate_guild; &guild_in_saga; } を追加する。 において、ランキングの表示如何にかかわらず、上記の追加は{{font color=red,必須}}でした。 &evaluate_guild; を実行しないとギルドの評価が行われません、ごめんなさいX( :今後のチャット導入に関して: 設定部分に以下の記述をあらかじめ追加しておくと、チャット導入の際に面倒がなくなります。 $gdchtdir = 'hoge/'; # ギルドチャットファイルを格納するフォルダ :ギルドの設立: 設立はギルド設立アイテムのフラグ(略字)を持ったアイテムを一時使用に使用した状態で、アクションフォームから行います。 :SOSII旧バージョンでの動作: '''動作しません。''' しかし下記の記述を削除することで動作するようになります(動作未確認)。 if (!$post) { return } !2007/05/14 バグ修正の差分 1 of 2 (Ver.0.00→0.00a) # Sub Found After # $line = join('<>',$gid,$Fm{'name'},"$id$nm",$time,"$id$nm",0,0,0,'founding',0,$time,1,0,'','???','','',"$id","\n"); の部分を以下に修正します。 $line = join('<>',$gid,$Fm{'name'},"$id$nm",$time,"$id$nm",0,0,0,0,'founding',0,$time,1,0,'','???','','',"$id","\n"); !2007/05/14 バグ修正の差分 2 of 2 (Ver.0.00a→0.00b) readme.txt 内の追加項目 2. # Main Program # 271行の if ($Fm{'mode'} eq 'levy') { &levy } の下に . . . の部分におきまして if ($Fm{'mode'} eq 'guild') { require './guild.pl'; &guild_form } 上記の行は誤りで、正しくは下記の通りになります。 if ($Fm{'mode'} eq 'guild') { require './guild.pl'; &guild_order } Rickets様、ご協力ありがとうございました。 !Ver.0.00b→0.01差分 (2007/05/15) *リーダー脱退時にリーダー権限が即放棄されます *リーダー脱退の許否を設定できるようになります *ソースが見難いのでコメントを増やしました:) # Sub Guild Before # if ($Fm{'gmode'} =~ /(g02|g05)/) { if ($1 eq 'g02' && !$Fm{'pd1'}) { push (@msg,"IDが入力されていません"); $Fm{'gmode'} = 1 } if ($1 eq 'g05' && !$Fm{'pd3'}) { push (@msg,"IDが入力されていません"); $Fm{'gmode'} = 1 } を以下に修正 if ($Fm{'gmode'} =~ /(g02|g05|g08)/) { if ($1 eq 'g02' && !$Fm{'pd1'}) { push (@msg,"IDが入力されていません"); $Fm{'gmode'} = 1 } if ($1 eq 'g05' && !$Fm{'pd3'}) { push (@msg,"IDが入力されていません"); $Fm{'gmode'} = 1 } if ($1 eq 'g08' && $gld_ini8 && $sp =~ /$gld_skl1/) { push (@msg,"リーダーの脱退は禁止されています"); $Fm{'gmode'} = 1; } # Sub Guild Complete # } elsif ($Fm{'gm'} eq 'g08') { if ($gld_trm2) { &get_time; $flag = sprintf("%02d%01d",$day,$wday); $sp .= "$gld_skl3$flag"; $sp =~ s/$gld_skl1//g; push (@msg,"脱退手続きを行いました、$gld_trm2日後に正式脱退します"); if ($cht_ini2 && $chat_chk) { $line = join('<>', time, $chat_system_id, $chat_system_name, 'guild', '', "[$id]$nmが脱退手続きを行いました。$gld_trm2日後に正式脱退します。", "\n"); &add_chat('g', $gd_id, $line, 1) if $chat_chk; } } else { $sp =~ s/$gld_skil[0-9][0-9][0-9]//g; $sp =~ s/$gld_skl1//g; $gd_mb --; push (@msg,"脱退手続きを行い、ギルドを脱退しました"); if ($cht_ini2 && $chat_chk) { $line = join('<>', time, $chat_system_id, $chat_system_name, 'guild', '', "[$id]$nmがギルドから脱退しました。", "\n"); &add_chat('g', $gd_id, $line, 1) if $chat_chk; } } } を以下に修正 } elsif ($Fm{'gm'} eq 'g08') { if ($gld_trm2) { &get_time; $flag = sprintf("%02d%01d",$day,$wday); $sp .= "$gld_skl3$flag"; push (@msg,"脱退手続きを行いました、$gld_trm2日後に正式脱退します"); if ($cht_ini2 && $chat_chk) { $line = join('<>', time, $chat_system_id, $chat_system_name, 'guild', '', "[$id]$nmが脱退手続きを行いました。$gld_trm2日後に正式脱退します。", "\n"); &add_chat('g', $gd_id, $line, 1) if $chat_chk; } } else { $sp =~ s/$gld_skil[0-9][0-9][0-9]//g; $gd_mb --; push (@msg,"脱退手続きを行い、ギルドを脱退しました"); if ($cht_ini2 && $chat_chk) { $line = join('<>', time, $chat_system_id, $chat_system_name, 'guild', '', "[$id]$nmがギルドから脱退しました。", "\n"); &add_chat('g', $gd_id, $line, 1) if $chat_chk; } } if ($sp =~ /$gld_skl1/) { $sp =~ s/$gld_skl1//g; $gd_rd = 'nobody'; } } 設定項目に以下を追記します $gld_ini8 = 0; # ギルドリーダーの脱退を禁止する(yes = 1,no = 0) !!!このページのコメント *ってわけでお試し版配布〜 - Pse (2007年04月15日 22時49分43秒) *ファイルもバグフィクス版に差し替えておきましたです - Pse (2007年05月14日 01時17分13秒) *ありゃ、差分の追記は0が1個多いですね。ファイルは問題無しでした。 修正しておきました。- Rickets (2007年05月14日 03時22分42秒) *Main Programのi f ($Fm{'mode'} eq 'guild')の部分ですが &guild_formじゃなく&guild_orderでしょうか- Rickets (2007年05月14日 03時25分42秒) *ありゃ、本当だ。ありがとうございます。上記の部分もその通りでしたね、くすん - Pse (2007年05月14日 21時22分54秒)