Ir para conteúdo

user33

Membro
  • Registro em

  • Última visita

Histórico de Curtidas

  1. Gostei
    user33 deu reputação a xWhiteWolf em Ajudem getItemAttribute   
    A duvida que fica é: tá retornando nil porque a função getItemAttribute está bugada ou está retornando nil porque a getPlayerWeapon não está retornando a weapon de fato?

    Se o problema for a primeira, troque por getItemAttack e se não funcionar não tem como resolver. Se o problema for a segunda existe uma função na New Lib (vc encontra no meu perfil em "About Me") que retorna a arma que vc está utilizando.
  2. Gostei
    user33 deu reputação a xWhiteWolf em Ajudem getItemAttribute   
    Bom, o problema principal é que você fez uma pequena cagadinha no código, como seu próprio server diz:
    [13/01/2016 16:42:38] [Error - Weapon Interface] [13/01/2016 16:42:38] In a callback: data/weapons/scripts/sword.lua:onGetFormulaValues [13/01/2016 16:42:38] (Unknown script file) [13/01/2016 16:42:38] Description: [13/01/2016 16:42:38] data/weapons/scripts/sword.lua:10: attempt to index local 'item' (a number value) Erro no callback onGetFormulaValues descrição:
    Linha 10-> tentou indexar uma variável local chamada item (um valor numérico).

    Linha 10 -> darma= getItemAttribute(item.arma, "attack")
    pegar o atributo do item cujo uid seja 'item.arma' e o atributo que eu quero é "attack". OK, mas oque é item.arma? Em nenhum momento você definiu oque era item e a arma está definida como 
    local arma= getPlayerWeapon(cid).id arma é um variável que vai armazenar o id da arma.
    Então nessas linhas aí a única coisa que vc fez foi pedir pro console te retornar item.id (o campo id da tabela item) só que item não é uma tabela (por isso erro de index..)

    Tá, mas oque é item? A resposta correta seria um grandiosíssimo "NADA", item na vdd está como parâmetro do callback mas essa function o terceiro parâmetro é a skill do player, não o item que ele utiliza.
    function onGetFormulaValues(cid, level, item) local arma= getPlayerWeapon(cid).id darma= getItemAttribute(item.arma, "attack")
    O correto seria

    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD) function onGetFormulaValues(cid, level, skill) local arma= getPlayerWeapon(cid) local darma= getItemAttribute(arma, "attack") local skillsword= getPlayerSkill(cid, 2) local forca= getPlayerStorageValue(cid, 70001) local agilidade= getPlayerStorageValue(cid, 70003) min = -(level*0.25) + -(forca*0.5) + -(agilidade*0.2) + -(skillsword*0.4) + -darma max = -(level*0.35) + -(forca*0.6) + -(agilidade*0.3) + -(skillsword*0.8) + -darma return min, max end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) return doCombat(cid, combat, var) end
  3. Gostei
    user33 deu reputação a Xagah em Ajudem getItemAttribute   
    Mais um teste:
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD) function onGetFormulaValues(cid, level, item) -- local arma= getPlayerWeapon(cid) -- local darma= getItemAttack(arma) local skillsword= getPlayerSkill(cid, 2) local forca= getPlayerStorageValue(cid, 70001) local agilidade= getPlayerStorageValue(cid, 70003) local item1 = getPlayerSlotItem(cid, CONST_SLOT_LEFT) local item2 = getPlayerSlotItem(cid, CONST_SLOT_RIGHT) local atk, atk1, atk2 = 0, 0, 0 if item1.uid ~= 0 then atk1 = getItemAttack(item1.uid) end if item2.uid ~= 0 then atk2 = getItemAttack(item2.uid) end if atk1 > atk2 then atk = atk1 else atk = atk2 end min = -(level*0.25) + -(forca*0.5) + -(agilidade*0.2) + -(skillsword*0.4) + -atk max = -(level*0.35) + -(forca*0.6) + -(agilidade*0.3) + -(skillsword*0.8) + -atk return min, max end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) return doCombat(cid, combat, var) end Edited:
     
    Tinha um trecho diferente. Copia agora.
  4. Gostei
    user33 deu reputação a Xagah em Ajudem getItemAttribute   
    Vamo lá, tenta isto:
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD) function onGetFormulaValues(cid, level, item) local arma= getPlayerWeapon(cid) local darma= getItemAttack(arma) local skillsword= getPlayerSkill(cid, 2) local forca= getPlayerStorageValue(cid, 70001) local agilidade= getPlayerStorageValue(cid, 70003) min = -(level*0.25) + -(forca*0.5) + -(agilidade*0.2) + -(skillsword*0.4) + -darma max = -(level*0.35) + -(forca*0.6) + -(agilidade*0.3) + -(skillsword*0.8) + -darma return min, max end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) return doCombat(cid, combat, var) end  
  5. Gostei
    user33 deu reputação a Xagah em Ajudem getItemAttribute   
    Tenta assim:
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD) function onGetFormulaValues(cid, level, item) local arma= getPlayerWeapon(cid).itemid darma= getItemAttribute(arma.uid, 'attack') skillsword= getPlayerSkill(cid, 2) local forca= getPlayerStorageValue(cid, 70001) local agilidade= getPlayerStorageValue(cid, 70003) min = -(level*0.25) + -(forca*0.5) + -(agilidade*0.2) + -(skillsword*0.4) + -darma max = -(level*0.35) + -(forca*0.6) + -(agilidade*0.3) + -(skillsword*0.8) + -darma return min, max end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) return doCombat(cid, combat, var) end Pra que que vc usa o 'script'? Porque aí fica mais fácil pra eu testar aqui...
  6. Gostei
    user33 deu reputação a Xagah em Ajudem getItemAttribute   
    Tenta assim:
    local combat = createCombatObject() setCombatParam(combat, COMBAT_PARAM_BLOCKARMOR, 1) setCombatParam(combat, COMBAT_PARAM_BLOCKSHIELD, 1) setCombatParam(combat, COMBAT_PARAM_TYPE, COMBAT_PHYSICALDAMAGE) setCombatParam(combat, COMBAT_PARAM_EFFECT, CONST_ME_DRAWBLOOD) function onGetFormulaValues(cid, level, item) local arma= getPlayerWeapon(cid).uid darma= getItemAttribute(arma.uid, 'attack') skillsword= getPlayerSkill(cid, 2) local forca= getPlayerStorageValue(cid, 70001) local agilidade= getPlayerStorageValue(cid, 70003) min = -(level*0.25) + -(forca*0.5) + -(agilidade*0.2) + -(skillsword*0.4) + -darma max = -(level*0.35) + -(forca*0.6) + -(agilidade*0.3) + -(skillsword*0.8) + -darma return min, max end setCombatCallback(combat, CALLBACK_PARAM_SKILLVALUE, "onGetFormulaValues") function onUseWeapon(cid, var) return doCombat(cid, combat, var) end  

Informação Importante

Confirmação de Termo