Ir para conteúdo

Escript de teleport


Yakutche

Posts Recomendados

Não sei se o Post está no local correto caso não esteja Por favor Mova.

 

Olá pessoal do Xtibia, estou querendo um Script meio "complicado", bom eu acho que é complicado pois não entendo muito de Scritp. Vamos ao Pedido.

 

O Script tem que funcionar da seguinte Maneira.

 

1º Eu Uso "x" Item na minha bag ou slots do inventario. Este "x" item muda. Como assim? Ex: é uma Mascara cinza ao usar ela ativa e fica "colorida". Quero isso para diferenciar de Ligado e Desligado. Caso Seja possível uma mensagem deve aparecer "x está ativo".

 

2º No momento em que o item é Ligado a vida atual do Jogador é Registrada. (Obs.: Apenas a Vida dele, não quero que registre a mana)

 

3º Quando o jogador usar o Item "Ligado" (em algum local aceitável do mapa) a vida dele será recuperada para a quantia que o item registrou ao ser Ligado. e o jogador será teleportado para aquela posição.

 

-Regras-

1ª O item deve ter 1 Colldown ao ser ligado, ele ficara "x" tempo ligado e então desativa sozinho.

2ª No momento que o jogador usar o Item "ligado" e a vida volta, o script "reseta", no caso quando ele "ligar" novamente o item irá salvar a vida que ele está no momento.

3ª Deve haver um Colldown Para "ligar" o item novamente. Caso o jogador tente "ligar" antes do tempo acabar aparece uma mensagem "faltam x segundos" para o jogador.

----------------------------------------------------------

Obs¹: Caso possivel o item "ligado" possa ser usado nos slots do inventario jogador. em caso de trap a qual n seja possível escapar ele vai ter 1 chance de curar se ativou o item.

Link para o comentário
Compartilhar em outros sites

Se ele usar o item(deixar ligado) vai registrar a vida atual até ae ok porém não entendi a parte de healar, visto que caso ele tome algum hit ele deveria healar na msm hr a vida antiga? isso iria funcionar apenas 1x ou sempre ficando praticamente imortal enquanto o item durar? Se me explicar um pouco melhor posso tentar usar o pouco que sei e te ajudar.

Link para o comentário
Compartilhar em outros sites

50 minutos atrás, Rayan disse:

Se ele usar o item(deixar ligado) vai registrar a vida atual até ae ok porém não entendi a parte de healar, visto que caso ele tome algum hit ele deveria healar na msm hr a vida antiga? isso iria funcionar apenas 1x ou sempre ficando praticamente imortal enquanto o item durar? Se me explicar um pouco melhor posso tentar usar o pouco que sei e te ajudar.

Imagina o seguinte, você ta full life (200), dai você ativa o item, ele vai registrar a sua vida atual ( no caso full 200), então enquanto o item ta ativo você começa a ser atacado e perde vida, dai quando você usa o item. sua vida vai voltar ao que foi registrado (200) e também tem a parte do teleporte, então o item desliga e tem o CD para poder ativar novamente.

Link para o comentário
Compartilhar em outros sites

Olá mano eu tentei fazer aqui o codigo que você pediu, se tiver como postar o resultado (ainda não testei pois não tenho nenhum servidor nesse meu pc).

 

Observação:



Coloque no action.xml a tag com o id dos dois itens, o On e o Off

 

Explicação:



On: ID do item quando ficar em funcionamento.

Off: ID do item quando não ficar em funcionamento.

Pos: não mexer aqui pois ele vai inserir na tablea a posição atual do player.

Life: Mesma coisa, irá inserir na tabela o hp atual do player na hora que clicou.

Storage: Não mexer pode prejudicar o codigo.

Time: Tempo em segundos em que o player poderá usar o item novamente.

 

Codigo:



function onUse(cid, item, frompos, item2, topos)

local config = {
  on = 1212, off == 1213, pos = {}, life = {}, storage = 50000, time = 5
}

    if not config then return true end

    if item.itemid == config.off then
        if getPlayerStorageValue(cid, config.storage) < 0 then
                doTransformItem(item.uid, config.on)
                doPlayerSendTextMessage(cid, 27, "O seu item acaba de ser ativado!")
                table.insert(config.pos, getThingPos(cid))
                table.insert(config.life, getCreatureHealth(cid))
            else
                doPlayerSendCancel(cid, "Você ainda não pode usar esse item espere ["..getPlayerStorageValue(cid, config.storage) < os.time.."] segundos.")
            return true
        end
    end

    if item.itemid == config.on then
        doTransformItem(item.uid, config.off)
        doCreatureAddHealth(cid, config.life)
        doTeleportThing(cid, config.pos)
        table.remove(config.pos)
        table.remove(config.life)
        doPlayerSendTextMessage(cid, 27, "Pronto você acaba de recuperar seu HP!")
        setPlayerStorageValue(cid, config.storage, os.time() + config.time)
    end
    

    return true
end

Link para o comentário
Compartilhar em outros sites

47 minutos atrás, kttallan disse:

Olá mano eu tentei fazer aqui o codigo que você pediu, se tiver como postar o resultado (ainda não testei pois não tenho nenhum servidor nesse meu pc).

 

Observação:

 

  Ocultar conteúdo

 

 


Coloque no action.xml a tag com o id dos dois itens, o On e o Off
 

 

 

 

Explicação:

 

  Ocultar conteúdo

 

 


On: ID do item quando ficar em funcionamento.

Off: ID do item quando não ficar em funcionamento.

Pos: não mexer aqui pois ele vai inserir na tablea a posição atual do player.

Life: Mesma coisa, irá inserir na tabela o hp atual do player na hora que clicou.

Storage: Não mexer pode prejudicar o codigo.

Time: Tempo em segundos em que o player poderá usar o item novamente.
 

 

 

 

Codigo:

 

  Ocultar conteúdo

 

 


function onUse(cid, item, frompos, item2, topos)

local config = {
  on = 1212, off == 1213, pos = {}, life = {}, storage = 50000, time = 5
}

    if not config then return true end

    if item.itemid == config.off then
        if getPlayerStorageValue(cid, config.storage) < 0 then
                doTransformItem(item.uid, config.on)
                doPlayerSendTextMessage(cid, 27, "O seu item acaba de ser ativado!")
                table.insert(config.pos, getThingPos(cid))
                table.insert(config.life, getCreatureHealth(cid))
            else
                doPlayerSendCancel(cid, "Você ainda não pode usar esse item espere ["..getPlayerStorageValue(cid, config.storage) < os.time.."] segundos.")
            return true
        end
    end

    if item.itemid == config.on then
        doTransformItem(item.uid, config.off)
        doCreatureAddHealth(cid, config.life)
        doTeleportThing(cid, config.pos)
        table.remove(config.pos)
        table.remove(config.life)
        doPlayerSendTextMessage(cid, 27, "Pronto você acaba de recuperar seu HP!")
        setPlayerStorageValue(cid, config.storage, os.time() + config.time)
    end
    

    return true
end
 

 

 

Uma Dúvida, no Action.xml as tags devem ser 2 correto?

e elas devem ser como <action uniqueid//<action itemid//<action actionid        ??

 

Link para o comentário
Compartilhar em outros sites

Agora, Yakutche disse:

Uma Dúvida, no Action.xml as tags devem ser 2 correto?

e elas devem ser como <action uniqueid//<action itemid//<action actionid        ??

 

    <action itemid="3896;3897 event="script" value="teleport.lua"/>

 

sendo 3896 e 3897 os ids dos itens on e off.

Link para o comentário
Compartilhar em outros sites

27 minutos atrás, kttallan disse:

    <action itemid="3896;3897 event="script" value="teleport.lua"/>

 

sendo 3896 e 3897 os ids dos itens on e off.

Olha ai as Img, tentei colocar no ACTxml como voce passou porem da erro no servidor, assim ele abre, porem o item "off" não muda e o "ligado" ao usar da Debug no jogo.

actxml.png

Script.png

servidor.png

39 minutos atrás, kttallan disse:

    <action itemid="3896;3897 event="script" value="teleport.lua"/>

 

sendo 3896 e 3897 os ids dos itens on e off.

Vou Mudar um Pouco a Ideia, Não precisa Transformar o Item. 1º Você usa x Item ele Registra seu HP atual e aparece x Mensagem, "você Ativou xxx". ele fica ativo por um certo período e desliga. Caso você leve dano com ele ativado e use ele em um local valido (qualquer local n pz acessível) sua vida volta a oque foi registrado e o item é desativado.  Obs. mesmo esquema dos Colldown tem q ter 1 para o item permanecer ativo e 1 para poder ser ativo novamente.

Link para o comentário
Compartilhar em outros sites

45 minutos atrás, kttallan disse:

Qual base do seu tfs, achei estranho não ter funcionado, pela logica parece está correta.

Baixei aqui mesmo, Nows do Sasky e Thiago, tenho tb Extnl que o Renan disponibilizou e alguns Dno

Link para o comentário
Compartilhar em outros sites

Qual a versão do servidor?

 

Edit:

OBS: NÃO TESTEI

Sobre o exhaust poderá dar uma bugada, mas não custa nada testar.

Fiz baseado na versão 7.81, coloque o id da mascara ligada e desligada no script e no actions.xml

 

Em actions/scripts, crie um script com o nome da mascara e coloque isso

function onUse(cid, item, frompos, item2, topos)
local idmascaranormal = 4450 ----- id da mascara normal
local idmascaratransformada = 4432  ----- id da mascara colorida
local storagegravarvida = 1430 ---- nao mexer aqui
local exhaust = 5 --- o tempo do exhaust que vai demorar
local nie = 48971
if getPlayerExhaust(cid, nie) == 0 then
if item.itemid == idmascaranormal then
doTransformItem(item.uid,idmascaratransformada) 
doSendMagicEffect(topos, 17)
setPlayerStorageValue(cid,storagegravarvida, getPlayerHealth(cid))
doPlayerSendTextMessage(cid,22,"A mascara esta ativada.")
elseif item.itemid == idmascaratransformada then
doTransformItem(item.uid,idmascaranormal) 
doPlayerAddHealth(cid,getPlayerStorageValue(cid, storagegravarvida))
setPlayerStorageValue(cid,storagegravarvida, -1)
doSendMagicEffect(topos, 2)
setPlayerExhaust(cid, nie, exhaust) 
doPlayerSendTextMessage(cid,22,"A mascara esta desativada.")
end
else
doPlayerSendTextMessage(cid, 22, "Espere ".. getPlayerExhaust(cid, nie).." segundo(s) para poder usar a mascara novamente.")

end

return true
end

Em actions.xml abra e coloque a tag

<action itemid="IDMASCARACOLORIDA" script="NOMEDOSCRIPT.lua" />
<action itemid="IDMASCARANORMAL" script="NOMEDOSCRIPT.lua" />

 

Editado por Fjinst
Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...