Initial upload
Initial upload.
This commit is contained in:
219
_module/nss/inc_gsystem_evnt.nss
Normal file
219
_module/nss/inc_gsystem_evnt.nss
Normal file
@@ -0,0 +1,219 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: Name: inc_gsystem_evnt
|
||||
//:: Copyright (c) 2001 Bioware Corp.
|
||||
//:://////////////////////////////////////////////
|
||||
/*
|
||||
Include script to handle all module event-
|
||||
related functions for the Player Guild System.
|
||||
|
||||
This was created to simplify the installation
|
||||
process.
|
||||
*/
|
||||
//:://////////////////////////////////////////////
|
||||
//:: Created By: Samius Maximus
|
||||
//:: Created On:
|
||||
//:://////////////////////////////////////////////
|
||||
#include "inc_gsystem"
|
||||
|
||||
void PGSModuleLoadEvent()
|
||||
{
|
||||
object oMod = GetModule();
|
||||
|
||||
//--------------------------------------------
|
||||
//Set PGS version number and date.
|
||||
//--------------------------------------------
|
||||
SetModulePGSBuildNumber ("3.4a");
|
||||
SetModulePGSBuildDate ("3/10/04");
|
||||
|
||||
if (!PGS_ENABLE_PERSISTENT_TIME) /*Check to load/create persistent time.*/
|
||||
return;
|
||||
|
||||
//--------------------------------------------
|
||||
//Save variables for future use with the PGS.
|
||||
//--------------------------------------------
|
||||
SetLocalInt (oMod, "PGS_Current_Day", GetCalendarDay());
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Current_Month", GetCalendarMonth(), oMod);
|
||||
|
||||
//--------------------------------------------
|
||||
//Load persistent time - create DB if needed.
|
||||
//--------------------------------------------
|
||||
if (GetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Has_Time_Been_Configured", oMod))
|
||||
{
|
||||
//--------------------------------------------
|
||||
//Set persistent calendar day, and time.
|
||||
//--------------------------------------------
|
||||
SetCalendar (GetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME,
|
||||
"Module_Year", oMod), GetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME,
|
||||
"Module_Month", oMod), GetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME,
|
||||
"Module_Day", oMod));
|
||||
SetTime (GetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME,
|
||||
"Module_Hour", oMod), 0, 0, 0);
|
||||
}
|
||||
else /*Create a new database for persistent time.*/
|
||||
{
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Module_Year",
|
||||
GetCalendarYear(), oMod);
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Module_Month",
|
||||
GetCalendarMonth(), oMod);
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Module_Day",
|
||||
GetCalendarDay(), oMod);
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Module_Hour",
|
||||
GetTimeHour(), oMod);
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME,
|
||||
"Has_Time_Been_Configured", TRUE, oMod);
|
||||
}
|
||||
}
|
||||
|
||||
void PGSModuleClientEnterEvent()
|
||||
{
|
||||
object oPlayer = GetEnteringObject();
|
||||
int iGuild = GetPlayerGuildNumber (oPlayer);
|
||||
|
||||
if (GetIsDM (oPlayer))
|
||||
{
|
||||
if (!GetIsObjectValid (GetItemPossessedBy (oPlayer, "GuildJournal")))
|
||||
CreateItemOnObject ("guildjournal", oPlayer);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//------------------------------------------------
|
||||
//Check if player is to recieve a "Guild Journal".
|
||||
//------------------------------------------------
|
||||
if ((PGS_GIVE_GUILD_JOURNAL_ON_ENTER) && (!GetIsObjectValid (GetItemPossessedBy (oPlayer, "GuildJournal"))))
|
||||
CreateItemOnObject ("guildjournal", oPlayer);
|
||||
|
||||
//------------------------------------------------
|
||||
//Initialize player settings if has not been done.
|
||||
//------------------------------------------------
|
||||
if (!GetCampaignInt (PGS_PLAYER_DATABASE_FILENAME, "Player_Initialized", oPlayer))
|
||||
{
|
||||
//------------------------------------------------
|
||||
//Inform player of current PGS status.
|
||||
//------------------------------------------------
|
||||
SendMessageToPC (oPlayer, "Initializing 'Player Guild System' settings " +
|
||||
"for your character. These can be changed by using the 'Guild " +
|
||||
"Journal' on yourself.");
|
||||
|
||||
//------------------------------------------------
|
||||
//Initialize player PGS settings...
|
||||
//------------------------------------------------
|
||||
SetPlayerSettingValue (oPlayer, "Ally_Chat", TRUE);
|
||||
SetPlayerSettingValue (oPlayer, "Guild_Chat", TRUE);
|
||||
SetPlayerSettingValue (oPlayer, "Invitations", TRUE);
|
||||
SetPlayerSettingValue (oPlayer, "List_Filtering", TRUE);
|
||||
SetPlayerSettingValue (oPlayer, "Faction_Offers", TRUE);
|
||||
|
||||
//------------------------------------------------
|
||||
//Player has been initialized - only done once.
|
||||
//------------------------------------------------
|
||||
SetCampaignInt (PGS_PLAYER_DATABASE_FILENAME, "Player_Initialized",
|
||||
TRUE, oPlayer);
|
||||
}
|
||||
|
||||
if (iGuild != 0) /*Check if player is in a guild.*/
|
||||
{
|
||||
if (GetModuleGuildName (iGuild) != GetPlayerGuildName (oPlayer))
|
||||
{
|
||||
//------------------------------------------------
|
||||
//Remove player from guild, and explain why.
|
||||
//------------------------------------------------
|
||||
RemoveGuildDataFromPlayer (oPlayer);
|
||||
SendMessageToPC (oPlayer, "You've been removed from your guild, " +
|
||||
"as it no longer exists.");
|
||||
return;
|
||||
}
|
||||
|
||||
string sMessage = GetModuleGuildTitle (iGuild, 1);
|
||||
int iGuildColor = GetModuleGuildColor (iGuild);
|
||||
|
||||
//----------------------------------------------------
|
||||
//Check if to display newest message - and if valid.
|
||||
//----------------------------------------------------
|
||||
if ((PGS_DISPLAY_GUILD_MESSAGE_ON_ENTER) && (sMessage != ""))
|
||||
SendMessageToPC (oPlayer, "Newest guild message: " + sMessage);
|
||||
|
||||
//------------------------------------------------
|
||||
//Apply guild color effect to the member.
|
||||
//------------------------------------------------
|
||||
if (iGuildColor != 0)
|
||||
ApplyEffectToObject (DURATION_TYPE_PERMANENT, EffectVisualEffect
|
||||
(iGuildColor), oPlayer);
|
||||
|
||||
//------------------------------------------------
|
||||
//Store player guild info via local variables.
|
||||
// This will minimize the # of DB calls.
|
||||
//------------------------------------------------
|
||||
SetLocalInt (oPlayer, "Player_Guild_Number", iGuild);
|
||||
SetLocalInt (oPlayer, "Player_Guild_Rank", GetPlayerGuildRank (oPlayer));
|
||||
|
||||
SetPlayerGuildFactionToAll (oPlayer); /*Set player guild factions.*/
|
||||
}
|
||||
}
|
||||
|
||||
void PGSModuleHeartbeatEvent()
|
||||
{
|
||||
if (PGS_ENABLE_PERSISTENT_TIME == FALSE) /*Persistent time enabled?*/
|
||||
return;
|
||||
|
||||
object oMod = GetModule();
|
||||
int iCurrentDay = GetCalendarDay();
|
||||
|
||||
if (GetLocalInt (oMod, "PGS_Current_Day") == iCurrentDay)
|
||||
return; /*Same day, do nothing.*/
|
||||
|
||||
int iCurrentMonth = GetCalendarMonth();
|
||||
SetLocalInt (oMod, "PGS_Current_Day", iCurrentDay); /*Update variable.*/
|
||||
|
||||
//--------------------------------------------
|
||||
//New day - save persistent time variables.
|
||||
//--------------------------------------------
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Module_Year", GetCalendarYear(), oMod);
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Module_Month", iCurrentMonth, oMod);
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Module_Day", iCurrentDay, oMod);
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Module_Hour", GetTimeHour(), oMod);
|
||||
|
||||
//--------------------------------------------
|
||||
//Check if time to apply guild account interest.
|
||||
//--------------------------------------------
|
||||
if (GetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Current_Month", oMod) == iCurrentMonth)
|
||||
return;
|
||||
|
||||
//--------------------------------------------
|
||||
//Update month guild interest was applied.
|
||||
//--------------------------------------------
|
||||
SetCampaignInt (PGS_PERSISTENT_TIME_DATABASE_FILENAME, "Current_Month",
|
||||
iCurrentMonth, oMod);
|
||||
|
||||
int iCount = 1;
|
||||
int iAccount = 0;
|
||||
int iExperience = 0;
|
||||
int iMaxGuild = GetModuleMaxGuildNumber();
|
||||
|
||||
//--------------------------------------------
|
||||
//Loop through accounts - apply gold.
|
||||
//--------------------------------------------
|
||||
for (; iCount <= iMaxGuild; iCount++)
|
||||
if (GetModuleGuildName (iCount) != "") /*Check if guild is valid.*/
|
||||
{
|
||||
iExperience = GetModuleGuildMemberCount (iCount) * PGS_XP_AWARD_PER_GUILD_MEMBER;
|
||||
|
||||
//--------------------------------------------
|
||||
//Add territory, and interest bonus to account.
|
||||
//--------------------------------------------
|
||||
iAccount = GetModuleGuildAccountValue (iCount);
|
||||
iAccount = FloatToInt (iAccount * PGS_FLOAT_INTEREST_RATE);
|
||||
iAccount = iAccount + (GetGuildTerritoryCount (iCount) * PGS_TERRITORY_GOLD_VALUE);
|
||||
|
||||
//--------------------------------------------
|
||||
//Save updated guild information.
|
||||
//--------------------------------------------
|
||||
SetModuleGuildAccountValue (iCount, iAccount);
|
||||
|
||||
if (PGS_XP_AWARD_ROLLOVER) /*Check if XP rolls over.*/
|
||||
SetModuleGuildAwardableXP (iCount, GetModuleGuildAwardableXP
|
||||
(iCount) + iExperience);
|
||||
else
|
||||
SetModuleGuildAwardableXP (iCount, iExperience);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user