[外掛](ALL)管理員&GM訊息

版主: 涅魂, 簫哥


涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

[外掛](ALL)管理員&GM訊息

文章涅魂 » 2005-05-28 11:21 am

此外掛主要是配合New-TypeChobits所開發的後台外掛來使用
所以安裝此外掛前必須先安裝後台外掛才能使用 :wink:

範例圖片

以下程序皆以更新為最新內容

在您的資料庫中輸入下列語法
代碼: 選擇全部
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....
所以有問題的話請提出吧....完畢。 :wink:


最後由 涅魂 於 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 在哪,我找不到!!


我的wog:http://sasa.no-ip.org/hackbbs/
-------------------------------------


涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2005-05-28 11:34 am

sizkin 寫:請問New-TypeChobits所開發的後台外掛的link 在哪,我找不到!!

在外掛區中,該外掛的正式名稱是wog acp(遊戲管理控制台),簡稱後台 :wink:
另外,~木林森~所提供的[下載]WOG Only v2.08 + else Mod 裡面已經包含後台程式囉 :wink:


最後由 涅魂 於 2005-05-28 3:42 pm 編輯,總共編輯了 1 次。
圖檔


涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2005-05-28 11:37 am

!注意!下列的四篇DEBUG皆已更新於上列程式,若您尚未安裝本外掛,只需將上列程序安裝完畢即可,不需要裝下列的DEBUG。
若您之前已經裝過本外掛,請照順序DEBUG,照成您的不便深感歉意 :cry:


DEBUG
剛剛發現時間的顯示會錯誤....仔細看了一下程式碼內容後發現原來是我把一個地方給改錯了.... :oops:

開啟檔案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);
   }

儲存,關閉所有檔案
完畢。 :wink:


最後由 涅魂 於 2005-05-28 9:59 pm 編輯,總共編輯了 3 次。


涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2005-05-28 2:31 pm

DEBUG
再發現一個問題....發送給目標時會有錯誤.... :oops:

開啟檔案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]."


儲存,關閉所有檔案
完畢。 :wink:


最後由 涅魂 於 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....希望這是最後一個了.. :cry:


開啟檔案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);

完畢。 :wink:


圖檔

頭像
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"].")");
   }

儲存,關閉所檔案
完畢。 :wink:


圖檔


涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2005-05-29 12:56 pm

New-TypeChobits 寫:不錯的外掛.. 其實做少許修改就可變成發送訊息給全部玩家~ 或可做到永久的訊息...

嗯,"發送訊息給全部玩家"這個感覺上比較像是"公告",用訊息的方式讓玩家們看到會比較浪費資源
要讓全玩家看到的話僅需在遊戲中的任一版面顯示公告即可
不過還是謝謝您的建議 :wink:

在此特別鳴謝此外掛的提議人 : GYM
沒有他的建議的話可能就沒有這個外掛了 :wink:


圖檔

頭像
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的.. 這不會做成資料庫的負擔. :)


人在江湖... 身不由己...


回到 外掛區

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 8 位訪客