Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

[Release] MuCore Grand Reset - fixed LevelUpPoints

Newbie Spellweaver
Joined
Jun 17, 2006
Messages
43
Reaction score
5
If any of you are running a server with a reset cap that restricts max stats and grand resets, you will see that players are able to keep all their level up points after they grand reset making your reset cap useless.

This is NOT a settings issue with MuCore! This is poorly written code that does not support the clearing of a characters LevelUpPoints.

It may be only a few lines of code, but it can totally ruin your server if a few crafty players spread this bug around.

I hope this helps some of you!


 
Custom Title Activated
Loyal Member
Joined
Dec 5, 2009
Messages
2,657
Reaction score
1,178
If any of you are running a server with a reset cap that restricts max stats and grand resets, you will see that players are able to keep all their level up points after they grand reset making your reset cap useless.

This is NOT a settings issue with MuCore! This is poorly written code that does not support the clearing of a characters LevelUpPoints.

It may be only a few lines of code, but it can totally ruin your server if a few crafty players spread this bug around.

Poorly written code ? bug ? hehe please, when you check on AdminCP & you will understand code u will get it's not mistake.

ok so i compared your Grandreset.php to original one

that's the difference (2 lines)

Original
case '0': $new_bpoints = ($select_req->fields[3]+$reset_points); break;
case '1': $new_bpoints = ($select_req->fields[3]+ ($reset_points*($select_req->fields[2]+1))); break;

Your edit
case '0': $new_bpoints = '0'; break;
case '1': $new_bpoints = '0'; break;



Instead of nulling 2 cases, you should add new one

case '0': $new_bpoints = ($select_req->fields[3]+$reset_points); break;
case '1': $new_bpoints = ($select_req->fields[3]+ ($reset_points*($select_req->fields[2]+1))); break;
case '2': $new_bpoints = '0'; break;

& in AdminCP (usercp_grandreset_character_settings.php)

like
xXAlphaXx - [Release] MuCore Grand Reset - fixed LevelUpPoints - RaGEZONE Forums


Code:
if ($get_config->bpoints_formula == '0') {
        echo '<option value="0" selected="selected">Levelup Bonus Points</option><option value="1">Levelup Bonus Points * Grand Resets Number</option><option value="2">Clean Levelup Bonus Points</option>';
    } elseif ($get_config->bpoints_formula == '1') {
        echo '<option value="0">Levelup Bonus Points</option><option value="1" selected="selected">Levelup Bonus Points * Grand Resets Number</option><option value="2">Clean Levelup Bonus Points</option>
		';		
    }
	elseif ($get_config->bpoints_formula == '2') {
        echo '<option value="0">Levelup Bonus Points</option><option value="1">Levelup Bonus Points * Grand Resets Number</option><option value="2"  selected="selected">Clean Levelup Bonus Points</option>
		';		
    }


HF
 
Last edited:
-( . ) ( . )-
Loyal Member
Joined
Mar 28, 2012
Messages
1,356
Reaction score
68
@4FUNer sir i have a question to you grand reset and reset stats is the same code? or not? cause when we make stats reset it will be add 2000 lvl up points instead of what they have all total lvl up points. For example my char have a 3178 all total stats and then i go to site and make it to reset my stats and then it will become 2000 when i finish resetting my stats..

P.S. sorry for my bad english
 
Custom Title Activated
Loyal Member
Joined
Dec 5, 2009
Messages
2,657
Reaction score
1,178
@4FUNer sir i have a question to you grand reset and reset stats is the same code? or not? cause when we make stats reset it will be add 2000 lvl up points instead of what they have all total lvl up points. For example my char have a 3178 all total stats and then i go to site and make it to reset my stats and then it will become 2000 when i finish resetting my stats..

P.S. sorry for my bad english

Hm let me see (next time use help section ;p)

Hehe low exp like, So reset stats loading config of AdminCP Reset Character Settings

so for example for 5 ppl chars default

Formula1
(5*lvl) + (1995 * RR) + (bonus points * RR)

Formula2
(5*lvl) + (bonus points * RR)


Example on BM 5 rr (bonus points = 1000)

Formula 1 after Reset Stats = 16,975
Formula 2 after Reset Stats = 2000 + 5000 = 7000


So for High Stat servers it would be nice if you set in AdminCP -> Reset Stats Settings

Set the amount of resets required to reset stats to like 60 for formula 1 & XX depends on bonus points for formula2, so they won't cry about "where is my stats!!!"

or you can modify to reset only level up points + str/agi/vit/ene/cmd
 
-( . ) ( . )-
Loyal Member
Joined
Mar 28, 2012
Messages
1,356
Reaction score
68
so i will edit this is reset_setting.php in cp_modules I am right sir? and correct me if i'm wrong
 
Custom Title Activated
Loyal Member
Joined
Dec 5, 2009
Messages
2,657
Reaction score
1,178
so i will edit this is reset_setting.php in cp_modules I am right sir? and correct me if i'm wrong

In Admin Control Panel -> Reset Stats Settings you can set only required resets for Reset Stats module

if you want to do modification, then user_cp/reset_stats.php & code new option
 
Initiate Mage
Joined
Apr 22, 2016
Messages
2
Reaction score
0
I need Help, first my english is bad ^^ so this is my question, i use the some module so "i need GR to gift 10000 PCPoints when user use GR, so anyone have this module or any can edit this module:


<?$load_reset_settings = simplexml_load_file('engine/config_mods/grandreset_character_settings.xml');
$active = trim($load_reset_settings->active);
if($active == '0'){
echo msg('0','Sorry, this feature is temporarily unavailable at the moment.');
}else{
$reset_resets_need = trim($load_reset_settings->resets_need);
$reset_level = trim($load_reset_settings->level);
$reset_zen = trim($load_reset_settings->zen);
$reset_points = trim($load_reset_settings->bpoints);
$reset_points_formula = trim($load_reset_settings->bpoints_formula);
$reset_clear_skills = trim($load_reset_settings->clear_skills);
$reset_clear_inv = trim($load_reset_settings->clear_inv);
$reset_stats = trim($load_reset_settings->reset_stats);
$reset_limit = trim($load_reset_settings->reset_limit);
$reset_credits = trim($load_reset_settings->bcredits);
$reset_credits_formula = trim($load_reset_settings->bcredits_formula);


if(isset($_GET['rid'])){
echo '<div style="margin-top: 10px;">';
$id = safe_input($_GET['rid'],'');
if(empty($id) || !is_numeric($id)){
header('Location: '.$core_run_script.'');
exit();
}else{
if(character_and_account($id,$user_auth_id) === false){
header('Location: '.$core_run_script.'');
exit();
}else {
if(account_online($user_auth_id) === true){
echo msg('0','Account is connected on game, please logout.');
}else{
$select_req = $core_db->Execute("select clevel,money,resets,leveluppoint,grand_resets from character where mu_id=? and accountid=?",array($id,$user_auth_id));

if($select_req->fields[2] < $reset_resets_need){
echo msg('0','Unable to reset, reason: lacking '.($reset_resets_need - $select_req->fields[2]).' resets.');
$no_reset = 1;
}

if($select_req->fields[0] < $reset_level){
echo msg('0','Unable to reset, reason: lacking '.($reset_level - $select_req->fields[0]).' levels.');
$no_reset = 1;
}
if($select_req->fields[1] < $reset_zen){
echo msg('0','Unable to reset, reason: lacking '.number_format($reset_zen - $select_req->fields[1]).' zen.');
$no_reset = 1;
}
if($no_reset != '1'){
$new_money = $select_req->fields[1] - $reset_zen;
switch ($reset_points_formula){
//case '0': $new_bpoints = ($select_req->fields[3]+$reset_points); break;
//case '1': $new_bpoints = ($select_req->fields[3]+ ($reset_points*($select_req->fields[2]+1))); break;
case '0': $new_bpoints = '0'; break;
case '1': $new_bpoints = '0'; break;
}

switch ($reset_credits_formula){
case '0': $new_bcredits = ($reset_credits); break;
case '1': $new_bcredits = ($reset_credits*($select_req->fields[4]+1)); break;
}
switch ($reset_stats){
case '1':
if($reset_clear_inv == '1' and $reset_clear_skills == '1'){
$reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[inventory]=CONVERT(varbinary(1080), null),[magiclist]=CONVERT(varbinary(180), null),[grand_resets]=(grand_resets+1) where mu_id=?";
}elseif ($reset_clear_inv == '1'){
$reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[inventory]=CONVERT(varbinary(1080), null),[grand_resets]=(grand_resets+1) where mu_id=?";
}elseif ($reset_clear_skills == '1'){
$reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[magiclist]=CONVERT(varbinary(180), null),[grand_resets]=(grand_resets+1) where mu_id=?";
}elseif ($reset_clear_inv == '0' and $reset_clear_skills == '0'){
$reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[strength]='25',[dexterity]='25',[vitality]='25',[energy]='25',[leadership]='25',[grand_resets]=(grand_resets+1) where mu_id=?";
}
break;
case '0':
if($reset_clear_inv == '1' and $reset_clear_skills == '1'){
$reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[inventory]=CONVERT(varbinary(1080), null),[magiclist]=CONVERT(varbinary(180), null),[grand_resets]=(grand_resets+1) where mu_id=?";
}elseif ($reset_clear_inv == '1'){
$reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[inventory]=CONVERT(varbinary(1080), null),[grand_resets]=(grand_resets+1) where mu_id=?";
}elseif ($reset_clear_skills == '1'){
$reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[magiclist]=CONVERT(varbinary(180), null),[grand_resets]=(grand_resets+1) where mu_id=?";
}elseif ($reset_clear_inv == '0' and $reset_clear_skills == '0'){
$reset_formula = "Update character set [resets]='0',[clevel]='1',[experience]='0',[leveluppoint]=?,[money]=?,[grand_resets]=(grand_resets+1) where mu_id=?";
}
break;
}
$exc_reset_formula=$core_db->Execute($reset_formula,array($new_bpoints,$new_money,$id));


$check_for_memb_id = $core_db2->Execute("Select ".MU_COINS_USERID_COLUMN." from ".MU_COINS_TABLE." where ".MU_COINS_USERID_COLUMN."=?",array($user_auth_id));
if($check_for_memb_id->EOF){
$set_credits = $core_db2->Execute("insert into ".MU_COINS_TABLE." (".MU_COINS_USERID_COLUMN.",".MU_COINS_COLUMN.")VALUES(?,?)",array($user_auth_id,$new_bcredits));
}else{
$set_credits = $core_db2->Execute("Update ".MU_COINS_TABLE." set ".MU_COINS_COLUMN."=".MU_COINS_COLUMN."+? where ".MU_COINS_USERID_COLUMN."=?",array($new_bcredits,$user_auth_id));
}


if($exc_reset_formula && $set_credits){
echo msg('1','Character successfully grand reseted.');
}else{
echo msg('0','Unable to grand reset, reason: system error, please contact administrator.');
}
}
}
}
}
echo '</div>';
}


echo '<div style="margin-top: 20px;">
<fieldset><legend>Reset Character Requirements</legend>
<table border="0" cellspacing="4" cellpadding="0" width="100%" style="padding-left: 10px;">
<tr>
<td align="left"><b>Resets:</b></td>
<td align="left" width="100%">'.$reset_resets_need.'</td>
</tr>
<tr>
<td align="left"><b>Level:</b></td>
<td align="left" width="100%">'.$reset_level.'</td>
</tr>
<tr>
<td align="left"><b>Zen:</b></td>
<td align="left" width="100%">'.number_format($reset_zen).'</td>
</tr>
<tr>
<td align="left"><b>Resets Limit:</b></td>
<td align="left" width="100%">'.number_format($reset_limit).'</td>
</tr>
</table>
</fieldset>
</div>


<div style="margin-top: 10px;">
<fieldset><legend>Reset Formula</legend>
<table border="0" cellspacing="4" cellpadding="0" style="padding-left: 10px; padding-right: 10px;">
<tr>
<td align="left" width="130" valign="top"><b>Credits Bonus:</b></td>
<td align="left">';
switch ($reset_credits_formula){
case '0': echo number_format($reset_credits); break;
case '1': echo '('.number_format($reset_credits).'* grand resets number) - The * amount between credits bonus witch is '.number_format($reset_credits).' and number of grand resets that your character have.'; break;
}


echo '</td>
</tr>


<tr>
<td align="left" width="130" valign="top"><b>Levelup Bonus Points:</b></td>
<td align="left">';
switch ($reset_points_formula){
case '0': echo number_format($reset_points); break;
case '1': echo '('.number_format($reset_points).'* resets number) - The * amount between levelup bonus points witch is '.number_format($reset_points).' and number of resets that your character have.'; break;
}


echo '</td>
</tr>
<tr>
<td align="left"><b>Clear Skills:</b></td>
<td align="left">';
switch ($reset_clear_skills){
case '0': echo 'No'; break;
case '1': echo 'Yes'; break;
}
echo '</td>
</tr>
<tr>
<td align="left"><b>Clear Inventory:</b></td>
<td align="left">';
switch ($reset_clear_inv){
case '0': echo 'No'; break;
case '1': echo 'Yes'; break;
}
echo '</td>
</tr>
<tr>
<td align="left"><b>Reset Stats:</b></td>
<td align="left">';
switch ($reset_stats){
case '0': echo 'No'; break;
case '1': echo 'Yes'; break;
}
echo '</td>
</tr>
</table>
</fieldset>
</div>
';


$select_characters = $core_db->Execute("Select mu_id,name,clevel,class,resets,money,grand_resets from character where accountid=? order by clevel desc ",array($user_auth_id));






echo '<table border="0" cellspacing="4" cellpadding="0" width="100%" style="margin-top: 10px; margin-bottom: 10px;">';
while (!$select_characters->EOF){
if($select_characters->fields[4] < $reset_resets_need && $select_characters->fields[2] < $reset_level && $select_characters->fields[5] < $reset_zen){
$lacking_error = '<span class="iR_func_status_lacking">lacking '.($reset_resets_need - $select_characters->fields[5]).' resets, '.($reset_level - $select_characters->fields[2]).' level and '.number_format($reset_zen - $select_characters->fields[5]).' zen</span>';

}elseif ($select_characters->fields[4] < $reset_resets_need){
$lacking_error = '<span class="iR_func_status_lacking">lacking '.($reset_resets_need - $select_characters->fields[4]).' resets</span>';
}elseif ($select_characters->fields[2] < $reset_level){
$lacking_error = '<span class="iR_func_status_lacking">lacking '.($reset_level - $select_characters->fields[2]).' level</span>';
}elseif ($select_characters->fields[5] < $reset_zen){
$lacking_error = '<span class="iR_func_status_lacking">lacking '.number_format($reset_zen - $select_characters->fields[5]).' zen</span>';
}else{

$lacking_error = '<input type="button" value="Grand Reset Character" onclick="ask_url(\'Are you sure?\',\''.$core_run_script.'&rid='.$select_characters->fields[0].'\');">';
}

echo '
<tr>
<td width="66" rowspan="2"><img src="template/'.$core['config']['template'].'/images/class/'.decode_class($select_characters->fields[3],'2').'" width="66" height="66" title="Class"></td>
<td align="left" class="iR_name" width="100">'.htmlentities($select_characters->fields[1]).'</td>
<td align="left" class="iR_stats">Level: '.$select_characters->fields[2].'</td>
<td align="left" class="iR_stats">Zen: '.number_format($select_characters->fields[5]).'</td>
<td align="left" class="iR_stats">Resets: '.$select_characters->fields[4].'</td>
<td align="left" class="iR_stats">Grand Resets: '.$select_characters->fields[6].'</td>
</tr>
<tr>
<td algin="left" class="iR_class">'.decode_class($select_characters->fields[3]).'</td>
<td colspan="4" class="iR_func_status" align="left">'.$lacking_error.'</td>
</tr>
<tr>
<td colspan="6" class="iRg_line_top"> </td>
</tr>



';

$select_characters->MoveNext();
}


echo '</table>';
}


?>




If any of you are running a server with a reset cap that restricts max stats and grand resets, you will see that players are able to keep all their level up points after they grand reset making your reset cap useless.

This is NOT a settings issue with MuCore! This is poorly written code that does not support the clearing of a characters LevelUpPoints.

It may be only a few lines of code, but it can totally ruin your server if a few crafty players spread this bug around.

I hope this helps some of you!


 
Back
Top