最後..................
把./includes/level_mod.php 全改了..............
代碼: 選擇全部
<?php
/***************************************************************************
* level_mod.php
* -------------------
* begin : Sunday, May 18, 2003
* copyright : Antony
* http://phpbb.com/phpBB/profile.php?mode=viewprofile&u=47740
*
* $Id: level_mod.php, v 1.0 2003/05/18 20:12:39 Antony Exp $
*
*
***************************************************************************/
/***************************************************************************
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
***************************************************************************/
if ( !defined('IN_PHPBB') )
{
die("Hacking attempt");
}
/* Begin HP/MP/EXP Mod
*
* Note: all new variables used created in this mod
* are prefixed with level_ to be sure of not overwriting
* other variables.
*
*/
/* Calculate Level
* A user's level is determined by their total number of posts.
* A nice mathmatical formula is used to translate their post count
* into an intager level.
*
* Note: A user with zero (0) posts is considered level 0, however
* making one (1) post, raises them to level 1.
*
*/
// Are we in profile or viewtopic?
$trash = $_SERVER['SCRIPT_NAME'];
$lpos = strrpos($trash,"/") + 1;
$rpos = strpos($trash, ".php");
$trash = substr($trash,$lpos,($rpos-$lpos));
if ($trash == 'profile') {
$profileversion = true;
} else {
$profileversion = false;
}
if ($profileversion) {
if($profiledata['user_posts'] < 1) {
$level_level = 0;
} else { \r
$level_level = floor( pow( log10( $profiledata['user_posts'] ), 3 ) ) + 1;
}
} else {
if($postrow[$i]['user_posts'] < 1) {
$level_level = 0;
} else {
$level_level = floor( pow( log10( $postrow[$i]['user_posts'] ), 3 ) ) + 1;
}
}
/* Determine Hit Points (HP)
*
* Hp is based on user activity.
* Max HP is based on the user's level, and will generally
* be the same for all users of the same level.
*
* A user's current HP is based on the user's posts per day.
* A higher post per day (ppd), the more HP they will have. A
* user with an average PPD (set below) will have 50% of their
* max HP. As a user goes over the average PPD, they will have
* more HP, but the gains will decrease as the user's PPD increases.
* This makes achieving 100% hp difficult, but not impossible.
*
* For users with under the average PPD, they will have HP equal
* to 1/2 the percentage their ppd is of the average.
* ie- a user with 2.5 ppd, and an average ppd of 5 will have
* 25% of their max HP. This is because 2.5 is 50% of 5, and 1/2
* of that, is 25%.
*
* Users who manage to post so far above the average that they have
* more HP than their max will recieve a bonus to their max HP.
*
* Note that users at level 0 will always have 0 / 0 hp.
*
*/
/*
* This value determines the 'average' posts per day.
* The admin may redefine this variable as he wishes.
* Higher values will generally decrease users' HP, and
* lower values will generally increase users' HP.
*
* Note: Do NOT set this value to zero (0).
* This -may- be set to a fractional value (eg, 5.1, 3.1415)
*
*/
$level_avg_ppd = 5;
/*
* this value sets how hard it is to achieve 100%
* hp. The higher you set it, the harder it is to
* get full hp.
*
* to judge how high to set it, a user must have
* posts per day equal to the $level_avg_ppd plus
* the number set below.
*
* This should NOT be zero.
*/
$level_bonus_redux = 30;
if (! $profileversion) {
/*
* We need to actually calculate the user's posts per day
* because unlike in the profile, it's not done for us.
*
*/
$level_user_ppd = ($postrow[$i]['user_posts'] / max(1, round( ( time() - $postrow[$i]['user_regdate'] ) / 86400 )));
}
if($level_level < 1)
{
$level_hp = "0 / 0";
$level_hp_percent = 0;
}
else
{
$level_max_hp = floor( (pow( $level_level, (1/4) ) ) * (pow( 10, pow( $level_level+2, (1/3) ) ) ) / (1.5) );
$testvar = $profileversion ? $posts_per_day : $level_user_ppd;
if($testvar >= $level_avg_ppd)
{
$level_hp_percent = floor( (.5 + (($testvar - $level_avg_ppd) / ($level_bonus_redux * 2)) ) * 100);
}
else
{
$level_hp_percent = floor( $testvar / ($level_avg_ppd / 50) );
}
if($level_hp_percent > 100)
{
//Give the user a bonus to max HP for greater than 100% hp.
$level_max_hp += floor( ($level_hp_percent - 100) * pi() );
$level_hp_percent = 100;
}
else
{
$level_hp_percent = max(0, $level_hp_percent);
}
$level_cur_hp = floor($level_max_hp * ($level_hp_percent / 100) );
//Be sure a user has no more than max, and no less than zero hp.
$level_cur_hp = max(0, $level_cur_hp);
$level_cur_hp = min($level_max_hp, $level_cur_hp);
$level_hp = $level_cur_hp . ' / ' . $level_max_hp;
}
/* Determine MP
*
* MP is calculated by how long the user has been around
* and how often they post.
*
* Max MP is based on level, and increases with level
* Each post a user makes costs them mp,
* and a user regenerates mp proportional to how
* many days they have been registered
*
*/
\n
//Number of days the user has been at the forums.
if ($profileversion) {
$level_user_days = max(1, round( ( time() - $profiledata['user_regdate'] ) / 86400 ));
} else {
$level_user_days = max(1, round( ( time() - $postrow[$i]['user_regdate'] ) / 86400 ));
}
/* The mp cost for one post.
* Raising this value will generally decrease the current
* mp for most posters.
* This may be set to a decimal value (eg, 2, 2.1, 3.141596)
* This should NOT be set to 0
*/
$level_post_mp_cost = 2.5;
/* This determines how much mp a user regenerates per day
* Raising this value will generally increase the current
* mp for most posters.
* This may be set to a decimal value (eg, 3, 3.5, 2.71828)
* This should NOT be set to 0
*/
$level_mp_regen_per_day = 20;
if($level_level < 1)
{
$level_mp = '0 / 0';
$level_mp_percent = 0;
}
else
{
$level_max_mp = floor( (pow( $level_level, (1/4) ) ) * (pow( 10, pow( $level_level+2, (1/3) ) ) ) / (pi()) );
if ($profileversion) {
$level_mp_cost = $profiledata['user_posts'] * $level_post_mp_cost;
} else {
$level_mp_cost = $postrow[$i]['user_posts'] * $level_post_mp_cost;
}
$level_mp_regen = max(1, $level_user_days * $level_mp_regen_per_day);
$level_cur_mp = floor($level_max_mp - $level_mp_cost + $level_mp_regen);
$level_cur_mp = max(0, $level_cur_mp);
$level_cur_mp = min($level_max_mp, $level_cur_mp);
$level_mp = $level_cur_mp . ' / ' . $level_max_mp;
$level_mp_percent = floor($level_cur_mp / $level_max_mp * 100 );
}
/* Determine EXP percentage
*
* Experience is determined by how far the user is away
* from the next level. This is expressed as a percentage.
*
* Note, a user of level 0 has 100% experience. Making one post
* will put them at level 1. Also, a user that is shown to have 100%
* experience, will go up a level on their next post.
*
*/
if($level_level == 0)
{
$level_exp = "0 / 0";
$level_exp_percent = 100;
}
else
{
@$level_posts_for_next = floor( pow( 10, pow( $level_level, (1/3) ) ) );
@$level_posts_for_this = max(1, floor( pow( 10, pow( ($level_level - 1), (1/3) ) ) ) );
if ($profileversion) {
$level_exp = ($profiledata['user_posts'] - $level_posts_for_this) . " / " . ($level_posts_for_next - $level_posts_for_this);
$level_exp_percent = floor( ( ($profiledata['user_posts'] - $level_posts_for_this) / max( 1, ($level_posts_for_next - $level_posts_for_this ) ) ) * 100);
} else {
$level_exp = ($postrow[$i]['user_posts'] - $level_posts_for_this) . " / " . ($level_posts_for_next - $level_posts_for_this);
$level_exp_percent = floor( ( ($postrow[$i]['user_posts'] - $level_posts_for_this) / max( 1, ($level_posts_for_next - $level_posts_for_this ) ) ) * 100);
}
}
// Determine ratio of Hit Points to Magic Points
$level_skillratio = '0 / 0';
if ($level_max_mp > 0) {
$level_skillratio = floor(($level_hp / $level_max_mp) * 100);
} else {
$level_skillratio = 100;
}
#------------------------------------------------------------------------------------------#
# Change $element & level_classimg for each level to suit your RPG classes #
# 請修改以下的 $element 和 level_classimg 來配合你的 RPG 職業的每一個等級 #
# #
# Example: #
# $level_classimg = "templates/subSilver/images/level_mod/classes/Apprentice.gif"; #
# $element = $Water; // Water element #
# #
# $level_classimg = "templates/subSilver/images/level_mod/classes/魔法師.gif"; #
# $element = $Water.' '.$Wind; // Water + Wind #
# #
# $level_classimg = "templates/subSilver/images/level_mod/classes/Master Mage.gif"; #
# $element = $Water.' '.$Wind.' '.$Earth; // Water + Wind + Earth #
#------------------------------------------------------------------------------------------#
// 7 Element Images for you to mix & match (七種魔法球供你使用)
$Dark = '<img src="' . $images[Dark] . '" alt="闍屬性" border="0" />';
$Earth = '<img src="' . $images['Earth'] . '" alt="土屬性" border="0" />';
$Fire = '<img src="' . $images['Fire'] . '" alt="火屬性" border="0" />';
$Light = '<img src="' . $images['Light'] . '" alt="光屬性" border="0" />';
$Lightning = '<img src="' . $images['Lightning'] . '" alt="電屬性" border="0" />';
$Water = '<img src="' . $images[Water] . '" alt="水屬性" border="0" />';
$Wind = '<img src="' . $images['Wind'] . '" alt="風屬性" border="0" />';
if ($level_skillratio < 20) {
// high magic, low combat
if ($level_level < 4) {
$level_classname = "新手";
$level_classimg = ""; // Change
$element = $Water; // Change
} else if ($level_level >=4 && $level_level < 7) {
$level_classname = "魔法師見習生";
$level_classimg = ""; // Change
$element = $Water; // Change
} else if ($level_level >=7 && $level_level < 11) {
$level_classname = "初級魔法師";
$level_classimg = ""; // Change
$element = $Water; // Change
} else if ($level_level >=11 && $level_level < 15) {
$level_classname = "中級魔法師";
$level_classimg = ""; // Change
$element = $Water; // Change
} else {
$level_classname = "高級魔法師";
$level_classimg = ""; // Change
$element = $Water; // Change
}
} elseif ($level_skillratio >= 20 && $level_skillratio < 40) {
// balanced mix
if ($level_level < 4) {
$level_classname = "新手";
$level_classimg = "";
$element = $Water;
} else if ($level_level >=4 && $level_level < 7) {
$level_classname = "通靈者";
$level_classimg = "";
$element = $Water;
} else if ($level_level >=7 && $level_level < 11) {
$level_classname = "巫術見習生";
$level_classimg = "";
$element = $Water;
} else if ($level_level >=11 && $level_level < 15) {
$level_classname = "巫師";
$level_classimg = "";
$element = $Water;
} else {
$level_classname = "高級巫師";
$level_classimg = "";
$element = $Water;
}
} elseif ($level_skillratio >=40 && $level_skillratio < 60) {
// high combat (big poster), low magic
if ($level_level < 4) {
$level_classname = "新手";
$level_classimg = "";
$element = $Water;
} else if ($level_level >=4 && $level_level < 7) {
$level_classname = "劍術見習生";
$level_classimg = "";
$element = $Water;
} else if ($level_level >=7 && $level_level < 11) {
$level_classname = "初級劍士";
$level_classimg = "";
$element = $Water;
} else if ($level_level >=11 && $level_level < 15) {
$level_classname = "劍士";
$level_classimg = "";
$element = $Water;
} else {
$level_classname = "劍俠";
$level_classimg = "";
$element = $Water;
}
} else {
// big time combat, no magic
if ($level_level < 4) {
$level_classname = "新手";
$level_classimg = "";
$element = $Water;
} else if ($level_level >=4 && $level_level < 7) {
$level_classname = "騎術見習生";
$level_classimg = "";
$element = $Water;
} else if ($level_level >=7 && $level_level < 11) {
$level_classname = "警衛";
$level_classimg = "";
$element = $Water;
} else if ($level_level >=11 && $level_level < 15) {
$level_classname = "";
$level_classimg = "騎士";
$element = $Water;
} else {
$level_classname = "浪子騎士";
$level_classimg = "";
$element = $Water;
}
}
/* END HP/MP/EXP MOD */
?>