Ir para conteúdo
  • Cadastre-se

(Resolvido)Usar X item apenas com X item


Ir para solução Resolvido por Adriano SwaTT,

Posts Recomendados

manda o  script q vc pois e a tag.. todas as 2 para conferir.

 

Tag:

        <movevent type="Equip" itemid="7438" slot="ammo" event="script" value="custom/crossbow.lua">
                <vocation name="Paladin"/>
                <vocation name="Royal Paladin"/>
                <vocation name="Force Archer"/>
	</movevent>
        <movevent type="DeEquip" itemid="7438" slot="ammo" event="script" value="custom/crossbow.lua"/> 

Script:

local boltID =  2352 -- id da bolt
local bowID = 7438 -- bow id
 
 
function onEquip(cid, item)
if getPlayerSlotItem(cid, CONST_SLOT_AMMO) == boltID then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você equipou o '..getItemNameById(BowID)..' . ')
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você não pode equipar o  '..getItemNameById(BowID)..' por não ter o '..getItemNameById(boltID)..' no slot. ')
return false
end
return true
end
 
 
function onDeEquip(cid, item, slot)
if getPlayerSlotItem(cid, CONST_SLOT_AMMO) == boltID then
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você so pode desequipar se tirar a '..getItemNameById(boltID)..'. ')
return false
else
doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Você Desequipou o '..getItemNameById(BowID)..' . ')
end
return true
end 
Link para o post
Compartilhar em outros sites
  • Respostas 55
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

Acho que a melhor forma de fazer isso é assim:   Suponhamos que seja o arrow, então o script chamará "arrow.lua". local bow = 2417 -- ID DA BOW function onEquip(cid,item)     if (getPlayerSlotIt

ah sim, realmente.. eu fiz isso mesmo, esqueci de registrar para ambas as mãos.   vou editar.

Atualize o script para este: local bows = { [idbow] = {ammunitionID}, -- Arma, Munição [idbow2] = {ammunitionID2}, -- Arma, Munição [idbow3] = {ammunitionID3}, -- Arma, Munição } local slot = nil

o slot da tag nao e  ammo e sim slot="hand"

 

 

ammo e se fose munição.

Link para o post
Compartilhar em outros sites

o slot da tag nao e  ammo e sim slot="hand"

 

 

ammo e se fose munição.

 

Mesma coisa... nada aconteceu, exceto o fato de agora a bow não poder se equipada.  :wacko: 

 

ERRO:

 

JOKD8n4.png?1

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

Use assim:

 

local bow = 2417 -- ID DA BOW
local arrow = 2352 -- ID do ARROW

function onEquip(cid, item)
    if (getPlayerSlotItem(cid,5).itemid == bow) or (getPlayerSlotItem(cid,6).itemid == bow) then
        doDecayItem(item.uid)
    else
        return FALSE, doPlayerSendCancel(cid,'Você precisa estar usando o '..getItemNameById(bow)..'.')
    end
    return TRUE
end

function onDeEquip(cid, item)
    if getPlayerSlotItem(cid, ammo).itemid == arrow then
        return true
    else
        return FALSE, doPlayerSendCancel(cid,'Primeiro você precisa remover seus '..getItemNameById(arrow)..' para depois remover seus '..getItemNameById(bow)..'s.')
    end
    return TRUE
end

 

E a tag em movements.xml ficará assim:

<movevent type="Equip" itemid="2544" slot="ammo" event="script" value="arrow.lua"/>
    <movevent type="DeEquip" itemid="2352" slot="shield" event="script" value="arrow.lua"/>

 

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

Use assim:

local bow = 2417 -- ID DA BOW
local arrow = 2352 -- ID do ARROW

function onEquip(cid, item)
    if (getPlayerSlotItem(cid,5).itemid == bow) or (getPlayerSlotItem(cid,6).itemid == bow) then
        doDecayItem(item.uid)
    else
        return FALSE, doPlayerSendCancel(cid,'Você precisa estar usando o '..getItemNameById(bow)..'.')
    end
    return TRUE
end

function onDeEquip(cid, item)
    if getPlayerSlotItem(cid, ammo).itemid == arrow then
        return true
    else
        return FALSE, doPlayerSendCancel(cid,'Primeiro você precisa remover seus '..getItemNameById(arrow)..' para depois remover seus '..getItemNameById(bow)..'s.')
    end
    return TRUE
end

E a tag em movements.xml ficará assim:

<movevent type="Equip" itemid="2544" slot="ammo" event="script" value="arrow.lua"/>
    <movevent type="DeEquip" itemid="2352" slot="shield" event="script" value="arrow.lua"/>

Boa sorte.

 

Não funcionou não, está usando normalmente.

Link para o post
Compartilhar em outros sites

Em movements.xml:

<movevent type="Equip" itemid="2546" slot="ammo" event="script" value="arrow.lua" /> <!-- id da arrow -->
<movevent type="DeEquip" itemid="2456" slot="hand" event="script" value="arrow.lua" /> <!-- id da bow -->
Em movements/scripts crie o arquivo arrow.lua com este conteúdo:

local bowID = 2456 -- id da bow escolhida
local arrowID = 2546 -- id da arrow escolhida

function onEquip(cid, item)
    if getPlayerSlotItem(cid, 6).itemid == bowID or getPlayerSlotItem(cid, 5).itemid == bowID then
		return true
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa estar equipado com um '..getItemNameById(bowID)..' para usar seu '..getItemNameById(item.itemid)..'.')
	return false
end

function onDeEquip(cid, item, slot)
	local item = getPlayerSlotItem(cid, slot).itemid
	if getPlayerSlotItem(cid, 10).itemid == arrowID then
		doPlayerRemoveItem(cid, item, 1)
		doPlayerAddItem(cid, item, 1, false, slot)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa desequipar seu '..getItemNameById(arrowID)..' para desequipar seu '..getItemNameById(item.itemid)..'.')
		return false
	end
	return true
end
Não tive a oportunidade de testar pois estou no serviço,

Qualquer bug por favor, poste o erro do console.

Abraço!

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

Atenciosamente,

Bruno Minervino

Link para o post
Compartilhar em outros sites

Em movements.xml:

<movevent type="Equip" itemid="2546" slot="ammo" event="script" value="arrow.lua" /> <!-- id da arrow -->
<movevent type="DeEquip" itemid="2456" slot="hand" event="script" value="arrow.lua" /> <!-- id da bow -->
Em movements/scripts crie o arquivo arrow.lua com este conteúdo:

local bowID = 2456 -- id da bow escolhida
local arrowID = 2546 -- id da arrow escolhida

function onEquip(cid, item)
    if getPlayerSlotItem(cid, 6).itemid == bowID or getPlayerSlotItem(cid, 5).itemid == bowID then
		return true
	end
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa estar equipado com um '..getItemNameById(bowID)..' para usar seu '..getItemNameById(item.itemid)..'.')
	return false
end

function onDeEquip(cid, item, slot)
	local item = getPlayerSlotItem(cid, slot).itemid
	if getPlayerSlotItem(cid, 10).itemid == arrowID then
		doPlayerRemoveItem(cid, item, 1)
		doPlayerAddItem(cid, item, 1, false, slot)
		doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa desequipar seu '..getItemNameById(arrowID)..' para desequipar seu '..getItemNameById(item.itemid)..'.')
		return false
	end
	return true
end
Não tive a oportunidade de testar pois estou no serviço,

Qualquer bug por favor, poste o erro do console.

Abraço!

 

 

Olha, funcionou... porém se eu estiver usando a bow "certa" e jogar outra qualquer a arrow continua funcionando... há alguma maneira de fazer com que ela pare de funcionar ou que ela APENAS funcione com a bow do script? Ou teria que fazer outro script para a bow?

Link para o post
Compartilhar em outros sites

A mesma tag em movements e o script assim:

local bowID = 2456 -- id da bow escolhida
local arrowID = 2546 -- id da arrow escolhida

function onEquip(cid, item)
    
    if item.itemid ~= bowID and getPlayerSlotItem(cid, 10).itemid == arrowID then
        doPlayerSendCancel(cid, "Você precisa remover suas munições para equipar outro bow.")
        return false
    end

    if getPlayerSlotItem(cid, 6).itemid == bowID or getPlayerSlotItem(cid, 5).itemid == bowID then
        return true
    end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa estar equipado com um '..getItemNameById(bowID)..' para usar seu '..getItemNameById(item.itemid)..'.')
    return false
end

function onDeEquip(cid, item, slot)
    local item = getPlayerSlotItem(cid, slot).itemid
    if getPlayerSlotItem(cid, 10).itemid == arrowID then
        doPlayerRemoveItem(cid, item, 1)
        doPlayerAddItem(cid, item, 1, false, slot)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa desequipar seu '..getItemNameById(arrowID)..' para desequipar seu '..getItemNameById(item.itemid)..'.')
        return false
    end
    return true
end

 

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

A mesma tag em movements e o script assim:

 

local bowID = 2456 -- id da bow escolhida
local arrowID = 2546 -- id da arrow escolhida

function onEquip(cid, item)
    
    if item.itemid ~= bowID and getPlayerSlotItem(cid, 10).itemid == arrowID then
        doPlayerSendCancel(cid, "Você precisa remover suas munições para equipar outro bow.")
        return false
    end

    if getPlayerSlotItem(cid, 6).itemid == bowID or getPlayerSlotItem(cid, 5).itemid == bowID then
        return true
    end
    doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa estar equipado com um '..getItemNameById(bowID)..' para usar seu '..getItemNameById(item.itemid)..'.')
    return false
end

function onDeEquip(cid, item, slot)
    local item = getPlayerSlotItem(cid, slot).itemid
    if getPlayerSlotItem(cid, 10).itemid == arrowID then
        doPlayerRemoveItem(cid, item, 1)
        doPlayerAddItem(cid, item, 1, false, slot)
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_ORANGE, 'Voce precisa desequipar seu '..getItemNameById(arrowID)..' para desequipar seu '..getItemNameById(item.itemid)..'.')
        return false
    end
    return true
end
 

Boa sorte.

Adriano,

Neste caso ele só iria executar a função OnEquip com o item que estiver definido no movements.xml não como um todo, neste caso, somente quando equipasse a arrow.

@ScythePhantom,

Teria que fazer esta condição apenas para equipar ou desequipar e uma outra condição em weapons para atribuir o attack etc apenas se usar tal bow, isso tem como fazer.

Abraço!

Atenciosamente,

Bruno Minervino

Link para o post
Compartilhar em outros sites

Se estiver com o arrow no slot ammo e estiver equipando um bow diferente do que está definido no script, não irá equipar.

Ou seja, precisará remover a arrow do slot para tal.

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

Se estiver com o arrow no slot ammo e estiver equipando um bow diferente do que está definido no script, não irá equipar.

Ou seja, precisará remover a arrow do slot para tal.

O responsável por chamar a função OnEquip do arrow.lua, é essa linha:

<movevent type="Equip" itemid="2546" slot="xxxxx" event="script" value="arrow.lua" /> <!-- id da arrow -->

Então, para o que você está falando aconteça, você teria que aplicar o event script em todos os items que iriam fazer parte desta checagem....

Atenciosamente,

Bruno Minervino

Link para o post
Compartilhar em outros sites

Ahh sim, realmente...

Fiz correndo e esqueci da parte da tag.

:x

 

No caso ele teria que declarar todos os itens que tem a função de bow em movements.

:O

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

Ahh sim, realmente...

Fiz correndo e esqueci da parte da tag.

:x

 

No caso ele teria que declarar todos os itens que tem a função de bow em movements.

:O

Correto...

Por isso, como eu disse, que era melhor ele deixar como eu fiz, e depois adicionar um script em weapons para que o arrow só faça efeito com x bow.

Atenciosamente,

Bruno Minervino

Link para o post
Compartilhar em outros sites

Correto...

Por isso, como eu disse, que era melhor ele deixar como eu fiz, e depois adicionar um script em weapons para que o arrow só faça efeito com x bow.

 

Hum... então... desisto da ideia?

Link para o post
Compartilhar em outros sites

Hum... então... desisto da ideia?

Não amigo, você já está com quase tudo feito, só falta a parte do script, quando eu chegar em casa te dou um help melhor.

É que agora estou no serviço.

Atenciosamente,

Bruno Minervino

Link para o post
Compartilhar em outros sites

Não amigo, você já está com quase tudo feito, só falta a parte do script, quando eu chegar em casa te dou um help melhor.

É que agora estou no serviço.

 

Opa, muito obrigado, amigo. Bom serviço. 

Link para o post
Compartilhar em outros sites

Se ele não fizer, eu faço...

é que agora estou bem ocupado também com serviços pendentes.

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.




×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo