[外掛](3.0)聊天室 Ver 1.6

版主: 涅魂, 簫哥

minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2007-06-23 10:08 am

齋月 寫:
minglo 寫:我也想到是type="submit"的問題,因為沒有設定name,所以當作送出的部份處理,不過我忙於新外掛,所以沒空上來說,給月你快了一步...



沒關係 還有兩個BUG~~ 就交給你了 XD (溜走...)

第二個可以說不叫BUG,只是我們需要的有所不同
我們想是只輸入動作不需要輸入名稱也可以運作


歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/


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

文章涅魂 » 2007-06-23 6:25 pm

啊,對喔,測試時只測試動作忘記測發言…:oops:

而第三個問題沒辦法說明的話我也不知道該怎麼辦了@@...

月說的吃字是說發的文字中有些字遺失?還是發言後文章沒有存在chat_log.txt中呢?


圖檔


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

文章涅魂 » 2007-06-23 6:27 pm

minglo 寫:第二個可以說不叫BUG,只是我們需要的有所不同
我們想是只輸入動作不需要輸入名稱也可以運作

喔喔,我知道你們說的功能了,應該就是忽略&aim的動作吧?

之前沒有考慮到這點,抱歉^^"

現在馬上去改,晚點馬上把修正好的程式碼PO上來 :wink:


圖檔


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

文章涅魂 » 2007-06-23 11:54 pm

改的時候被我自己追加的東西卡住所以花了點時間,不過已經將檔案修正好了

下載檔案已更新完畢,而動作代碼的修正如下

開啟檔案chat.php

尋找
代碼: 選擇全部
      if($chat_set[1]==1)   //動作代碼使用檢驗
      {
      ...
      }

改成
代碼: 選擇全部
      if($chat_set[1]==1)   //動作代碼使用檢驗
      {
         if(preg_match('/^\/([^ \/]+)($| ([^ \/]+)$)/',$_POST['message'],$matches))
         {
            $fastcode=true;
            $search_action = $act_table[$matches[1]];
            if(!$matches[3])
            {
               if($search_action && strpos($search_action,'&aim') == false)
               {
                  $_POST['message'] = str_replace("&name",$p['p_name'],$search_action);
                  $_POST['export_type']='act';
               }else
               $_POST['message']=$p['p_name'].'面對空氣做了個意義不明的動作。';
            }else
            {
               if($search_action)
               {
                  $_POST['message'] = str_replace("&name",$p['p_name'],str_replace("&aim",$matches[3],$search_action));
                  $_POST['export_type']='act';
                  $message_quote="";
               }else
               $_POST['message']=$p['p_name'].'面對空氣做了個意義不明的動作。';
            }
         }
      }

完畢,有其他問題歡迎指教^^


圖檔

minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2007-06-24 11:03 am

這個修改我還是用不到,我那邊大部分都有&name和 &aim ,但&aim有時不會用
例子:
&name 進入潛水艇,很快地潛航。 &aim

後面的&aim 只是為了可以給會員打其他東西或加上表情,也可以甚麼也不寫,但這次修改一定是沒有&aim才能用到 不需要輸入名稱的功能@@




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

文章涅魂 » 2007-06-24 12:28 pm

嗯,這樣會變得很難判斷…

假設您說的定為 &extension 好了,這樣就必須有能辨別&extension與&aim的方法

不然這兩個會混在一起,到時候動作列表的定義就會亂掉

舉個例子來說,假設有兩個動作定義如下
代碼: 選擇全部
'gratitude'=>'&name 對 &aim 充滿著無比感謝之意 ',
'thx'=>'&name 彎身鞠躬!&aim'

這兩個都有&name與&aim,但兩者的使用意義並不相同,但撰寫格式卻都一樣
代碼: 選擇全部
/gratitude Chaos
/thx 突然間發出斯吼聲

不知道這樣說您能不能理解我想表達的問題,將上面的輸入內容換成這樣
代碼: 選擇全部
/gratitude 突然間發出斯吼聲
/thx Chaos

這兩者的語法沒有問題,但卻會使輸出結果產生文不對題的情況
代碼: 選擇全部
&name 對 突然間發出斯吼聲 充滿著無比感謝之意
&name 彎身鞠躬!Chaos

可能有人的名稱取為"突然間發出斯吼聲",或有人在鞠躬後會Chaos,但我們並非要討論特例,而是希望動作列表能夠有清楚表達意義的寫法,而非頭痛醫頭腳痛醫腳

說了這麼多還是回到原來的主題吧,我暫時有想到一種做法,便是在辨識的部分上使用兩個開頭當作是區別aim與extension的用法

這裡假定aim用@,extension用!,那麼上面的動作列表便可以如下定義
代碼: 選擇全部
'gratitude'=>'&name 對 &aim 充滿著無比感謝之意 ',
'thx'=>'&name 彎身鞠躬!&extension'

終端的輸入內容如下
代碼: 選擇全部
/gratitude @Chaos
/thx !突然間發出斯吼聲

這樣便能使動作列表有完整的定義方式,而不會讓使用者感到混亂了

而這種寫法的程式碼修改如下

開啟檔案chat.php

尋找
代碼: 選擇全部
               if($search_action)
               {
                  $_POST['message'] = str_replace("&name",$p['p_name'],str_replace("&aim",$matches[3],$search_action));
                  $_POST['export_type']='act';
                  $message_quote="";
               }else
               $_POST['message']=$p['p_name'].'面對空氣做了個意義不明的動作。';

改成
代碼: 選擇全部
               $selector=substr($matches[3],0,1);
               if($search_action)
               {
                  $_POST['export_type']='act';
                  switch($selector)
                  {
                     default:
                     $_POST['message'] = str_replace("&name",$p['p_name'],str_replace("&aim",$matches[3],$search_action));
                     $_POST['message'] = str_replace('&extension','',$_POST['message']);
                     break;
                     case '@':
                     $_POST['message'] = str_replace("&name",$p['p_name'],str_replace("&aim",substr($matches[3],1),$search_action));
                     $_POST['message'] = str_replace('&extension','',$_POST['message']);
                     break;
                     case '!':
                     $_POST['message'] = str_replace("&name",$p['p_name'],str_replace("&extension",substr($matches[3],1),$search_action));
                     $_POST['message'] = str_replace('&aim','',$_POST['message']);
                     break;
                  }
               }else
               $_POST['message']=$p['p_name'].'面對空氣做了個意義不明的動作。';

這個程式碼能辨別帶有選擇器(上面所說的!和@)的文字,且若沒有選擇器的話則預設使用&aim

看這個能不能滿足您的需求吧^^


圖檔

minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2007-06-26 10:37 am

~嗯...我認為也很不方便,因為一定要打一個空格才能使&extension消失,就像我之前的一個例子:
latent => &name 進入潛水艇,很快地潛航。 &extension
如果我只輸入/latent沒有輸入空格的話就會顯示
abc進入潛水艇,很快地潛航。 &extension
輸入/latent並輸入空格的話才會顯示
abc進入潛水艇,很快地潛航。
而且要加一個!和@使用者會很麻煩的...


歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/


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

文章涅魂 » 2007-06-26 9:14 pm

喔喔,第一個有很簡單的方法可以解決,把後面的東西消除即可

尋找
代碼: 選擇全部
                  $_POST['message'] = str_replace("&name",$p['p_name'],$search_action);
                  $_POST['export_type']='act';

改為
代碼: 選擇全部
                  $_POST['message'] = str_replace("&name",$p['p_name'],$search_action);
                  $_POST['message'] = str_replace("&extension",'',$_POST['message']);
                  $_POST['export_type']='act';

這樣就可以了

至於麻煩,這是習慣的問題,若從第一版便要加!跟@的話我想可能沒人會注意到這個問題

就像在PHPBB編輯文章,雖然覺得用BBCODE代碼很麻煩卻還是繼續使用,何況只是要額外輸入一個字?

這也只能勸導玩家了吧...不然就是想想別的方法來解決^^"


最後由 涅魂 於 2007-06-26 9:22 pm 編輯,總共編輯了 1 次。
圖檔


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

文章涅魂 » 2007-06-26 9:21 pm

順便提一下,未來會考慮使用AJAX來當作聊天室的基礎

不過在這之前想要先參考看看各位的意見,看是否有使用的必要性

因此想要先試寫一個簡單的AJAX聊天室看看,不知道有沒有人自願當我的實驗白老鼠呢XD?不過程式碼還沒完成就是了…

而AJAX基礎的聊天室不必另外安裝什麼東西,和現在的聊天室一樣只要用到PHP跟JAVASCRIPT以及HTML即可^^


圖檔

minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2007-06-27 7:16 pm

涅魂 寫:順便提一下,未來會考慮使用AJAX來當作聊天室的基礎

不過在這之前想要先參考看看各位的意見,看是否有使用的必要性

因此想要先試寫一個簡單的AJAX聊天室看看,不知道有沒有人自願當我的實驗白老鼠呢XD?不過程式碼還沒完成就是了…

而AJAX基礎的聊天室不必另外安裝什麼東西,和現在的聊天室一樣只要用到PHP跟JAVASCRIPT以及HTML即可^^

做白老鼠,我一直做開的,不介意的話我來做吧
我之前好像照顧過一對白老鼠,xd~有經驗的


歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/


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

文章涅魂 » 2007-06-27 11:51 pm

當然沒問題~只要能有不同的人來測試就有更高的機會找出漏洞了

程式碼最快明天就能完成,到時候就麻煩您囉

另外,想確定一下您的空間是否有iconv的模組?不清楚這是不是內建的模組,有點擔心^^"...


圖檔

頭像
齋月
 
文章: 557
註冊時間: 2006-02-27 7:54 am

文章齋月 » 2007-06-28 5:56 am

AJAX 是什麼 @@?

呵呵 知識嚴重不足 XD

我這邊應該也可以趁半夜人比較少的時候請全部玩家一起來測試~~


辛苦囉~~

ps. iconv模組有沒有要怎麼看??



minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2007-06-28 2:20 pm

齋月 寫:AJAX 是什麼 @@?

呵呵 知識嚴重不足 XD

我這邊應該也可以趁半夜人比較少的時候請全部玩家一起來測試~~


辛苦囉~~

ps. iconv模組有沒有要怎麼看??

嗯嗯~其實我也不知iconv模組是甚麼?xd~
我的知識也不是多的。


歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/


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

文章涅魂 » 2007-06-28 7:23 pm

AJAX,字面來說即是 " 非同步Javascript 與 XML " ,相信有人看到這行就會被嚇走了...XD

至於實作方法嘛…非常簡單,只要利用XMLHttpRequest()這個物件就行囉

想看實例的話可以到網路上找找或等我把程式放上來吧^^

而要看有沒有啟用iconv模組的話將下面這個程式碼封裝成程式後執行就能跳出php的運作環境了
代碼: 選擇全部
<?php
phpinfo();
?>

檢查裡面的iconv support有沒有設定成enabled吧

如果沒有的話就要修改php.ini的設定,不過這樣的話我也就不用考慮使用iconv模組了XD

另外,今天突然想到有實作template的方法,不過還沒有測試過,也不知道大家對這個的接受程度如何

所以想問一下大家的意見,看看能否接受template的設計方式呢^^?


圖檔

minglo
 
文章: 250
註冊時間: 2004-01-17 10:05 am
來自: hong kong

文章minglo » 2007-06-29 3:43 pm

我有位網友,不能在我那邊的聊天室持續發言,要不停登入再登出才可以說話?不知是不是我出了錯誤?


歡迎來到我的論壇:
論壇 :
http://www.kw86.com/upload/

WOG:
http://www.kw86.com/upload/wog/

上一頁下一頁

回到 外掛區

誰在線上

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

cron