From 9a1d328303296395ee2f1c8bdb08f6683bbc0602 Mon Sep 17 00:00:00 2001 From: ErikasKontenis Date: Sat, 12 Dec 2020 14:10:21 +0200 Subject: [PATCH] introduce ban talkaction with lengths hours or days --- data/talkactions/scripts/ban.lua | 84 +++++++++++++++++++------------- 1 file changed, 51 insertions(+), 33 deletions(-) diff --git a/data/talkactions/scripts/ban.lua b/data/talkactions/scripts/ban.lua index fc46763..21bd0b0 100644 --- a/data/talkactions/scripts/ban.lua +++ b/data/talkactions/scripts/ban.lua @@ -1,39 +1,57 @@ local banDays = 7 -function onSay(player, words, param) - if not player:getGroup():getAccess() then - return true - end +function onSay(cid, words, param) + local player = Player(cid) + if not player:getGroup():getAccess() then + return true + end - local name = param - local reason = '' + local name = param + local reason = '' + local banInfo = '' + local banTime = 0 + local banMultiplier = 0 + local params = param:split(',') + if params ~= nil then + name = params[1] + reason = string.trim(params[2]) + banInfo = string.trim(params[3]) + print(banInfo) + end + if banInfo then + if banInfo:find('h') then + banTime = banInfo:sub(0, banInfo:find('h') - 1) + banMultiplier = 3600 + elseif banInfo:find('d') then + banTime = banInfo:sub(0, banInfo:find('d') - 1) + banMultiplier = 86400 + else + banTime = banDays + banMultiplier = 86400 + end + banTime = banTime * banMultiplier + end + + local accountId = getAccountNumberByPlayerName(name) + if accountId == 0 then + return false + end - local separatorPos = param:find(',') - if separatorPos ~= nil then - name = param:sub(0, separatorPos - 1) - reason = string.trim(param:sub(separatorPos + 1)) - end + local resultId = db.storeQuery("SELECT 1 FROM `account_bans` WHERE `account_id` = " .. accountId) + if resultId ~= false then + result.free(resultId) + return false + end - local accountId = getAccountNumberByPlayerName(name) - if accountId == 0 then - return false - end + local timeNow = os.time() + db:query("INSERT INTO `account_bans` (`account_id`, `reason`, `banned_at`, `expires_at`, `banned_by`) VALUES (" .. + accountId .. ", " .. db.escapeString(reason) .. ", " .. timeNow .. ", " .. timeNow + banTime .. ", " .. player:getGuid() .. ")") - local resultId = db.storeQuery("SELECT 1 FROM `account_bans` WHERE `account_id` = " .. accountId) - if resultId ~= false then - result.free(resultId) - return false - end - - local timeNow = os.time() - db.query("INSERT INTO `account_bans` (`account_id`, `reason`, `banned_at`, `expires_at`, `banned_by`) VALUES (" .. - accountId .. ", " .. db.escapeString(reason) .. ", " .. timeNow .. ", " .. timeNow + (banDays * 86400) .. ", " .. player:getGuid() .. ")") - - local target = Player(name) - if target ~= nil then - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, target:getName() .. " has been banned.") - target:remove() - else - player:sendTextMessage(MESSAGE_EVENT_ADVANCE, name .. " has been banned.") - end -end + local target = Player(name) + if target ~= nil then + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, target:getName() .. " has been banned.") + target:remove() + else + player:sendTextMessage(MESSAGE_EVENT_ADVANCE, name .. " has been banned.") + end +end \ No newline at end of file