Bem, como todos sabem, o TFS sempre está com uma nova atualização, e a casa atualização, novos conteúdos são adicionados. Este tópico tem o principal objetivo, de mostrar para vocês um dos novos sistemas das novas versões do The Forgotten Server.
Não garanto que haverá está pasta em todos os servidores. Mais garanto que será muito utilizado em pouco tempo.
Pois bem, vamos ao que interessa.
-Iniciando:
A pasta globalevents, é um sistema que facilita o uso de alguns scripts específicos que são ativados por um tempo X.
Apartir deste sistema, o administrador do servidor, poderá gerar diversas funções como mensagens pre-determinadas, raids personalizadas e até mesmo funções de manutenção, como saves e clears.
-Entendendo mais sobre a função:
Para saber se o seu servidor possui esta função, basta procurar a pasta globalevents, dentro da pasta data do seu servidor.
Confira se dentro desta pasta, existe uma outra pasta com o nome scripts, e um arquivo de nome globalevents.xml
Se for encontrada esta pasta, é sinal de que o servidor tem o 'sistema'.
Mais isso não indica certeza. dependendo ou não da pasta, o mais importante e a versão do servidor.
Creio que a maioria dos servidores de 8.31 á 8.4 (0.3beta2), possui este 'sistema'.
-Entendendo mais sobre o Globalevents.xml:
Este arquivo, é onde você vai definir as ações que serão executadas pelo servidor.
Veja um exemplo:
<globalevent name="save" interval="900" script="save.lua"/>
save = Nome da função a ser executada, no caso pegaremos um exemplo de um autosave pre-determinado. Obs: O nome da função não é o que a define.
900 = É o intervalo de tempo em segundos que aquela função será executada. Sendo então, 15 minutos.
save.lua = Sendo o save.lua, que será lido pela função declarada no arquivo.
Bem, ja que demos um nome a função, colocamos um tempo de ação e definimos o arquivo.lua da função, partiremos agora para o mais importante do sistema.
-Configurando o script da função:
Apos definir isso no globalevents.xml, veremos agora o save.lua dentro da pasta scripts.
Save.lua:
function onThink(interval, lastExecution)saveServer()
return TRUE
end
Definimos a função onThink para iniciar o script, e declaramos o intervalo e a última execução (interval, lastExecution).
É simples...como todo os outros scripts, basta você adicionar o seu contúdo entre function onThink(interval, lastExecution) e o end, e seu script será executado de 15 em 15 minutos como aviamos feito no globalevents.xml.
Ou seja, a função de salvar no script, é apenas saveServer().
Podemos também complementar este script com uma mensagem global, determinada por " doBroadcastMessage(message, type)". Ficaria assim:
function onThink(cid, words, interval, lastExecution)saveServer()
doBroadcastMessage("Feliz 2009!",21)
return TRUE
end
Veja que usei a function "broadcastMessage", para mandar uma mensagem global, seguida do texto 'Feliz 2009!', que é o texto que será exibido, com sua cor '21' (branca).
Pronto, agora você tem um autosave de 15 em 15 minutos com uma mensagem personalizada!
-Adicionais:
Como todo bom tutorial, deixo para vocês mais funções que podem ser usadas, fica por conta de vocês configurar o tempo e o nome do arquivo agora:
Mensagem para todos os jogadores:
function onThink(cid, words, param, interval, lastExecution)broadcastMessage(" Tenha um bom jogo! ",21)
end
Auto Clean:
function onThink(cid, words, param, interval, lastExecution)
function executeClean()
cleanMap()
doBroadcastMessage("Próximo clean em 1 hora.")
return TRUE
end
function onThink(cid, words, interval, lastExecution)
doBroadcastMessage("Map clean em 30 segundos. Por favor, pegue seus itens!")
addEvent(executeClean, 30000)
return TRUE
end
Horas:
function onThink(cid, words, interval, lastExecution)data = os.date("\nData: %d/%m/%Y \n\n Horário: %H:%M:%S \n")
doPlayerSendTextMessage(cid, 22, ""..data.."")
end
Uptime:
function onThink(cid, words, interval, lastExecution)local hours = math.ceil(getWorldUpTime() / 3600) - 1
local minutes = math.ceil((getWorldUpTime() - (3600 * hours)) / 60)
if minutes == 60 then
minutes = 0
hours = hours + 1
end
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Uptime: " .. hours .. " hours and " .. minutes .. " minutes.")
return TRUE
end
Mostrando quanto de dinheiro o player tem:
function onThink(cid, words, interval, lastExecution)local money = getPlayerMoney(cid)
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have " .. money .. " gold.")
return TRUE
end
Mostrando os frags do player:
local config = {
fragTime = getConfigInfo('timeToDecreaseFrags')
}
function onThink(cid, words, interval, lastExecution)
local amount = getPlayerRedSkullTicks(cid)
if(amount > 0 and config.fragTime > 0) then
local frags = math.floor((amount / config.fragTime) + 1)
local remainingTime = math.floor(amount - (config.fragTime * (frags - 1)))
local hours = math.floor(((remainingTime / 1000) / 60) / 60)
local minutes = math.floor(((remainingTime / 1000) / 60) - (hours * 60))
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You have " .. frags .. " unjustified frag" .. (frags > 2 and "s" or "") .. ". The amount of unjustified frags will decrease after: " .. hours .. "h and " .. minutes .. "m.")
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "You do not have any unjustified frag.")
end
return TRUE
end
Bom, por enquanto é so.
Bom aproveito a todos. =D
Até o próximo!