31
NwN General / HELLO!!!!!!!!!!!!!!!!!
« on: April 08, 2008, 06:10:07 PM »
HELLO!!!!! anyone alive out their!!!!!!
*wonders around aimlessly looking for life*
*wonders around aimlessly looking for life*
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
#include "dl_magic"
#include "__kw_io_func"
#include "sha_subr_methds"
#include "tomkin_database"
#include "include_thrall"
int EnforceBan( object oPC );
int ExamineNumPlayers( object oPC );
string GetClass( object oPC );
string GetRace( object oPC );
void LogEntry( object oPC );
string SCHIBICD = "";
string STOMKINCD = "";
// Check for associates the PC may have created
void CheckForAssociates( object oPC );
void CheckForAssociates( object oPC )
{
// Set a spcial variable on the server itself to take into account server
// reboots where thralls may spawn over the life of the server!
// SetLocalInt( GetModule(), GetPCPublicCDKey( oPC ) + "Thrall", 1 );
// DBSaveString( "ThrallMaster", GetPCPublicCDKey( oPC ) + GetStringLeft( GetName( oPC ), 10 ), oPC );
// Check to see if the PC has created an associate
string sThrallCheck = DBGetString( "ThrallMaster", oPC );
if( sThrallCheck != "" )
{
// Associate exists, let's see if the server has reset. This event
// will be signified by a stored variable on the server itself. If
// the variable is not found, then the PCs thrall needs to be recreated.
int nThrall = GetLocalInt( GetModule(), GetPCPublicCDKey( oPC ) + "Thrall" );
location locPC = DBGetLocation( "LOCATION", oPC );
// PCs thrall still exists on the server somewhere, do not recreate!
if( nThrall == 1 ) return;
// Get all the values from the PCs database
string sMaster = DBGetString( "ThrallMaster", oPC );
string sType = DBGetString( "ThrallType", oPC );
string sBones1 = DBGetString( "ThrallBones1Res", oPC );
string sBones2 = DBGetString( "ThrallBones2Res", oPC );
string sSkull = DBGetString( "ThrallSkullRes", oPC );
string sClaws = DBGetString( "ThrallClawsRes", oPC );
string sSpecial = DBGetString( "ThrallSpecialRes", oPC );
// Create the associate itself
object oThrall = CreateObject( OBJECT_TYPE_CREATURE,
sType, locPC );
// Apply any effects to the associate as necessary, add them as
// a PCs henchman, and level them up to their appropriate power.
if( GetStringLeft( sType, 5 ) == "necro" )
DelayCommand( 0.5f, ApplyNecroEffects( sBones1, sBones2, sSkull,
sClaws, sSpecial, oThrall ) );
else if( GetStringLeft( sType, 5 ) == "champ" )
DelayCommand( 0.5f, ApplyChampionEffects( sBones1, sBones2, sSkull,
sClaws, sSpecial, oThrall ) );
DelayCommand( 0.7f, AddHenchman( oPC, oThrall ) );
DelayCommand( 1.0f, LevelUpThrall( oThrall, GetHitDice( oPC ) ) );
// Save the information on the associate!
sBones1 = GetStringLowerCase( GetStringLeft( sBones1, 16 ) );
sBones2 = GetStringLowerCase( GetStringLeft( sBones2, 16 ) );
sSkull = GetStringLowerCase( GetStringLeft( sSkull, 16 ) );
sClaws = GetStringLowerCase( GetStringLeft( sClaws, 16 ) );
sSpecial = GetStringLowerCase( GetStringLeft( sSpecial, 16 ) );
SetLocalString( oThrall, "Master", GetPCPublicCDKey( oPC ) + GetSubString( GetName( oPC ), 0, 10 ) );
SetLocalString( oThrall, "ThrallType", sType );
SetLocalString( oThrall, "Bones1Res", sBones1 );
SetLocalString( oThrall, "Bones2Res", sBones2 );
SetLocalString( oThrall, "SkullRes", sSkull );
SetLocalString( oThrall, "ClawsRes", sClaws );
SetLocalString( oThrall, "SpecialRes", sSpecial );
SendMessageToPC(oPC,"THRALLTYPE:"+sType);
SendMessageToPC(oPC,"THRALLBONES1:"+sBones1);
SendMessageToPC(oPC,"THRALLBONES2:"+sBones2);
SendMessageToPC(oPC,"THRALLSKULL :"+sSkull);
SendMessageToPC(oPC,"THRALLCLAWS :"+sClaws);
SendMessageToPC(oPC,"THRALLSPECL :"+sSpecial);
}
}
// Check and enforce the ban state of the PC!
int EnforceBan( object oPC )
{
string sCDKey = GetPCPublicCDKey( oPC );
int nBan = GetCampaignInt( "KRYNN", sCDKey, oPC );
if( nBan == 3 ) { BootPC( oPC ); return 1; }
// NOT banned
return 0;
}
/*******************************************************************************
GETS THE NUMBER OF PLAYERS CURRENTLY PLAYING THE MODULE.
IF THE PLAYER LOGGING ON IS NOT A DM, ME, OR THE WIFE THEN
INCREMENT THE NUMBER OF PLAYERS PLAYING BY ONE, AND SAVE
THE NEW VALUE IN THE MODULE, RETURNING THE # OF PLAYERS.
*/
int ExamineNumPlayers( object oPC )
{
if( GetIsDM( oPC ) ) return 0;
if( GetPCPublicCDKey( oPC ) == STOMKINCD ) return 0;
if( GetPCPublicCDKey( oPC ) == SCHIBICD ) return 0;
int nPlayers = 0;
string sCDKey;
string sName;
oPC = GetFirstPC();
while( oPC != OBJECT_INVALID )
{
nPlayers++;
sCDKey = GetPCPublicCDKey( oPC );
if(
GetIsDM( oPC ) ||
sCDKey == STOMKINCD ||
sCDKey == SCHIBICD
)
{
nPlayers--;
}
oPC = GetNextPC();
}
return nPlayers;
}
//******************************************************************************
void LogEntry( object oPC )
{
string sPrint = "Entering Player: " + GetName( oPC ) + " | " + GetPCPlayerName( oPC ) + " | IP: "
+ GetPCIPAddress(oPC);
// Tell all the DMs that someone is logging on!
SendMessageToAllDMs( sPrint );
// Now add CDKey information and log it to the logfile.
sPrint = sPrint + " | CDKey: " + GetPCPublicCDKey( oPC );
sPrint = sPrint + " | TIME: " + IntToString( GetTimeHour() )
+ ":" + IntToString( GetTimeMinute() ) + ":"
+ IntToString( GetTimeSecond() );
string sPrint2 = "Player Info: " + GetName( oPC ) + " | " + GetPCPlayerName( oPC ) + " | "
+ GetClass( oPC ) + " | " + IntToString( GetHitDice( oPC ) ) + " | " + GetRace( oPC );
WriteTimestampedLogEntry( sPrint );
WriteTimestampedLogEntry( sPrint2 );
}
string GetClass( object oPC )
{
int i;
int nClass = 0;
int nSLen = 0;
string sClass = "";
string sCDKey = GetPCPublicCDKey( oPC );
for( i = 0; i < 4; i++ )
{
nClass = GetClassByPosition(i, oPC);
switch( nClass )
{
case CLASS_TYPE_ARCANE_ARCHER: sClass = sClass + "/Arcane Archer"; break;
case CLASS_TYPE_ASSASSIN: sClass = sClass + "/Assassin"; break;
case CLASS_TYPE_BARBARIAN: sClass = sClass + "/Barbarian"; break;
case CLASS_TYPE_BARD: sClass = sClass + "/Bard"; break;
case CLASS_TYPE_BLACKGUARD: sClass = sClass + "/Blackguard"; break;
case CLASS_TYPE_CLERIC: sClass = sClass + "/Cleric"; break;
case CLASS_TYPE_DIVINECHAMPION: sClass = sClass + "/Divine Champion"; break;
case CLASS_TYPE_DRAGONDISCIPLE: sClass = sClass + "/Dragon Disciple"; break;
case CLASS_TYPE_DWARVENDEFENDER: sClass = sClass + "/Dwarven Defender"; break;
case CLASS_TYPE_DRUID: sClass = sClass + "/Druid"; break;
case CLASS_TYPE_FIGHTER: sClass = sClass + "/Fighter"; break;
case CLASS_TYPE_HARPER: sClass = sClass + "/Harper"; break;
case CLASS_TYPE_MONK: sClass = sClass + "/Monk"; break;
case CLASS_TYPE_PALADIN: sClass = sClass + "/Paladin"; break;
case CLASS_TYPE_PALEMASTER: sClass = sClass + "/Pale Master"; break;
case CLASS_TYPE_RANGER: sClass = sClass + "/Ranger"; break;
case CLASS_TYPE_ROGUE: sClass = sClass + "/Rogue"; break;
case CLASS_TYPE_SHADOWDANCER: sClass = sClass + "/Shadow Dancer"; break;
case CLASS_TYPE_SHIFTER: sClass = sClass + "/Shifter"; break;
case CLASS_TYPE_SORCERER: sClass = sClass + "/Sorcerer"; break;
case CLASS_TYPE_WEAPON_MASTER: sClass = sClass + "/Weapon Master"; break;
case CLASS_TYPE_WIZARD: sClass = sClass + "/Wizard"; break;
default: break;
}
}
nSLen = GetStringLength( sClass );
nSLen--;
sClass = GetSubString(sClass, 1, nSLen);
return sClass;
}
string GetRace( object oPC )
{
string sRace = "";
sRace = GetSubRace( oPC );
if( sRace != "" ) return sRace;
if( GetRacialType( oPC ) == RACIAL_TYPE_DWARF ) return "Dwarf";
if( GetRacialType( oPC ) == RACIAL_TYPE_ELF ) return "Elf";
if( GetRacialType( oPC ) == RACIAL_TYPE_GNOME ) return "Gnome";
if( GetRacialType( oPC ) == RACIAL_TYPE_HALFELF ) return "Half-Elf";
if( GetRacialType( oPC ) == RACIAL_TYPE_HALFLING ) return "Kender";
if( GetRacialType( oPC ) == RACIAL_TYPE_HALFORC ) return "Half-Orc";
if( GetRacialType( oPC ) == RACIAL_TYPE_HUMAN ) return "Human";
return "Invalid";
}
/*******************************************************************************
MAIN ROUTINE BEGINS...
*/
void main()
{
object oPC = GetEnteringObject();
if( !GetIsPC( oPC ) ) return;
// Check the ban on the PC
// 0 = not banned
// 1 = banned!
if( EnforceBan( oPC ) == 1 ) return;
//***** DM RESERVE SCRIPT! *************************************************
//Check to make sure that the maximum number of players has not been reached.
//
int nPlayers = ExamineNumPlayers( oPC );
if( nPlayers > 25 )
{
//All players will get autobooted.. DMs proceed
DelayCommand( 4.0f, FloatingTextStringOnCreature( "Server limit reached, remaining slots for DMs only, auto-booting.", oPC, FALSE ) );
DelayCommand( 7.0f, FloatingTextStringOnCreature( "Server limit reached, remaining slots for DMs only, auto-booting.", oPC, FALSE ) );
DelayCommand( 15.0f, BootPC( oPC ) );
return;
}
//**** END OF RESERVE SCRIPT ***********************************************
// Begin PC processing
SetLocalInt( oPC, "ENTERCHK", 0 );
// Log and announce player entry.
LogEntry( oPC );
// Set the players recall point...also changed in OnAquireItem.
SetRecall( oPC );
// Clean the PC of contraband
CleanPC( oPC );
// Grant them any "module" items they do not have already
GrantItems( oPC );
//Last thing that we do is look for the death token from the player...
// *MOVED TO _START_ONENTER AS WELL
if( GetTag( GetArea( oPC ) ) != "START" )
{
object oToken = GetItemPossessedBy( oPC, "DeathToken" );
if( GetIsObjectValid( oToken ) )
{
//the entering player has a token.. kill them!
effect eDie = EffectDeath( TRUE, TRUE );
FloatingTextStringOnCreature( "The Gods are displeased with you!", oPC, FALSE );
AssignCommand( oPC, ClearAllActions() ); // Clears all actions of the PC
DelayCommand( 0.2f, SetCommandable( FALSE, oPC ) );
DelayCommand( 3.0f, ApplyEffectToObject(DURATION_TYPE_INSTANT, eDie, oPC ) );
DelayCommand( 4.0f, SetCommandable( TRUE, oPC ) );
}
}
//Optional --- Support for NWNX added for Shayan's Subraces. (Remember to setup and import the neccessary files
// for NWNX. The scripts are not included in the Subraces package).
//ExecuteScript("aps_onload", GetModule());
//--End NWNX
//----Modification for Shayan's Subrace Engine
DelayCommand(2.0, ExecuteScript("sha_on_modload", GetModule()));
//----End Modification.
// Look at the PC and determine of they have an associate saved!
CheckForAssociates( oPC );
// End of PC processing
SetLocalInt( oPC, "ENTERCHK", 1 );
}
#include "x2_inc_switches"
#include "x2_inc_restsys"
void main()
{
SetModuleOverrideSpellscript( "02_rokspellhook" );
//----Modification for Shayan's Subrace Engine
DelayCommand(2.0, ExecuteScript("sha_on_modload", GetModule()));
//----End Modification.
// Tells the module use tag based scripts for item activate events.
SetModuleSwitch( MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS, TRUE );
// Tells the module to use the random monster encounter on the rest system
SetModuleSwitch( MODULE_SWITCH_USE_XP2_RESTSYSTEM, TRUE );
// Use a different 2da for the wandering monster system.
// SetWanderingMonster2DAFile("des_restsystem");
WMBuild2DACache();
// Make rogues do a UMD skill check when using scrolls
SetModuleSwitch( MODULE_SWITCH_ENABLE_UMD_SCROLLS, TRUE );
// Make epic spells hurt their caster, if required
SetModuleSwitch( MODULE_SWITCH_EPIC_SPELLS_HURT_CASTER, TRUE );
// Prevent spellcaster's abusing expertise to raise their AC, drops
// expertise whenever a spell is cast by a player
SetModuleSwitch( MODULE_VAR_AI_STOP_EXPERTISE_ABUSE, TRUE );
// Make creatures use mobile animations after they spawn.
SetModuleSwitch( CREATURE_VAR_USE_SPAWN_AMBIENT, TRUE );
// Hurt neutral NPCs
SetModuleSwitch( MODULE_SWITCH_AOE_HURT_NEUTRAL_NPCS, TRUE );
}
Speaking of Kanrei, have you seen your mom anywhere?No sorry every one I sadly lost contact with mom after my last return about a year ago I know only as much as you mabye less because I did not play guildwars with her.
Now I want bus to come say hi! I saw a person on PSN named busdriver27. I almost asked him if he was a crazy New Zealander that loves playing terrible strength builds on NWN but was afraid I might get bit....... you should have done it anyways where is the spirit of the spire were supose to dive in head first and take the beating and give it right back