Ir para conteúdo
  • Cadastre-se

(Resolvido)pressionar tile para sumir pedra


Ir para solução Resolvido por Adriano SwaTT,

Posts Recomendados

Fala ai galera, tava precisando de uma ajuda não sou muito bom em scripts, alguém poderia me ajudar?

Queria um script que ao player pressionar um tile (aqueles tiles pressionáveis de Depot) sumisse uma pedra em um lugar, a pedra só ficara sumida se o player continuar encima do tile...

Link para o post
Compartilhar em outros sites
  • Solução

Bom, crie o respectivo piso com a actionID normalmente e registre a ação em movements.xml.

 

O script lua segue abaixo:

local idpedra = XXXX  -- ID da pedra
local pos = {x=000, y=000, z=0}  -- Coordenada da pedra
local msg_remover = "Pedra removida com sucesso."  -- Mensagem ao remover a pedra
local msg_repor = "Pedra adicionada novamente."  -- Mensagem ao repor a pedra

function onStepIn(cid, item, position, item2, fromPosition)
    local check = getTileItemById(pos, idpedra).uid
    if check > 0 then
        doRemoveItem(check, 1)
        doPlayerSendTextMessage(cid, 4, msg_remover)
    else
        doPlayerSendCancel(cid, "A pedra já foi removida.")
    end
return true
end

function onStepOut(cid, item, position, item2, fromPosition)
    local check = getTileItemById(pos, idpedra).uid
    if check < 1 then
        doCreateItem(idpedra, 1, pos)
        doPlayerSendCancel(cid, msg_repor)
    end
return true
end

Não testei, poste o resultado para que possamos resolver possíveis bugs juntos.

 

Boa sorte.

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

Resultado inicial a pedra não sumia adicionei um stackpos no script e a pedra passou a sumir mas não reaparecia.

local idpedra = 8538  -- ID da pedra
local pos = {x=1335, y=1379, z=11, stackpos=1}  -- Coordenada da pedra

o movements.xml tava assim:

<movevent event="StepIn" actionid="8000" script="tilepress1.lua"/>

depois resolvi adicionar um StepOut:

<movevent event="StepIn" actionid="8000" script="tilepress1.lua"/>
<movevent event="StepOut" actionid="8000" script="tilepress1.lua"/>

após isso a pedra passou a reaparecer  :wow:  (y)

Valeu Adriano!!

 

porem desde o inicio dos testes o tile não afundou...não entendi pq... quando está sem action ele afunda :(

Editado por Prizzee (veja o histórico de edições)
Link para o post
Compartilhar em outros sites

Exatamente, precisa por StepIn e StepOut em movements.

 

Enfim, sobre o piso não afundar e voltar ao original, creio que seja o return true para que o script padrão do item aja naturalmente.

 

Teste assim:

local idpedra = XXXX  -- ID da pedra
local pos = {x=000, y=000, z=0, stackpos=1}  -- Coordenada da pedra
local msg_remover = "Pedra removida com sucesso."  -- Mensagem ao remover a pedra
local msg_repor = "Pedra adicionada novamente."  -- Mensagem ao repor a pedra

function onStepIn(cid, item, position, item2, fromPosition)
    local check = getTileItemById(pos, idpedra).uid
    if check > 0 then
        doRemoveItem(check, 1)
        doPlayerSendTextMessage(cid, 4, msg_remover)
        return true
    else
        doPlayerSendCancel(cid, "A pedra já foi removida.")
    end
return true
end

function onStepOut(cid, item, position, item2, fromPosition)
    local check = getTileItemById(pos, idpedra).uid
    if check < 1 then
        doCreateItem(idpedra, 1, pos)
        doPlayerSendCancel(cid, msg_repor)
        return true
    end
return true
end

Boa sorte.

Caso não funcione posso fazer para que o próprio script faça esta função.

 

Basta me avisar.

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

Gosta do meu trabalho?

Curta e siga a página do meu projeto de 2016 e 2017 (Lab Z Games) que trará vários servidores OTServs.

 

Atenciosamente,
Adriano Swatt'

 

Para ver meus tutoriais acesse meu perfil.

 

cbCyOSZ.png

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

  • Conteúdo Similar

    • Por Sphynx1
      Olá galera, vocês conhecem as lendas dos Trolls de baixo da ponte? Eles estão sempre na espreita, aguardando alguém para roubar, assassinar, estuprar e comer suas almas (as últimas partes são brincadeira). Me baseando nessa lenda eu fiz esse simples script, é um dos primeiros códigos que consigo desenvolver sozinho(tive ajuda), eu espero que ajude alguém em algum lugar do tempoespaço, é um script ótimo se você assim como eu gosta de pontes e também sempre teve a vontade de incrementar alguns de seus mapas com scripts.




       
      1º. Acesse a pasta raiz do seu servidor, logo após siga o seguinte caminho: data/movements e abra o arquivo movements.xml. O código que você devera adicionar dentro deste arquivo está listado abaixo.
      <movevent type="StepIn" actionid="DigiteONumeroDeUmaActionAqui" event="script" value="ponte.lua"/>  
      2º. Dentro de data/movements abra a pasta 'scripts' e crie um arquivo .lua nomeado de 'ponte', dentro deste adicione o seguinte código.
      function onStepIn(cid, item, position, lastPosition, fromPosition, toPosition, actor) local configuration = { monstrosTime = 1*5*1000, -- tempo até a criatura aparecer tempoDeStorage = 1*20*1000, -- em quanto tempo será removido a storage e se tornará possivel as criaturas resurgirem storage = 987459, -- numero da storage monsters = { [1] = {name = "Troll Champion", pos = {x = 1001, y = 1110, z = 9}}, -- Nome, quantidade e posição dos monstros, altere a vontade [2] = {name = "Troll", pos = {x = 1000, y = 1107, z = 9}}, [3] = {name = "Troll", pos = {x = 1007, y = 1109, z = 9}} } } if isPlayer(cid) == true then if getPlayerStorageValue(cid, configuration.storage) < 1 then doCreatureSay(cid, "A ponte não parece segura e quando você dá o primeiro passo ouve um grunhido e nota a presença de um ser estranho.", TALKTYPE_ORANGE_1) -- MSG que você quer exibir addEvent(function() for k, v in pairs(configuration.monsters) do doCreateMonster(v.name, v.pos) end end, configuration.monstrosTime) setPlayerStorageValue(cid, configuration.storage, 1) addEvent(function() setPlayerStorageValue(cid, configuration.storage, 0) end, configuration.tempoDeStorage) end end return true end  
      3º. Inicie o seu servidor e adicione o número da 'ActionID' que você inseriu em 'movements.xml' a algum piso de sua preferência, no caso eu adicionei no meio da ponte. Seja criativo.
    • Por ViitinG
      Gostaria de um script que fizese com que o player não possa passar por cima de um certo tile !!
    • Por danielduarte96
      Seguinte galera.. Eu dei uma procurada porém não encontrei. Eu gostaria de um item que desse vip (Vip permanente), e de quebra já queria o tile que a pessoa só passa caso seja vip.
       
      Agradeço desde já!
    • Por allanzinh
      Fala galera blz ? espero que sim . Estou presisando de alguem edit ese Script pr mim . ele esrta funfando de boa eo só kero que só players Premio teleport nele a função de lv ele jah contem .
       



       
       
      Quem Ajudar eo do Rep +  obrigado des de ja
    • Por GabrielSapient
      Uso como base o pokémon titanium, os pokémons não evoluem, e na dex fica em branco as stones... 
       
      evolution:
       



       
      Evolution um NPC que eu achei:
       



       
      pokedex system:
       




      up

      Resolvido, pode fechar.
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo