Ir para conteúdo

Featured Replies

Postado
  • Autor

Zipter, ficou perfeito.

 

Só uma dúvida, tem como fazer a pedra voltar? 

 

-> No caso dos players, se um sair do pizo a pedra já volta.

 

-> No caso da alavanca, depois de 60 segudos a pedra volta.

  • Respostas 17
  • Visualizações 846
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Não detalhei o script com mensagens ao jogador, efeitos nem nada do tipo. Só fiz o que você pediu mesmo. 1º código: function onStepIn(cid, item, position, fromPosition)     local cfg = {         po

  • A ideia do addEvent está certa, porém os parâmetros, não exatamente. addEvent(doCreateItem, 60 * 1000,cfg.rock_id,1,cfg.rock_position) Como pode-se notar, você chamou por cfg.rock_id e cfg.rock_posi

  • Se é de clicar, é só action, função ao usar...     Adicione isso no actions.xml , veja se o actionid não aparece em outra tag, veja se é único. <action actionid="5434" script="alavancapedra.lu

Postado

Vê se isso resolve:

function onStepIn(cid, item, position, fromPosition)
    local cfg = {
        positions = {
            {x = x, y = y, z = z},     --Posições dos jogadores.
            {x = x, y = y, z = z},
        },
        rock_id = xxx,                 --ID da pedra.
        rock_position = {x = x, y = y, z = z},    --Posição da pedra.
    }
    if not isPlayer(cid) then
        return true
    end
    for _, posis in pairs(cfg.positions) do
        local creature = getTopCreature(posis).uid
        if not isCreature(creature) or not isPlayer(creature) then
            return true
        end
    end
	if not getPlayerPosition(cid) == cfg.postions then
    doCreateItem(cfg.rock_id, 1, cfg.rock_position)	
	end
	    local rock = getTileItemById(cfg.rock_position, cfg.rock_id).uid
    if rock > 0 then
        doRemoveItem(rock, 1)
    end
    return true
end

Depois vejo a da alavanca...

se eu estiver errado, só colocar de volta o script do zipter98.


function onUse(cid, item, fromPosition, item2, toPosition)
    local rock_id = xxx                             --ID da pedra.
    local rock_position = {x = x, y = y, z = z}     --Posição da pedra.
    local rock = getTileItemById(rock_position, rock_id).uid
    if rock > 0 then
        doRemoveItem(rock, 1)
addEvent(doCreateItem, 60 * 1000,cfg.rock_id,1,cfg.rock_position)
    end
    return true
end

Ps: Não sei muito bem mexer com o addevent, nunca usei...

 

mas qualquer coisa tem o backup no post do zipter..

 

919894 quando você entrar, vê se algum que eu pus presta...

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

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Postado

 

-> No caso dos players, se um sair do pizo a pedra já volta.

function onStepOut(cid, item, position, fromPosition)
    local rock_id = xxx                             --ID da pedra.
    local rock_position = {x = x, y = y, z = z}     --Posição da pedra.
    local rock = getTileItemById(rock_position, rock_id).uid
    if rock < 1 then
        doCreateItem(rock_id, 1, rock_position)
    end
    return true
end

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

não respondo pms solicitando suporte em programação/scripting

Postado

zipter98 A da alavanca que eu fiz ta certo ?

Se quiser sua dúvida tirada, mande PM com os links, e não com a dúvida (outros podem ter a mesma dúvida, e o fórum serve para ser usado).

 

Tópicos:


 

yNlhRVC.png

 

55px-Judo_yellow_belt.svg.png

Postado

A ideia do addEvent está certa, porém os parâmetros, não exatamente.

addEvent(doCreateItem, 60 * 1000,cfg.rock_id,1,cfg.rock_position)

Como pode-se notar, você chamou por cfg.rock_id e cfg.rock_position. Isso estaria certo se rock_id e rock_position estivessem numa tabela de nome cfg. Nesse caso, porém, elas são variáveis locais.

Há duas alternativas de correção para seu código.

A primeira, criando a tabela cfg e colocando rock_id e rock_position nela:

function onUse(cid, item, fromPosition, item2, toPosition)
    local cfg = {
        rock_id = xxx,                             --ID da pedra.
        rock_position = {x = x, y = y, z = z},     --Posição da pedra.
    }
    local rock = getTileItemById(cfg.rock_position, cfg.rock_id).uid
    if rock > 0 then
        doRemoveItem(rock, 1)
        addEvent(function()
            doCreateItem(cfg.rock_id, 1, cfg.rock_position)
        end, 60 * 1000)
    end
    return true
end
A segunda, apenas alterando os parâmetros de doCreateItem:
function onUse(cid, item, fromPosition, item2, toPosition)
    local rock_id = xxx                             --ID da pedra.
    local rock_position = {x = x, y = y, z = z}     --Posição da pedra.
    local rock = getTileItemById(rock_position, rock_id).uid
    if rock > 0 then
        doRemoveItem(rock, 1)
        addEvent(function()
            doCreateItem(rock_id, 1, rock_position)
        end, 60 * 1000)
    end
    return true
end
Se você olhar bem, perceberá que alterei o addEvent. Esta função pode ser escrita de duas formas: a primeira, que você já conhece, e esta outra. A que utilizei, pessoalmente, acho melhor e mais segura. Uma vantagem que ela apresenta, demonstrarei em códigos.
addEvent(doPlayerSendCancel, 30 * 1000, cid, "Hi.")
Se, no momento que o doPlayerSendCancel for executado, o jogador estiver offline, ocorrerá o erro de player not found. Para evitar isso, faria-se:
local function sendMessage(cid)
    if isPlayer(cid) then
        doPlayerSendCancel(cid, "Hi.")
    end
end
addEvent(sendMessage, 30 * 1000, cid)
Para evitar o trabalho de fazer uma função, e depois executá-la em um addEvent, você poderia, simplesmente:
addEvent(function()    
    if isPlayer(cid) then
        doPlayerSendCancel(cid, "Hi.")    
    end
end, 30 * 1000)
Basicamente, você "cria" uma função dentro do addEvent. Essa maneira é mais prática e segura do que a que normalmente vemos (minha opinião, claro).
ps: não sou bom com explicações, mas espero que você entenda. O melhor jeito de entender isso é na prática mesmo.

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

não respondo pms solicitando suporte em programação/scripting

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