Eduardo Dantas 23 #1 Posted January 6, 2021 (edited) O que é a linguagem Lua? Antes de mais nada, deixarei vocês com uma pequena introdução do que é a linguagem Lua, veja neste link. Introdução ao Revscriptsys O que é revscriptsys? Antes de mais nada, você precisa saber que o revscriptsys é compatível apenas com: TFS 1.3. OTServbr-Global, que foi criado usando como base o TFS 1.3. OTX 5, que foi criado usando como base o TFS 1.3 e OTServBR-Global. O revscriptsys é uma nova forma de registrar scripts para que você não precise fazer isso via XML (apenas em Lua). Você só precisa colocar seus scripts Lua dentro de "data/scripts/" ou em qualquer subpasta dele, se desejar. Os scripts de monstro são colocados em um caminho diferente: data/monster também sendo possível colocar em qualquer subpasta e organizar como você bem entender. Este sistema suporta o uso de diferentes metatables no mesmo script (Actions, MoveEvents, GlobalEvents... Etc). Isso é muito útil se você fizer missões prolongadas (por exemplo), não necessitando criar arquivos separados para cada metatable. O script deve conter um cabeçalho e rodapé, confirme mostrado no exemplo a seguir. Exemplo de action: Spoiler -- Este é o nosso cabeçalho, é a primeira coisa que deve ser colocada, com exceção das variáveis de configuração local testAction = Action() -- Aqui, nós registramos a action na função onUse, se você esquecer de declarar a variável testAction aqui, o script não funcionará function testAction.onUse(player, item, fromPosition, target, toPosition, isHotkey) return print("We used this item: " .. item.itemid ..".) end -- Aqui você registra o id do item testAction:id(2550) -- Este é o rodapé, deve sempre ser a última função registrada testAction:register() -- Movement local testMovement = MoveEvent() function testMovement.onStepIn(creature, item, position, fromPosition) local player = creature:getPlayer() if not player then return true end print(player:getName(), item:getId(), item:getName()) return true end testMovement:id(426) testMovement:register() No exemplo acima, temos uma Action e um MoveEvent dentro do mesmo script, lembra da introdução? O revscriptsys suporta o uso de diferentes metatables no mesmo script. O "testAction" é uma variável (local), o que significa que você pode mudar ele para qualquer outro nome do seu gosto, por exemplo: local scythe = Action() Fazendo isso, você também precisa modificar a variável que fica na linha do function, ficando assim: function scythe.onUse(player, item, fromPosition, target, toPosition, isHotkey) Também precisa modificar a variável do "id", ficando assim: scythe:id(2550) E a do register, ficando assim: scythe:register() Créditos pela introdução e o tutorial acima são da forgottenserver, veja o tutorial completo aqui (está em inglês). Lá, também vai conter outros exemplos de metatable. Não irei colocar todos os exemplo de uso dos metatables aqui, pois, vou criar um tutorial para cada tipo de metatable, exemplificando cada um, o exemplo acima é apenas para explicar como funciona o sistema.Links úteis e FAQ's:Video Aulas de linguagem Lua Acima, deixo vocês com o link para ótimas vídeo aulas de linguagem Lua no YouTube.O que são variáveis globais e locais?O link acima direciona para a wikipedia. Basicamente, variável é onde você define uma função que poderá ser chamada várias vezes num só script No nosso exemplo, a variável é o "testAction", que é chamado 3 vezes (tirando o registro da própria variável na linha 2) O que são metatables? O link acima direciona para a wikipedia, é uma breve descrição do que é metatable em Lua, porém, é uma explicação generalizada, não tem nenhuma ligação com otserver. Mas, afinal, o que são os metatables? No nosso exemplo acima, metatable é uma função que declara as classes de scripts. Por exemplo: Action() Quais são os metatables disponíveis para o revscriptsys? Spoiler Action() CreatureEvent("name") GlobalEvent("name") MonsterType("name") MoveEvent() Spell("name") TalkAction("words") Weapon(WEAPON_TYPE) Agradecimentos e créditos ao criador do revscriptsys, Evil Hero. Link para o pull request do revscriptsys no projeto theforgottenserver: revscriptsys by EvilHero90 · Pull Request #2558 · otland/forgottenserver · GitHub Edited January 6, 2021 by Eduardo Dantas 6 1 1 marcosvf132, Fir3z_, hoopkins and 5 others reacted to this Share this post Link to post
underewar 32 #2 Posted January 12, 2021 Realmente não tem vejo utilidade em XMLS TAGS. Prefiro usar rev scripts e ja venho usando não sei porque a tfs ainda não usa como padrão. Share this post Link to post
NetoKain 10 #3 Posted February 19, 2021 Ótima explicação ! Essa nova forma de estruturar é muito melhor ! 1 Majesty reacted to this Share this post Link to post