Postado Agosto 5, 2015 9 anos Autor Mesmo falhando o bônus no equipamento, o jogador ainda poderá usar o item nele (para tentar obter o bônus)? Sim, quando falei que só poderia usar uma vez no item, me referia que, caso tivesse sucesso em adicionar o bônus no item, não poderia adicionar mais, mas se falhasse em por o bônus, poderia continuar tentando. É que não consegui explicar direito.
Postado Agosto 5, 2015 9 anos Solução Action: local config = { reflectBonus = 2, --Bônus de reflect, em %. failChance = 50, --Chance de falhar, em porcentagem. types = {"armor", "legs", "helmet", "boots"}, noReflect = {1, 2, 3, 5, 6} --Tipos de armamento bloqueados (valores podem ser conferidos em 000-constant.lua, data/lib) } function onUse(cid, item, fromPos, itemEx, toPos) if itemEx.itemid < 100 then return doPlayerSendCancel(cid, "Use this in valid itens.") elseif isInArray(config.noReflect, getItemWeaponType(itemEx.uid)) then return doPlayerSendCancel(cid, "Use this in valid itens.") elseif getItemAttribute(itemEx.uid, "reflect") then return doPlayerSendCancel(cid, "This item has already a reflect bonus.") elseif math.random(1, 100) > config.failChance then return doPlayerSendTextMessage(cid, 27, "Sorry, your item didn't get a reflect bonus. Good luck at the next try! =]"), doRemoveItem(item.uid, 1) end local checkItemName for i = 1, #config.types do if getItemNameById(itemEx.itemid):find(config.types[i]) then checkItemName = true break end end if not checkItemName then return doPlayerSendCancel(cid, "Use this in valid itens.") end doPlayerSendTextMessage(cid, 27, "Congratulations, now your item has a reflect bonus of "..config.reflectBonus.."%!") doItemSetAttribute(itemEx.uid, "reflect", config.reflectBonus) doItemSetAttribute(itemEx.uid, "name", getItemNameById(itemEx.itemid).." ref "..config.reflectBonus.."%") doRemoveItem(item.uid, 1) return true end Creaturescript (não se esqueça de registrar o evento em login.lua): function onStatsChange(cid, attacker, type, combat, value) if isPlayer(cid) and isCreature(attacker) and type == STATSCHANGE_HEALTHLOSS then local bonusReflect = 0 for i = 1, 10 do local item = getPlayerSlotItem(cid, i).uid if item > 0 and getItemAttribute(item, "reflect") then bonusReflect = bonusReflect + getItemAttribute(item, "reflect") end end if bonusReflect > 0 then local damage = value * bonusReflect / 100 doSendAnimatedText(getThingPos(attacker), -damage, COLOR_RED) doCreatureAddHealth(attacker, -damage) end end return true end Editado Agosto 6, 2015 9 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
Postado Agosto 5, 2015 9 anos Aki esta dando esse erro :onStatsChange <LuaInteface::LuaGetThingPosition> Thing not found
Postado Agosto 5, 2015 9 anos Autor Não está funcionando (não está refletindo o dano) e deu o erro >Event onLogin not found, relacionado com o creaturescript (vi agora), talvez eu tenha feito algo errado. Aqui vai as tags: creaturescript: <event type="login" name="reflect" event="script" value="reflect.lua"/> login.lua: registerCreatureEvent(cid, "reflect") action: <action itemid="8303" event="script" value="reflect.lua"/> E se pudesse, gostaria que aparecesse nos itens. Ex: You see a demon helmet (def: 10) ref 2%..... Ah e outra coisa que me esqueci; mesmo a mao direita e esquerda (5 e 6) estando bloqueada, pode-se usar o item, e armor, legs e boots também estão bloqueados mesmo não estando bloqueados no script. Esse é meu const: CONST_SLOT_FIRST = 1 CONST_SLOT_HEAD = CONST_SLOT_FIRST CONST_SLOT_NECKLACE = 2 CONST_SLOT_BACKPACK = 3 CONST_SLOT_ARMOR = 4 CONST_SLOT_RIGHT = 5 CONST_SLOT_LEFT = 6 CONST_SLOT_LEGS = 7 CONST_SLOT_FEET = 8 CONST_SLOT_RING = 9 CONST_SLOT_AMMO = 10 CONST_SLOT_LAST = CONST_SLOT_AMMO Gostaria que os bloqueados fossem o 2, 3, 9 e 10. Editado Agosto 5, 2015 9 anos por gabriel28 (veja o histórico de edições)
Postado Agosto 6, 2015 9 anos O evento é onStatsChange, não onLogin. Tag: <event type="statschange" name="reflect" event="script" value="reflect.lua"/> O creatureevent foi alterado e foram colocadas algumas proteções para evitar o erro que aconteceu com o 574747. Também corrigi uma bobeira na action (aproveitei e coloquei o que você pediu - o nome do item ser modificado). Os valores da tabela noReflect são esses: WEAPON_NONE = 0 WEAPON_SWORD = 1 WEAPON_CLUB = 2 WEAPON_AXE = 3 WEAPON_SHIELD = 4 WEAPON_DIST = 5 WEAPON_WAND = 6 WEAPON_AMMO = 7 WEAPON_FIST = 8 Editado Agosto 6, 2015 9 anos por zipter98 (veja o histórico de edições) não respondo pms solicitando suporte em programação/scripting
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.