291 lines
9.8 KiB
Plaintext
291 lines
9.8 KiB
Plaintext
//Script Name: oncliententer
|
|
////////////////////////////////////////
|
|
//Created by Genisys / Guile
|
|
//Created On: 6/14/08 (Updated 8/10/08)
|
|
////////////////////////////////////////
|
|
/*
|
|
This my premier OnClientEnter Module Event Script for all my modules
|
|
(click edit / module properties to select this script for the event)
|
|
|
|
*/
|
|
/////////////////////////////////////////////////////////////////
|
|
/*
|
|
This script does multiple things, it checks to see if...
|
|
If the PC is immortal or level 40 (apply special effects)
|
|
If the character they have has been banned. (not a total bann)
|
|
If they logged out while dead, if so make them dead instantly!!! ;)
|
|
If the player is playing a legal character or not...read below..
|
|
And if the Player themself have been banned from the module or not..
|
|
*/
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
//Redundant Variables Declared
|
|
effect eEffect;
|
|
int nInt;
|
|
object oItem;
|
|
object aTarget;
|
|
location bTarget;
|
|
|
|
#include "x3_inc_horse"
|
|
|
|
//Required Include For Color Messages(Read include to learn more)
|
|
//#include "gen_inc_color"
|
|
#include "inc_utility"
|
|
|
|
//PROTOTYPE DECLARED
|
|
void SendMessageToAllPC(string sMessage);
|
|
|
|
//Main Script
|
|
void main()
|
|
{
|
|
|
|
|
|
//Declare Major Variables..
|
|
object oPC;
|
|
oPC = GetEnteringObject();
|
|
object oTarget;
|
|
oTarget = oPC;
|
|
object oPlayer = oPC;
|
|
object oPP = oPC;
|
|
string sCDKey = GetPCPublicCDKey(oPC, FALSE);
|
|
|
|
AddJournalQuestEntry("xprules", 1, oPC, FALSE, FALSE, FALSE);
|
|
AddJournalQuestEntry("lvl_adj", 1, oPC, FALSE, FALSE, FALSE);
|
|
AddJournalQuestEntry("JRNL_PRC8", 1, oPC, FALSE, FALSE, FALSE);
|
|
|
|
//Only for PCs!
|
|
if(GetIsDM(oPC))
|
|
{
|
|
AddJournalQuestEntry("dmrules", 1, oPC, FALSE, FALSE);
|
|
|
|
return;
|
|
}
|
|
|
|
//If changed here you must open the script "kopcwand" and adjust it there!
|
|
object oNap = GetItemPossessedBy(oPC, "napper");
|
|
if(oNap !=OBJECT_INVALID)
|
|
{
|
|
//Only on PCs!
|
|
if(GetIsPC(oPC) && !GetIsDM(oPC) && !GetIsDMPossessed(oPC))
|
|
{
|
|
//Start the nap all over again! (the 15 = minutes of nap!)
|
|
SetLocalInt(oTarget, "NAP_TIME", 15); //set 15 to your taste
|
|
//Allow them to actually enter the module...
|
|
DelayCommand(12.0, ExecuteScript("naptime", oPC));
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Higher Ground's Legendary leveler
|
|
string Script = GetLocalString(oPC, "LetoScript");
|
|
if( Script != "" )
|
|
{
|
|
SetLocalString(oPC, "LetoScript", "");
|
|
}
|
|
|
|
//Please leave the credits to the module within the message.
|
|
|
|
//Colorful Server Message sent to all PCs when they enter the module..
|
|
string sMessage;
|
|
sMessage = PRCGetRGB(1,7,7); //The color (See above)
|
|
sMessage += "Welcome "; //The text to be colorized by the above color.
|
|
sMessage += PRCGetRGB(15,15,1);//The next color.
|
|
sMessage += "to "; //The next text to be colorized by the above color.
|
|
sMessage += PRCGetRGB(15,1,1);//etc..
|
|
sMessage += "the ";
|
|
sMessage += PRCGetRGB(7,7,15);
|
|
sMessage += "CEP 2.1 ";
|
|
sMessage += PRCGetRGB(1,15,1);
|
|
sMessage += "UNDERWORLD ";
|
|
sMessage += PRCGetRGB(13,9,13);
|
|
sMessage += "Created ";
|
|
sMessage += PRCGetRGB(12,10,7);
|
|
sMessage += "Designed & ";
|
|
sMessage += PRCGetRGB();
|
|
sMessage += "Scripted by: ";
|
|
sMessage += PRCGetRGB(15,5,1);
|
|
sMessage += "Genisys (Guile) ";
|
|
sMessage += PRCGetRGB(12,10,7);
|
|
sMessage += "from 3/20/07 to 8/29/10.";
|
|
|
|
string sNewb = PRCGetRGB(1,15,1) + "Be sure to read your journal frequently (press J).";
|
|
string sNewb2 = PRCGetRGB(1,15,1) + "Be sure to examine the Rest Menu carefully.";
|
|
|
|
string sEnter = GetName(oPC) + " / " + GetPCPlayerName(oPC) + " / " + GetPCPublicCDKey(oPC) + " / " + GetPCIPAddress(oPC) + " Entered." ;
|
|
SendMessageToAllDMs(sEnter);
|
|
|
|
string sEnter2 = PRCGetRGB(15,5,1) + GetName(oPC) + " / " + GetPCPlayerName(oPC) + " / " + GetPCPublicCDKey(oPC) + " / " + GetPCIPAddress(oPC) + "Has Entered." ;
|
|
SendMessageToAllPC(sEnter2);
|
|
|
|
AssignCommand(oPC, ActionSpeakString("Greetings everyone!", TALKVOLUME_SHOUT));
|
|
|
|
//Float welcome message by..
|
|
DelayCommand(14.3, FloatingTextStringOnCreature(sMessage, oPC, FALSE));
|
|
|
|
if(GetHitDice(oPC)<=6)
|
|
{
|
|
DelayCommand(17.3, FloatingTextStringOnCreature(sNewb, oPC, FALSE));
|
|
DelayCommand(27.3, FloatingTextStringOnCreature(sNewb2, oPC, FALSE));
|
|
}
|
|
|
|
|
|
object oTag;
|
|
location lTag;
|
|
|
|
//This part is about verifying the Player's name..
|
|
//A player must have at least a 2 character name or they are going to
|
|
//return with an error! If they have spaces in their name it will return
|
|
//with an error as well, including alt code!
|
|
string sPCNM = GetName(oPP);
|
|
string sPCNMR = GetStringRight(sPCNM, 2);
|
|
string sNC1; string sNC2; string sRNC1; string sRNC2;
|
|
int nBad;
|
|
|
|
//Find the second character of the players name..
|
|
sNC1 = GetSubString(sPCNM, 0, 1);
|
|
//Find the second character of the players name..
|
|
sNC2 = GetSubString(sPCNM, 0, 2);
|
|
//Find the last letter in the player's name.
|
|
sRNC1 = GetSubString(sPCNMR, 0, 1);
|
|
//Find the next to the last letter in the player's name.
|
|
sRNC2 = GetSubString(sPCNMR, 0, 2);
|
|
|
|
/////////////////////////IMPORTANT//////////////////////////////////
|
|
//You must make all the "" below into " " to check for legal names
|
|
//I turned it off because a lot of my characters have bad names!
|
|
//Simply put the cursor between "" and hit the space bar for "" to " "
|
|
if(sNC1 =="")
|
|
{ nBad =1; }
|
|
else if(sNC2 =="")
|
|
{ nBad =1; }
|
|
else if(sRNC1 =="")
|
|
{ nBad =1; }
|
|
else if(sRNC2 =="")
|
|
{ nBad =1; }
|
|
else { nBad = 0; }
|
|
|
|
//See below to activate this system..
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
//This is for the rest of the script, if it's not a PC stop here!
|
|
if(!GetIsPC(oPC))return;
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
//These function add journal entries by the tag names below
|
|
//If you wish to create more, just copy / paste and change
|
|
//The tagname which is in "here", and the entry # remains 1 only!
|
|
|
|
//AddJournalQuestEntry("here", 1, oPC, FALSE, FALSE);
|
|
|
|
AddJournalQuestEntry("important", 1, oPC, FALSE, FALSE);
|
|
AddJournalQuestEntry("sockets", 1, oPC, FALSE, FALSE);
|
|
AddJournalQuestEntry("requirements", 1, oPC, FALSE, FALSE);
|
|
AddJournalQuestEntry("legendarylevels", 1, oPC, FALSE, FALSE);
|
|
AddJournalQuestEntry("godlevels", 1, oPC, FALSE, FALSE);
|
|
AddJournalQuestEntry("specialitems", 1, oPC, FALSE, FALSE);
|
|
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
//If level 40 lets do some cool stuff to them :) (optional of course)
|
|
//If you do not wish to use this options you will need to delete the // below
|
|
// /* <<(don't touch this part)
|
|
|
|
if(GetHitDice(oPC) == 40 || GetItemPossessedBy(oPC, "gen_token")!=OBJECT_INVALID)
|
|
{
|
|
//Lets make the concealed 40%
|
|
eEffect = EffectConcealment(40);
|
|
eEffect = SupernaturalEffect(eEffect);
|
|
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect, oPC);
|
|
|
|
//Lets make the look like a ghost.. :)
|
|
//To activate, simply delete the // below this line
|
|
//ApplyEffectToObject(DURATION_TYPE_PERMANENT, SupernaturalEffect(EffectVisualEffect(VFX_DUR_GLOW_WHITE)), oPC);
|
|
|
|
}
|
|
|
|
// don't touch this line */
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
//This is the immortal option, you must utilize the "makeimmortal" script
|
|
//to make players immortal (please read that script.)
|
|
if(GetItemPossessedBy(oPC, "immotoken") != OBJECT_INVALID)
|
|
{
|
|
//Run this script on the player (See script to configure settings)
|
|
ExecuteScript("powerimmortal", oPC);
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
//If a player has been found with an illegal character they will have this item.
|
|
//It will prevent them from logging onto your server with that character.
|
|
//Note this will only work if you have activated the Anti-Cheat option above!
|
|
if (GetItemPossessedBy(oPC, "banned")!= OBJECT_INVALID)
|
|
{
|
|
AssignCommand(oPC, ClearAllActions());
|
|
|
|
SetCutsceneMode(oPC, TRUE);
|
|
|
|
SetCameraMode(oPC, CAMERA_MODE_CHASE_CAMERA);
|
|
|
|
DelayCommand(4.0, FloatingTextStringOnCreature("You have an illegal character which is not allowed on this server.", oPC));
|
|
|
|
DelayCommand(5.0, SetCutsceneMode(oPC, FALSE));
|
|
|
|
DelayCommand(6.0, BootPC(oPC));
|
|
|
|
}
|
|
// */
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
//Since the player was dead when they logged, kill them!
|
|
if (GetItemPossessedBy(oPC, "death") != OBJECT_INVALID)
|
|
{
|
|
effect eEffect;
|
|
eEffect = EffectDamage(999, DAMAGE_TYPE_POSITIVE, DAMAGE_POWER_ENERGY);
|
|
eEffect = SupernaturalEffect(eEffect);
|
|
DelayCommand(5.8, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC));
|
|
DelayCommand(5.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eEffect, oPC));
|
|
SendMessageToPC(oPC, "You died because you were dead when you logged out.");
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////////
|
|
//Bioware Scripting For Handing Horses
|
|
/*
|
|
ExecuteScript("x3_mod_pre_enter",OBJECT_SELF); // Override for other skin systems
|
|
|
|
if ((GetIsPC(oPC)||GetIsDM(oPC))&&!GetHasFeat(FEAT_HORSE_MENU,oPC))
|
|
{ // add horse menu
|
|
HorseAddHorseMenu(oPC);
|
|
if (GetLocalInt(GetModule(),"X3_ENABLE_MOUNT_DB"))
|
|
{ // restore PC horse status from database
|
|
DelayCommand(2.0,HorseReloadFromDatabase(oPC,X3_HORSE_DATABASE));
|
|
} // restore PC horse status from database
|
|
} // add horse menu
|
|
if (GetIsPC(oPC))
|
|
{ // more details
|
|
// restore appearance in case you export your character in mounted form, etc.
|
|
if (!GetSkinInt(oPC,"bX3_IS_MOUNTED")) HorseIfNotDefaultAppearanceChange(oPC);
|
|
// pre-cache horse animations for player as attaching a tail to the model
|
|
HorsePreloadAnimations(oPC);
|
|
DelayCommand(3.0,HorseRestoreHenchmenLocations(oPC));
|
|
} // more details
|
|
*/
|
|
//////////////////////////////////////////////////////////////////
|
|
|
|
//End Script
|
|
}
|
|
|
|
|
|
//PROTOTYPE DEFINED
|
|
void SendMessageToAllPC(string sMessage)
|
|
{
|
|
object oPC = GetFirstPC();
|
|
while(GetIsObjectValid(oPC))
|
|
{
|
|
FloatingTextStringOnCreature(sMessage, oPC);
|
|
oPC = GetNextPC();
|
|
}
|
|
}
|