[問題]銀行利息計算的BUG

BUG回報,BUG修改教學

版主: 涅魂, 簫哥

plays
 
文章: 14
註冊時間: 2006-10-17 5:20 am

[問題]銀行利息計算的BUG

文章plays » 2006-12-20 1:38 am

這個問題是我網站的會員所發現
下面是說明:

如果創2個角色,然後時間都不一樣喔!
當角色1的銀行計息完後,再將錢全部移到角色2的銀行如果還有角色3...4...5就一直下去吧!
這樣一天就能計2次息,等於是角色1以本金計息,角色2以角色1的本金+利息.....
以如此複利計息的方式1整天不用練功也能賺不少說
例如:
A有1000000元放在銀行,每天1%計息後,A就有1010000元,再把1010000元轉給B
B在計息後就有1020100元,再將這筆錢轉給C
C在計息後就有1030301元,再將這筆錢轉給D
D在計息後就有1040604元,......................
.
.
.
.
如此一來,真的不用練功也能賺錢,不過有個先決條件,就是每個角色都要超過15級
不然就不能用這個方法囉!
而賺多跟賺少,除了跟存款的多寡有關外,也跟角色及E-mail帳號的多少有直接的關係喔!


不知道是否能將銀行計息的時間統一?
如果方便教導的話,能否教一下藥怎樣修改?@@

謝謝^^



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

文章齋月 » 2006-12-20 1:35 pm

哇哇 @@
我也有裝利息系統... 都沒注意到有這個偷機方式
(搞不好是會員故意不說= =)

這下子可得改掉了阿@@

感覺上是 將每個人的資料庫銀行時間設成一樣 就可以解決了
感覺上.....

但是程式上要怎麼用就不知道了 QQ



plays
 
文章: 14
註冊時間: 2006-10-17 5:20 am

文章plays » 2006-12-25 1:39 am

唉~還是沒有人有時間幫忙@@



頭像
reload0402
 
文章: 300
註冊時間: 2006-01-18 11:35 pm
來自: ISX_BMX

文章reload0402 » 2006-12-25 7:03 pm

的確蠻需重視的問題@@
把記息條件 取自角色p_bank_time的地方改掉 不知道可不可以
研究研究一下好了@@


...忙碌的開始...
╔===============╗
說出來會被嘲笑的夢想才有實踐的價值
就算跌倒了 姿勢也可以變的很瀟灑
╚===============╝
~傾斜天平~


ETERNAL
 
文章: 2937
註冊時間: 2003-12-03 11:08 pm
性別: 男生

文章ETERNAL » 2006-12-28 10:52 am

開一個銀行的table,把銀行計息時間放在這table裡面
所有角色共用這個時間


水色論壇 http://www.et99.net
簡恩峻分享

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

文章齋月 » 2007-03-01 8:47 am

嗯嗯 大致上了解

但是修改的時候 變成沒辦法每個人都有利息 =_=

怎麼會這樣 暈倒...



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

文章齋月 » 2007-03-01 12:31 pm

呵呵 結果就放棄了 XDD

改成 轉帳時 錢是轉到 身上金錢去

然後 存錢時 時間重新計算

這樣也可以解決 ^_^




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

文章涅魂 » 2007-03-01 7:41 pm

ET大說的方法其實很簡單,這裡列出概略的寫法^^

首先建立一個table,假設名稱為wog_config,欄位有c_name(varchar(20)),c_value(unsigned int(10))

然後設定一個新的數據c_name=bank_interest_time,c_value=下次計息時間

然後在wog_arry加上計息時間,假設為7天計息一次,以及利息利率
代碼: 選擇全部
$wog_arry['bank_interest_time']=604800;
$wog_arry['bank_interest_rate']=0.1;


接著在class/wog_act_store.php中設定wog_arry為Global變數後取得wog_config的bank_interest_time的資料,再進行時間的判斷

例子如下(沒運作過不知道有沒有錯誤^^")
代碼: 選擇全部
$config=$DB_site->query_first("Select c_name,c_value From wog_config Where c_name='bank_interest_time'");
if($config['c_value'] < time())
{
$DB_site->query("Update wog_player Set p_money=p_money+p_money*".$wog_arry['bank_interest_rate']);
$DB_site->query("Update wog_config Set c_value=".(time()+$wog_arry['bank_interest_time'])." Where c_name='".$config['c_name']."'");
}


另外,這個例子也可以再補強一些不足的部分,像是增加利息時不會只單純地加一次,而會依據經歷的時間而補足沒有加上的利息

舉例來說,一個WOG有3個禮拜沒人碰銀行,那麼之後若有人執行計算利率的程式的話程式只會加一次利息而不會家三次

至於這個部分就請先想想看該如何做吧 :wink:


圖檔

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

文章齋月 » 2007-03-02 1:12 pm

嗯嗯 我之前也是大概照這種方式去寫

結果發現 只要有人計過息後 (下次計息時間)這個 欄位 就會更新

導致 第二個人以後的 領不到利息...

因為 if($config['c_value'] < time()) 永遠無法成立 一口一||

===================================================

還是說是我自己寫法問題 @_@




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

文章涅魂 » 2007-03-02 10:10 pm

理論上來看應該是不會發生這種情況呢,因為利息是同是幫所有人增加的(就是下面這個SQL)
代碼: 選擇全部
$DB_site->query("Update wog_player Set p_money=p_money+p_money*".$wog_arry['bank_interest_rate']);

SQL式中並沒有限定條件,所以會幫所有數據都計算利息,這是比較麻煩的部分,因為會造成某位玩家非常好運地執行到計息的部分,結果就延長程式顯示的時間...=.=

您可以測試看看,並把計息時間縮短成1分鐘或30秒看看:wink:


圖檔

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

文章齋月 » 2007-03-19 3:19 am

哈哈哈 剛剛又再看過一遍 終於了解 ^^|||

那這樣第一個點銀行的很衰耶 =.=

呵呵 先放下這問題 不管啦 XD




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

文章涅魂 » 2007-03-19 11:59 pm

要不然也可以採用分段更新的方法

在wog_config中再加入兩個設定 bank_interest_num,p_num

然後在執行計息的部分先計算目前玩家的總數後更新p_num,接著再取得bank_interest_num跟p_num

然後限制每次的計息人數,假設為50人吧,在計息的sql語法內加上limit的限制

計息完畢後辨認若bank_interest_num+50 < p_num則不更新bank_interest_time,並更新bank_interest_num把以統計完的數字更新上去,反之則設定bank_interest_num為0,並更新bank_interest_time

這樣應該就能達到分段更新的效果了,除非同一個人一直使用銀行,不然應該是不會感到比平常慢的情形^^


圖檔

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

文章齋月 » 2007-04-29 1:34 pm

這樣的話應該可以解決計息時間對吧 ^_^
代碼: 選擇全部
c_value=c_value+".$wog_arry['bank_interest_time']."


終於還是套用涅提出來的構想了 XD




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

文章涅魂 » 2007-04-29 7:58 pm

怎麼說得好像是被逼的呢~XD"


圖檔

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

文章齋月 » 2007-04-30 1:04 am

涅魂 寫:怎麼說得好像是被逼的呢~XD"


沒有阿 涅的構想比較好 不過之前太懶惰再改了 XDD
現在改成這樣 方便許多呢 :wink:

一天只能加一次評價 :face10:





回到 臭蟲BUG區

誰在線上

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