Postado Setembro 16, 2014 10 anos Olá galera, tenho um script aqui que tem como função mudar o addon continuamente ao equipar um ring de id 7697. O script é um movement, e está dando um erro no distro quando vou equipar o ring em um char, mesmo sendo player comum. Script: local storage, value = 38417, -1 local text = {"Você está com o DANCE ativado, retire o anel para desativar.", "Ai Que Loucuuura"} local sex = { [0] = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324}, [1] = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} } local condition_infight = createConditionObject(CONDITION_INFIGHT) setConditionParam(condition_infight, CONDITION_PARAM_TICKS, -1) function onEquip(cid, item, slot) local psex = sex[getPlayerSex(cid)] if psex then for _, n in pairs(psex) do otf = {lookType = math.random(n[1], n[21]), lookHead = math.random(1, 133), lookBody = math.random(1, 133), lookLegs = math.random(1, 133), lookFeet = math.random(1, 133)} doSetCreatureOutfit(cid, otf, -1) doAddCondition(cid, condition_infight) doCreatureSetNoMove(cid, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text[1]) doPlayerSendCancel(cid, text[2]) setPlayerStorageValue(cid, storage, value) end end return 1 end function onDeEquip(cid, item, slot) if getPlayerStorageValue(cid, storage) >= 1 then doRemoveCondition(cid, CONDITION_OUTFIT) doRemoveCondition(cid, CONDITION_INFIGHT) doCreatureSetNoMove(cid, 0) doPlayerSendCancel(cid, text[2]) setPlayerStorageValue(cid, storage, value) end return 1 end Erro no TFS: [14/09/2014 21:51:48] Lua Script Error: [MoveEvents Interface] [14/09/2014 21:51:48] data/movements/scripts/dancering.lua:onEquip [14/09/2014 21:51:48] data/movements/scripts/dancering.lua:15: attempt to index local 'n' (a number value) [14/09/2014 21:51:49] stack traceback: [14/09/2014 21:51:49] data/movements/scripts/dancering.lua:15: in function Lembrando, (Versão do TFS 0.3.1). Dês de já, obrigado.
Postado Setembro 16, 2014 10 anos tenta assim: local storage, value = 38417, -1 local text = {"Você está com o DANCE ativado, retire o anel para desativar.", "Ai Que Loucuuura"} local sex = { [0] = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324}, [1] = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} } local condition_infight = createConditionObject(CONDITION_INFIGHT) setConditionParam(condition_infight, CONDITION_PARAM_TICKS, -1) function onEquip(cid, item, slot) local psex = sex[getPlayerSex(cid)] if psex then for _, n in pairs(psex) do local otf = {lookType = math.random(n[1], n[21]), lookHead = math.random(1, 133), lookBody = math.random(1, 133), lookLegs = math.random(1, 133), lookFeet = math.random(1, 133)} doSetCreatureOutfit(cid, otf, -1) doAddCondition(cid, condition_infight) doCreatureSetNoMove(cid, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text[1]) doPlayerSendCancel(cid, text[2]) setPlayerStorageValue(cid, storage, value) end end return 1 end function onDeEquip(cid, item, slot) if getPlayerStorageValue(cid, storage) >= 1 then doRemoveCondition(cid, CONDITION_OUTFIT) doRemoveCondition(cid, CONDITION_INFIGHT) doCreatureSetNoMove(cid, 0) doPlayerSendCancel(cid, text[2]) setPlayerStorageValue(cid, storage, value) end return 1 end
Postado Setembro 17, 2014 10 anos Autor O erro ainda é o mesmo: [16/09/2014 18:33:27] Lua Script Error: [MoveEvents Interface] [16/09/2014 18:33:27] data/movements/scripts/dancering.lua:onEquip [16/09/2014 18:33:27] data/movements/scripts/dancering.lua:15: attempt to index local 'n' (a number value) [16/09/2014 18:33:27] stack traceback: [16/09/2014 18:33:27] data/movements/scripts/dancering.lua:15: in function <data/movements/scripts/dancering.lua:11> '-' @Up Editado Setembro 20, 2014 10 anos por eviltox (veja o histórico de edições)
Postado Setembro 21, 2014 10 anos local sex = { [0] = {136, 137, 138, 139, 140, 141, 142, 147, 148, 149, 150, 155, 156, 157, 158, 252, 269, 270, 279, 288, 324}, [1] = {128, 129, 130, 131, 132, 133, 134, 143, 144, 145, 146, 151, 152, 153, 154, 251, 268, 273, 278, 289, 325} } local psex = sex[getPlayerSex(cid)] psex recebe uma tabela com valores inteiros apenas. for _, n in pairs(psex) do otf = {lookType = math.random(n[1], n[21]), lookHead = math.random(1, 133), lookBody = math.random(1, 133), lookLegs = math.random(1, 133), lookFeet = math.random(1, 133)} doSetCreatureOutfit(cid, otf, -1) doAddCondition(cid, condition_infight) doCreatureSetNoMove(cid, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text[1]) doPlayerSendCancel(cid, text[2]) setPlayerStorageValue(cid, storage, value) end math.random(n[1], n[21]) Aqui você tenta acessar uma tabela sendo que o valor n é inteiro. O que você quer fazer na verdade é: *Atenção: Eu retirei o for, ele não é necessário. otf = {lookType = n[math.random(1, 21)], lookHead = math.random(1, 133), lookBody = math.random(1, 133), lookLegs = math.random(1, 133), lookFeet = math.random(1, 133)} doSetCreatureOutfit(cid, otf, -1) doAddCondition(cid, condition_infight) doCreatureSetNoMove(cid, 1) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, text[1]) doPlayerSendCancel(cid, text[2]) setPlayerStorageValue(cid, storage, value) Eu não tenho TFS 0.3.1 então não posso testar mas creio que "doPlayerSendCancel(cid, text[2])" vai cancelar a ação de equipar. Tem outro erro também, em onEquip: setPlayerStorageValue(cid, storage, value) value é -1, mas em onDeEquip você faz: if getPlayerStorageValue(cid, storage) >= 1 then Mas hora nenhuma em onEquip você seta storage como 1, logo ele vai continuar com a outfit. Outro detalhe. Esse script não vai mudar outfit continuamente ao equipar o ring. Editado Setembro 21, 2014 10 anos por elwyn (veja o histórico de edições)
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.