This contains several scripts and a couple of items. They're all independent of each other, though obviously the items require their onActivate scripts to work.
An exp reward script- add it to your ondeath event either on an individual basis (adjusting the ondeath script called for individual spawns) or by modifying the default one, and set the global module exp gain to 0, and it will reward all the players in the party with exp and/or gold, based on the party's average level (As calculated from their exp) and the creature's CR. The big difference is that you can change the penalty for additional party members to something more reasonable, of your choosing. Very customizable just by editing the constants in the separate asgpartyxpsettings script. Various things included like only rewarding EXP if the player is in the area, or within a certain distance of the kill, scaling exp for increased relative difficulty, not giving exp if there's too large a level gap, giving gold along with the exp, etc. All important values are easily customizable, and have fairly detailed descriptions in the script.
A small script for onAcquire, that announces to all the members of the party who and what is picked up, so no one can grab loot without everyone in the party knowing.
An item that is a basic PC scry. Just gives the names, location, and level of everyone on the server, nothing fancy.
An item that rolls a d100 for everyone in the group and announces them. Only the party leader can use it, to avoid multiple roll conflicts.
In total, 5 scripts and 2 items. All scripts have "asg" in them, so they're easy to find. Both items can be found under "items/miscellaneous/other".
The .erf is just the scripts and items, the .zip is a zipped .mod. The mod is super basic, just a room with some badgers with various CRs and both the items on the floor, and all the scripts set to work.
Posted by MCMunroe at 2008-04-07 22:46:08 Voted 8.25 on 03/07/08
I am thinking this is an dead submition. No post from the author since August.
Posted by MCMunroe at 2008-03-26 00:14:29 Voted 8.25 on 03/07/08
I seemed to have run into a bit of a snag in this system. The world we are designing starts players at level 2, and as such face alot of fractional CR monsters to start. Kobolds, Beattles and the like. PnP Kobolds are CR 1/4. How does the system handle these fractions of CR? Also many many monsters higher up have fractions of CR, CR 4.5 for example. Are these fractions lost to the system?
Does a CR 0.01 Bird, give as much XP as a CR 0.9 Kobold?
Posted by MCMunroe at 2008-03-07 15:05:50 Voted 8.25 on 03/07/08
Thank you so much for making these scripts. I really like being able to not penalize players in parties as much as the defult system.
I could use one bit of help in modifing the code to fluxuate how much gold is giving for a killed creature. I put the code into the sectiont that calculates XP and GP, but there seems to be no effect or even debug statements shown.
[code]
// Adding in my own GP adjustment - Wyvern 76, 3-5-08
float GoldAdjust = (1+((d100(2)-100)/100)); //should give a number of -100% to +100%
SendMessageToPC(oKiller,"The Gold Adjustment is: " + IntToString(GoldAdjust) + "%"); //debug code
int finalGold = FloatToInt(XP * globalAdjust * goldMultiplier); //Avoid those rounding errors!
finalGold = FloatToInt(finalGold * GoldAdjust); // just means adjust GP by +-100% Monsters don't all have the same coin!
SendMessageToPC(oKiller,"Final int XP to give is: " + IntToString(finalXP)); //debug code
oPartyMember = GetFirstFactionMember(oKiller, TRUE);
while (GetIsObjectValid(oPartyMember) == TRUE)
{
if(useDistance)
distanceApart = GetDistanceBetween(oKilled, oPartyMember);
if ((areaOfKill == GetArea(oPartyMember)) && ((useDistance && distanceApart < maxDist && distanceApart != 0.0) || (!useDistance))) {
GiveXPToCreature(oPartyMember, finalXP); //Give XP to all in party, in area
GiveGoldToCreature(oPartyMember, finalGold);
}
oPartyMember = GetNextFactionMember(oKiller, TRUE);
}
[/code]
Of course that is just the section with the changes. Any help would be welcome.
Lusitania, I'm looking for people to assist us in design and coding for the Avlis2 PW. Avlis is a RP-first environment with the largest world of any NWN PW around. A2 is going to be amazing, but we need some more volunteers to round out our team. I'd love it if you contacted me at [email protected] or dropped by the website in my sig.
Thanks for taking the time!
-spool32 _________________________ Please visit us at The World of Avlis, a roleplaying world for NWN1 and 2. Experience top-notch roleplay with a large userbase, more than 20 active DMs, and one of the largest worlds ever built for NeverWinter Nights!
Posted by TheAxeman at 2007-08-23 20:48:36 Voted 8.00
Alright, I've updated the exp script and the onAcquire script.
Changes:
EXP:
Now has a separate script, asgpartyxpsettings, that contains all the settings. So from now on, if I mess with the main script and you update, you won't have to copy over your settings each time, just import the new asgpartyxp and leave the settings file alone. Unless I add more settings.
Changed the logic so you definitely won't get exp or be counted if you're outside the area. This shouldn't have been happening before, but if something is weird with the GetDistanceBetween() function, this will take care of it.
OnAcquire:
Generally made the code more compact and less redundant, and changed the announcement to a local float so anyone nearby can see it/read it in their logs even if they're not in the party. For party members not in the area, it still does the normal log message.
Posted by TheAxeman at 2007-08-22 17:43:00 Voted 8.00
Thanks for looking. We love this so far! Very much. Area setting was a great addition. 25 meters (or what ever the measurement) is a little small (I know your comments say it's large) but in outdoor areas archers sometimes are out of range for their own kills! Easily adjusted. I had a couple reports that folks in the same party were receiving xps from kills while they were in different areas. I did not see this myself! Overall, a great piece of scripting! And we love the little scrying tool and the drop announcement!
I just checked on the gold thing for the acquire script. Ends up it didn't announce how many of something you picked up if you picked up, say, 20 arrows, so I fixed that and updated the erf and mod. As far as gold goes, it now announces that someone picked up some gold, but not how much- as far as I can tell, there's no way to get that information: the stack size is always reported as 0. If I can figure it out, I'll add it in.
Posted by TheAxeman at 2007-08-21 19:09:24 Voted 8.00
Just a side note! I gave my DM's the scrying tool! They needed some way to find the players and OE hasn't come up with it! Killer!
I just added an option to have it give exp by an adjustable radius as suggested (or by area, if you still want it that way).
Also, it now calculates player level by how much exp they have, rather than what level the game reports them as, so you can no longer sit at level 1, not ever hitting the level up button, without giant penalties. ECL is taken into account here, so a level 2 drow is counted as a level 2 drow. This is done in a "int customHD(oPlayer)" function that can be used as a replacement anywhere you'd otherwise use the built in "int GetHitDice(oPlayer)" function for PCs.
It also now names the players and their levels that are keeping you from getting exp if they are outside the maximum level range, and I fixed a minor bug about how it calculates the extra exp for being at higher levels.
Anyone using this exp script should update, just copy over your old values from the top.
Very good, useful addition...I have to admit that the Area allocation for Group members is a real issue with PWs as PNJ said..layers tend to camp it in a safe area while another farms XP. A radius variable from kill would make a great addition to this script and definately urge me to give you a high vote. I'll refrain from voting and give you a chance to offer this.
Posted by PNJ at 2007-08-14 01:33:50 Voted 8.00 on 08/14/07
& GetDistanceBetween(oCrea,OBJECT_SELF)!=0.)
Posted by PNJ at 2007-08-14 01:33:22 Voted 8.00 on 08/14/07
(GetDistanceBetween(oCrea,OBJECT_SELF)
Posted by PNJ at 2007-08-14 01:32:54 Voted 8.00 on 08/14/07
Usefull script, we are using similar Party Bonus Xp to favorize grouping.
You should put a minimum distance with the creature killed instead of the Area.
Else people will go afk in the corner of your dungeon will others are slashing in the other Side.
Something like that :
(GetDistanceBetween(oCrea,OBJECT_SELF)
You must be Logged In to post comments in this section.
10 - A Masterpiece, Genuinely Groundbreaking 9 - Outstanding, a Must Have 8 - Excellent, Recommended to Anyone 7 - Very Good, Deserves a Look 6 - Good, Qualified Recommendation 5 - Fair, Solid yet Unremarkable 4 - Some Merit, Requires Improvements 3 - Poor Execution, Potential Unrealized 2 - Very Little Appeal 1 - Not Recommended to Anyone