I read through your request and it makes total sense—encouraging party play with a bonus EXP system is a great idea to keep players active and engaged. I put together a sample script that follows your logic: scaling EXP bonuses based on the number of party members, capping at 100% once you hit 5+ people in the party. It also includes the dispbottom message you asked for, so players will be notified of the bonus they're getting.
I also added random number generation to make it more interesting. The script randomly gives an extra 5–15% EXP bonus, so there's a bit of luck involved when grinding in a party. It uses rand(5, 15), which generates a random number in that range and adds it to the base party bonus. I actually first looked into how these random number mechanics work while reading some reviews here, and for this script, it fits perfectly since it adds an element of unpredictability and excitement—kind of like a little gambling aspect in EXP gain. So if you’re in a full party getting 100% bonus EXP, you might get an extra 7%, 12%, or even 15% depending on the random roll. Just a little something to keep things fun.
Here’s the script:
// Party Bonus EXP Script
function script PartyEXP_Bonus {
.@Count_Party = getpartymembercount(getcharid(1), 1);
if (.@Count_Party <= 1) {
.@Exp_Party = 0;
} else if (.@Count_Party == 2) {
.@Exp_Party = 50;
} else if (.@Count_Party <= 3) {
.@Exp_Party = 75;
} else if (.@Count_Party <= 5) {
.@Exp_Party = 100;
} else {
.@Exp_Party = 100;
}
.@Random_Bonus = rand(5, 15);
.@Total_EXP_Bonus = .@Exp_Party + .@Random_Bonus;
dispbottom "[Party System]: You have gained " + .@Random_Bonus + "% extra bonus EXP for being in a party of " + .@Count_Party + ". Total EXP Gain: " + .@Total_EXP_Bonus + "% — Happy Leveling!";
return .@Total_EXP_Bonus;
}