xTravax Posted August 17, 2014 Share Posted August 17, 2014 how could i store player's nick,ip,serial into some database e.g sql so that i could keep the info after server restarts? one more thing, if i saved it into some sql database, how could i load it? Link to comment
xXMADEXx Posted August 17, 2014 Share Posted August 17, 2014 Just use the database functions: dbConnect dbExec dbQuery dbPoll You'll need to learn updates and inserts for SQL. Insert: http://www.w3schools.com/sql/sql_insert.asp Update: http://www.w3schools.com/sql/sql_update.asp Link to comment
xTravax Posted August 18, 2014 Author Share Posted August 18, 2014 i have tried it like this but i really dont know how to make this, also i dont know how could i make this when i write /scan "partofname" that it (temporarily) outputs on chat their nicks,ip and serial all together --server function makeServerRemember() playerName = getPlayerName(source) playerIP = getPlayerIP(source) playerSerial = getPlayerSerial(source) checkIfServerRemembersOfPlayerNick = executeSQLQuery("SELECT `nicks` FROM `pinfo` WHERE `serial`=?", playerSerial) if #checkIfServerRemembersOfPlayerNick == 0 then executeSQLQuery("INSERT INTO `aliases`(serial, nicks) VALUES (?, ?)", playerSerial, playerName) else local actualNicks = checkIfServerRemembersOfPlayerNick[1].nicks if string.find(actualNicks, playerNick) then outputDebugString("Found Player Info in Table") else local addNewNick = actualNicks .. ", " .. playerNick executeSQLQuery("UPDATE `pinfo` SET `nicks`=? WHERE `serial`=?", addNewNick, playerSerial) end end end addEventHandler("onPlayerJoin",root,makeServerRemember) function onNickChange(_,newNick) checkIfServerRemembersOfPlayerNick = executeSQLQuery("SELECT `nicks` FROM `pinfo` WHERE `serial`=?", playerSerial) if #checkIfServerRemembersOfPlayerNick == 1 then local actualNicks = checkIfServerRemembersOfPlayerNick[1].nicks if string.find(actualNicks, newNick) then outputDebugString("Player Changed Name to his Old Nick!") else local addNewNick = actualNicks .. ", " .. newNick executeSQLQuery("UPDATE `pinfo` SET `nicks`=? WHERE `serial`=?", addNewNick, playerSerial) end end end addEventHandler("onPlayerChangeNick",root,onNickChange) function getPlayerFromNamePart(name) local name = name and name:gsub("#%x%x%x%x%x%x", ""):lower() or nil if name then for _, player in ipairs(getElementsByType("player")) do local name_ = getPlayerName(player):gsub("#%x%x%x%x%x%x", ""):lower() if name_:find(name, 1, true) then return player end end end end function checkAllNicksOfPlayer(thePlayer, cmd, target) local targetPlayer = getPlayerFromNamePart(target) local targetSerial = getPlayerSerial(targetPlayer) if #checkIfServerRemembersOfPlayerNick == 1 then outputChatBox("nicks: "..getPlayerName(targetPlayer)..":#00FF00 "..checkIfServerRemembersOfPlayerNick[1].nicks, thePlayer, 0, 0, 0, true) end end addCommandHandler("scan", checkAllNicksOfPlayer) function createTables() local a = executeSQLQuery("CREATE TABLE IF NOT EXISTS `pinfo` (`serial` TEXT, `nicks` TEXT)") if a then outputDebugString("Created table for players pinfo") end end addEventHandler("onResourceStart", getResourceRootElement(), createTables) error says attempt to get global lenght of 'checkIfServerRemembersOfPlayerNick' (a nil value) Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now