Jump to content

Search the Community

Showing results for tags 'tfs 1.x'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • xTibia - Notícias e Suporte
    • Regras
    • Noticias
    • Soluções
    • Projetos Patrocinados
    • Tutoriais para Iniciantes
    • Imprensa
  • OTServ
    • Notícias e Debates
    • OTServlist
    • Downloads
    • Recursos
    • Suporte
    • Pedidos
    • Show-Off
    • Tutoriais
  • OFF-Topic
    • Barzinho do Éks
    • Design
    • Informática

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Sou

Found 6 results

  1. Distro Restarter by Yan18 Olá caros amigos do Xtibia, hoje irei ensinar como reiniciar a distro do server automaticamente após um shutdown (no sistema operacional Windows). Decidi fazer esse tutorial após ver muitos pedidos sobre isso, não sei se já existe algum tutorial sobre isso aqui no fórum, mas decidi criar junto com um script que exibe uma mensagem para o server todo alertando que o servidor será reiniciado após X minutos. Para isso, irei trabalhar com um arquivo .bat do Windows, para que ele sempre execute a distro quando não estiver sendo executada. ATENÇÃO: Leia isso antes de seguir o tutorial! Esse método só vai funcionar se a sua distro for em interface GUI! Se for por prompt (linha de comando) não irá funcionar porque a distro já será executada em prompt. Começo do Tutorial - Evento Shutdown Para começar, vamos criar um evento global para dar shutdown e exibir uma mensagem de aviso para todos os jogadores que o servidor será reiniciado, para ficar mais sofisticado e bonito o processo. E eles estarem ciente, assim dá tempo de todos irem para um local seguro! Agora vá em Data/Globalevents/Scripts e crie o arquivo shutdown.lua e insira o código dentro: TFS 0.3/0.4 function avisoShutdown(minutos) local minutos_shutdown = 1 -- VARIÁVEL PARA DAR UM TEMPO (EM MINUTOS) PARA SALVAR O SERVIDOR E DEPOIS DAR SHUTDOWN EM SEGUIDA if minutos > 0 then doBroadcastMessage("O servidor será reiniciado em " ..minutos) addEvent(avisoShutdown, 60000, cid, minutos - 1) else doSaveServer() addEvent(doShutdown, minutos_shutdown * 60000) return true end end function onTime() avisoShutdown(5) -- MINUTOS MANDAR MENSAGEM DE AVISO PARA SALVAR E DAR SHUTDOWN end TFS 1.0 / 1.+ function avisoShutdown(minutos) local minutos_shutdown = 1 -- VARIÁVEL PARA DAR UM TEMPO (EM MINUTOS) PARA SALVAR O SERVIDOR E DEPOIS DAR SHUTDOWN EM SEGUIDA if minutos > 0 then if minutos > 1 then broadcastMessage("O servidor será reiniciado em " ..minutos.. " minutos.") else broadcastMessage("O servidor será reiniciado em " ..minutos.. " minuto.") end addEvent(avisoShutdown, 60000, minutos - 1) else saveServer() addEvent(Game.setGameState(GAME_STATE_SHUTDOWN), minutos_shutdown * 60000) return true end end function onTime(interval) avisoShutdown(5) -- MINUTOS MANDAR MENSAGEM DE AVISO PARA SALVAR E DAR SHUTDOWN end Explicação: O script vai fazer um contagem regressiva de minutos (pelo valor definido no parâmetro passado na função avisoShutdown) e depois ele irá ter um delay pelo valor da variável minutos_shutdown. Parece confuso duas variáveis de minutos né? Mas a variável minutos_shutdown é um "delay" para dar tempo de salvar e depois efetuar o shutdown, pois tem servidor que o mapa é grande, tem muitos jogadores e itens, então pode demorar um pouco, ai é só mudar o valor na variável. Está o valor 1 por padrão. E na função chamada pelo evento onTime você coloca os minutos para o player ver os minutos restantes para o servidor ser reiniciado. Agora, abra o arquivo globalevents.xml e adicione a tag: <globalevent name="shutdown_server" time="12:00" event="script" value="shutdown.lua"/> Em time coloque o horário que deseja executar o evento para fazer o shutdown. Agora acabamos a parte do evento e vamos para a parte do reiniciador! - PROMPT (Arquivo .Bat) Agora iremos criar o arquivo bat para reiniciar a distro. Vá no bloco de notas ou no notepad++ (de sua preferência) e insira o seguinte script dentro: title Reinicializador da Distro echo --------- MENSAGEM QUANDO INICIAR A DISTRO ------------ echo. echo Status: INICIANDO O SERVIDOR... echo. :begin TFS.exe echo --------- MENSAGEM QUANDO DESLIGAR OU REINICIAR A DISTRO COM O ARQUIVO BAT ABERTO ------------ echo. echo Aviso: O SERVIDOR FOI DESLIGADO OU SERÁ REINICIADO. echo. echo Status: O SERVIDOR ESTÁ SENDO REINICIADO! echo. goto begin :goto begin Salve esse script (de preferência com um nome sem espaço) com a extensão .bat. Eu recomendo Restarter, mas fica por sua preferência! OBS: Salve o arquivo com a codificação UTF-8, por padrão já vem, mas caso não venha é só colocar! Explicação: @echo off O "echo off" Oculta informações e o código executado pelo sistema, e o "@echo" oculta a interface durante a execução do programa. É possível juntar os dois modos, assim como fiz acima. title Nessa parte você coloca o título do arquivo bat em seguida da palavra reservada title, que fica na parte superior da interface. Só seguir o exemplo anterior da criação do arquivo. OBS: No título você pode colocar espaço a vontade. echo Aqui é onde vai aparecer as mensagens na interface, pode colocar qualquer caractere desejado, pode usar pontos, acentos (acentos acontecerá algo de errado que será explica mas para o fim do tutorial.) e o que desejar. E para dar uma quebra de linha, é só colocar ponto depois do echo: echo. begin É onde começa a executar o procedimento (executar a distro). Mas ai você pergunta: "Mas e as linhas anteriores com mensagens?". Mas a resposta é que as linhas anteriores não executam o programa, e sim inserem mensagem assim que executamos o arquivo bat (ressaltando que quando abrimos o arquivo bat ele inicia a distro, porém só vai reiniciar a distro sempre que der shutdown ou crashar enquanto o arquivo bat estiver aberto). TFS.exe Em baixo do ":begin" vai ter TFS.exe, e nessa linha é onde coloca o nome do executável (distro). OBS: Evite colocar nome da distro com espaço, ele funciona, mas para evitar problemas, deixe junto! goto begin E por fim temos o goto begin, a palavra reservada goto faz um pulo para o que colocar na frente dela, ou seja, depois que executar tudo que está acima dela, vai ir para o que declara na frente, no nosso caso, o begin (irá fazer um loop de reiniciar sempre que a distro estiver desligada no nosso caso enquanto o arquivo bat estiver rodando). Beleza Yan, acabamos? Ainda não acabamos! Tenha calma, se você chegou até aqui, vai aguentar até o fim! Agora iremos executar o arquivo bat (lembrando que se quer usar o auto restarter, não pode abrir a distro antes do arquivo bat, se não vai dar erro de distro já aberta, porque o arquivo irá abrir novamente). Mas antes de rodar, não se esqueça de colocar o arquivo bat no mesmo diretório (pasta) da distro, tem que ficar junto senão não vai funcionar. Feito isso, execute o arquivo bat, se der tudo certo e seguiu os passos corretamente, irá aparecer assim seguindo nossa criação: E a distro irá iniciar logo em seguida. Agora vamos testar um shutdown na distro (lembre-se de deixar o prompt do arquivo bat aberto!): Agora você vai falar, "Funcionou!! Acabamos?", sim de fato funcionou, porém, se repara as mensagens com acento estão "bugadas". Isso se deve ao fato de que por padrão não lê acento (Windows foi criado na língua inglesa). Então, para funcionar precisaremos ir na primeira linha do código do arquivo bat e colocar: chcp 65001 off Pois essa linha permite acentuação (lembrando de permanecer a codificação UTF-8 ainda). Então o script ficará assim: chcp 65001 @echo off echo. title Reinicializador da Distro echo --------- MENSAGEM QUANDO INICIAR A DISTRO ------------ echo. echo Status: INICIANDO O SERVIDOR... echo. :begin TFS.exe echo --------- MENSAGEM QUANDO DESLIGAR OU REINICIAR A DISTRO COM O ARQUIVO BAT ABERTO ------------ echo. echo Aviso: O SERVIDOR FOI DESLIGADO OU SERÁ REINICIADO. echo. echo Status: O SERVIDOR ESTÁ SENDO REINICIADO! echo. goto begin :goto begin Ficando então o script do arquivo bat: Agora temos o caminho do diretório do executável e uma mensagem do sistema alegando que foi ativado esse comando. Se fizer tudo certo é para aparecer assim! E agora vamos testar o shutdown: Como podemos ver executou corretamente e leu os caracteres com acento. Agora vem a pergunta: "Acabou?", e a resposta é... Sim, acabou! Lembrando que você pode encerrar a distro manualmente (fechando) que o arquivo bat irá reiniciar, não precisa depender só do evento shutdown, mas não esqueça de deixar o restarter aberto. Obrigado por ter chegado até aqui e espero que te ajude o tutorial. Qualquer dúvida só perguntar. Logo estarei preparando um tutorial desses para Linux! Abraços e fiquem com Deus!
  2. Já faz um tempo que não mexo com OT, mas me veio uma ideia na cabeça e eu quero fazer um OT com ela. Na minha época, TFS 0.4 era relativamente novo e muita gente, inclusive eu, preferia o 0.3 por ser supostamente mais estável, o mesmo ocorre com o 1.x ou muito pelo contrário? Vale a pena esquecer tudo que eu sei e reaprender com o 1.x? O que ele trás de novo? Percebi que o sistema de scripting mudou bastante ao ler alguns por aí, não sei dizer se gosto da mudança, mas que possibilidades novas ela trás?
  3. Script feito por Ahilphino, adiciona uma mensagem com o tempo que você levou para upar, ao upar. creaturescripts\scripts\timelevel.lua function timeString(timeDiff) local dateFormat = { {"day", timeDiff / 60 / 60 / 24}, {"hour", timeDiff / 60 / 60 % 24}, {"minute", timeDiff / 60 % 60}, {"second", timeDiff % 60} } local out = {} for k, t in ipairs(dateFormat) do local v = math.floor(t[2]) if(v > 0) then table.insert(out, (k < #dateFormat and (#out > 0 and ', ' or '') or ' and ') .. v .. ' ' .. t[1] .. (v ~= 1 and 's' or '')) end end local ret = table.concat(out) if ret:len() < 16 and ret:find("second") then local a, b = ret:find(" and ") ret = ret:sub(b+1) end return ret end function onAdvance(player, skill, oldlevel, newlevel) if skill ~= SKILL_LEVEL then return true end oldtime = player:getStorageValue(3499) timenow = os.time() if oldtime == -1 then player:setStorageValue(3499, timenow) else player:sendTextMessage(MESSAGE_INFO_DESCR, "It took you " .. timeString(timenow - oldtime) .. " to advance in level from your last advance.") player:setStorageValue(3499, timenow) end return true end login.lua player:registerEvent("timelevel") creaturescripts.xml <event type="advance" name="timelevel" script="timelevel.lua"/>
  4. Gostaria de colocar este script para TFS 1.0 atualmente eu peguei ele na versão do TFS 1.2 mas infelizmente não consigo colocar pra ele contar o tempo e mover o jogador caso ele tiver parado pelo tempo determinado no script, acontece que não da erro nenhum ele só não move, alguém poderia me ajudar? local config = { time = 15, -- minutes str = 98765, -- storage pos = {x = 31373, y = 32780, z = 7} -- position } function onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if not player or player:isInGhostMode() then return true end local function isTraining(uid) local self = Player(uid) if not self then return false end return self:getStorageValue(config.str) > 0 and self:teleportTo(config.pos) or true end check = addEvent(isTraining, config.time * 60 * 1000, player:getGuid()) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, '[Treiner]: Movimente-se a cada ' .. config.time .. ' minutos, caso contrario, voce sera teleportado ao templo.') return player:setStorageValue(config.str, 1) end function onStepOut(creature, item, position, fromPosition) local player = creature:getPlayer() if not player or player:isInGhostMode() then return true end return stopEvent(check) and player:setStorageValue(config.str, -1) end
  5. Por favor, alguém poderia me ajudar a compilar TFS 1.x Eu já tentei vários tutoriais, várias versões do MSVS 2013, (até mesmo o 2015 que dizem q n da) Varias versão do Boost e nada da certo, sempre é algum erro novo e eu não consigo solucionar por mais que eu tenha procurado além do xtibia outras solucões Se alguém souber e estiver disposto a ajuda, por favor, me ajude, mas evite me mandar um tutorial de alguém explicando porque de verdade, eu tentei todos Alguém que consegue compilar, me diga qual a versão dos app está usando e se possível passe o link dos mesmo que o seu para eu testar Uso win7 64x
  6. Alguém poderia me ajudar com a conclusão desse script? ele não dá nenhum erro no console, porém também não funciona. O script está tão bagunçado quanto minhas idéias, por isso já peço desculpas antecipadamente. obrigado
×
×
  • Create New...