Ir para conteúdo

Featured Replies

Postado

Ola tk, hoje venho pedir ajuda com 2 scripts, creio eu que um deles seja simples, vamos la.

 

Script 1: Precisava de um script onde somente um Royal paladin possa passar em uma porta, e apenas se ele tiver assassin full.

 

Script 2 : Um script onde somente jogadores Premium Account possam abrir portas que tenham esse script.

 

Agradeço desde ja ^^

Postado

Em actions/scripts:

 

premiumdoor.lua

 

Spoiler

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local itemId = item:getId()
    if not player:isPremium() then
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Only premium players can pass.")
        return true
    end
    if table.contains(horizontalOpenDoors, itemId) or table.contains(verticalOpenDoors, itemId) then
        local doorCreature = Tile(toPosition):getTopCreature()
        if doorCreature ~= nil then
            toPosition.x = toPosition.x + 1
            local query = Tile(toPosition):queryAdd(doorCreature, bit.bor(FLAG_IGNOREBLOCKCREATURE, FLAG_PATHFINDING))
            if query ~= RETURNVALUE_NOERROR then
                toPosition.x = toPosition.x - 1
                toPosition.y = toPosition.y + 1
                query = Tile(toPosition):queryAdd(doorCreature, bit.bor(FLAG_IGNOREBLOCKCREATURE, FLAG_PATHFINDING))
            end

            if query ~= RETURNVALUE_NOERROR then
                player:sendTextMessage(MESSAGE_STATUS_SMALL, query)
                return true
            end
            doorCreature:teleportTo(toPosition, true)
        end

        if not table.contains(openSpecialDoors, itemId) then
            item:transform(itemId - 1)
        end
        return true
    else
        item:transform(itemId + 1)
        player:teleportTo(toPosition, true)
    end
	return true
end

 

 

No actions.xml: <action actionid="900" script="premiumdoor.lua"/> -- É só colocar o actionid 900 na porta

 

addondoor.lua

 

Spoiler

local vocId = 1 -- id da vocação
local outfit = {[0] = 111, [1] = 222} -- [sexo] = lookType -> coloque o lookType correto

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local itemId = item:getId()
    if player:getVocation():getId() ~= vocId then
        player:sendCancelMessage("Your vocation is not allowed to pass.")
        return true
    end
    if (not player:hasOutfit(outfit[player:getSex()], 3)) then
        player:sendCancelMessage("You don't have assassin full addon.")
        return true
    end
    if table.contains(horizontalOpenDoors, itemId) or table.contains(verticalOpenDoors, itemId) then
        local doorCreature = Tile(toPosition):getTopCreature()
        if doorCreature ~= nil then
            toPosition.x = toPosition.x + 1
            local query = Tile(toPosition):queryAdd(doorCreature, bit.bor(FLAG_IGNOREBLOCKCREATURE, FLAG_PATHFINDING))
            if query ~= RETURNVALUE_NOERROR then
                toPosition.x = toPosition.x - 1
                toPosition.y = toPosition.y + 1
                query = Tile(toPosition):queryAdd(doorCreature, bit.bor(FLAG_IGNOREBLOCKCREATURE, FLAG_PATHFINDING))
            end

            if query ~= RETURNVALUE_NOERROR then
                player:sendTextMessage(MESSAGE_STATUS_SMALL, query)
                return true
            end
            doorCreature:teleportTo(toPosition, true)
        end

        if not table.contains(openSpecialDoors, itemId) then
            item:transform(itemId - 1)
        end
        return true
    else
        item:transform(itemId + 1)
        player:teleportTo(toPosition, true)
    end
    return true
end

 

 

Em actions.xml: <action actionid="750" script="addondoor.lua"/> -- É só colocar o actionid 750 na porta

Contato:

 

Postado
  • Autor

Muito obrigado @Dwarfer, o da porta do addon funcionou perfeitamente.

 

Já o da Premium não funcionou, talvez pode ser pela tfs?? uso a 3.7, e queria saber também se o script tem como ser uniqueid(pra poder colocar em portas de com level)

 

Agradeço a ajuda, Reputado ;p

Editado por FaaSouzax (veja o histórico de edições)

Postado

O que acontece que não funcionou? Descreva melhor o erro para que possa ser solucionado, acabei de testar aqui e tá funcionando. 

Pra colocar uniqueid é só alterar a tag: <action uniqueid="900" script="premiumdoor.lua"/> 

 

Caso não consiga, utilize assim:

 

Spoiler

local newpos = Position(1,1,1) -- posição que será levado

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local itemId = item:getId()
    if not player:isPremium() then
        player:sendTextMessage(MESSAGE_STATUS_CONSOLE_ORANGE, "Only premium players can pass.")
        return true
    end
    player:teleportTo(newpos)
    newpos:sendMagicEffect(CONST_ME_TELEPORT)
    return true
end

 

 

Contato:

 

Postado
  • Autor

@Dwarferna verdade não da erro algum, simplesmente o personagem não passa a porta

 

 

23:59 You see a gate of expertise for level 60.


Item ID: 6265, Action ID: 1060, Unique ID: 9050.
Position: 435, 283, 3

izw7S007SEyILQBft_1rsQ.png

 

a unica coisa que acontece ao tentar passar é isso da imagem, fala que não posso usar.

 

 

Esse ultimo no caso eu teria que fazer um para cada porta vip que eu fosse usar né?

 

 

-Edit , desculpa vi só agr

 

Dc6ogSJnQ4_m4XX4NkKPmA.png

Editado por FaaSouzax (veja o histórico de edições)

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.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo