Further file organization
Further file organization
This commit is contained in:
158
nwn/nwnprc/trunk/scripts/prc_onenter_cd.nss
Normal file
158
nwn/nwnprc/trunk/scripts/prc_onenter_cd.nss
Normal file
@@ -0,0 +1,158 @@
|
||||
#include "x2_inc_switches"
|
||||
#include "prc_inc_switch"
|
||||
#include "inc_sql"
|
||||
#include "inc_debug"
|
||||
|
||||
int VerifyPlayernameAgainstCDKey(object oPlayer)
|
||||
{
|
||||
int nBoot = FALSE;
|
||||
string sPName = GetStringLowerCase(GetPCPlayerName(oPlayer));
|
||||
string sKey = GetPCPublicCDKey(oPlayer);
|
||||
|
||||
DoDebug("Running CD-check... Player name = "+sPName+" key = "+sKey);
|
||||
|
||||
if(GetPRCSwitch(PRC_USE_DATABASE))
|
||||
{
|
||||
DoDebug("Using MySQL or SQLite");
|
||||
|
||||
string sPlayer = ReplaceSingleChars(sPName, "'","~");
|
||||
string sStoredKey, sAddingKey;
|
||||
string sSQL = "SELECT val, tag FROM pwdata WHERE name='PlayernameKey_" + sPlayer + "'";
|
||||
PRC_SQLExecDirect(sSQL);
|
||||
|
||||
/* there's at least one key stored already */
|
||||
if (PRC_SQLFetch() == PRC_SQL_SUCCESS) {
|
||||
sStoredKey = PRC_SQLGetData(1);
|
||||
sAddingKey = PRC_SQLGetData(2);
|
||||
|
||||
/* they indicated that they wanted to add a key this login */
|
||||
if (sAddingKey == "Adding") {
|
||||
DoDebug("Adding new key to database");
|
||||
|
||||
/* their current key is not in the key string, add it unless at 7 keys already */
|
||||
if (FindSubString(sStoredKey, sKey) == -1) {
|
||||
int nKeyLength = GetStringLength(sStoredKey);
|
||||
|
||||
/* allow 7 keys max key-key-key-key-key-key-key 6 spacers + 7x8 keys = 62 */
|
||||
if (nKeyLength > 61) {
|
||||
nBoot = TRUE;
|
||||
|
||||
/* must mark as no longer adding */
|
||||
sSQL = "UPDATE pwdata SET tag='Set' WHERE name='PlayernameKey_" + sPlayer + "'";
|
||||
PRC_SQLExecDirect(sSQL);
|
||||
|
||||
/* add the key to the string */
|
||||
} else {
|
||||
sSQL =
|
||||
"UPDATE pwdata SET tag='Set',val='" + sStoredKey + "-" + sKey + "' WHERE name='PlayernameKey_" + sPlayer +
|
||||
"'";
|
||||
PRC_SQLExecDirect(sSQL);
|
||||
DelayCommand(25.0, FloatingTextStringOnCreature("New CD Key Successfully Added!", oPlayer, FALSE));
|
||||
}
|
||||
|
||||
/* let them know they already had this key in their string */
|
||||
} else {
|
||||
DelayCommand(25.0,
|
||||
FloatingTextStringOnCreature("CD Key Addition Failed! This key already listed for this account!", oPlayer,
|
||||
FALSE));
|
||||
|
||||
/* must mark as no longer adding */
|
||||
sSQL = "UPDATE pwdata SET tag='Set' WHERE name='PlayernameKey_" + sPlayer + "'";
|
||||
PRC_SQLExecDirect(sSQL);
|
||||
}
|
||||
|
||||
/* they are not adding, and the cd key doesnt match those listed - boot and log */
|
||||
} else if (FindSubString(sStoredKey, sKey) == -1) {
|
||||
string sReport = "INCORRECT CD KEY DETECTED! ID: " + sPName + "; Name: " +
|
||||
GetName(oPlayer) + "; CD Key: " + sKey + "; IP: " + GetPCIPAddress(oPlayer) ;
|
||||
|
||||
WriteTimestampedLogEntry(sReport);
|
||||
SendMessageToAllDMs(sReport);
|
||||
|
||||
nBoot = TRUE;
|
||||
DoDebug("Error - key doesn't match - BOOT PLAYER");
|
||||
|
||||
}
|
||||
/* new account, add the key */
|
||||
} else {
|
||||
sSQL = "INSERT INTO pwdata (val,name) VALUES" + "('" + sKey + "','PlayernameKey_" + sPlayer + "')";
|
||||
PRC_SQLExecDirect(sSQL);
|
||||
DoDebug("Player cd key added to database");
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
DoDebug("Using Bioware database");
|
||||
|
||||
string sNewKey, sAddingKey, sStoredKey = GetCampaignString("PlayernameKey", sPName);
|
||||
|
||||
/* there's at least one key stored already */
|
||||
|
||||
if (sStoredKey != "") {
|
||||
sAddingKey = GetStringLeft(sStoredKey, 3);
|
||||
sStoredKey = GetStringRight(sStoredKey, GetStringLength(sStoredKey) - 3);
|
||||
|
||||
/* they indicated that they wanted to add a key this login */
|
||||
|
||||
if (sAddingKey == "ADD") {
|
||||
DoDebug("Adding new key to database");
|
||||
/* their current key is not in the key string, add it unless at 7 keys already */
|
||||
if (FindSubString(sStoredKey, sKey) == -1) {
|
||||
int nKeyLength = GetStringLength(sStoredKey);
|
||||
|
||||
/* allow 7 keys max SET-key-key-key-key-key-key-key SET/ADD + 7 spacers + 7x8 keys = 66 */
|
||||
if (nKeyLength > 65) {
|
||||
nBoot = TRUE;
|
||||
|
||||
/* must mark as no longer adding */
|
||||
SetCampaignString("PlayernameKey", sPName, "SET" + sStoredKey);
|
||||
|
||||
/* add the key to the string */
|
||||
} else {
|
||||
sNewKey = "SET" + sStoredKey + "-" + sKey;
|
||||
SetCampaignString("PlayernameKey", sPName, sNewKey);
|
||||
DelayCommand(25.0, FloatingTextStringOnCreature("New CD Key Successfully Added!", oPlayer, FALSE));
|
||||
}
|
||||
|
||||
/* let them know they already had this key in their string */
|
||||
} else {
|
||||
DelayCommand(25.0,
|
||||
FloatingTextStringOnCreature("CD Key Addition Failed! This key already listed for this account!", oPlayer,
|
||||
FALSE));
|
||||
|
||||
/* must mark as no longer adding */
|
||||
SetCampaignString("PlayernameKey", sPName, "SET" + sStoredKey);
|
||||
}
|
||||
|
||||
/* they are not adding, and the cd key doesnt match those listed - boot and log */
|
||||
} else if (FindSubString(sStoredKey, sKey) == -1) {
|
||||
string sReport = "INCORRECT CD KEY DETECTED! ID: " + sPName + "; Name: " +
|
||||
GetName(oPlayer) + "; CD Key: " + sKey + "; IP: " + GetPCIPAddress(oPlayer);
|
||||
|
||||
WriteTimestampedLogEntry(sReport);
|
||||
SendMessageToAllDMs(sReport);
|
||||
nBoot = TRUE;
|
||||
DoDebug("Error - key doesn't match - BOOT PLAYER");
|
||||
|
||||
}
|
||||
/* new account, add the key */
|
||||
} else {
|
||||
DoDebug("Player cd key added to database");
|
||||
SetCampaignString("PlayernameKey", sPName, "SET-" + sKey);
|
||||
}
|
||||
}
|
||||
return nBoot;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
object oPC=OBJECT_SELF;
|
||||
if(VerifyPlayernameAgainstCDKey(oPC))
|
||||
{
|
||||
SetExecutedScriptReturnValue(X2_EXECUTE_SCRIPT_END);
|
||||
if (GetIsObjectValid(oPC))
|
||||
BootPC(oPC);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user