262 lines
11 KiB
Plaintext
262 lines
11 KiB
Plaintext
#include "ff_include"
|
|
|
|
void main()
|
|
{
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `global` ("+
|
|
"`VarName` varchar(64) NOT NULL default '',"+
|
|
"`Value` varchar(255) NOT NULL default '',"+
|
|
"PRIMARY KEY (`VarName`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `PCData` ("+
|
|
"`VarName` varchar(64) NOT NULL default '',"+
|
|
"`Id` smallint(5) unsigned NOT NULL,"+
|
|
"`Value` varchar(255) NOT NULL default '',"+
|
|
"PRIMARY KEY (`VarName`, `Id`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `areatransition` ("+
|
|
"`sTag` varchar(100) NOT NULL default '',"+
|
|
"`sName` varchar(100) NOT NULL default '',"+
|
|
"`iCount` int(11) NOT NULL default '0',"+
|
|
"PRIMARY KEY (`sTag`)"+
|
|
") TYPE=MyISAM;");
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `cdkeys` ("+
|
|
"`Player` char(64) NOT NULL default '',"+
|
|
"`Date` timestamp(14) NOT NULL,"+
|
|
"`Ban` tinyint(1) NOT NULL default '0',"+
|
|
"`CDKey` char(20) NOT NULL default '',"+
|
|
"PRIMARY KEY (`Player`,`CDKey`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
if (FF_USING_CNR)
|
|
{
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `cmd_misc` (" +
|
|
// "`player` VARCHAR(64) default NULL," +
|
|
// "`tag` VARCHAR(64) default NULL," +
|
|
"`VarName` VARCHAR(64) default NULL," +
|
|
"`Value` VARCHAR(64) default NULL," +
|
|
// "`expire` SMALLINT UNSIGNED default NULL," +
|
|
"`last` TIMESTAMP(14) NOT NULL," +
|
|
"PRIMARY KEY (`VarName`)" +
|
|
") TYPE=MyISAM" );
|
|
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `cpv_misc` (" +
|
|
// "`player` VARCHAR(64) default NULL," +
|
|
// "`tag` VARCHAR(64) default NULL," +
|
|
"`VarName` VARCHAR(64) default NULL," +
|
|
"`Value` VARCHAR(64) default NULL," +
|
|
// "`expire` SMALLINT UNSIGNED default NULL," +
|
|
"`last` TIMESTAMP(14) NOT NULL," +
|
|
"PRIMARY KEY (`VarName`)" +
|
|
") TYPE=MyISAM" );
|
|
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `cnr_components` ("+
|
|
"`sKeyToComponent` varchar(64) NOT NULL default '',"+
|
|
"`sTag` varchar(16) NOT NULL default '',"+
|
|
"`nQty` int(11) default '1',"+
|
|
"`nRetainQty` int(11) default '0',"+
|
|
"`sKeyToRecipe` varchar(64) NOT NULL default '',"+
|
|
"`sDeviceTag` varchar(16) NOT NULL default '',"+
|
|
"PRIMARY KEY (`sKeyToComponent`),"+
|
|
"KEY `sDeviceTag` (`sDeviceTag`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `cnr_devices` ("+
|
|
"`sDeviceTag` varchar(16) NOT NULL default '',"+
|
|
"`sAnimation` varchar(16) default NULL,"+
|
|
"`bSpawnInDevice` int(11) default '0',"+
|
|
"`sInvTool` varchar(16) default NULL,"+
|
|
"`sEqpTool` varchar(16) default NULL,"+
|
|
"`nTradeType` int(11) default '0',"+
|
|
"`fInvToolBP` float default '0',"+
|
|
"`fEqpToolBP` float default '0',"+
|
|
"PRIMARY KEY (`sDeviceTag`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `cnr_recipes` ("+
|
|
"`sKeyToRecipe` varchar(64) NOT NULL default '',"+
|
|
"`sDeviceTag` varchar(16) NOT NULL default '',"+
|
|
"`sDescription` varchar(64) NOT NULL default '',"+
|
|
"`sTag` varchar(16) NOT NULL default '',"+
|
|
"`nQty` int(11) default '1',"+
|
|
"`sKeyToParent` varchar(64) NOT NULL default '',"+
|
|
"`sFilter` varchar(32) default NULL,"+
|
|
"`nStr` int(11) default '0',"+
|
|
"`nDex` int(11) default '0',"+
|
|
"`nCon` int(11) default '0',"+
|
|
"`nInt` int(11) default '0',"+
|
|
"`nWis` int(11) default '0',"+
|
|
"`nCha` int(11) default '0',"+
|
|
"`nLevel` int(11) default '1',"+
|
|
"`nGameXP` int(11) default '0',"+
|
|
"`nTradeXP` int(11) default '0',"+
|
|
"`bScalarOverride` int(11) default '0',"+
|
|
"`sAnimation` varchar(16) default NULL,"+
|
|
"`sBiTag` varchar(16) default NULL,"+
|
|
"`nBiQty` int(11) default '0',"+
|
|
"`nOnFailBiQty` int(11) default '0',"+
|
|
"PRIMARY KEY (`sKeyToRecipe`),"+
|
|
"KEY `sDeviceTag` (`sDeviceTag`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `cnr_submenus` ("+
|
|
"`sKeyToMenu` varchar(64) NOT NULL default '',"+
|
|
"`sKeyToParent` varchar(64) NOT NULL default '',"+
|
|
"`sTitle` varchar(64) NOT NULL default '',"+
|
|
"`sDeviceTag` varchar(16) NOT NULL default '',"+
|
|
"PRIMARY KEY (`sKeyToMenu`),"+
|
|
"KEY `sDeviceTag` (`sDeviceTag`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("REPAIR TABLE cnr_components, cnr_devices, cnr_recipes, cnr_submenus, cmd_misc, cpv_misc");
|
|
SQLExecDirect("OPTIMIZE TABLE cnr_components, cnr_devices, cnr_recipes, cnr_submenus, cmd_misc, cpv_misc");
|
|
}
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `pwdata` ("+ // APS compatibility table
|
|
"`player` varchar(64) NOT NULL default '',"+
|
|
"`tag` varchar(64) NOT NULL default '',"+
|
|
"`name` varchar(64) NOT NULL default '',"+
|
|
"`val` varchar(64),"+
|
|
"`expire` smallint(5) unsigned default NULL,"+
|
|
"`last` timestamp(14) NOT NULL,"+
|
|
"PRIMARY KEY (`player`,`tag`,`name`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("ALTER TABLE `pwdata` DROP INDEX `idx`");
|
|
SQLExecDirect("ALTER TABLE `pwdata` ADD UNIQUE `idx` ( `player` , `tag` , `name` )");
|
|
|
|
|
|
SQLExecDirect("DROP TABLE IF EXISTS `deleted`");
|
|
|
|
SQLExecDirect("CREATE TEMPORARY TABLE IF NOT EXISTS `deleted` ("+
|
|
"`Id` smallint(5) unsigned NOT NULL default '0',"+
|
|
"PRIMARY KEY (`Id`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `idplayer` ("+
|
|
"`Player` char(64) NOT NULL default '',"+
|
|
"`Name` char(64) NOT NULL default '',"+
|
|
"`Creation` date NOT NULL default '0000-00-00',"+
|
|
"`Version` tinyint(4) NOT NULL default '1',"+
|
|
"`DM` tinyint(1) NOT NULL default '0',"+
|
|
"`Actif` tinyint(1) NOT NULL default '0',"+
|
|
"`DernierPassage` timestamp(14) NOT NULL,"+
|
|
"`Ban` tinyint(1) NOT NULL default '0',"+
|
|
"`Id` smallint(5) unsigned NOT NULL auto_increment,"+
|
|
"PRIMARY KEY (`Player`,`Name`),"+
|
|
"UNIQUE KEY `IdKey` (`Id`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `items` ("+
|
|
"`ResRef` char(16) NOT NULL default '',"+
|
|
"`Name` char(64) NOT NULL default '',"+
|
|
"`Tag` char(32) NOT NULL default '',"+
|
|
"`Plot` tinyint(1) NOT NULL default '0',"+
|
|
"`Stolen` tinyint(1) NOT NULL default '0',"+
|
|
"`StackSize` tinyint(3) unsigned NOT NULL default '0',"+
|
|
"`Cost` mediumint(9) NOT NULL default '0',"+
|
|
"`BaseItem` smallint(6) NOT NULL default '0',"+
|
|
"`Id` smallint(5) unsigned NOT NULL auto_increment,"+
|
|
"`Checked` tinyint(1) NOT NULL default '0',"+
|
|
"`AddCost` mediumint(9) NOT NULL default '0',"+
|
|
"PRIMARY KEY (`Cost`,`Checked`,`ResRef`),"+
|
|
"UNIQUE KEY `Id` (`Id`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `log` ("+
|
|
"`Id` smallint(5) unsigned NOT NULL default '0',"+
|
|
"`Date` timestamp(14) NOT NULL,"+
|
|
"`Categorie` varchar(40) default '(NULL)',"+
|
|
"`SubCategorie` varchar(40) default '(NULL)',"+
|
|
"`Texte` varchar(255) default '(NULL)'"+
|
|
") TYPE=MyISAM");
|
|
|
|
if (FF_USING_LOG_ACTIONS)
|
|
{
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `logactions` ("+
|
|
"`Id` smallint(6) NOT NULL default '0',"+
|
|
"`Action` enum('DESTROY','MESSAGE','DIALOG','DIALOG_BOOT','RUN','SQL','ANIM1','ANIM2','DM','ADMIN','CADEAU','OR','CREATE','MONSTER','ITEM') NOT NULL default 'DESTROY',"+
|
|
"`OnlyOnce` tinyint(1) NOT NULL default '1',"+
|
|
"`Date` datetime NOT NULL default '0000-00-00 00:00:00',"+
|
|
"`DelayFromLoad` double(7,2) NOT NULL default '12.00',"+
|
|
"`Value1` varchar(255) NOT NULL default '',"+
|
|
"`Value2` varchar(255) NOT NULL default '',"+
|
|
"PRIMARY KEY (`Id`)"+
|
|
") TYPE=MyISAM COMMENT='Id: Id player (0=OnModuleLoad, -1=AllPlayers)'");
|
|
SQLExecDirect("REPAIR TABLE logactions");
|
|
SQLExecDirect("OPTIMIZE TABLE logactions");
|
|
}
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `login` ("+
|
|
"`Id` smallint(5) unsigned NOT NULL default '0',"+
|
|
"`Event` enum('PC_IN','PC_OUT','DM_IN','DM_OUT','CONVERT','DEAD_IN','DEAD_OUT','STOP_SERVEUR','START_SERVEUR','START_MODULE','INVALIDE','EXPORT_CHARS') NOT NULL default 'INVALIDE',"+
|
|
"`Gold` int(11) default '-1',"+
|
|
"`xp` int(11) default '-1',"+
|
|
"`sKey` char(8) default '(NULL)',"+
|
|
"`IP` char(16) default '(NULL)',"+
|
|
"`Date` timestamp(14) NOT NULL,"+
|
|
"PRIMARY KEY (`Date`,`Event`,`Id`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
SQLExecDirect("DROP TABLE IF EXISTS nwn_speech");
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `PlayerData` ("+
|
|
"`Id` smallint(5) unsigned NOT NULL default '0',"+
|
|
"`Date` timestamp(14) NOT NULL,"+
|
|
"`Position` char(80) NOT NULL default '',"+
|
|
"`Time` int(11) NOT NULL default '0',"+
|
|
"`Damage` smallint(6) NOT NULL default '0',"+
|
|
"`Comments` char(80) default '',"+
|
|
"PRIMARY KEY (`Id`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
|
|
SQLExecDirect("CREATE TABLE IF NOT EXISTS `restart` ("+
|
|
"`NbPlayerMax` tinyint(4) default '0',"+
|
|
"`NbPlayerAvg` tinyint(4) default '0',"+
|
|
"`NbPlayerLast` tinyint(4) NOT NULL default '0',"+
|
|
"`NbDMMax` tinyint(4) default '0',"+
|
|
"`NbDMAvg` tinyint(4) default '0',"+
|
|
"`NbDMLast` tinyint(4) NOT NULL default '0',"+
|
|
"`Date` timestamp(14) NOT NULL,"+
|
|
"`CPUAvg` int(11) default '0',"+
|
|
"`CPUMax` int(11) default '0',"+
|
|
"`CPULast` int(11) NOT NULL default '0',"+
|
|
"`MemoryMax` int(11) default '0',"+
|
|
"`MemoryMin` int(11) default '0',"+
|
|
"`MemoryLast` int(11) NOT NULL default '0',"+
|
|
"`sModName` char(60) NOT NULL default '',"+
|
|
"`CauseRestart` tinyint(4) NOT NULL default '0',"+
|
|
"PRIMARY KEY (`Date`)"+
|
|
") TYPE=MyISAM");
|
|
|
|
pwWriteLogCon(GetModule(), "START_MODULE");
|
|
SetLocalString(GetModule(), "PWId", "0");
|
|
SQLExecDirect("UPDATE idplayer SET Actif=0 WHERE Actif=1");
|
|
|
|
/*
|
|
* Database cleaning, repair and optimization
|
|
*/
|
|
if (FF_CLEAN_LOGIN_DAYS>0)
|
|
SQLExecDirect("DELETE FROM login WHERE Date<DATE_SUB(NOW(), INTERVAL "+IntToString(FF_CLEAN_LOGIN_DAYS)+" DAY)"); // Keep login data 4 days
|
|
|
|
if (FF_CLEAN_LOG_DAYS>0)
|
|
SQLExecDirect("DELETE FROM log WHERE Date<DATE_SUB(NOW(), INTERVAL "+IntToString(FF_CLEAN_LOG_DAYS)+" DAY)"); // Keep log data 15 days
|
|
|
|
if (FF_CLEAN_PC_DAYS>0)
|
|
SQLExecDirect("REPLACE deleted SELECT Id FROM PlayerData WHERE Date<DATE_SUB(NOW(),INTERVAL "+IntToString(FF_CLEAN_PC_DAYS)+" DAY)"); // Delete datas related to PC not played within last 2 months
|
|
|
|
if (FF_CLEAN_PC_NOT_PLAYED_DAYS>0)
|
|
SQLExecDirect("REPLACE deleted SELECT Id FROM PlayerData WHERE (PlayerData.Time<1000) AND (Date<DATE_SUB(NOW(),INTERVAL "+IntToString(FF_CLEAN_PC_NOT_PLAYED_DAYS)+" DAY))"); // Delete datas related to PC very little played within last 3 days
|
|
|
|
SQLExecDirect("DELETE PlayerData.* FROM PlayerData,deleted WHERE PlayerData.Id=deleted.Id");
|
|
SQLExecDirect("DELETE PCData.* FROM PCData,deleted WHERE PCData.Id=deleted.Id");
|
|
SQLExecDirect("UPDATE idplayer,deleted SET idplayer.Ban=1 WHERE idplayer.Ban=0 AND deleted.Id=idplayer.Id");
|
|
SQLExecDirect("REPAIR TABLE idplayer, login, log, pwdata, PlayerData, cdkeys, global, items, restart, areatransition, PCData");
|
|
SQLExecDirect("OPTIMIZE TABLE idplayer, login, log, pwdata, PlayerData, cdkeys, global, items, restart, areatransition, PCData");
|
|
}
|