Postado Fevereiro 12, 2022 3 anos Existe um script, no próprio repositório oficial da TFS que, pelos meus testes, não funciona. O script em questão é o que faz um player virar morador de uma cidade caso entre no teleport, porém, seguindo uma linha lógica de raciocinio, toda cidade tem (ou deveria ter), um teleport que faça essa função. Gostaria de ajuda em relação a isso. Em data/movements/movements.xml temos a seguinte tag: <movevent event="StepIn" itemid="1387" script="citizen.lua" /> Ao meu ver, isso está errado, então fiz testes também utilizando da seguinte forma: <movevent event="StepIn" actionid="1387" script="citizen.lua" /> Porém, mesmo assim, ainda estaria errado, porque isso iria atribuir somente um teleport para uma cidade, a questão aqui também é funcionar em mais de uma cidade. https://github.com/otland/forgottenserver/blob/master/data/movements/movements.xml Obviamente, que eu coloquei a actionId no teleport, mas segue o script: function onStepIn(creature, item, position, fromPosition) if item.actionid > actionIds.citizenship and item.actionid < actionIds.citizenshipLast then if not creature:isPlayer() then return false end local town = Town(item.actionid - actionIds.citizenship) if not town then return false end creature:setTown(town) creature:sendTextMessage(MESSAGE_EVENT_ADVANCE, "You are now a citizen of " .. town:getName() .. ".") end return true end https://github.com/otland/forgottenserver/blob/master/data/movements/scripts/citizen.lua Fico no aguardo.
Postado Fevereiro 13, 2022 3 anos 5 horas atrás, Diego Rulez disse: actionIds.citizenship https://github.com/otland/forgottenserver/blob/8cc1f3d51c6f4c90ce66b6d3122ce4388d709fe8/data/lib/core/actionids.lua STYLLER OT 2022
Postado Fevereiro 14, 2022 3 anos Autor Solução @luanluciano93 Realmente faltava a lib, mas o @Breno Alves me ajudou no Discord, então vou deixar aqui a explicação. O que acontece é que para funcionar é preciso adicionar o seguinte código no arquivo global.lua actionIds = { citizenship = 30020, -- citizenship teleport citizenshipLast = 30050, -- citizenship teleport last } No RME, é preciso setar o actionID: 30021 - town 1 30022 - town 2 30022 - town 3 E assim por diante. Já o script citizen.lua, recomendo usar o script abaixo. Foram adicionadas algumas funcionalidades como: - Não permite que o player que já é cidadão entre no teleport referente a cidade dele, somente a outras, impede de entrar e exibe uma mensagem - Seta a direção do player ao virar cidadão local towns = { [1] = SOUTH, [2] = NORTH, } function onStepIn(creature, item, position, fromPosition) if item.actionid > actionIds.citizenship and item.actionid < actionIds.citizenshipLast then if not creature:isPlayer() then return false end local town = Town(item.actionid - actionIds.citizenship) if not town then return false end if creature:getTown():getId() == town:getId() then creature:teleportTo(fromPosition, true) creature:sendTextMessage(MESSAGE_STATUS_SMALL, "You are already a citizen of " .. town:getName() .. ".") return false end creature:setTown(town) creature:sendTextMessage(MESSAGE_STATUS_SMALL, "You are now a citizen of " .. town:getName() .. ".") creature:teleportTo(town:getTemplePosition()) creature:getPosition():sendMagicEffect(CONST_ME_TELEPORT) creature:setDirection(towns[creature:getTown():getId()]) end return true end
Participe da conversa
Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.