Ir para conteúdo
  • Cadastre-se

Posts Recomendados

Eu estou vindo aqui galera do TK perdir dois tipo de spell que teleporta espero que alguém min ajude.

Bom gente o primeiro spell é quando um player fala a palavra magica cairá o item no chao, esse item ficará no chao com o dados x= xxx y=yyy z=z salvo, quando o player usa a magia novamente o player será teleportado para onde o item esta. Só que o item ele vaii ter um templo, quando o templo acaba o item sumirá. Queria que quando o item sumisse o player que uso a magia, receberá uma mensagem dizendo quer o x item sumiu. Bom esse é o primeiro spell.

O Segundo spell fucionar assim o player usa a magia em outro player(Attack Target) ficará o espirito no target, que passa de 1 minunto o player que uso a magia será teleportando pra cima do target. O target pode correr pra onde quisse, mas quando passa 1 minunto cairá o player que uso a magia em cima. Bom esse foi o segundo pedido espero que deu pra entende os dois perdidos. Agradeços e espera que alguem min ajude!

Link para o post
Compartilhar em outros sites

Fiz tb uma versão para a primeira spells, caso não goste use a do whitewolf :)

bom, quando acaba o tempo o player é avisado e o item some.

 

local storage = 987123 -- storage
local item = 2160 -- id do item
local time = 20 -- tempo em segundos que o item vai ficar na posição.

local pos = {}

    function terminus(cid)
     local a = getTileItemById(pos[1], item)
       if a.uid > 0 then
          doRemoveItem(a.uid)
       end
       if isPlayer(cid) then
          doPlayerSendTextMessage(cid, 22, "O item sumiu.")
       end
        table.remove(pos, 1)
    end

function onCastSpell(cid, var)

if getPlayerStorageValue(cid, storage) - os.time() <= 0 then
  table.insert(pos, getCreaturePosition(cid))
    setPlayerStorageValue(cid, storage, os.time()+time)
     doCreateItem(item, getCreaturePosition(cid))
    doSendMagicEffect(getCreaturePosition(cid), 3)
  addEvent(terminus, time*1000, cid)
elseif getPlayerStorageValue (cid, storage) - os.time() >= 1 then
  doTeleportThing(cid, pos[1])
  doSendMagicEffect(getCreaturePosition(cid), 10)
end

return true
end

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

pelo que eu to vendo seu script tem um bug: se dois players usarem a spell o player 2 será teleportado pra posição 1. Confere isso pra mim e me diz se eu to errado. 

OBS: seu script ficou muito melhor doque o meu mas tem esse bugzinho aí (acredito eu)

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

pelo que eu to vendo seu script tem um bug: se dois players usarem a spell o player 2 será teleportado pra posição 1. Confere isso pra mim e me diz se eu to errado. 

OBS: seu script ficou muito melhor doque o meu mas tem esse bugzinho aí (acredito eu)

 

De fato !

Isso nem passou na minha cabeça 'rsrs

 

vou editar.

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

Eduardo carvalho vc jah editor a script lah em cima e obrigado vou testa.

Xwithewolf e vc vlw muito por ter mandado logo os dois.

Vou testa quando eu chega de viaje e mando resposta, eu estou pelo celular obrigado os espero que funcione.

Link para o post
Compartilhar em outros sites

Ta ae.. Agora é pelo nome , ngm tem o nome igual 'rsrs 

local storage = 987123 -- storage
local item = 2160 -- id do item
local time = 20 -- tempo em segundos que o item vai ficar na posição.

local pos = {}

function terminus(cid)
if isPlayer(cid) then
for index, pid in pairs(pos) do
if index == getCreatureName(cid) then
local a = getTileItemById(pos[index], item)
if a.uid > 0 then
doRemoveItem(a.uid)
end
end
end
doPlayerSendTextMessage(cid, 22, "O item sumiu.")
end
end

function onCastSpell(cid, var)

if getPlayerStorageValue(cid, storage) - os.time() <= 0 then
pos[getCreatureName(cid)] = getCreaturePosition(cid)
setPlayerStorageValue(cid, storage, os.time()+time)
doCreateItem(item, getCreaturePosition(cid))
doSendMagicEffect(getCreaturePosition(cid), 3)
addEvent(terminus, time*1000, cid)
elseif getPlayerStorageValue (cid, storage) - os.time() >= 1 then
for index, pid in pairs(pos) do
if index == getCreatureName(cid) then
doTeleportThing(cid, pid)
doSendMagicEffect(getCreaturePosition(cid), 10)
end
end
end

return true
end

o bom é que se mesmo o player deslogar e depois logar , se o item ainda tiver no lugar, o mesmo ainda é teleportado.

whitewolf, vlw por reportar o bug.

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

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

esses for não tão criando nenhum loop desnecessário não? vc chegou a testar? acho que o bug ainda continua

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Eu n cheguei a testa n pq eu estou viajando, mas eu vou testa o seu, pq esta com bugs ou o do mano ae

Link para o post
Compartilhar em outros sites

esses for não tão criando nenhum loop desnecessário não? vc chegou a testar? acho que o bug ainda continua

 

não, o for está correto. Usei pairs, pq eu não usei table.insert, eu adicionei na tabela a posição no index do nome do player.

 

o for checa todos os index, e o index que for igual ao nome do player, ele teleporta para posição "pid"(posição salva no index do player).

 

O bug foi resolvido. Eu só errei em fazer isso pq sempre só testo com 1 player, ae já estou acostumado, como se no serve fosse entrar apenas 1 player 'rsrs

 

 

Eu n cheguei a testa n pq eu estou viajando, mas eu vou testa o seu, pq esta com bugs ou o do mano ae

 

acabei de testar, está funcionando !

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

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

Pronto testei os dois e as scripts estão funcionando perfeitamente, obriga galera por ajudar e

segura ae meu rep ++ ;)

Link para o post
Compartilhar em outros sites

Bom gente eu testei os dois um funcionou perfeitamente e o primeiro de withewolf  o item n some mas ficou bom que eu tenho os tipo vlw. eu quero agradeçe a Eduardo Carvalho e WitheWolf que estao sempre ajudando os cara, continue assim vlw.

 

Pedido Resolvido.

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

eu fiz a segunda spell igualzinha do server dos caras, com o dano e tudo..  dá uma olhada na minha assinatura. A primeira spell o item não some porque o jeito que tem de fazer ele sumir é por Decay e pra isso precisaria criar um item diferente no item editor com a mesma sprite de um item existente (a menos que vc nao ligue de perder um item do seu server). A forma que o Eduardo fez é muito boa mas ela é falha (quando alguém faz um item na mesma hr que o item anterior foi removido o item atual é removido e o antigo não). Se vc manjar de item editor ou tiver disposto a perder o item do seu server é só trocar o script por esse daqui:
 

local config = {
storage = 49607, 
tempo = 10
}


local positions = {}


function onCastSpell(cid, var)


local itemid = math.random (5787, 5788) 


if getPlayerStorageValue(cid, config.storage) <= 0 then
table.insert(positions, getThingPos(cid))
doPlayerSetStorageValue(cid, config.storage, #positions)
doDecayItem(doCreateItem(itemid, getThingPos(cid)))
doSendMagicEffect(getThingPos(cid), 3)
addEvent(function()
  if isCreature(cid) then
   doPlayerSendTextMessage(cid, 22, "Your item has expired.")
  doPlayerSetStorageValue(cid, config.storage, 0)
  table.remove(positions, getPlayerStorageValue(cid, config.storage))
  end
 end, 1000*config.tempo)
elseif getPlayerStorageValue (cid, config.storage) > 0 then
doTeleportThing(cid, positions[getPlayerStorageValue(cid, config.storage)]) 
doSendMagicEffect(getThingPos(cid), 2)
end
return true
end

e em items.xml vc tem que editar o item que vc for usar (no meu caso eu usei os dois target dummie (5788, 5787) e editei de acordo no items.xml:

<item fromid="5787" toid="5788" article="a" name="target" >
<attribute key="decayTo" value="0" />
<attribute key="duration" value="10" />
</item>

ajustando a duration com o tempo do script fica perfeito e acredito q foi assim q os caras do server pioneiro desse sistema fizeram, mas o problema é que se vc usa um item normal (que não foi criado a + no item editor) todos os items iguais a ele vão desaparecer do mapa, então fazendo isso eu perdi todos os items 5787 e 5788 que tinham no meu mapa.

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

Whitewolf isso que vc falou do items , nāo faz sentido..

Ta funcionando perfeitamente.

Sempre que o player usa a spells, a posiçāo é atualizada na tabela

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites

tem certeza que não faz sentido?

10454247_1447748472143299_33492090054542

Todos os meus trabalhos importantes estão na seção "Sobre mim" no meu perfil; Dá uma passada lá!

"Há três caminhos para o fracasso: não ensinar o que se sabe, não praticar o que se ensina, e não perguntar o que se ignora." - São Beda

I7Pm6ih.png

(obg ao @Beeny por fazer essa linda sign <3)

Link para o post
Compartilhar em outros sites

LOL 'kkk . Isso não está ocorrendo aqui, acabei de testar novamente! (creio que não to usando a spell rápido suficiente)

o item só não é removido se o player deslogar.

 

Mas creio que isso seja quase "impossível" de acontecer, já que o bug deve ocorrer pq você usou a magia enquanto o o script está execuntando o loop, e isso é coisa de milissegundos.

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

infos40x40.png

Skype : duhw.carvalho

 

Ajude-nos a crescer, clicando em curtir

 

 

 

Link para o post
Compartilhar em outros sites
  • 6 months later...

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