Ir para conteúdo

Featured Replies

Postado
  • 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. ^^

  • Respostas 25
  • Visualizações 2.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Action: local config = {     reflectBonus = 2,               --Bônus de reflect, em %.     failChance = 50,                --Chance de falhar, em porcentagem.     types = {"armor", "legs", "helmet",

  • 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

  • Ops, esqueci de verificar se o item existe. Corrigido.

Postado
  • 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 por zipter98 (veja o histórico de edições)

não respondo pms solicitando suporte em programação/scripting

Postado
  • 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 por gabriel28 (veja o histórico de edições)

Postado

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 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.

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