Autor: Guitar Freak klik

Licencja: Brak

Skrypt działa na zasadzie “normalnego” systemu reportów który mamy w tfsie lecz ten jest lepszy poniewaz gracz który zaraportuje “buga” mapy możemy sprawdzić gdzie on jest ponieważ wiadomość oraz pozycja gracza zapisuje się w folderze /data/logs/report.txt/

Teraz przechodzimy do konkretów!

Część LUA

Wchodzimy do folderu /data/lib/ otwieramy znajdujący się tam plik function.lua i wklejamy do niego:

  function setExhaust(cid, storage)
    setPlayerStorageValue(cid, storage, os.time())
end
 
function isExhausted(cid, storage, exhaust)
    local exhaustTime = getPlayerStorageValue(cid, storage)
    if exhaustTime == -1 then
        return FALSE
    end
    local isExhausted = os.time() - exhaustTime < exhaust
    return isExhausted and TRUE or FALSE
end 

Nastepnie przechodzimy do katalogu /data/talkactions/talkactions.xml/ i doklejamy linjkę:

    <talkaction log="no" words="/report" filter="quotation" event="script" value="textreports.lua"/>  

Przechodzimy do /data/talkactions/scripts/ i tworzymy plik textreports.lua :

textreports.lua
        -- Credits --
        -- References: Shawak & Colandus.
        -- Modifications: Guitar Freak.
 
        local level = 8                         -- Minimum level to send a report.
        local minimum = 3                       -- Minimum characters per report.
        local maximum = 85                      -- Maximum characters per report.
 
        local useExhaust = true         -- True if you want to use exhaustion, false if not.
        local storageValue = 8000       -- Needed for exhaustion to work. Set to any unused value you wish.
        local exhaustTime = 15          -- Exhaust time between each report (15 = 15 seconds).
 
        local getVoc = getPlayerVocationName(cid)
        local position = getCreaturePosition(cid)
 
function onSay(cid, words, param, channel)
 
        if getPlayerLevel(cid) < level then
                        doPlayerSendTextMessage(cid,20,"Report Manager:")
                        doPlayerSendTextMessage(cid,18,"You need to be at least level "..level.." to send a report.")
 
                elseif (useExhaust and isExhausted(cid, storageValue, exhaustTime) == TRUE) then
                        doPlayerSendTextMessage(cid,20,"Report Manager:")
                        doPlayerSendTextMessage(cid,18,"Sorry, you need to wait "..exhaustTime.." seconds before sending another report.")
 
                elseif param:len() < minimum then
                        doPlayerSendTextMessage(cid,20,"Report Manager:")
                        doPlayerSendTextMessage(cid,18,"Sorry, you need to enter atleast " .. minimum .. " characters to send in a report.")
 
                elseif param:len() > maximum then
                        doPlayerSendTextMessage(cid,20,"Report Manager:")
                        doPlayerSendTextMessage(cid,18,"Sorry, you can only write max. " .. maximum .. " characters per report.")
 
                else
                        Log = io.open(getDataDir().."logs/Reports.txt", "a+")
                        Log:write("Sent: "..os.date("%A %I:%M:%S %p.").."\n")
                        Log:write("From position: X = "..position.x.." | Y = "..position.y.." | Z = "..position.z.."\n")
                        Log:write(""..getPlayerName(cid).." ["..getPlayerLevel(cid).."] ("..getVoc.."): "..param.."\n\n")
                        Log:close()
                                doPlayerSendTextMessage(cid,20,"Report Manager:")
                                doPlayerSendTextMessage(cid,27,"You have successfully sent your report. Thanks for your support.")
                                setExhaust(cid, storageValue)
                end
                return TRUE
end

Testowany na tfs 0.3.4 oraz 0.3.5 ! Komendy w grze /report tekst