[外掛] 虛擬貨幣 by oO]-[Oo

MODs Released by Other phpbb Sites
非官方認證通過之 MOD ,或許有安全性之疑慮,所有問題由原發表者回覆!

版主: 版主管理群

主題已鎖定
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

[外掛] 虛擬貨幣 by oO]-[Oo

文章 Mac »

文章都跑到其他地方了,整理一下
oO]-[Oo™ 寫:

代碼: 選擇全部

############################################################## 
## Mod Title: Virtual Money MOD [虛擬貨幣]
## Mod Version: 2.0.1 
## Author: OOHOO < webdev@phpbb-tw.net > http://phpbb-tw.net/
## 
## Description: Virtual money can encourage registered users to 
## participate in the forum activity. By giving the virtual money 
## reward, users will allow to use their money in the forum, however, 
## this will depond on webmaster's descision.
##
## Note: Only registered users can have virtual money.
## 
## Demo: http://phpbb-tw.net/
## 
## Installation Level: (medium) 
## Installation Time: 5 - 10 Minutes 
## Files To Edit: posting.php, includes/functions_post.php, 
## includes/usercp_register.php, templates/xxx/profile_add_body.tpl,
## templates/xxx/admin/user_edit_body.tpl, admin/admin_users.php,
## language/ur_lang/lang_main.php, memberlist.php, 
## templates/xxx/memberlist_body.tpl
## 
## Included Files: (n/a) 
############################################################## 
## 
## Author Note: Feel free to use it, and backup b4 u install it.
## It's just a easy MOD, but if u like it, give credit to me.
## 
############################################################## 
## Version History:
## 1.x.x for eariler phpBB version
## 2.0.0 for phpBB 2.0.0
## 2.0.1 memberlist include
############################################################## 


這個完整的[虛擬貨幣外掛]包含前後端的介面, 修改範圍, 7個檔
posting.php
includes/functions_post.php,
\nincludes/usercp_register.php
templates/xxx/profile_add_body.tpl,
templates/xxx/admin/user_edit_body.tpl
admin/admin_users.php
language/ur_lang/lang_main.php

v2.0.1新增 memberlist
memberlist.php
templates/xxx/memberlist_body.tpl

檢查一下這幾個檔有沒有加過其他的MOD, 如果沒有直接下載v_money_2.0.1.zip
覆蓋原檔即可, 如果已加過別的, 嗯.. 就要麻煩你們自己比對一下了..

v_money_2.0.1.zip裡並未包含lang_main.php, 請直接在lang_main.php的最下方加入\r

[php]<?php
$lang['Virtual_Money'] = "雷克斯幣"; // Virtual_Money_MOD
$lang['User_Asset'] = "個人資產"; // Virtual_Money_MOD
?>[/php]

"雷克斯幣"可以自行改成你要的幣制, 後端管理的部分被包含在會員管理中.

資料庫部分及主題顯示請參照下列步驟:

第一步:
新增資料庫欄位, 執行

代碼: 選擇全部

ALTER TABLE phpbb_users ADD user_money int(11) unsigned NOT NULL default '0';
第二步:
編輯 viewtopic.php, 找到這陀..

代碼: 選擇全部

//
// Go ahead and pull all data for this topic
//
$sql = "SELECT u.username, u.user_id, u.user_posts, u.user_from, u.user_website, u.user_email, u.user_icq, u.user_aim, u.user_yim, u.user_regdate, u.user_msnm, u.user_viewemail, u.user_rank, u.user_sig, u.user_sig_bbcode_uid, u.user_avatar, u.user_avatar_type, u.user_allowavatar, u.user_allowsmile, u.user_allow_viewonline, u.user_session_time, p.*,  pt.post_text, pt.post_subject, pt.bbcode_uid 
把 u.user_money 加到 SELECT 裡面, 接著找到這段\r

代碼: 選擇全部

	$poster_joined = ( $postrow[$i]['user_id'] != ANONYMOUS ) ? $lang['Joined'] . ": " . create_date($lang['DATE_FORMAT'], $postrow[$i]['user_regdate'], $board_config['board_timezone']) : "";
在下面加入\r

代碼: 選擇全部

	$poster_money = ( $postrow[$i]['user_id'] != ANONYMOUS ) ? ("虛擬貨幣: " . $postrow[$i]['user_money']) : ""; // Virtual_Money_MOD by OOHOO
再來找這段\r

代碼: 選擇全部

		'POSTER_AVATAR' => $poster_avatar,
在下面加入\r

代碼: 選擇全部

		"POSTER_MONEY" => $poster_money, // Virtual_Money_MOD by OOHOO
viewtopic.php 的修改完成.

第三步:
修改 /templates/subSilver/viewtopic_body.tpl, 找到\r

代碼: 選擇全部

	  {postrow.POSTER_FROM}<br /> 
在下面加入\r

代碼: 選擇全部

	  {postrow.POSTER_MONEY}<br />
位置要自己調整.
oO]-[Oo™ 寫:繼續

接下來修改 posting.php, 找到這陀

代碼: 選擇全部

					if( $mode == "newtopic" )
					{
						$sql .= ", forum_topics = forum_topics + 1";
					}

					$sql .= " WHERE forum_id = $forum_id";
					
					if( $db->sql_query($sql) )
					{
						$sql = "UPDATE " . USERS_TABLE . "
							SET user_posts = user_posts + 1
							WHERE user_id = " . $userdata['user_id'];
替換為\r

代碼: 選擇全部

					if( $mode == "newtopic" )
					{
						$sql .= ", forum_topics = forum_topics + 1";
						
						// Virtual_Money_MOD										
						$reward_sql =  ", user_money = user_money + 50"; // 發表主題加 50
					}
					
					// Virtual_Money_MOD
					if( $mode == "reply" )
					{					
						$reward_sql =  ", user_money = user_money + 20";  // 回覆主題加 20					
					}

					$sql .= " WHERE forum_id = $forum_id";
					
					if( $db->sql_query($sql) )
					{
						// $reward_sql is for money_reward
						$sql = "UPDATE " . USERS_TABLE . "
							SET user_posts = user_posts + 1 $reward_sql
							WHERE user_id = " . $userdata['user_id'];
搞定
御津闇慈 寫:
KCTONY 寫:這部分我知道了 比較有問題的是\r

"原有的會員 要怎麼把他們地貨幣加上去?"

代碼: 選擇全部

update phpbb_users set user_money = user_money + 10000
後面低數字自己改
河風 寫:SQL指令(給每個人加錢):

代碼: 選擇全部

update phpbb_users set user_money = user_money + 1000;
(給 ID 1 的會員加錢)

代碼: 選擇全部

update phpbb_users set user_money = user_money + 1000 WHERE user_id =1
+ 關於 phpBB 使用問題請在版面發問,私人訊息提供其他不相干或是隱私的事情聯絡之用。

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

TanisELF 寫:今天試著幫PHPBB2 Prot to Nuke5.5 v2.0.4安裝虛擬貨幣,結果發現了二個比較主要的問題,會導致虛擬貨幣值不會變化以及profile無法顯示虛擬貨幣欄位喔:

竹貓虛擬貨幣版本:v2.0.1

1.posting.php部分:導致虛擬貨幣值不會變化,也就是沒有更新到資料庫\r

首先看看這部分:
[php]
<?php
// Virtual_Money_MOD added $reward_sql
submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
?>
[/php]

這是v2.0.1的posting.php標記要修改的部分,但並沒有做任何修改,與原先PHPBB2版本是一樣的。

實際上應該標記修改的是這個地方:

找到:
[php]
<?php
update_post_stats($mode, $post_data, $forum_id, $topic_id, $post_id, $user_id);
?>
[/php]

在最後加上 $reward_sql變數:
[php]
<?php
update_post_stats($mode, $post_data, $forum_id, $topic_id, $post_id, $user_id, $reward_sql);
?>
[/php]

存檔ok~其餘標記都正確,只差修改這個地方,虛擬貨幣就會開始在資料庫中運作了。

2.profile部分:
缺少
\includes\usercp_viewprofile.php
以及
\templates\subSilver\profile_view_body.tpl
這二個檔案,也就是說還需要修改這二個檔案,才能如此在會員個人資料裡面看到虛擬貨幣欄位顯示~

修改方法:

開啟usercp_viewprofile.php,找到\r
[php]
<?php
'AVATAR_IMG' => $avatar_img,
?>
[/php]

在底下加入\r
[php]
<?php
'USER_MONEY' => $profiledata['user_money'], // Virtual_Money_MOD
'L_USER_MONEY' => $lang['Virtual_Money'], // Virtual_Money_MOD
?>
[/php]

存檔ok~

接下來開啟profile_view_body.tpl,找到\r

代碼: 選擇全部

<tr> 
<td valign="top" align="right" nowrap><span class="gen">{L_TOTAL_POSTS}: </span></td>
<td valign="top"><b><span class="gen">{POSTS}</span></b><br /><span class="genmed">[{POST_PERCENT_STATS} / {POST_DAY_STATS}]</span> <br /><span class="genmed"><a href="{U_SEARCH_USER}" class="genmed">{L_SEARCH_USER_POSTS}</a></span></td>
</tr>
在底下加上虛擬貨幣的表格欄位:

代碼: 選擇全部

<tr><!-- Virtual_Money_MOD -->
<td valign="middle" align="right" nowrap><span class="gen">{L_USER_MONEY}: </span></td>
<td><span class="gen"><b>{USER_MONEY}</b></span></td>
</tr>
這樣一來,就能夠在個人資訊裡面看到虛擬貨幣了~當然如果你懂HTML,這部分其實可以按照自己的意思去修改,不一定要照上面的~

後記
之前自己修改PHPBB2.0 Gold的時候是參考之前竹貓釋出的中文強化版,所以並沒有遇上這二個問題,不過當時實在懂的不多,只靠著一股熱血就一直改下去了,結果並沒有製作修改筆記^^||

所以想說直接上竹貓,照著這篇討論來安裝應該能更快上手,結果是改好了,可是雷克斯幣不會變化QQ,這才找到這二個問題。確認OK之後就趕快上竹貓來POST心得~希望能幫助更多有需要的朋友^^

給OOHOO大大:
在下已經完整測試過了,只要再修正上面所說的二個部分,這個虛擬貨幣MOD就完全OK了。有需要的人只要按照各檔案內標記的地方進行修改或者新增,就可以正確的把虛擬貨幣系統安裝進去PHPBB2 2.0,甚至BB2Nuke也能正常運作喔:)
+ 關於 phpBB 使用問題請在版面發問,私人訊息提供其他不相干或是隱私的事情聯絡之用。

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

蝦米尚青 寫:這個問題我也搞了很久,後來在竹貓找到一篇文章,原來在安裝虛擬貨幣之後,當有人註冊完畢時,會收到一封啟動帳號信函,而按連結開啟之後卻會出現會員名稱不存在的情形,也就是無法開啟帳號,這時就變成無法使用基本組態裡的會員自行開啟帳號與系統管理員開啟帳號了,以下就是解決此問題的方法.
不過不曉得你有迷有安裝虛擬貨幣\r
如果有的話應該就是這裡出錯吧\r

解決方法:
打開 includes\usercp_register.php

尋找代碼:

代碼: 選擇全部

'U_ACTIVATE' => $server_url . '?mode=activate&act_key=' . $user_actkey) 
取代代碼:

代碼: 選擇全部

'U_ACTIVATE' => $server_url . '?mode=activate&u=' . $user_id . '&act_key=' . $user_actkey) 
一共有三個地方大約是在 446, 594, 612行

另外在 569 行的地方
代碼:

代碼: 選擇全部

'U_ACTIVATE' => $server_url . '?mode=activate&act_key=' . $user_actkey, 

將之置換為

代碼:

代碼: 選擇全部

'U_ACTIVATE' => $server_url . '?mode=activate&u=' . $user_id . '&act_key=' . $user_actkey, 
就能解決 "很抱歉! 這個會員名稱並不存在" 這個問題
+ 關於 phpBB 使用問題請在版面發問,私人訊息提供其他不相干或是隱私的事情聯絡之用。

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

請注意在取代程式碼時不要覆蓋其他外掛

posting.php 虛擬貨幣修改法,只在 2.0.4 上測試過,使用前請備份\r

打開 posting.php

尋找\r

代碼: 選擇全部

$refresh = $preview || $poll_add || $poll_edit || $poll_delete;
之後加上

代碼: 選擇全部

// Virtual_Money_MOD
$no_reword_type = array("[問題]", "[測試]", "[閒聊]", "[報到]");
尋找\r

代碼: 選擇全部

		$sql = "SELECT f.*, t.topic_status, t.topic_title

取代為\r

代碼: 選擇全部

		// Virtual_Money_MOD added ( $mode == "reply" ? ", t.topic_title" : "")
		$sql = "SELECT f.*, t.topic_status " . ( $mode == "reply" ? ", t.topic_title" : "") . "
尋找\r

代碼: 選擇全部

		$sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id" . $select_sql . "

取代為\r

代碼: 選擇全部

		// Virtual_Money_MOD added ( $mode == "delete" ? ", t.topic_title" : "")
		$sql = "SELECT f.*, t.topic_id, t.topic_status, t.topic_type, t.topic_first_post_id, t.topic_last_post_id, t.topic_vote, p.post_id, p.poster_id" . $select_sql . ( $mode == "delete" ? ", t.topic_title" : "") . "
尋找\r

代碼: 選擇全部

$is_auth = auth(AUTH_ALL, $forum_id, $userdata, $post_info);
之後加上

代碼: 選擇全部

	// Virtual_Money_MOD
	if( $mode == "reply" || $mode == "delete" )
	{
		$topic_title_type = substr($post_info['topic_title'], 0, 6);
	}
尋找\r

代碼: 選擇全部

	$return_message = '';
	$return_meta = '';
之後加上

代碼: 選擇全部

	$reward_sql =  ""; // Virtual_Money_MOD
尋找\r

代碼: 選擇全部

		case 'newtopic':
		case 'reply':
取代為\r

代碼: 選擇全部

		case 'newtopic':
		// Virtual_Money_MOD
			$post_subject_type = substr($subject, 0, 6);
			if( strpos($subject, "[") === false ) // Punishment
			{
				$reward_sql =  ", user_money = user_money - 20";
			}
			else if( !in_array($post_subject_type, $no_reword_type) ) // Such subject titles earn nothing
			{
				$reward_sql =  ", user_money = user_money + 50";
			}
		case 'reply':
		// Virtual_Money_MOD
			if( $mode == "reply" && !in_array($topic_title_type, $no_reword_type) )
			{
				$reward_sql =  ", user_money = user_money + 20";
			}
尋找\r

代碼: 選擇全部

				submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
取代為\r

代碼: 選擇全部

				// Virtual_Money_MOD added $reward_sql
				submit_post($mode, $post_data, $return_message, $return_meta, $forum_id, $topic_id, $post_id, $poll_id, $topic_type, $bbcode_on, $html_on, $smilies_on, $attach_sig, $bbcode_uid, str_replace("\'", "''", $username), str_replace("\'", "''", $subject), str_replace("\'", "''", $message), str_replace("\'", "''", $poll_title), $poll_options, $poll_length);
尋找\r

代碼: 選擇全部

		case 'delete':
取代為\r

代碼: 選擇全部

		case 'delete':
			// Virtual_Money_MOD
			if( !in_array($topic_title_type, $no_reword_type) )
			{
				// Subtract money
				$reward_sql = ", user_money = user_money - " . ( $post_data['first_post'] ? 50 : 20 );
			}
尋找\r

代碼: 選擇全部

			update_post_stats($mode, $post_data, $forum_id, $topic_id, $post_id, $user_id);
取代為\r

代碼: 選擇全部

			update_post_stats($mode, $post_data, $forum_id, $topic_id, $post_id, $user_id, $reward_sql);
~Mac
+ 關於 phpBB 使用問題請在版面發問,私人訊息提供其他不相干或是隱私的事情聯絡之用。

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

ETERNAL 寫:前言:
由於oO]-[Oo™所發表的虛擬貨幣不能用在2.0.4版
而正好我是使用2.0.4版本,所以我花了些時間修改\r
有問題的地方還請不吝指教..

首先:
------------------------------------------------------------------------
請按照oO]-[Oo™的說明安裝到viewtopic.php為止

http://phpbb-tw.net/phpbb/viewtopic.php ... %B3f%B9%F4

-----------------------------------------------------------------------

然後重點來了
請跳過posting.php的部分
按照以下的方式安裝

打開/include/functions_post.php

尋找

代碼: 選擇全部

//
// Update post stats and details
//
function update_post_stats(&$mode, &$post_data, &$forum_id, &$topic_id, &$post_id, &$user_id)
{
	global $db;
	$sign = ($mode == 'delete') ? '- 1' : '+ 1';
後面加上

代碼: 選擇全部

	$money ='+ 0';
	if($mode == 'newtopic')
	{
		$money ='+ 30'; // newtopic get money value
	}elseif($mode == 'reply')
	{
		$money ='+ 20'; // reply get money value
	}

尋找\r

代碼: 選擇全部

			if ($post_data['first_post'])
			{
				$forum_update_sql .= ', forum_topics = forum_topics - 1';
			}
			else
			{
				$topic_update_sql .= 'topic_replies = topic_replies - 1';
				$sql = "SELECT MAX(post_id) AS last_post_id
					FROM " . POSTS_TABLE . " 
					WHERE topic_id = $topic_id";
替換成

代碼: 選擇全部

			if ($post_data['first_post'])
			{
				$forum_update_sql .= ', forum_topics = forum_topics - 1';
				$money ='- 30';  //delete 主題
			}
			else
			{
				$topic_update_sql .= 'topic_replies = topic_replies - 1';
				$money ='- 20'; //delete 回覆
				$sql = "SELECT MAX(post_id) AS last_post_id
					FROM " . POSTS_TABLE . " 
					WHERE topic_id = $topic_id";

尋找\r

代碼: 選擇全部

		$sql = "UPDATE " . USERS_TABLE . "
			SET user_posts = user_posts $sign
			WHERE user_id = $user_id";

替換成

代碼: 選擇全部


		$sql = "UPDATE " . USERS_TABLE . "
			SET user_posts = user_posts $sign , user_money = user_money $money
			WHERE user_id = $user_id";


修改完成..
+ 關於 phpBB 使用問題請在版面發問,私人訊息提供其他不相干或是隱私的事情聯絡之用。

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
主題已鎖定

回到「非官方認證外掛」