Advertisement
Guest User

Untitled

a guest
Oct 30th, 2016
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.79 KB | None | 0 0
  1. -- Edit these variables to configurate MySQL.
  2.  
  3. local DATABASE_HOST = "localhost"; -- (String) IPv4 IP of the mysql server.
  4. local DATABASE_PORT = 3306; -- (Number) mysql server port.
  5. local DATABASE_SCHEMA = "exclserver"; -- (String) name of the schema/database
  6. local DATABASE_USERNAME = "root"; -- (String) Username
  7. local DATABASE_PASSWORD = ""; -- (String) Password
  8.  
  9. -- Do not edit anything under this line, unless you're a competent Lua developer.
  10.  
  11. require "tmysql4";
  12.  
  13. ES.ServerID = -1
  14.  
  15. local conn,err = tmysql.initialize(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_SCHEMA, DATABASE_PORT,nil ,CLIENT_MULTI_STATEMENTS)
  16.  
  17. if err then
  18. ES.Error("MYSQL_CONNECT_FAILED",err)
  19.  
  20. hook.Add("InitPostEntity","exclserver.data.restart",function()
  21. RunConsoleCommand("changelevel",game.GetMap())
  22. end)
  23. return;
  24. end
  25.  
  26. -- OLD FUNCTIONS, for legacy support
  27. function ES.DBEscape(str)
  28. return conn:Escape(str);
  29. end
  30.  
  31. local function cbFailed(...)
  32. for k,v in ipairs{...}do
  33. if v then
  34. ES.DebugPrint("MySQL query failed: ",v)
  35. end
  36. end
  37. end
  38. function ES.DBQuery(query,callback,callbackFailed)
  39. callbackFailed = callbackFailed or cbFailed;
  40.  
  41. return conn:Query(query,function(res)
  42. local retSuccess={}
  43. local retFail={}
  44.  
  45. local failed=false
  46. for k,v in ipairs(res)do
  47. if v.error then
  48. retSuccess[k]={};
  49. retFail[k]=v.error;
  50. failed=true
  51. else
  52. retSuccess[k]=v.data or {};
  53. retFail[k]=false;
  54. end
  55. end
  56.  
  57. if callback then
  58. callback(unpack(retSuccess))
  59. end
  60.  
  61. if failed then
  62. callbackFailed(unpack(retFail))
  63. end
  64. end);
  65. end
  66.  
  67. -- Setup tables
  68. conn:Query("CREATE TABLE IF NOT EXISTS `es_restrictions_props` (`id` smallint unsigned not null AUTO_INCREMENT, model varchar(255), serverid smallint unsigned not null default 0, req int(8) unsigned, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;")
  69. conn:Query("CREATE TABLE IF NOT EXISTS `es_restrictions_tools` (`id` smallint unsigned not null AUTO_INCREMENT, toolmode varchar(255), serverid smallint unsigned not null default 0, req int(9) unsigned, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;")
  70. conn:Query("CREATE TABLE IF NOT EXISTS `es_blockades` (`id` smallint unsigned not null AUTO_INCREMENT, mapname varchar(255), startX int(16), startY int(16), startZ int(16), endX int(16), endY int(16), endZ int(16), PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;")
  71. conn:Query("CREATE TABLE IF NOT EXISTS `es_settings` (`id` smallint unsigned NOT NULL AUTO_INCREMENT, value varchar(255), name varchar(255), serverid tinyint(3) unsigned, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;")
  72. conn:Query("CREATE TABLE IF NOT EXISTS `es_player_inventory` (`id` int unsigned NOT NULL AUTO_INCREMENT, steamid varchar(100), itemtype tinyint unsigned, name varchar(255), PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;")
  73. conn:Query("CREATE TABLE IF NOT EXISTS `es_player_fields` (`id` int unsigned NOT NULL AUTO_INCREMENT, steamid varchar(100), PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=latin1;")
  74. conn:Query("CREATE TABLE IF NOT EXISTS `es_player_outfit` (`id` int unsigned NOT NULL AUTO_INCREMENT, steamid varchar(100), slot int(8) unsigned NOT NULL, item varchar(255), bone varchar(255), pos varchar(255), ang varchar(255), scale varchar(255), color varchar(255), UNIQUE KEY (`id`, `slot`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;")
  75. conn:Query("CREATE TABLE IF NOT EXISTS `es_ranks` ( `id` int unsigned NOT NULL AUTO_INCREMENT, steamid varchar(50), serverid int(10), rank varchar(100), PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;")
  76. conn:Query("CREATE TABLE IF NOT EXISTS `es_bans` (`ban_id` int unsigned NOT NULL AUTO_INCREMENT, steamid varchar(100), steamidAdmin varchar(100), name varchar(100), nameAdmin varchar(100), serverid int(8), unbanned tinyint(1), time int(32), timeStart int(32), reason varchar(255), PRIMARY KEY (`ban_id`), UNIQUE KEY `ban_id` (`ban_id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8;")
  77. conn:Query("CREATE TABLE IF NOT EXISTS `es_ranks_config` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, name varchar(100), prettyname varchar(200), power int(16), PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;")
  78. conn:Query("CREATE TABLE IF NOT EXISTS `es_logs` (`id` int unsigned NOT NULL AUTO_INCREMENT, text varchar(255), type tinyint unsigned not null, time int unsigned not null, serverid tinyint unsigned not null, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;")
  79. conn:Query("CREATE TABLE IF NOT EXISTS `es_servers` ( `id` tinyint(3) unsigned NOT NULL AUTO_INCREMENT, ip varchar(100), port int(16) unsigned default 27015, dns varchar(100), name varchar(100), game varchar(100), PRIMARY KEY (`id`), UNIQUE KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1;")
  80.  
  81. -- Load the server ID
  82. hook.Add("InitPostEntity","exclrp.db.loadserverid",function()
  83. local serverIP,serverPort = ES.GetServerIP(),ES.GetServerPort();
  84. conn:Query("SELECT id FROM es_servers WHERE ip = '"..serverIP.."' AND port = "..serverPort.." AND game = 'garrysmod' LIMIT 1;",function(res)
  85. if res[1].data and res[1].data[1] then
  86. ES.ServerID = res[1].data[1].id
  87.  
  88. hook.Call("ESDatabaseReady",GM or GAMEMODE,ES.ServerID,serverIP,serverPort)
  89. else
  90. conn:Query("INSERT INTO es_servers SET ip = '"..serverIP.."', port = "..serverPort..", game = 'garrysmod';",function(res)
  91. ES.ServerID = res[1].lastid
  92.  
  93. hook.Call("ESDatabaseReady",GM or GAMEMODE,ES.ServerID,serverIP,serverPort)
  94. timer.Simple(0,function()
  95. game.ConsoleCommand("changelevel "..game.GetMap()..";")
  96. end)
  97. end)
  98. end
  99. end)
  100. end)
  101.  
  102. -- Alter fields tables
  103. hook.Add("Initialize","exclrp.db.alterfields",function()
  104. for k,v in pairs(ES.NetworkedVariables)do
  105. if v.save then
  106. ES.DebugPrint("Checking player field: "..v.name)
  107. ES.DBQuery("ALTER TABLE `es_player_fields` ADD "..ES.DBEscape(v.name).." "..v.save..";",ES.Void,ES.Void)
  108. end
  109. end
  110.  
  111. end)
  112.  
  113. -- Ranks configuration
  114. hook.Add("Initialize","exclrp.db.loadranks",function()
  115. conn:Query("SELECT * FROM es_ranks_config LIMIT 100;",function(res)
  116. for k,v in ipairs(res[1].data)do
  117. ES.SetupRank(v.name,v.prettyname,tonumber(v.power))
  118. end
  119. end)
  120. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement