Ir para conteúdo

[Movements] Deequip


gonorreiaswat

Posts Recomendados

[05/07/2011 16:36:23] The Forgotten Server, version 0.3.6 (Crying Damson)

[05/07/2011 16:36:23] Compiled with GNU C++ version 3.4.5 (mingw special) at Nov 30 2010, 08:39:22.

[05/07/2011 16:36:23] A server developed by Elf, slawkens, Talaturen, KaczooH, Lithium, Kiper, Kornholijo.

[05/07/2011 16:36:23] Visit our forum for updates, support and resources: http://otland.net.

 

 

Eu queria um Script no qual você só pudesse usar o "item / munição" no local do "ammo" se você estivesse com a arma no qual vai precisar para arremessa-lo em mãos.

No caso temos o Exemplo do Crystal Arrow...só poder por no SLOT do "AMMO" se você tiver com o G-Bow na mão.

 

Consegui esse Script em um topico...veja abaixo o Script.

 

 

 

em movements.xml adicione essa tag.

 

<movevent type="Equip" itemid="2352" slot="ammo" event="script" value="crystal.lua"/>

 

agora em scripts crie um arquivo lua com o nome crystal. adicione isso dentro dele:

 

function onEquip(cid,item)
local bow = 7438
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 

 

 

 

Sendo assim, o player pode remover o G-Bow e mesmo assim continuar o com o Crystal Arrow no SLOT "AMMO".

 

Andei pensando em uma solução... como seria?

 

Será que se fizesse o inverso, sim o inverso, do player só poder remover o G-Bow do Slot Hand, se o "Crystal Arrow" não estiver no Slot de "AMMO".. isso seria possível?

 

Ou alguma outra forma do player não conseguir remover o G-Bow e usar o Crystal Arrow com outro Bow qualquer...

 

 

 

Ou ajudar em uma das sugestões também me ajudaria a solucionar o problema:

 

1- Como por para cada munição "Arrow, Poison Arrow, Burst Arrow..." cada um só poder ser arremessado pela arma certa. Ex: Arrow só com o bow comum, poison arrow só com o Elvish Bow...etc.

 

2- Como faz para adicionar novas munições? (além de arrow e bolt.. para assim criar arma que arremessasse somente ela)

 

3- Ou no Movements, que fiz acima.

 

 

 

Fico no aguardo...

 

Abraços

Valendo REP+

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

<movevent type="DeEquip" itemid="7438" slot="right-hand" event="script" value="gbow.lua"/>
<movevent type="DeEquip" itemid="7438" slot="left-hand" event="script" value="gbow.lua"/>

 

2 tags /\

 

function onDeEquip(cid, item, slot)
local crystalArrowId = 2352
if getPlayerSlotItem(cid, 10).itemid == crystalArrowId then
           return false, doPlayerSendCancel(cid,'Você precisa retirar primeiro á '..getItemNameById(crystalArrowId)..'.')
end
return true
end

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

<movevent type="DeEquip" itemid="7438" slot="right-hand" event="script" value="gbow.lua"/>
<movevent type="DeEquip" itemid="7438" slot="left-hand" event="script" value="gbow.lua"/>

 

2 tags /\

 

function onDeEquip(cid, item, slot)
local crystalArrowId = 2352
if getPlayerSlotItem(cid, 10).itemid == crystalArrowId then
           return false, doPlayerSendCancel(cid,'Você precisa retirar primeiro á '..getItemNameById(crystalArrowId)..'.')
end
return true
end

 

Então, eu fiz isso, porém... o item é removido do Slot do mesmo jeito, só que aparece a mensagem de que é preciso retirar primeiro a Crystal Arrow.

:/

 

Num sei o que acontece...

 

 

Abraços

Link para o comentário
Compartilhar em outros sites

function onDeEquip(cid, item, slot)
       local crystalArrowId = 2352
       if getPlayerSlotItem(cid, 10).itemid == crystalArrowId then
            doPlayerSendCancel(cid,'Você precisa retirar primeiro á '..getItemNameById(crystalArrowId)..'.')
            return false
       end
       return true
end

 

se num funcionar, vc verifica se a crystal arrow é um script e se for poste aki.

Link para o comentário
Compartilhar em outros sites

function onDeEquip(cid, item, slot)
       local crystalArrowId = 2352
       if getPlayerSlotItem(cid, 10).itemid == crystalArrowId then
    		doPlayerSendCancel(cid,'Você precisa retirar primeiro á '..getItemNameById(crystalArrowId)..'.')
    		return false
       end
       return true
end

 

se num funcionar, vc verifica se a crystal arrow é um script e se for poste aki.

 

Como Script num tah não... só no Movements mesmo que tah como coloquei no início do Tópico...

 

e em Items.xml

 

<item id="2352" article="a" name="crystal arrow">

<attribute key="description" value="This arrow seems not suitable for the use with ordinary bows. It seems to be rotting rapidly." />

<attribute key="weight" value="100" />

<attribute key="slotType" value="ammo" />

<attribute key="attack" value="35" />

<attribute key="maxHitChance" value="90" />

<attribute key="weaponType" value="ammunition" />

<attribute key="ammoType" value="arrow" />

<attribute key="shootType" value="arrow" />

</item>

 

:x

 

Fora isso, tah normal...

e num funfa :/

 

 

abraços

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

não tem nada do tipo na pasta weapons/scripts sobre a crystalarrow ?

 

Na pasta tem, mas no arquivo "weapons.xml" não tem nenhuma TAG o encaminhando para o Script.

 

 

O Script é esse (crystal_arrow.lua)

local combat = createCombatObject()

setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE)

setCombatParam(combat, COMBAT_PARAM_DISTANCEEFFECT, CONST_ANI_SHIVERARROW)

setCombatFormula(combat, COMBAT_FORMULA_SKILL, 1, 0, 1, 0)

function onUseWeapon(cid, var)

return doCombat(cid, combat, var)

end

Link para o comentário
Compartilhar em outros sites

×
×
  • Criar Novo...