|
Post by lanessar on Apr 24, 2006 21:46:18 GMT
I'd say a player-oriented one, such as the DMFI Dicebags do.
I take issue with the fact that the dicebags go through a rather long conversation when there should just be an option to !roll Search for players. If you want to upgrade that to !Roll Search 35 and have the DC at the end, then that's an addition I did not think of, but this is generally what happens:
PC1: "I think it would be wise if you took this elsewhere." (rolls intimidate check = 31) PC2: (rolls Will Save) (succeeds vs DC 31) PC3: (Rolls Will Save) (fails vs DC 31) PC2: "I'll do business where I want, friend." PC3: "We'd better go, he looks serious..."
Or, with DM interaction:
DM: *You see a dusty tome ahead, perhaps containing the information you seek regarding the Scales of Throgmagog* PC: "I attempt to decipher the tome." DM: "DC 25 - Lore Check" PC: (using dicebag) Lore Check (d20 = 10 + 2 Lore + 4 Int Modifier = Total 16) DM: "You are not able to decipher the tome. Perhaps another could, if you took it to them for perusal."
This happens quite frequently.
|
|
|
Post by FunkySwerve on Apr 24, 2006 22:03:30 GMT
Sounds doable. The more details the better since I have never used DMFI and have never tarried long on a RP server. Funky
|
|
|
Post by FunkySwerve on Apr 27, 2006 3:13:45 GMT
Here's one that just occured to me: dm_castvoice - sets you up to be muted and assign SpeakStrigs to the target of the tell - possible alternate name: dm_vent (for ventriloquist). Somew potentilly wicked other uses, but handy for rp, if I can make an east toggle. Funky
|
|
|
Post by lanessar on Apr 27, 2006 22:41:00 GMT
That's VERY nice. I frequently run into needing something like that.
Trying to think outside the box, then (since we've been boxed in on chat functions for so long)...
dm_vfx_# = create the spell vfx of the number sent in the tell on the PC. dm_appearance_# = change the target of the tell to the appropriate appearance, as laid out in the appearances.2da.
Those are the first two that immediately come to mind. Of course, dm_teach_elven (or other language) might be cool, too. Especially with all the languages I'm about to give you.
|
|
|
Post by FunkySwerve on Apr 28, 2006 1:07:59 GMT
That's a great idea, I'd been trying to think of a neater way to integrate the language learning. Don't expect an update with languages for a few days, 1.67 has me juggling bugs. Best, Funky
|
|
|
Post by lanessar on May 2, 2006 13:09:38 GMT
If you need any help on this, I'm more than willing to drudge through and add code from the dicebags and whatnot. I'll be a bit slower than you, but this is something my players definately would love to see.
Plus, we can get rid of the DMFI systems if the VFX system is in, and get rid of a huge system resource drain.
|
|
|
Post by FunkySwerve on May 2, 2006 14:42:50 GMT
No, thanks, that'd just make the troubleshooting more difficult. Funky
|
|
Mask
Peasant
Posts: 6
|
Post by Mask on May 11, 2006 2:00:38 GMT
Out of curiosity, how hard is it to add languages? One of the major features of the latest DMFI that was never actually released(at least not publicly) was the ability to add new languages by item tag I.E. hls_101, hls_102, hls_103, hls_104, hls_105, hls_106. Not sure how reasonable/feasible something like that is.. But perhaps having a flat language list of say.. 100 grand total, and Storing the NAMES of each one as a Module level String?
int SIM_Lang_1 Elven int SIM_Lang_2 Dwarven int SIM_Lang_3 Gnomish int SIM_Lang_4 Halfling int SIM_Lang_5 Orcish
Or something to that extend, to make the language list more flexible for those building mods that use this system?
//Begin Edit To be a bit more clear, I believe some languages "Nexalan" for example Are infact custom ones to the Setting(HG server I believe). Given, I'm neither infalliable, nor a know it all, but I did go through FRCS 3.0 and Races of Faerun 3.0 when adding a slew of custom languages to LoN's DMFI list, and don't recall seeing "Nexalan" in either. Be that as it may, the ability to rewrite this list, or perhaps just provide an override name for each language would be I imagine a boon to any server's who wouldn't have this language list but one unique to the setting. //End Edit
No, the server I work on doesn't use it, but the further I see this progressing, the more I hope we'll gut out DMFI and use this instead.
|
|
|
Post by FunkySwerve on May 11, 2006 3:04:12 GMT
All those languages were sent in by Lanessar, not sure but I recognized most of em. The only problem with remaing the languages is string matching by letter - I would have to tear apart the way I integrated them, and it was don that way to keep overhead low with fewer comparisons. You can, however, prevent players from ever seeing the languages by disabling the 'players can see al languages' option. Then, they will only be able to see the ones that they can speak, which, other than the core race languages, you have total control over. If you wanted you could redo the list of languages in the !list alllanguages command to suit your world, instead, and leave the option enabled. Allowing renaming would, however, be extremely complicated at best, and would also destroy backwards compatibility. Funky
|
|
Mask
Peasant
Posts: 6
|
Post by Mask on May 11, 2006 3:42:20 GMT
Completely Understandable. I however reserve the right to think my suggestion would prove worthwhile. (Would I have made it otherwise? *Grins*) Forgive me if this is listed and an existing option.. But a way to get a simple and clean report on a PC for DM/Admin? Yanno, Name | account | IP Class(Level) | Class2(level) | Class3(level) Deity | GP | GP+Inventory Value Subrace | XP | XP Til next Level Area Name | Area Tag Party leader(I'd do both of these as a list.) Party membersThings of that nature, Admittedly, one doesn't want to look at every item a PC owns (usually) but a general/generic overview would be nice. Again thinking DM/Admin level but a way to remotely cue the " Examine" screen on a PC?
|
|
|
Post by FunkySwerve on May 11, 2006 3:47:07 GMT
!playerinfo pulls up name, cd key, and if they are a dm, also gets ip. More than that seemed like overkill, but you could easily add it yourself. I'll definitely consider adding more info in the dm version of the listing. Funky
|
|
Mask
Peasant
Posts: 6
|
Post by Mask on May 11, 2006 4:04:08 GMT
#include "dbh_inc_misc" /*Have Harts Misc Functions*/ #include "dmfi_dmw_inc" /*Have DMFI Include/ Color*/ void ReportFactionMembers(object oPC, object oReportTo) { object oTarget; oTarget = GetFirstFactionMember(oPC, FALSE); string sFaction=ColorText("Faction Members:", "red"); string sFactionMember; SendMessageToPC(oReportTo, sFaction);
while (GetIsObjectValid(oTarget)) { sFactionMember=ColorText(GetName(oTarget), "blue"); SendMessageToPC(oReportTo, sFactionMember); oTarget = GetNextFactionMember(oPC, FALSE); } }
void main() { // Define User and Target object oUser=GetItemActivator(); object oPC= GetItemActivatedTarget(); // Name of Target string sPCName=ColorText(GetName(oPC), "cyan"); // Find race of target and turn it into speakable text int iRace=GetRacialType(oPC); string sRace;
if (iRace==RACIAL_TYPE_DWARF) {sRace=" Dwarf ";} else if (iRace==RACIAL_TYPE_ELF) {sRace=" Elf ";} else if (iRace==RACIAL_TYPE_GNOME) {sRace=" Gnome ";} else if (iRace==RACIAL_TYPE_HALFELF) {sRace=" HalfElf "; } else if (iRace==RACIAL_TYPE_HALFLING) {sRace=" Halfling "; } else if (iRace==RACIAL_TYPE_HALFORC) {sRace=" Halforc ";} else if (iRace==RACIAL_TYPE_HUMAN) {sRace=" Human ";} // Determine Targets Deity string sPCsDeity=GetDeity(oPC);
// Determine XP of Target. int iPCXP=GetXP(oPC); string sPCXP=IntToString(iPCXP);
// Determine how much pocket money Target has. int iPCGold=GetGold(oPC); string sPCGold=IntToString(iPCGold);
// Determine the target's alignment. // on Lawful - Chaotic axis int iLawChaos = GetAlignmentLawChaos(oPC); string sLawChaos; switch(iLawChaos) { case ALIGNMENT_LAWFUL: sLawChaos = "Lawful"; break; case ALIGNMENT_NEUTRAL: sLawChaos = "Neutral"; break; case ALIGNMENT_CHAOTIC: sLawChaos = "Chaotic"; break; default: break; } // on Good - Evil axis int iGoodEvil = GetAlignmentGoodEvil(oPC); string sGoodEvil; switch(iGoodEvil) { case ALIGNMENT_GOOD: sGoodEvil = "Good"; break; case ALIGNMENT_NEUTRAL: sGoodEvil = "Neutral"; break; case ALIGNMENT_EVIL: sGoodEvil = "Evil"; break; default: break; } string sAlignmentmessage = "something's gone horribly wrong"; if ((iLawChaos == ALIGNMENT_NEUTRAL) && (iGoodEvil == ALIGNMENT_NEUTRAL)) { sAlignmentmessage = "Alignment: True Neutral"; } else { sAlignmentmessage = "Alignment : " + sLawChaos + " " + sGoodEvil; }
// Send info to User below here
if ((GetIsDM(oPC)== FALSE)&&(GetIsValidDM(oUser))) { // Starting with Name/Gender/Race of Target SendMessageToPC(oUser,sPCName+" : "+sGender+" "+sRace); // Next we have level of Target and classes/level of those SendMessageToPC(oUser,"Level : "+sLevel); // report Deity SendMessageToPC(oUser,"Deity :"+sPCsDeity);
SendMessageToPC(oUser,"Current XP-"+sPCXP); SendMessageToPC(oUser,"XP to next lvl- "+IntToString(((iLevel*(iLevel+1))/2*1000)-iPCXP)); // Report Cash in pocket SendMessageToPC(oUser,"Has "+sPCGold+" Gold"); SendMessageToPC(oUser,sAlignmentmessage); ReportFactionMembers(oPC, oUser); return; } }
Built using DMFI, and of course, with my Own modules DM CD Key Check. It's also inadequate as it was desigend to work from an item, but.. its a start?
Note: I gutted out the Class and level method as this is a Code I found a year ago, and revised extensively to use PRC and cleaned it up, but never finished cleaning up Class + Level return.
|
|
Mask
Peasant
Posts: 6
|
Post by Mask on May 14, 2006 8:48:05 GMT
void Speech_OnClientEnter(object oPlayer) { if( !GetIsObjectValid(oPlayer) ) return;
object oMod = GetModule(); SetLocalString(oPlayer, "NWNX!CHAT!GETID", ObjectToString(oPlayer) + " "); string sID = GetLocalString(oPlayer, "NWNX!CHAT!GETID"); int nID = StringToInt(sID); if( nID != -1) { SetLocalObject(oMod, sSpeech_SpeechList + sID, oPlayer); SetLocalInt(oPlayer, sSpeech_PlayerID, nID); } DeleteLocalString(oPlayer, "NWNX!CHAT!GETID"); }
Is this:
if(GetIsDM(oPlayer)) { if(!VerifyAdminKey(oPlayer) && !VerifyDMKey(oPlayer)) {BootPC(oPlayer);} }
Worth adding in ya figure? Given I plan to add it in locally(Might as well only have a valid DM list in 1 location 'eh?) but I figured it might be a nice safety feature just generally.
|
|
|
Post by FunkySwerve on May 14, 2006 15:43:48 GMT
I have something similar in my mod, and thought about putting it into SIMTools, but it seems like the sort of thing the individual modder should decide on. Having a second DM check function really doesn't hurt anything (though you could always just rip out yours and manke a custom one combining the dm and admin verify functions), and I fugure letting them place the check if they want one has other advantages, because it could affect their other scripts. The less I impact on mod events, the better. Funky
|
|
Mask
Peasant
Posts: 6
|
Post by Mask on May 14, 2006 18:13:32 GMT
Completely understandable.
Out of curiosity is it possible to make a Limited Ventriloquist command for PC's? I.E. Familiar/Summons/Animal Companion?
The DMFI handled this by setting listening patterns in the default on spawn event. Not exactly a "pretty" or a simple solution. Even less if you don't script, but want to make it work on things.. I'm wondering if it'd be possible to set up something similar, Perhaps Familiar, Companion, Summons as languages, which will in turn look for the nearest NPC, that Calls the PC speaking as master?
Yeah, not simple, or pretty but the best method I can think of.
|
|