Postado Janeiro 15, 2016 9 anos Autor Sim uma weapon que eu mesmo criei, ela ta com os msm stats de outra so troquei o id e o nome
Postado Janeiro 15, 2016 9 anos 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 Se der erro troca arma por arma.uid ali no darma 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
Postado Janeiro 15, 2016 9 anos Autor 9 minutos atrás, xWhiteWolf disse: 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 Se der erro troca arma por arma.uid ali no darma 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 WhiteWOlf deu esse erro no seu script: [14/01/2016 22:29:55] [Error - Weapon Interface] [14/01/2016 22:29:55] In a callback: data/weapons/scripts/sword.lua:onGetFormulaValues [14/01/2016 22:29:55] (Unknown script file) [14/01/2016 22:29:55] Description: [14/01/2016 22:29:55] (luaGetItemAttribute) Item not found [14/01/2016 22:29:55] [Error - Weapon Interface] [14/01/2016 22:29:55] In a callback: data/weapons/scripts/sword.lua:onGetFormulaValues [14/01/2016 22:29:55] (Unknown script file) [14/01/2016 22:29:55] Description: [14/01/2016 22:29:55] data/weapons/scripts/sword.lua:15: attempt to perform arithmetic on local 'darma' (a nil value) Se eu colocar o arma.uid no darma da isso: [14/01/2016 22:31:47] [Error - Weapon Interface] [14/01/2016 22:31:47] In a callback: data/weapons/scripts/sword.lua:onGetFormulaValues [14/01/2016 22:31:47] (Unknown script file) [14/01/2016 22:31:47] Description: [14/01/2016 22:31:47] data/weapons/scripts/sword.lua:15: attempt to perform arithmetic on local 'darma' (a nil value)
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.