TI
pedido

Pedra que adiciona attack speed em item

Por Tiagone, 14 de nov. de 2015 em Scripts

5
1.6k
TiagoneT
14 de novembro de 2015 às 20:04

gostaria de um script q quando o player dar um click em X item da use em outro item como uma armadura,arma.... ele adiciona-se X Attack Speed.Acho que ja da pra entender só por isso,tentei fazer algo como isso com a tag "setItemAttackSpeed" porem ele não da erro mais tambem não funciona,espero que auguem possa ajudar.

TaaGT
14 de novembro de 2015 às 20:16

Vou fazer a script rapidamente aqui e já já edito.

 

 

@

Usei a script do Azi como base.

 

Actions.xml (data/actions/scripts)

<action itemid="id do item" event="script" value="pedraatkspeed.lua"/>

Crie um arquivo chamado pedraatkspeed.lua em data/actions/scripts e adicione isso:


local conf = {}






-- // config // --


conf.maxItemLevel = 10 -- max item level


conf.successChance = 50 -- succes upgrade chance




conf["upgrade"] = { -- how many parcent attributes are rised?


attack = 5, -- attack %


extraAttack = 0, -- extra Attack % (porcentagem de attack ganho)


defence = 5, -- defence %


extraDefence = 0, -- extra defence % (porcentagem de defesa ganha)


armor = 5, -- armor %


attackSpeed = 3, -- attack speed % (porcentagem de attack speed ganho)


hitChance = 5, -- hit chance %


shootRange = 2, -- shoot range %


}




--// end // --




function getItemInfo(item)




local attr = {}


local name = string.explode(getItemName(item), '+');


if #name == 1 then


attr.name = name[1]


attr.level = math.abs(0)


else


attr.level = math.abs(name[2])


attr.name = name[1]


end


attr.attack = (getItemAttack(item) > 0) and getItemAttack(item) or 0


attr.extraAttack = (getItemExtraAttack(item) > 0) and getItemExtraAttack(item) or 0


attr.defence = (getItemDefense(item) > 0) and getItemDefense(item) or 0


attr.extraDefence = (getItemExtraDefense(item) > 0) and getItemExtraDefense(item) or 0


attr.armor = (getItemArmor(item) > 0) and getItemArmor(item) or 0


attr.attackSpeed = (getItemAttackSpeed(item) > 0) and getItemAttackSpeed(item) or 0


attr.hitChance = (getItemHitChance(item) > 0) and getItemHitChance(item) or 0


attr.shootRange = (getItemShootRange(item) > 0) and getItemShootRange(item) or 0


attr.weight = (getItemWeight(item) > 0) and getItemWeight(item) or 0




return attr


end




function upgradeValue(value, parcent)


local newValue = math.ceil(((value/100)*parcent)+value)


return (newValue > 0) and newValue or 0


end




function onUse(cid, item, fromPosition, itemEx, toPosition)




if toPosition.x == 65535 then


local upgradingItem = getItemInfo(itemEx.uid)


if (upgradingItem.attack > 0 or upgradingItem.defence > 0 or upgradingItem.armor > 0 or upgradingItem.shootRange > 1) then


if (upgradingItem.level < conf.maxItemLevel) then


if conf.successChance >= math.random(1,100) then


setItemName(itemEx.uid, upgradingItem.name.." + "..(upgradingItem.level+1))


setItemAttack(itemEx.uid, upgradeValue(upgradingItem.attack, conf["upgrade"].attack))


setItemExtraAttack(itemEx.uid, upgradeValue(upgradingItem.extraAttack, conf["upgrade"].extraAttack))


setItemDefense(itemEx.uid, upgradeValue(upgradingItem.defence, conf["upgrade"].defence))


setItemExtraDefense(itemEx.uid, upgradeValue(upgradingItem.extraDefence, conf["upgrade"].extraDefence))


setItemArmor(itemEx.uid, upgradeValue(upgradingItem.armor, conf["upgrade"].armor))


setItemAttackSpeed(itemEx.uid, upgradeValue(upgradingItem.attackSpeed, conf["upgrade"].attackSpeed))


setItemHitChance(itemEx.uid, upgradeValue(upgradingItem.hitChance, conf["upgrade"].hitChance))


setItemShootRange(itemEx.uid, upgradeValue(upgradingItem.shootRange, conf["upgrade"].shootRange))


doSendMagicEffect(toPosition, 30)


doPlayerSendTextMessage(cid, 22, "Upgraded was successful, your item has become stronger!")


else


doRemoveItem(itemEx.uid, itemEx.type)


doSendMagicEffect(toPosition, 2)


doPlayerSendTextMessage(cid, 22, "Upgrading fail... you lost upgraded item!")


end


doRemoveItem(item.uid, 1)


else


doPlayerSendCancel(cid, "This item is on max level!")


end


else


doPlayerSendCancel(cid, "You cannot upgrade this item!")


end


else


doPlayerSendCancel(cid, "You can upgrading items only in inventory!")


end


return TRUE;


end

 

 

Espero que resolva sua dúvida!

Editado Novembro 14 por TaaG

TiagoneT
14 de novembro de 2015 às 20:32

então mano eu ja tinha testado esse script mais aqui ele da esse erro

 

[Error - Action Interface]
data/actions/scripts/atkspeed.lua:onUse
Description:
(luaGetThing) Thing not found


[Error - Action Interface]
data/actions/scripts/atkspeed.lua:onUse
Description:
data/lib/050-function.lua:299: attempt to index a boolean value
stack traceback:
        data/lib/050-function.lua:299: in function 'getItemName'
        data/actions/scripts/atkspeed.lua:64: in function 'getItemInfo'
        data/lib/050-function.lua:592: in function 'getItemDescriptions'
        data/lib/050-function.lua:299: in function 'getItemName'
        data/actions/scripts/atkspeed.lua:64: in function 'getItemInfo'
        data/actions/scripts/atkspeed.lua:147: in function <data/actions/sc
ripts/atkspeed.lua:139>

 

Editado Novembro 14 por Tiagone

TaaGT
14 de novembro de 2015 às 20:37

Vou ter que sair agora, mais tarde eu resolvo e te aviso, aqui ou no PM.

TiagoneT
15 de novembro de 2015 às 14:30

up