Ir para conteúdo
  • Cadastre-se

(Resolvido)[PEDIDO] ActionID para destruir paredes


Ir para solução Resolvido por Caronte,

Posts Recomendados

Olá pessoal!

Graças a ajuda que recebo dos membros do TK aqui no suporte, estou avançando bem em meu otserver que logo anunciarei no fórum, e consequentemente estou começando a entender um pouco mais de scripts heueheu, então gostaria de usar esse tópico também para agradecer a todos, e em especial ao Snowsz e luanluciano93, sou muito grato a todos que ajudam e principalmente a esses dois maninhos que respondem a maior parte dos meus tópicos :D

 

 

 

Bom, o script que preciso agora é o seguinte:
tenho um martelo(ID:2556) e as paredes que tiverem o tal ActionID(não entendo de ActionID, pode ser qualquer um desde que funcione) do script eu poderei quebrar..

 

PAREDE HORIZONTAL

Martelo(ID:2556) > Use With > Stone Wall(ID:3362)  com ActionID
 

então a Stone Wall se transformará em uma parede meia quebrada, que irá diminuindo em cada martelada

Primeira Martelada: ID:3362> transforma > ID:3401

Segunda Martelada: ID:3401> transforma > ID:3400

Terceira Martelada: ID:3400> transforma > ID:3648
Depois de 15 segundos, ID:3648 se transforma novamente no ID:3362

 

 

 

 

PAREDE VERTICAL

Martelo(ID:2556) > Use With > Stone Wall(ID:3361)  com ActionID
 

então a Stone Wall se transformará em uma parede meia quebrada, que irá diminuindo em cada martelada

Primeira Martelada: ID:3361> transforma > ID:3399

Segunda Martelada: ID:3399> transforma > ID:3387

Terceira Martelada: ID:3387> transforma > ID:3648
Depois de 15 segundos, ID:3648 se transforma novamente no ID:3361


(ps: em qualquer um dos casos, se o player parar na segunda martelada(exemplo), a parede ficará congelada naquilo até ser totalmente destruída e voltar após 15 segundos, normal..)

 

 

 

 

Com esse script, usarei de base para fazer com que outras paredes tenham a mesma função quando o ActionID for agregado à elas, então com essa base pronta, conseguirei configurar os outros com facilidade huehueh

Novamente, obrigado a todos!

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

local walls = {
              -- horizontal = {
               [3362] = 3401,
               [3401] = 3400,
               [3400] = 3648,
               --         },
              -- vertical = {
               [3361] = 3399,
               [3399] = 3387,
               [3387] = 3648,
                --      },
     }
       
function onUse(cid, item, toPosition, itemEx, fromPosition)

 if itemEx.itemid == 3387 then
  setPlayerStorageValue(cid, 4858, "v")
 else
  setPlayerStorageValue(cid, 4858, "h")
 end                                      

  if walls[itemEx.itemid] ~= nil then
   doTransformItem(itemEx.uid, walls[itemEx.itemid] )
   doSendMagicEffect(fromPosition, CONST_ME_GROUNDSHAKER)
  else
   doPlayerSendCancel(cid, "Local de uso incorreto")
   doSendMagicEffect(toPosition, CONST_ME_POFF)
  end

if walls[itemEx.itemid] == 3648 and getPlayerStorageValue(cid, 4858) == "h" then
 addEvent(function() doRemoveItem(getTileItemById({ x = fromPosition.x, y = fromPosition.y, z = fromPosition.z}, 3648).uid) doCreateItem(3362,1,fromPosition) doSendMagicEffect(fromPosition, CONST_ME_MAGIC_RED) end, 2000)
elseif walls[itemEx.itemid] == 3648 and getPlayerStorageValue(cid, 4858) == "v" then
 addEvent(function() doRemoveItem(getTileItemById({ x = fromPosition.x, y = fromPosition.y, z = fromPosition.z}, 3648).uid) doCreateItem(3361,1,fromPosition) doSendMagicEffect(fromPosition, CONST_ME_MAGIC_RED) end, 2000)
end
 return true
end
<action itemid="2556" event="script" value="Xcripts/martelo.lua"/>

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

Link para o post
Compartilhar em outros sites

Desculpe a demora, só deu pra logar agora heuheu

 

 

O script é funcional em ambas direções e o delay para a parede voltar é configurável, perfeito! (REP+ por isso)
mas manin, isso pode ser feito em ActionID? assim apenas as paredes com o ActionID poderiam quebrar, e as que não tivessem, não quebrariam ao martelar.. 

estava pensando no script:   (não sei se isso é possível, mas se der..)

EXEMPLO VERTICAL:
Ao usar MARTELO em ACTIONID - transformar em 3399
ai o resto do script segue como está, do 3399 para o 3387 e assim por diante..

EXEMPLO HORIZONTAL:
Ao usar MARTELO em ACTIONID - transformar em 3401
ai o resto do script segue como está, do 3401 para o 3400 e assim por diante..

 

 

Motivo: Fiz uma cidade inteira com paredes 3362 e 3361, então chega um player com o martelo e derruba todas as construções(embora elas levantem automaticamente), é meio tenso

 

Link para o post
Compartilhar em outros sites

Faço sim, assim que eu tiver acesso à um personal computer (PC).

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

Link para o post
Compartilhar em outros sites

Faço sim, assim que eu tiver acesso à um personal computer (PC).

Por que você não utilizou o doTransformItem(uid) para mudar o item  :P Não entendi isso que você pediu para ele biel.stocco

Ando devagar, porque já tive pressa. E levo esse sorriso, porque já chorei demais...

________________________________________________________________________________

Minhas Sprites:

Mega Metagross

Mega Abomasnow

Pack de Shinys

[Posso atualizá-lo com novos shinys a qualquer momento]

Tutoriais:

[Completo] Criando e adicionando um novo Pokémon

[Actions] Criando quest no RME

Editores Lua/Xml/Sync Entre outros:

Editores Win/Mac/Linux

Link para o post
Compartilhar em outros sites

Por que você não utilizou o doTransformItem(uid) para mudar o item  :P Não entendi isso que você pediu

para ele biel.stocco

Simplesmente para evitar possíveis erros,

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

Link para o post
Compartilhar em outros sites

Por que você não utilizou o doTransformItem(uid) para mudar o item  :P Não entendi isso que você pediu para ele biel.stocco

Pedi para ele fazer com que toda parece que tenha o ActionID 7048(exemplo), eu poderei usar o martelo para quebrá-la e em cada martelada ela se transformará em uma parede mais quebrada que antes, até que vire uma pedra e depois de X tempo ela volte a ser a parede que era antes

Editado por biel.stocco (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • Solução

Pedi para ele fazer com que toda parece que tenha o ActionID 7048(exemplo), eu poderei usar o martelo para quebrá-la e em cada martelada ela se transformará em uma parede mais quebrada que antes, até que vire uma pedra e depois de X tempo ela volte a ser a parede que era antes

 

De acordo como você pediu anteriormente, aí está:

local walls = {
              -- horizontal = {
               [3362] = 3401,
               [3401] = 3400,
               [3400] = 3648,
               --         },
              -- vertical = {
               [3361] = 3399,
               [3399] = 3387,
               [3387] = 3648,
                --      },
     }
       
function onUse(cid, item, toPosition, itemEx, fromPosition)



 if itemEx.itemid == 3387 and itemEx.actionid == 9090 then
  setPlayerStorageValue(cid, 4858, "v")
 elseif itemEx.actionid == 9090 then
  setPlayerStorageValue(cid, 4858, "h")
 end                                      

  if walls[itemEx.itemid] ~= nil and itemEx.actionid == 9090 then
   doTransformItem(itemEx.uid, walls[itemEx.itemid] )
   doItemSetAttribute(getTileItemById({ x = fromPosition.x, y = fromPosition.y, z = fromPosition.z}, walls[itemEx.itemid]).uid, "aid", 9090)
   doSendMagicEffect(fromPosition, CONST_ME_GROUNDSHAKER)
  else
   doPlayerSendCancel(cid, "Local de uso incorreto")
   doSendMagicEffect(toPosition, CONST_ME_POFF)
  end

if walls[itemEx.itemid] == 3648 and getPlayerStorageValue(cid, 4858) == "h" then
 addEvent(function() doRemoveItem(getTileItemById({ x = fromPosition.x, y = fromPosition.y, z = fromPosition.z}, 3648).uid) doCreateItem(3362,1,fromPosition) doSendMagicEffect(fromPosition, CONST_ME_MAGIC_RED) doItemSetAttribute(getTileItemById({ x = fromPosition.x, y = fromPosition.y, z = fromPosition.z}, 3362).uid, "aid", 9090) end, 2000) 
elseif walls[itemEx.itemid] == 3648 and getPlayerStorageValue(cid, 4858) == "v" then
 addEvent(function() doRemoveItem(getTileItemById({ x = fromPosition.x, y = fromPosition.y, z = fromPosition.z}, 3648).uid) doCreateItem(3361,1,fromPosition) doSendMagicEffect(fromPosition, CONST_ME_MAGIC_RED) doItemSetAttribute(getTileItemById({ x = fromPosition.x, y = fromPosition.y, z = fromPosition.z}, 3361).uid, "aid", 9090) end, 2000) 
end
 return true
end

Só usar a mesma TAG do XML que eu te mandei, e usar actionIds = 9090 para especificar a parede, se quiser outro número, é só mudar no script, todos os 9090 à gosto

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

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.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo