-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2005-05-28 11:21 am
此外掛主要是配合New-TypeChobits所開發的後台外掛來使用
所以安裝此外掛前必須先安裝後台外掛才能使用
範例圖片
※以下程序皆以更新為最新內容
在您的資料庫中輸入下列語法
- 代碼: 選擇全部
ALTER TABLE `wog_message` ADD `p_userlv` INT( 11 ) UNSIGNED DEFAULT '0' NOT NULL ;
[size=134]開啟檔案[/size]wog/wog.js 寫:尋找 - 代碼: 選擇全部
function system_view(s) { .......... .......... .......... }
覆蓋為 - 代碼: 選擇全部
function system_view(s,s_2) { message_cls(); var view_name=parent.wog_view; if(s_2) { view_name.document.write(temp_table1); view_name.document.write('<tr bgcolor=#5f5f5f><td colspan=8>管理員訊息</td></tr>'); if(s_2!="") { view_name.document.write('<tr><td width=65%>內容</td><td width=35%>發生時間</td></tr>'); var s1=s_2.split(";"); for(var i=0;i<s1.length;i++) { var s2=s1[i].split(","); view_name.document.write('<tr><td>'+s2[0]+'</td><td>'+s2[1]+'</td></tr>'); } }else {view_name.document.write('<tr><td colspan="8" >尚未發生任何事件</td></tr>');} view_name.document.write(''+temp_table2+'<br>'); } view_name.document.write(temp_table1); view_name.document.write('<tr bgcolor=#5f5f5f><td colspan=8>玩家訊息</td></tr>'); if(s!="") { view_name.document.write('<tr><td width=65%>內容</td><td width=35%>發生時間</td></tr>'); var s1=s.split(";"); for(var i=0;i<s1.length;i++) { var s2=s1[i].split(","); view_name.document.write('<tr><td>'+s2[0]+'</td><td>'+s2[1]+'</td></tr>'); } }else { view_name.document.write('<tr><td colspan="8" >尚未發生任何事件</td></tr>'); } view_name.document.write(temp_table2); }
[size=134]開啟檔案[/size]wog/class/wog_act_message.php 寫:尋找 - 代碼: 選擇全部
function system_view1($user_id) { .......... .......... .......... }
覆蓋為 - 代碼: 選擇全部
function system_view1($user_id) { global $DB_site,$lang; $DB_site->query("delete from wog_message where dateline < ".(time()-(10*24*60*60))." "); $sql="select title,dateline from wog_message where p_id=".$user_id." and p_userlv=0 order by m_id desc LIMIT 10"; $pack=$DB_site->query($sql); $s=""; while($packs=$DB_site->fetch_array($pack)) { $s=$s.";".$packs[title].",".date("Y/m/d g:i a",$packs[dateline]); } $s=substr($s,1,strlen($s)); $sql="select title,dateline from wog_message where p_id=".$user_id." and p_userlv>0 order by m_id desc LIMIT 10"; $pack2=$DB_site->query($sql); $s2=""; while($packs2=$DB_site->fetch_array($pack2)) { $s2=$s2.";".$packs2[title].",".date("Y/m/d g:i a",$packs2[dateline]); } $s2=substr($s2,1,strlen($s2)); $DB_site->free_result($pack); $DB_site->free_result($pack2); showscript("parent.system_view('$s','$s2')"); unset($s); unset($packs); unset($s2); unset($packs2); }
[size=134]開啟檔案[/size]wog/acpleft.php 寫:尋找 - 代碼: 選擇全部
<tr> <td align="left"> <p><font size="1" face="新細明體"> <input class="text" type="submit" value="管理員列表" name="actions"></font></td> </tr>
後面,加上 - 代碼: 選擇全部
<tr> <td align="left"> <p><font size="1" face="新細明體"> <input class="text" type="submit" value="傳送玩家訊息" name="actions"></font></td> </tr>
[size=134]開啟檔案[/size]wog/acpmain.php 寫:尋找 - 代碼: 選擇全部
case "管理員列表": print_header(); view_admin(); print_footer(); break;
後面,加上 - 代碼: 選擇全部
case "傳送玩家訊息": print_header(); letter_write(); print_footer(); break;
case "更新訊息資料庫": print_header(); letter_sub(); print_footer(); break;
尋找 - 代碼: 選擇全部
function admin_player()
前面,加上 - 代碼: 選擇全部
function letter_write() { global $DB_site; ?> <form action="acpmain.php" method="post" target="_self"> <table width="97%" border="1" cellspacing="0" cellpadding="2" align="center" bordercolor="#4B689E"> <tr><td>對象帳號</td><td class="b1"><input type="text" name="name" size="12"></td></tr> <tr><td>內容</td><td class="b1"><textarea cols="30" rows="7" name="body"></textarea></td></tr> <tr><td colspan="2"><input type="submit" value="送出"></td></tr> <input type="hidden" name="actions" value="更新訊息資料庫"> <input type="hidden" name="sid" value="<?=$_SESSION["SID"];?>"> </form> <? }
function letter_sub() { global $DB_site,$_POST; if(!$_POST["name"] || $_POST["name"]==""){alertWindowMsg('沒有輸入對象名稱');} $to_name=$DB_site->query_first('select p_id from wog_player where p_name="'.$_POST["name"].'"'); if(!$to_name || $to_name==""){alertWindowMsg('對象不存在');} $to_body=$_POST["body"]; $to_user_id=$_SESSION["ADMINID"]; if($_SESSION["ADMIN_LV"]==1){$to_user="管理員";}else{$to_user="GM";} $DB_site->query("insert into wog_message(p_id,title,dateline,p_userlv)values(".$to_name[0].",'".$to_user." ".$to_user_id."寫道:".$to_body."',".time().",".$_SESSION["ADMIN_LV"].")"); echo ("訊息送出成功"); }
儲存,關閉所有檔案
因為這篇外掛寫出來之後就直接拿出來分享了,還沒有簡化&DEBUG....
所以有問題的話請提出吧....完畢。
最後由 涅魂 於 2006-06-04 9:57 am 編輯,總共編輯了 12 次。
-
sizkin
-
- 文章: 116
- 註冊時間: 2005-04-21 8:48 pm
由 sizkin » 2005-05-28 11:28 am
請問New-TypeChobits所開發的後台外掛的link 在哪,我找不到!!
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2005-05-28 11:34 am
sizkin 寫:請問New-TypeChobits所開發的後台外掛的link 在哪,我找不到!!
在外掛區中,該外掛的正式名稱是wog acp(遊戲管理控制台),簡稱後台
另外,~木林森~所提供的[下載]WOG Only v2.08 + else Mod 裡面已經包含後台程式囉
最後由 涅魂 於 2005-05-28 3:42 pm 編輯,總共編輯了 1 次。
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2005-05-28 11:37 am
!注意!下列的四篇DEBUG皆已更新於上列程式,若您尚未安裝本外掛,只需將上列程序安裝完畢即可,不需要裝下列的DEBUG。
若您之前已經裝過本外掛,請照順序DEBUG,照成您的不便深感歉意
DEBUG
剛剛發現時間的顯示會錯誤....仔細看了一下程式碼內容後發現原來是我把一個地方給改錯了....
開啟檔案wog/class/wog_act_message.php
尋找
- 代碼: 選擇全部
function system_view1($user_id) { .......... .......... .......... }
覆蓋為 - 代碼: 選擇全部
function system_view1($user_id) { global $DB_site,$lang; $DB_site->query("delete from wog_message where dateline < ".(time()-(10*24*60*60))." "); $sql="select title,dateline from wog_message where p_id=".$user_id." and p_userlv=0 order by m_id desc LIMIT 10"; $pack=$DB_site->query($sql); $s=""; while($packs=$DB_site->fetch_array($pack)) { $s=$s.";".$packs[title].",".date("Y/m/d g:i a",$packs[dateline]); } $s=substr($s,1,strlen($s)); $sql="select title,dateline from wog_message where p_id=".$user_id." and p_userlv>0 order by m_id desc LIMIT 10"; $pack2=$DB_site->query($sql); $s2=""; while($packs2=$DB_site->fetch_array($pack2)) { $s2=$s2.";".$packs2[title].",".date("Y/m/d g:i a",$packs2[dateline]); } $s2=substr($s2,1,strlen($s2)); $DB_site->free_result($pack); $DB_site->free_result($pack2); showscript("parent.system_view('$s','$s2')"); unset($s); unset($packs); unset($s2); unset($packs2); }
儲存,關閉所有檔案
完畢。
最後由 涅魂 於 2005-05-28 9:59 pm 編輯,總共編輯了 3 次。
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2005-05-28 2:31 pm
DEBUG
再發現一個問題....發送給目標時會有錯誤....
開啟檔案wog/acpmain.php
尋找
- 代碼: 選擇全部
$to_name=$_POST["name"];
覆蓋為 - 代碼: 選擇全部
$to_name=$DB_site->query_first('select p_id from wog_player where p_name="'.$_POST["name"].'"');
尋找 - 代碼: 選擇全部
".$to_name."
覆蓋為 - 代碼: 選擇全部
".$to_name[0]."
儲存,關閉所有檔案
完畢。
最後由 涅魂 於 2005-05-28 8:05 pm 編輯,總共編輯了 1 次。
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2005-05-28 3:16 pm
DEBUG
BUG好多呀....(泣
在您的資料庫中輸入下列語法
- 代碼: 選擇全部
ALTER TABLE `wog_message` ADD `p_userlv` INT( 11 ) UNSIGNED DEFAULT '0' NOT NULL ; 開啟檔案wog/acpmain.php 尋找 - 代碼: 選擇全部
$to_name=$DB_site->query_first('select p_id from wog_player where p_name="'.$_POST["name"].'"');
覆蓋為 - 代碼: 選擇全部
if(!$_POST["name"] || $_POST["name"]==""){alertWindowMsg('沒有輸入對象名稱');} $to_name=$DB_site->query_first('select p_id from wog_player where p_name="'.$_POST["name"].'"'); if(!$to_name || $to_name==""){alertWindowMsg('對象不存在');}
儲存,關閉所有檔案
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2005-05-28 9:59 pm
DEBUG
又發現一個BUG....希望這是最後一個了..
開啟檔案wog/wog.js
尋找
- 代碼: 選擇全部
var view_name=parent.wog_view; view_name.document.write(temp_table1);
覆蓋為 - 代碼: 選擇全部
var view_name=parent.wog_view; if(s_2) { view_name.document.write(temp_table1);
尋找 - 代碼: 選擇全部
view_name.document.write(''+temp_table2+'<br>'); view_name.document.write(temp_table1);
覆蓋為 - 代碼: 選擇全部
view_name.document.write(''+temp_table2+'<br>'); } view_name.document.write(temp_table1);
完畢。
-
New-TypeChobits
-
- 文章: 176
- 註冊時間: 2003-12-12 9:44 am
- 來自: HONG KONG
- 性別: 男生
-
由 New-TypeChobits » 2005-05-29 9:42 am
不錯的外掛.. 其實做少許修改就可變成發送訊息給全部玩家~ 或可做到永久的訊息...
人在江湖... 身不由己...
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2005-05-29 9:45 am
一個修正與一個新功能~~
修正.後台"檢視玩家訊息"顯示方式與情報中心相同
開啟檔案wog/acpmain.php
尋找
- 代碼: 選擇全部
//檢視玩家訊息中心 function view_player_message() { .......... .......... .......... }
覆蓋為 - 代碼: 選擇全部
//檢視玩家訊息中心 function view_player_message() { check_ulv(); global $DB_site; $pack=$DB_site->query("select title,dateline from wog_message a, wog_player b where a.p_id=b.p_id and b.p_name ='".$_POST["target_name"]."' and a.p_userlv=0 order by m_id desc"); $pack2=$DB_site->query("select title,dateline from wog_message a, wog_player b where a.p_id=b.p_id and b.p_name ='".$_POST["target_name"]."' and a.p_userlv>0 order by m_id desc"); ?> <table width='97%' border='1' cellspacing='0' cellpadding='2' align='center' bordercolor='#4B689E'> <tr bgcolor='#5f5f5f'><td colspan=8>管理員訊息</td></tr> <tr><td width=65%>內容</td><td width=35%>發生時間</td></tr> <? while($packs2=$DB_site->fetch_array($pack2)) { ?> <tr><td><?=$packs2[title];?></td><td><?=date("Y/m/d g:i a",$packs2[dateline]);?></td></tr> <? }$DB_site->free_result($pack2); $DB_site->free_result($packs2); ?> </table> <br> <table width='97%' border='1' cellspacing='0' cellpadding='2' align='center' bordercolor='#4B689E'> <tr bgcolor="#5f5f5f"><td colspan=8>玩家訊息</td></tr> <tr><td>內容</td><td>發生時間</td> </tr> <? while($packs=$DB_site->fetch_array($pack)) { ?> <tr><td><?=$packs[title];?></td><td><?=date("Y/m/d g:i a",$packs[dateline]);?></td></tr> <? }$DB_site->free_result($pack); $DB_site->free_result($packs); ?> </table> <? } 新增.後台管理員&GM訊息可傳給多位玩家 傳送方式為兩個名稱中間加入 , - 代碼: 選擇全部
玩家1,玩家2,玩家3,玩家4,... 開啟檔案wog/acpmain.php 尋找 - 代碼: 選擇全部
$to_name=$DB_site->query_first('select p_id from wog_player where p_name="'.$_POST["name"].'"'); if(!$to_name || $to_name==""){alertWindowMsg('對象不存在');}
覆蓋為 - 代碼: 選擇全部
if(eregi("[,]", $_POST["name"])) { $name=split(",",$_POST["name"]); for($j=0;$j<count($name);$j++) { $to[$j]=$DB_site->query_first('select p_id from wog_player where p_name="'.$name[$j].'"'); if(!$to[$j][p_id]){alertWindowMsg('含有不明玩家名稱');} } }else { $to_name=$DB_site->query_first('select p_id from wog_player where p_name="'.$_POST["name"].'"'); if(!$to_name || $to_name==""){alertWindowMsg('對象不存在');} }
尋找 - 代碼: 選擇全部
$DB_site->query("insert into wog_message(p_id,title,dateline,p_userlv)values(".$to_name[0].",'".$to_user." ".$to_user_id."寫道:".$to_body."',".time().",".$_SESSION["ADMIN_LV"].")");
覆蓋為 - 代碼: 選擇全部
if(count($to)>1) { for($j=0;$j<count($to);$j++) { $DB_site->query("insert into wog_message(p_id,title,dateline,p_userlv)values(".$to[$j][p_id].",'".$to_user." ".$to_user_id."寫道:".$to_body."',".time().",".$_SESSION["ADMIN_LV"].")"); } }else { $DB_site->query("insert into wog_message(p_id,title,dateline,p_userlv)values(".$to_name[0].",'".$to_user." ".$to_user_id."寫道:".$to_body."',".time().",".$_SESSION["ADMIN_LV"].")"); }
儲存,關閉所檔案
完畢。
-
涅魂
-
- 文章: 4463
- 註冊時間: 2004-01-04 11:17 am
- 來自: Taiwan
- 性別: 男生
由 涅魂 » 2005-05-29 12:56 pm
New-TypeChobits 寫:不錯的外掛.. 其實做少許修改就可變成發送訊息給全部玩家~ 或可做到永久的訊息...
嗯,"發送訊息給全部玩家"這個感覺上比較像是"公告",用訊息的方式讓玩家們看到會比較浪費資源
要讓全玩家看到的話僅需在遊戲中的任一版面顯示公告即可
不過還是謝謝您的建議
在此特別鳴謝此外掛的提議人 : GYM
沒有他的建議的話可能就沒有這個外掛了
-
New-TypeChobits
-
- 文章: 176
- 註冊時間: 2003-12-12 9:44 am
- 來自: HONG KONG
- 性別: 男生
-
由 New-TypeChobits » 2005-05-29 9:51 pm
發送給全部玩家.. 其實加資料庫加一個欄位就可以做到(其實不加亦可以)... 用特定的Keyword,例如在Select時用OR "p_id"= "keywords", 不用每個User去Insert Record的.. 這不會做成資料庫的負擔.
人在江湖... 身不由己...
|