[討論]HP/MP/EXP Mod (Version 2)

phpBB 2 MOD Support
無論是官方或非官方認證之外掛,安裝與使用問題討論。
(發表文章請按照公告格式發表,違者砍文)

版主: 版主管理群

天霜
竹貓忠實會員
竹貓忠實會員
文章: 882
註冊時間: 2003-04-15 19:40
來自: 星之鄉學園
聯繫:

[討論]HP/MP/EXP Mod (Version 2)

文章 天霜 »

HP/MP/EXP Mod (Version 2)
這個外掛模組是依據會員的文章數及加入時間的長短來
變更職業名稱\r

但是有沒有方法先依照\r
Gender(性別外掛模組)分為兩種職業名稱\r

就是如下這樣\r

會員->選擇性別-|
         |
         |
 |--男生--- ----女生--|
 |                |
(男性向職業名稱)        (女性向職業名稱)
法師級              法師級
法術和攻擊均衡的等級       法術和攻擊均衡的等級
士兵級              士兵級
戰士級              戰士級

之前有參考在分站有人發表依據性別有不同閃光顏色的方法
http://plus.phpbb-tw.net/plus/viewtopic ... %A9%CA%A7O

代碼: 選擇全部

else if($postrow[$i]['user_gender'] == 1) // male 
{ 
$glowing_color = '#0099ff'; 
} 
else if($postrow[$i]['user_gender'] == 2) // female 
{ 
$glowing_color = '#ff33cc'; 
}
所以大約知道要使用的性別代碼是那些

但就不知道要加在HP/MP/EXP Mod (Version 2)那裡了
希望懂程式碼的各位前輩能幫在下這個不情之求 >_<
不回答來自 私人訊息, 電子郵件, 及時通 的相關 phpBB 問題
除非是個人疏失所造成的問題

這世界還有拼命守護的價值嗎...
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

level_mod.php 下面\r
尋找\r

代碼: 選擇全部

if ($level_skillratio < 20 ) {
前面加入\r

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 1) // male 
{
尋找\r

代碼: 選擇全部

/* END HP/MP/EXP MOD */
前面加入\r

代碼: 選擇全部

}
這樣就有男性的等級,只要把以下

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 1) // male 
{
一直到最後面的 "}" 複製一份貼在 "/* END HP/MP/EXP MOD */" 前
把 'user_gender' 換成 2
裡面的 classname 換成女性的等級名稱即可\r

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

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
天霜
竹貓忠實會員
竹貓忠實會員
文章: 882
註冊時間: 2003-04-15 19:40
來自: 星之鄉學園
聯繫:

文章 天霜 »

謝謝Mac的幫忙

在文章頁面是成功了

不過出了一些問題

在會員公開資料中的職業會變成空白(男/女/沒有選三種都顯示空白)

圖檔

對了 性別保持沒有選擇的話\r
在文章頁面的職業也會變成空白
不回答來自 私人訊息, 電子郵件, 及時通 的相關 phpBB 問題
除非是個人疏失所造成的問題

這世界還有拼命守護的價值嗎...
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

那就要在女性職業後面在加一個

代碼: 選擇全部

else  {
.....
.....
}
個人資料裡面會沒有顯示職業,應該是因為 profile.php 裡面,性別不是這樣子叫出來的

代碼: 選擇全部

$postrow[$i]['user_gender']
因為我沒裝 gener mod,你得研究一下個人資料中的性別是怎麼定義的

之後,你就可以寫成這樣:

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 1 || 個人資料的定義 == 1) // male

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 2 || 個人資料的定義 == 2) // male

代碼: 選擇全部

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

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
天霜
竹貓忠實會員
竹貓忠實會員
文章: 882
註冊時間: 2003-04-15 19:40
來自: 星之鄉學園
聯繫:

文章 天霜 »

Mac 寫:那就要在女性職業後面在加一個

代碼: 選擇全部

else  {
.....
.....
}
~Mac
這部份我有點不解\r
可否說詳細一點
Mac 寫:

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 1 || 個人資料的定義 == 1) // male

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 2 || 個人資料的定義 == 2) // male

代碼: 選擇全部

else {...}
~Mac
嗯 我找到了定義值\r

代碼: 選擇全部

$profiledata['user_gender']
但我改如下

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 1 || $profiledata['user_gender'] == 1) // male


在會員列表是顯示正常 但在文章頁面只要有女性發表文章 那一頁的男性會員職業都會顯示成女性\r

我改的程式碼如下:

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 1 || $profiledata['user_gender'] == 1) // male 
{
   if ($level_skillratio < 20) { 
   // high magic, low combat 

      if ($level_level < 4) { 
         $level_classname = "見習生";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "術士"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "魔術士"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "術師"; 
      } else { 
         $level_classname = "幻術師"; 
      } 
        
   } elseif ($level_skillratio >= 20 && $level_skillratio < 40) { 
   // balanced mix 
    
      if ($level_level < 4) { 
         $level_classname = "服侍";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "巫師"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "魔法師"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "執事"; 
      } else { 
         $level_classname = "聖職者"; 
      } 

   } elseif ($level_skillratio >=40 && $level_skillratio < 60) { 
   // high combat (big poster), low magic 

      if ($level_level < 4) { 
         $level_classname = "佣兵";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "劍士"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "百人隊隊長"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "部屬"; 
      } else { 
         $level_classname = "城主"; 
      } 
          
          
   } else { 
   // big time combat, no magic 

      if ($level_level < 4) { 
         $level_classname = "護衛";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "戰士"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "勇者"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "騎士"; 
      } else { 
         $level_classname = "王者"; 
      } 
   } 
}
/* END HP/MP/EXP MOD */ 

if($postrow[$i]['user_gender'] == 2 || $profiledata['user_gender'] == 2) // female 
{
   if ($level_skillratio < 20) { 
   // high magic, low combat 

      if ($level_level < 4) { 
         $level_classname = "女見習生";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "女術士"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "女魔術士"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "女術師"; 
      } else { 
         $level_classname = "女幻術師"; 
      } 
        
   } elseif ($level_skillratio >= 20 && $level_skillratio < 40) { 
   // balanced mix 
    
      if ($level_level < 4) { 
         $level_classname = "女服侍";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "女巫師"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "女魔法師"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "女執事"; 
      } else { 
         $level_classname = "聖女"; 
      } 

   } elseif ($level_skillratio >=40 && $level_skillratio < 60) { 
   // high combat (big poster), low magic 

      if ($level_level < 4) { 
         $level_classname = "女佣兵";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "女劍士"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "百人隊隊長"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "部屬"; 
      } else { 
         $level_classname = "城主"; 
      } 
          
          
   } else { 
   // big time combat, no magic 

      if ($level_level < 4) { 
         $level_classname = "女護衛";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "女戰士"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "勇者"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "女騎士"; 
      } else { 
         $level_classname = "王者"; 
      } 
   } 
}
/* END HP/MP/EXP MOD */ 

性別中有關定義值的程式碼\r
includes/usercp_viewprofile.php

代碼: 選擇全部

// Start add - Gender MOD
if ( !empty($profiledata['user_gender'])) 
{ 
           switch ($profiledata['user_gender']) 
           { 
                      case 1: $gender=$lang['Male'];break; 
                      case 2: $gender=$lang['Female'];break; 
                      default:$gender=$lang['No_gender_specify']; 
           } 
} else $gender=$lang['No_gender_specify']; 
// End add - Gender MOD

viewtopic.php

代碼: 選擇全部

// Start add - Gender MOD
switch ($postrow[$i]['user_gender']) 
{ 
	case 1 : $gender_image = $lang['Gender'].": <img src="" . $images['icon_minigender_male'] . "" alt="" . $lang['Gender'].  ":".$lang['Male']."" title="" . $lang['Gender'] . ":".$lang['Male']. "" border="0" />"; break; 
	case 2 : $gender_image = $lang['Gender'].": <img src="" . $images['icon_minigender_female'] . "" alt="" . $lang['Gender']. ":".$lang['Female']. "" title="" . $lang['Gender'] . ":".$lang['Female']. "" border="0" />"; break; 
	default : $gender_image=""; 
}
// End add - Gender MOD
不回答來自 私人訊息, 電子郵件, 及時通 的相關 phpBB 問題
除非是個人疏失所造成的問題

這世界還有拼命守護的價值嗎...
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

像這樣子:

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 1 || $profiledata['user_gender'] == 1) // male 
{
      .....
      .....
      .....
}

if($postrow[$i]['user_gender'] == 2 || $profiledata['user_gender'] == 2) // female 
{ 
      .....
      .....
      .....
}

else // 沒有填入性別時
{ 
      .....
      .....
      .....
}
/* END HP/MP/EXP MOD */ 
~Mac
+ 關於 phpBB 使用問題請在版面發問,私人訊息提供其他不相干或是隱私的事情聯絡之用。

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
天霜
竹貓忠實會員
竹貓忠實會員
文章: 882
註冊時間: 2003-04-15 19:40
來自: 星之鄉學園
聯繫:

文章 天霜 »

代碼: 選擇全部

else // 沒有填入性別時 
{ 
   if ($level_skillratio < 20) { 
   // high magic, low combat 

      if ($level_level < 4) { 
         $level_classname = "Apprentice";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "Magician"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "Master Mage"; 
      } else if ($level_level >=11 && $level_level < 15) { 
\n         $level_classname = "Grand Mage"; 
      } else { 
         $level_classname = "Archmage"; 
      } 
        
   } elseif ($level_skillratio >= 20 && $level_skillratio < 40) { 
   // balanced mix 
    
      if ($level_level < 4) { 
         $level_classname = "Initiate";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "Mystic"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "Warlock"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "Deacon"; 
      } else { 
         $level_classname = "Grand Deacon"; 
      } 

   } elseif ($level_skillratio >=40 && $level_skillratio < 60) { 
   // high combat (big poster), low magic 

      if ($level_level < 4) { 
         $level_classname = "Mercenary";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "Gladiator"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "Centurion"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "Myrmidion"; 
      } else { 
         $level_classname = "Warlord"; 
      } 
          
          
   } else { 
   // big time combat, no magic 

      if ($level_level < 4) { 
         $level_classname = "Squire";        
      } else if ($level_level >=4 && $level_level < 7) { 
         $level_classname = "Soldier"; 
      } else if ($level_level >=7 && $level_level < 11) { 
         $level_classname = "Warrior"; 
      } else if ($level_level >=11 && $level_level < 15) { 
         $level_classname = "Knight"; 
      } else { \r
         $level_classname = "Champion"; 
      } 
   } 
}
/* END HP/MP/EXP MOD */
照這樣改 會使男女職業失效 變成沒有填入性別的職業
難道我改錯了嗎?
不回答來自 私人訊息, 電子郵件, 及時通 的相關 phpBB 問題
除非是個人疏失所造成的問題

這世界還有拼命守護的價值嗎...
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

不然試試看:

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 1 || $profiledata['user_gender'] == 1) // male 
{ 
      ..... 
      ..... 
      ..... 
} 
elseif($postrow[$i]['user_gender'] == 2 || $profiledata['user_gender'] == 2) // female 
{ 
      ..... 
      ..... 
      ..... 
} 
elseif($postrow[$i]['user_gender'] == 0 || $profiledata['user_gender'] == 0) // 沒有填入性別時 
{ 
      ..... 
      ..... 
      ..... 
} 
/* END HP/MP/EXP MOD */ 
~Mac
+ 關於 phpBB 使用問題請在版面發問,私人訊息提供其他不相干或是隱私的事情聯絡之用。

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
天霜
竹貓忠實會員
竹貓忠實會員
文章: 882
註冊時間: 2003-04-15 19:40
來自: 星之鄉學園
聯繫:

文章 天霜 »

謝謝Mac的幫忙

男性|女性|沒有選擇 皆顯示正常
但是只要加上要顯示個人資料的定義碼 就會亂掉
(有女性發表主題的文章頁面的男姓|沒有選擇 都會變成女性職業)

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 2 || $profiledata['user_gender'] == 2) // female

不加的話 在文章的資料會顯示正常
但是個人資料就會全部變成沒有選擇的職業

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 2) // female

現在問題只出在讓個人資料顯示正常 而不影響到文章資料的部份
我也試過用 && 取代 || 看看

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 2 && $profiledata['user_gender'] == 2) // female
我對php碼不了解 但還是試了其他的排法都失效

代碼: 選擇全部

if($postrow[$i]['user_gender']  && $profiledata['user_gender'] == 2) // female

代碼: 選擇全部

if($postrow[$i]['user_gender'] || $profiledata['user_gender'] == 2) // female
不回答來自 私人訊息, 電子郵件, 及時通 的相關 phpBB 問題
除非是個人疏失所造成的問題

這世界還有拼命守護的價值嗎...
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

|| 是 OR 的意思, 而 && 則是 AND 的意思

代碼: 選擇全部

// Gender Add-On [0 No_gender_specify], [1 Male] or [2 Female]
if ($profileversion) { 
   $gender = $profiledata['user_gender'];
} else { 
   $gender = $postrow[$i]['user_gender'];
} 

if($gender == 1) // male 
{ 
      ..... 
      ..... 
      ..... 
} 
elseif($gender == 2) // female 
{ 
      ..... 
      ..... 
      ..... 
} 
elseif($gender == 0) // 沒有填入性別時 
{ 
      ..... 
      ..... 
      ..... 
} 
/* END HP/MP/EXP MOD */
~Mac
+ 關於 phpBB 使用問題請在版面發問,私人訊息提供其他不相干或是隱私的事情聯絡之用。

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
天霜
竹貓忠實會員
竹貓忠實會員
文章: 882
註冊時間: 2003-04-15 19:40
來自: 星之鄉學園
聯繫:

文章 天霜 »

終於成功了! 再一次謝謝Mac前輩的大力幫助
不回答來自 私人訊息, 電子郵件, 及時通 的相關 phpBB 問題
除非是個人疏失所造成的問題

這世界還有拼命守護的價值嗎...
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

恭喜 :D

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

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
Martinet
竹貓忠實會員
竹貓忠實會員
文章: 850
註冊時間: 2003-06-09 21:58
聯繫:

文章 Martinet »

回報一下^^"
我做到Mac老大說的下面這個地方..就全部ok..就沒有改成最後面的樣子^^"
只是....我最後一個 } 後面有多加一個 ;
因為我印象中 php 的 if else 最後一個 else 的括弧後面要加 ; ^^"

代碼: 選擇全部

if($postrow[$i]['user_gender'] == 1 || $profiledata['user_gender'] == 1) // male 
{ 
      ..... 
      ..... 
      ..... 
} 
elseif($postrow[$i]['user_gender'] == 2 || $profiledata['user_gender'] == 2) // female 
{ 
      ..... 
      ..... 
      ..... 
} 
elseif($postrow[$i]['user_gender'] == 0 || $profiledata['user_gender'] == 0) // 沒有填入性別時 
{ 
      ..... 
      ..... 
      ..... 
} 
/* END HP/MP/EXP MOD */ 
Mac
百戰天龍馬蓋先
百戰天龍馬蓋先
文章: 2590
註冊時間: 2003-02-02 02:28
來自: MacphpBBMOD
聯繫:

文章 Mac »

";" 並不是加在闊號後面的
而是加在指令後面\r
我想你多看 phpBB 本身的原始檔就會知道了

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

phpBB 官網 | 竹貓星球 | MacphpBBMOD | 我的服務
天霜
竹貓忠實會員
竹貓忠實會員
文章: 882
註冊時間: 2003-04-15 19:40
來自: 星之鄉學園
聯繫:

文章 天霜 »

目前在研究如何將職業名稱顯示於會員列表\r

但試了幾次 都失敗...

我是這樣改\r

memberlist.php
在\r

代碼: 選擇全部

'POSTS' => $posts,
之前加入\r

代碼: 選擇全部

/* BEGIN LEVEL MOD */ 
'HP' => $level_hp, 
'HP_WIDTH' => $level_hp_percent, 
'HP_EMPTY' => ( 100 - $level_hp_percent ), 
'MP' => $level_mp, 
'MP_WIDTH' => $level_mp_percent, 
'MP_EMPTY' => ( 100 - $level_mp_percent ), 
'EXP' => $level_exp, 
'EXP_WIDTH' => $level_exp_percent, 
'EXP_EMPTY' => ( 100 - $level_exp_percent ), 
'LEVEL' => $level_level, 
'LEVEL_CLASSNAME' => $level_classname, 
'LEVEL_SKILLRATIO' => $level_skillratio, 
/* END LEVEL MOD */
在\r

代碼: 選擇全部

$search = '<a href="' . $temp_url . '">' . $lang['Search_user_posts'] . '</a>';
之後加入\r

代碼: 選擇全部

include($phpbb_root_path . 'includes/level_mod.'.$phpEx); //added for Level Mod (Mac)

memberlist_body.tpl

代碼: 選擇全部

{memberrow.USERNAME}</a>
後加入\r

代碼: 選擇全部

<br>{memberrow.LEVEL_CLASSNAME}
結果是全部顯示中性的初級職業
我是那裡改錯了...
不回答來自 私人訊息, 電子郵件, 及時通 的相關 phpBB 問題
除非是個人疏失所造成的問題

這世界還有拼命守護的價值嗎...
主題已鎖定

回到「外掛問題討論」