Ir para conteúdo

Featured Replies

Postado
  • Autor
  Em 03/03/2015 em 16:50, Adriano SwaTT disse:

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.

  • Respostas 55
  • Visualizações 2k
  • Created
  • Última resposta

Top Posters In This Topic

Most 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

  • Adriano SwaTT
    Adriano SwaTT

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

  • Adriano SwaTT
    Adriano SwaTT

    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

Postado

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

Postado
  • Autor
  Em 03/03/2015 em 17:42, Bruno Minervino disse:

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?

Postado

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

Postado
  Em 03/03/2015 em 18:30, Adriano SwaTT disse:

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

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo