[外掛](ALL)好友名單

版主: 涅魂, 簫哥


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

[外掛](ALL)好友名單

文章涅魂 » 2005-07-28 1:12 pm

參考網路遊戲的好友名單做出來的....
不過功能似乎有點陽春=口=||
改天再加點功能好了 :lol:

功能簡介 寫:1.可以透過[新增]功能在名單中加入您的好友。
2.可透過[刪除]功能刪除位於好友名單中的玩家。
3.可以透過好友名單來迅速確認好友是否在線上。
4.[NEW]透過[傳送訊息]功能可以迅速發短訊給你的好友。(未加入於原始碼中,欲加入此功能者請點此)


在您的資料庫中輸入下列語法 寫:CREATE TABLE `wog_friend` (
`p_id` INT( 11 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`f_id` TEXT NOT NULL ,
PRIMARY KEY ( `p_id` )
) TYPE = MYISAM ;


開啟檔案wog/wog.js 寫:尋找
代碼: 選擇全部
//###### 分頁 begin #####

前面,加上
代碼: 選擇全部
function f_list(f_name)//##friend_system
{
   message_cls();
   var view_name=parent.wog_view;
   view_name.document.write(temp_table1);
   view_name.document.write('<tr><td width=70%>好友名稱</td><td width=30%>線上狀態</td></tr>');
   if(f_name)
   {
      s1=f_name.split(";");
      for(var a=0;a<s1.length;a++)
      {
         s2=s1[a].split(",");
         var fcolor=psex(s2[2]);
         view_name.document.write('<tr><td><a href=javascript:parent.yesname("'+s2[0]+'")><font color='+fcolor+'>'+s2[0]+'</font></a></td><td>'+s2[1]+'</td></tr>');
      }
   }else
   {
      view_name.document.write('<tr><td colspan=2>沒有任何好友資料。</td></tr>');   
   }
   view_name.document.write('<tr><td colspan=2>');
   view_name.document.write('<form action="wog_etc.php" method="GET">');
   view_name.document.write('<input type=text name=f_name><input type=radio name="act" value=add CHECKED>新增<input type=radio name="act" value=del>刪除 <input type=submit value="送出"><input type=hidden name="f" value="friend"> <input type=button value="資料全刪除" onClick="parent.del_all_con()"></form>');
   view_name.document.write(temp_table2);
}
function del_all_con()
{
   if(confirm("確定刪除所有好友資料?")==true)
   {
      parent.wog_view.document.URL="./wog_etc.php?f=friend&act=del_all";
   }
}

開啟檔案wog/wog_etc.php 寫:尋找
代碼: 選擇全部
case "race":

前面,加上
代碼: 選擇全部
   case "friend":
      if($HTTP_COOKIE_VARS["wog_cookie"]==""){alertWindowMsg($lang['wog_act_nofroum_member']);}
      include("./class/wog_etc_friend.php");
      $wog_etc_class= new wog_etc_friend;
      switch ($_GET["act"])
      {
         case "list":
            $wog_etc_class->f_list($HTTP_COOKIE_VARS["wog_cookie"]);
         break;
         case "add":
            $wog_etc_class->f_add($HTTP_COOKIE_VARS["wog_cookie"]);
         break;
         case "del":
            $wog_etc_class->f_del($HTTP_COOKIE_VARS["wog_cookie"]);
         break;
         case "del_all":
            $wog_etc_class->f_del_all($HTTP_COOKIE_VARS["wog_cookie"]);
         break;
         default:
         break;
      }
   break;


開啟檔案wog/wog_top.htm 寫:尋找
代碼: 選擇全部
【<a href="wog_id_admin.htm" target="wog_view">帳號中心</a>】

後面,加上
代碼: 選擇全部
【<a href="wog_etc.php?f=friend&act=list" target="wog_view">好友名單</a>】


建立檔案wog/class/wog_etc_friend.php 寫:內容
代碼: 選擇全部
<?
class wog_etc_friend{

   function f_list($user_id)
   {
      global $DB_site,$wog_arry,$_POST;
      $peo=$DB_site->query_first("select f_id from wog_friend where p_id=".$user_id);
      if($peo && !empty($peo[f_id]))
      {
         $sql=$DB_site->query("select DISTINCT p_name,p_sex,p_online_time from wog_player where p_id in (".$peo[f_id].")");
         $s="";
         while($f=$DB_site->fetch_array($sql))
         {
            ($f[p_online_time] < time()-$wog_arry[offline_time])?$online="<font color=999999>Offline</font>":$online="<font color=ffff00>ONLINE</font>";
            $s.=";".$f[p_name].",".$online.",".$f[p_sex];
         }
         $DB_site->free_result($sql);
         $s=substr($s,1,strlen($s));
      }else
      {$s="";}
      showscript("parent.f_list('".$s."')");
      unset($s);
   }
   
   function f_add($user_id)
   {
      global $DB_site,$_GET;
      $add=$DB_site->query_first("select p_id from wog_player where p_name='".$_GET["f_name"]."' and p_userlv!=1 and p_userlv!=2");
      if(empty($add[p_id]) || empty($_GET["f_name"])){alertWindowMsg('好友名稱錯誤!','./wog_etc.php?f=friend&act=list');}
      if($add[p_id]==$user_id){alertWindowMsg('不能加入自己!','./wog_etc.php?f=friend&act=list');}
      $p=$DB_site->query_first("select f_id from wog_friend where p_id=".$user_id);
      if(eregi($add[p_id],$p[f_id])){alertWindowMsg('已存在於好友名單中!','./wog_etc.php?f=friend&act=list');}
      if(!$p)
      {
         $DB_site->query("insert wog_friend(p_id,f_id)values(".$user_id.",".$add[p_id].")");
      }else
      {
         if(empty($p[f_id]))
         {$s=$add[p_id];}
         else
         {$s=$p[f_id].",".$add[p_id];}
         $DB_site->query("update wog_friend set f_id='".$s."' where p_id=".$user_id);
      }
      $this->f_list($user_id);
   }
   
   function f_del($user_id)
   {
      global $DB_site,$_GET;
      $p=$DB_site->query_first("select f_id from wog_friend where p_id=".$user_id);
      if(!$p || empty($p[f_id])){alertWindowMsg('您尚未建立好友名單!','./wog_etc.php?f=friend&act=list');}
      $del_id=$DB_site->query_first("select p_id from wog_player where p_name='".$_GET["f_name"]."'");
      if(empty($del_id[p_id]) || !$del_id){alertWindowMsg('刪除對象不存在!','./wog_etc.php?f=friend&act=list');}
      if(eregi(",",$p[f_id]))
      {$friend=split(",",$p[f_id]);}
      else
      {$friend[0]=$p[f_id];}
      $s=@array_diff($friend,$del_id);
      if(count($s)==count($friend)){alertWindowMsg('您的好友名單中沒有這位玩家!','./wog_etc.php?f=friend&act=list');}
      $s=@join(",",$s);
      $DB_site->query("update wog_friend set f_id='".$s."' where p_id=".$user_id);
      $this->f_list($user_id);
   }
   function f_del_all($user_id)
   {
      global $DB_site;
      $DB_site->query("update wog_friend set f_id='' where p_id=".$user_id);
      $this->f_list($user_id);
   }
}      
?>

儲存,關閉所有檔案。
完畢,有問題請提出。 :wink:


最後由 涅魂 於 2007-02-14 5:02 pm 編輯,總共編輯了 10 次。

頭像
Kagami
 
文章: 256
註冊時間: 2005-07-01 2:38 pm
來自: HongKong    

文章Kagami » 2005-07-28 1:43 pm

很好....我的wog安裝了....還未有找到bug..
謝謝大大的分享..
有一個建議..就是如果找不到人的時候出現了
代碼: 選擇全部
好友名稱錯誤!

之後是返回好友名單....不是出現白色畫面^^"
還有可以禁止玩家在好友名單加入gm和sa?




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

文章涅魂 » 2005-07-28 1:55 pm

Kagami 寫:很好....我的wog安裝了....還未有找到bug..
謝謝大大的分享..
有一個建議..就是如果找不到人的時候出現了
代碼: 選擇全部
好友名稱錯誤!

之後是返回好友名單....不是出現白色畫面^^"

開啟檔案wog/class/wog_etc_friend.php
尋找
代碼: 選擇全部
alertWindowMsg('好友名稱錯誤!');

改成
代碼: 選擇全部
alertWindowMsg('好友名稱錯誤!','./wog_etc.php?f=friend&act=list');

kagami 寫:還有可以禁止玩家在好友名單加入gm和sa?

開啟檔案wog/class/wog_etc_friend.php
尋找
代碼: 選擇全部
$add=$DB_site->query_first("select p_id from wog_player where p_name='".$_GET["f_name"]."'");

改成
代碼: 選擇全部
$add=$DB_site->query_first("select p_id from wog_player where p_name='".$_GET["f_name"]."' and p_userlv!=1 and p_userlv!=2");

完畢。
以上兩項加入至原始碼中。 :wink:




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

文章涅魂 » 2005-07-28 2:01 pm

再加上四點~~
開啟檔案wog/class/wog_etc_friend.php
尋找
代碼: 選擇全部
alertWindowMsg('不能加入自己!');

改成
代碼: 選擇全部
alertWindowMsg('不能加入自己!','./wog_etc.php?f=friend&act=list');

尋找
代碼: 選擇全部
alertWindowMsg('已存在於好友名單中!');

改成
代碼: 選擇全部
alertWindowMsg('已存在於好友名單中!','./wog_etc.php?f=friend&act=list');

尋找
代碼: 選擇全部
alertWindowMsg('您尚未建立好友名單!');

改成
代碼: 選擇全部
alertWindowMsg('您尚未建立好友名單!','./wog_etc.php?f=friend&act=list');

尋找
代碼: 選擇全部
alertWindowMsg('您的好友名單中沒有這位玩家!');

改成
代碼: 選擇全部
alertWindowMsg('您的好友名單中沒有這位玩家!','./wog_etc.php?f=friend&act=list');

儲存,關閉所有檔案。
原始碼已更正。 :wink:




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

文章涅魂 » 2005-07-28 2:07 pm

找到一個小BUG.. :oops:
開啟檔案wog/class/wog_etc_friend.php
尋找
代碼: 選擇全部
{$friend=$p[f_id];}

改成
代碼: 選擇全部
{$friend[0]=$p[f_id];}

儲存,關閉所有檔案
完畢。 :wink:
(原始碼已更正。)



頭像
Kagami
 
文章: 256
註冊時間: 2005-07-01 2:38 pm
來自: HongKong    

文章Kagami » 2005-07-28 3:59 pm

提供一個可有可無的功能...
在wog.js中
找:
代碼: 選擇全部
s[19]="復活成功,經驗值下降1/5";

在下加上:
代碼: 選擇全部
s[20]="增加好友成功!";


打開.class/wog_etc_friend.php
找:
代碼: 選擇全部
$DB_site->query("update wog_friend set f_id='".$s."' where p_id=".$user_id);

在下加上:
代碼: 選擇全部
showscript("parent.job_end(20)");


完成..這是個很沒用的功能..加不加都沒差....



maxjbl
 
文章: 178
註冊時間: 2005-05-03 4:20 am

文章maxjbl » 2005-07-28 7:01 pm

這個外掛 是不是只判斷 英數的ID帳號 中文的帳號 或使用萬用字元帳號 都出現 [好友名稱錯誤] 麻煩大大了



頭像
Kagami
 
文章: 256
註冊時間: 2005-07-01 2:38 pm
來自: HongKong    

文章Kagami » 2005-07-28 7:19 pm

maxjbl 寫:這個外掛 是不是只判斷 英數的ID帳號 中文的帳號 或使用萬用字元帳號 都出現 [好友名稱錯誤] 麻煩大大了

我的wog沒問題..你看..
圖檔




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

文章涅魂 » 2005-07-28 7:39 pm

maxjbl 寫:這個外掛 是不是只判斷 英數的ID帳號 中文的帳號 或使用萬用字元帳號 都出現 [好友名稱錯誤] 麻煩大大了

出現"好友名稱錯誤"的情況可能是
1.沒有輸入名稱
2.對象不存在
3.有錯字
4.對象為SA或GM
以上,再仔細檢查看看吧。 :wink:


最後由 涅魂 於 2005-07-28 7:46 pm 編輯,總共編輯了 1 次。

¥飛天阿鳥¥
 
文章: 322
註冊時間: 2004-11-07 3:04 pm
來自: 水色的某一處     團體:變態團團員     團隊:烤鳥隊長

文章¥飛天阿鳥¥ » 2005-07-28 7:39 pm

有好友名單
相反的
未來可能會出現仇人名單吧!
強烈建議阿~~

不過這個好友名單不錯]\!




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

文章涅魂 » 2005-07-28 7:44 pm

¥黑暗四天王¥ 寫:有好友名單
相反的
未來可能會出現仇人名單吧!
強烈建議阿~~

不過這個好友名單不錯]\!

不過列出仇人名單要做什麼=口=??
難道列進去會記得比較清楚嗎?? :shock:



maxjbl
 
文章: 178
註冊時間: 2005-05-03 4:20 am

文章maxjbl » 2005-07-28 7:45 pm

涅魂 寫:
maxjbl 寫:這個外掛 是不是只判斷 英數的ID帳號 中文的帳號 或使用萬用字元帳號 都出現 [好友名稱錯誤] 麻煩大大了

出現"好友名稱錯誤"的情況可能是
1.沒有輸入名稱
2.對象不存在
3.有錯字
4.對象為SA或GM
以上。 :wink:


收到!!!



¥飛天阿鳥¥
 
文章: 322
註冊時間: 2004-11-07 3:04 pm
來自: 水色的某一處     團體:變態團團員     團隊:烤鳥隊長

文章¥飛天阿鳥¥ » 2005-07-28 8:34 pm

涅魂 寫:
¥黑暗四天王¥ 寫:有好友名單
相反的
未來可能會出現仇人名單吧!
強烈建議阿~~

不過這個好友名單不錯]\!

不過列出仇人名單要做什麼=口=??
難道列進去會記得比較清楚嗎?? :shock:

如果在工會戰鬥偷打的話加入仇人....(我最討厭這一種人 :twisted: )
在聊天畫面說出不雅言語加入仇人.可通知該站長施予禁言~~
:twisted:
大概只有這幾種吧~~




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

文章涅魂 » 2005-07-28 9:15 pm

刪除玩家的部分發現兩個問題
1.輸入不存在的玩家時好友名單會歸零...= =
之前把這部分遺忘掉了... :oops:

開啟檔案wog/class/wog_etc_friend.php
尋找
代碼: 選擇全部
$del_id=$DB_site->query_first("select p_id from wog_player where p_name='".$_GET["f_name"]."'");

下面,加上
代碼: 選擇全部
if(empty($del_id[p_id]) || !$del_id){alertWindowMsg('刪除對象不存在!','./wog_etc.php?f=friend&act=list');}


2.在被加入好友的情況下刪除角色之後,位於好友名單中的該玩家會無法刪除....= =
這個問題似乎無解...~"~
若要資料逐一比對資料庫似乎又很費資源....
所以以下提供最後的應對方式....資料初始化.. :oops:
建議好友名單中有超過3位以上為空號時才用此功能將資料初始化..。

開啟檔案wog/wog.js
尋找
代碼: 選擇全部
<input type=hidden name="f" value="friend">

後面,加上
代碼: 選擇全部
 <input type=button value="資料全刪除" onClick="parent.del_all_con()"></form>

尋找
代碼: 選擇全部
//###### 分頁 begin #####

上面,加上
代碼: 選擇全部
function del_all_con()
{
   if(confirm("確定刪除所有好友資料?")==true)
   {
      parent.wog_view.document.URL="./wog_etc.php?f=friend&act=del_all";
   }
}


開啟檔案wog/wog_etc.php
尋找
代碼: 選擇全部
         case "del":
            $wog_etc_class->f_del($HTTP_COOKIE_VARS["wog_cookie"]);
         break;

下面,加上
代碼: 選擇全部
         case "del_all":
            $wog_etc_class->f_del_all($HTTP_COOKIE_VARS["wog_cookie"]);
         break;


開啟檔案wog/class/wog_etc.friend.php
尋找
代碼: 選擇全部
}      
?>

上面,加上
代碼: 選擇全部
   function f_del_all($user_id)
   {
      global $DB_site;
      $DB_site->query("update wog_friend set f_id='' where p_id=".$user_id);
      $this->f_list($user_id);
   }


儲存,關閉所有檔案。
完畢。
(原始碼已更正。)




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

文章涅魂 » 2005-07-30 10:25 am

NEW SYSTEM
新增快速傳訊功能給被加入為好友的玩家
※為了防止程式碼露餡以及遊戲的美觀,傳送給玩家訊息的時候(點選 《<☎>》 )不會在狀態列顯示出連結結果。
※此功能不會加在上面,欲加入者請照下列步驟逐一修改。 :wink:

開啟檔案wog/wog.js
尋找
代碼: 選擇全部
var temp_m_hpmax=0;

下面,加上
代碼: 選擇全部
var to_name="";


尋找
代碼: 選擇全部
function f_list(f_name)//##friend_system
{
..........
..........
..........
}

改成
代碼: 選擇全部
function f_list(f_name)//##friend_system
{
   message_cls();
   var view_name=parent.wog_view;
   view_name.document.write(temp_table1);
   view_name.document.write('<tr><td width=60%>好友名稱</td><td width=10%>傳送訊息</td><td width=30%>線上狀態</td></tr>');
   if(f_name)
   {
      s1=f_name.split(";");
      for(var a=0;a<s1.length;a++)
      {
         s2=s1[a].split(",");
         var fcolor=psex(s2[2]);
         view_name.document.write('<tr><td><a href=javascript:parent.yesname("'+s2[0]+'")><font color='+fcolor+'>'+s2[0]+'</font></a></td><td><span onClick="javascript:parent.to_name=\''+s2[0]+'\';parent.message()">《<☎>》</span></td><td>'+s2[1]+'</td></tr>');
      }
   }else
   {
      view_name.document.write('<tr><td colspan=2>沒有任何好友資料。</td></tr>');   
   }
   view_name.document.write('<tr><td colspan=3>');
   view_name.document.write('<form action="wog_etc.php" method="GET">');
   view_name.document.write('<input type=text name=f_name><input type=radio name="act" value=add CHECKED>新增<input type=radio name="act" value=del>刪除 <input type=submit value="送出"><input type=hidden name="f" value="friend"> <input type=button value="資料全刪除" onClick="parent.del_all_con()"></form>');
   view_name.document.write(temp_table2);
}


尋找
代碼: 選擇全部
view_name.document.write('<tr><td>遊戲中的帳號</td><td class="b1"><input type="text" name="name" size="12"></td></tr>');

改成
代碼: 選擇全部
view_name.document.write('<tr><td>遊戲中的帳號</td><td class="b1"><input type="text" name="name" size="12" value="'+to_name+'"></td></tr>');


尋找
代碼: 選擇全部
view_name.document.write('<tr><td colspan="2"><input type="button" value="送出" onClick="parent.foot_trun(\'message\',\'\',this.form.name.value,this.form.body.value)"></td></tr>');

下面,加上
代碼: 選擇全部
parent.to_name="";


完畢。 :wink:



下一頁

回到 外掛區

誰在線上

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