Posta a mensagem de error, talvez possa te ajudar.
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

@julhinhokullitz a linha do erro que está mostrando na SS é diferente do codigo que foi postado aqui.
Me envia o arquivo comprar.lua, pode ser inbox se preferir.
Abraço
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

@julhinhokullitz a linha do erro que está mostrando na SS é diferente do codigo que foi postado aqui.
Me envia o arquivo comprar.lua, pode ser inbox se preferir.
Abraço
O codigo não é diferente é o mesmo, e da o erro da imagem postada.
SKILL_CLUB = "skill_club"
SKILL_DISTANCE = "skill_dist"
SKILL_SHIELD = "skill_shielding"
SKILL_MAGLEVEL = "maglevel"
SKILL_SWORD = "skill_sword"
SKILL_AXE = "skill_axe"
local coinID = 9971 -- moeda para comprar skills
local tb = {
["sd"] = {t= 1, bag = 5926, item= 2268, bag_quant = 2, price= 50, msg= "Parabéns você comprou 4k de SD com sucesso."},
["uh"] = {t= 1, bag = 2002, item= 2273, bag_quant = 3, price= 30, msg= "Parabéns você comprou 6k de UH com sucesso."},
["explo"] = {t= 1, bag = 2001, item= 2313, bag_quant = 3, price= 10, msg= "Parabéns você comprou 6k de Explosion com sucesso."},
["super divine axe"] = {t= 2, item = 8926, price= 60, msg= "Você comprou um super divine axe com sucesso."},
["super divine staff"] = {t= 2, item = 8922, price= 60, msg= "Você comprou um super divine staff com sucesso."},
["super divine club"] = {t= 2, item = 7423, price= 60, msg= "Você comprou um super divine club com sucesso."},
["super divine sword"] = {t= 2, item = 7403, price= 60, msg= "Você comprou um super divine sword com sucesso."},
["super divine crossbow"] = {t= 2, item = 8851, price= 60, msg= "Você comprou um super divine crossbow com sucesso."},
["livro nivel 6"] = {t= 2, item = 8921, price= 60, msg= "Você comprou um livro nivel 6 com sucesso."},
["vip10"] = {t= 3, days= 10, price= 5},
["vip30"] = {t= 3, days= 30, price= 10},
["magiclevel"] = {t= 4, vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 3, incre = 1, skill = SKILL_MAGLEVEL},
["skillclub"] = {t= 5, vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 1, incre = 1, skill = SKILL_CLUB},
["skillsword"] = {t= 5, vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 1, incre = 1, skill = SKILL_SWORD},
["skillaxe"] = {t=5 , vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 1, incre = 1, skill = SKILL_AXE},
["skilldistance"] = {t= 5, vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 1, incre = 1, skill = SKILL_DISTANCE},
["skillshielding"] = {t= 5, vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, price= 1, incre = 1, skill = SKILL_SHIELD},
["magiclevel5"] = {t= 4, vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 15, incre = 5, skill = SKILL_MAGLEVEL},
["skillclub10"] = {t= 5, vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 10, incre = 10, skill = SKILL_CLUB},
["skillsword10"] = {t= 5, vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 10, incre = 10, skill = SKILL_SWORD},
["skillaxe10"] = {t=5 , vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 10, incre = 10, skill = SKILL_AXE},
["skilldistance10"] = {t= 5, vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 10, incre = 10, skill = SKILL_DISTANCE},
["skillshielding10"] = {t= 5, vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, price= 10, incre = 10, skill = SKILL_SHIELD},
["removerfrag"] = {t= 6, price= 10},
}
local storage = 45611
function onSay(player, words, param)
local pid = player:getGuid()
local tile = player:getTile()
if not tile:hasFlag(TILESTATE_PROTECTIONZONE) then
player:sendCancelMessage("Você precisa está em área protegida para utilizar este comando.")
return true
end
if player:getStorageValue(storage) >= os.time() then
player:sendCancelMessage("Por medidas de segurança você só pode utilizar este comando em " .. player:getStorageValue(storage)-os.time() .. " segundos.")
return true
end
if param == "" then
player:popupFYI("Para comprar digite !comprar (nome do item)\nOpcoes:\nsd = 4000 em SD por 50 barras.\nuh = 6000 em UH por 40 barras.\nexplo = 6000 em explosion por 10 barras.\nvip10 = 10 dias de vip por 5 barras.\nvip30 = 30 dias de vip por 10 barras.\ndivine staff = divine staff por 30 barras.\ndivine axe = divine axe por 30 barras.\nlivro nivel 6 = livro nivel 6 por 60 barras.\ndivine club = divine club por 30 barras.\ndivine sword = divine sword por 30 barras.\ndivine crossbow = divine crossbow por 30 barras.\nlivro nivel 5 = livro nivel 5 por 30 barras.\nsuper divine axe = super divine axe por 60 barras.\nsuper divine club = super divine club por 60 barras.\nsuper divine sword = super divine sword por 60 barras.\nsuper divine staff = super divine staff por 60 barras.\nsuper divine crossbow = super divine crossbow por 60 barras.\nskillclub = adiciona 1 skill club por 1 barras.\nskillsword = adiciona 1 skill sword por 1 barras.\nskillaxe = adiciona 1 skill axe por 1 barras.\nskilldistance = adiciona 1 skill distance por 1 barras.\nskillshielding = adiciona 1 skill shielding por 1 barras.\nmagiclevel = adiciona 1 magic level por 3 barras.\nmagiclevel5 = adiciona 5 magic level por 15 barras.\nskillclub10 = adiciona 10 skills club por 10 barras.\nskillsword10 = adiciona 10 skills sword por 10 barras.\nskillaxe10 = adiciona 10 skills axe por 10 barras.\nskilldistance10 = adiciona 10 skill distance por 10 barras.\nskillshielding10 = adiciona 10 skill shielding por 10 barras.\nremoverfrag = remove todos frags por 100k.\nO Item desejado não existe em nosso stock. Veja a cima os detalhes dos items disponíveis.")
return true
end
for f, v in pairs(tb) do
if param == f then
if v.t == 1 then
if player:getItemCount(coinID) >= v.price then
local item_quant = (v.bag_quant * 2000)/100
for x = 1, v.bag_quant do
local bag = player:addItem(v.bag, 1)
for i = 1, item_quant do
bag:addItem(v.item, 100)
end
end
player:removeItem(coinID, v.price)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
player:setStorageValue(storage, os.time()+3)
break
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
end
elseif v.t == 2 then
if player:getItemCount(coinID) >= v.price then
item = player:addItem(v.item, 1)
item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. player:getName() ..". Serial: ".. player:getGuid() ..".")
player:removeItem(coinID, v.price)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)
player:setStorageValue(storage, os.time()+3)
break
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
end
elseif v.t == 3 then
if player:getItemCount(coinID) >= v.price then
player:addPremiumDays(v.days)
player:removeItem(coinID, v.price)
player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou " .. v.days .. " dias de vip com sucesso.")
player:setStorageValue(storage, os.time()+3)
break
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
end
elseif v.t == 4 then
if player:getBaseMagicLevel() >= v.lim then
player:sendCancelMessage(v.lim_msg)
return true
end
if not isInArray(v.vocations, player:getVocation():getId()) then
player:sendCancelMessage(v.voc_msg)
return true
end
if player:getItemCount(coinID) >= v.price then
player:removeItem(coinID, v.price)
player:setStorageValue(storage, os.time()+3)
player:remove()
db.query("UPDATE `players` SET ".. v.skill .. " = " .. v.skill .. " + " .. v.incre .. " WHERE `id` = ".. pid)
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
end
elseif v.t == 5 then
if not isInArray(v.vocations, player:getVocation():getId()) then
player:sendCancelMessage(v.voc_msg) return false
end
if player:getSkillLevel(v.skill) >= v.lim or (v.lim - player:getSkillLevel(v.skill)) < v.incre then
player:sendCancelMessage("Você não pode comprar esse skill.") return false
end
if player:getItemCount(coinID) >= v.price then
player:removeItem(coinID, v.price)
player:setStorageValue(storage, os.time()+3)
player:remove()
db.query("UPDATE `players` SET ".. v.skill .. " = " .. v.skill .. " + " .. v.incre .. " WHERE `id` = ".. pid)
return true
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") return false
end
elseif v.t == 6 then
if player:getItemCount(2160) >= v.price then
player:removeItem(2160, v.price)
player:setSkull(SKULL_NONE)
player:setSkullTime(0)
player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)
player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your skull and frags has been removed!")
player:setStorageValue(storage, os.time()+3)
db.query("UPDATE `player_deaths` SET `unjustified` = 0 WHERE `unjustified` = 1 AND `killed_by` = " .. db.escapeString(player:getName()))
else
player:sendCancelMessage("Você não possui a quantidade necessária para comprar.")
end
end
end
end
return false
end
UP ![]()
Você ta testando em TFS1.0, neste caso tem que registrar a variável player:
coloca assim, antes do
local pid = player:getGuid()
Isso:
local player = Player(player)
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Você ta testando em TFS1.0, neste caso tem que registrar a variável player:
coloca assim, antes do
local pid = player:getGuid()Isso:
local player = Player(player)
O erro saiu mais o player não compra skill, pode continuar ajudando?
Qual erro aparece?
testei aqui e esta normal. (to consultando o valor pela database, e nao pelo player:getSkillLevel(SKILL))
info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea

Qual erro aparece?
testei aqui e esta normal. (to consultando o valor pela database, e nao pelo player:getSkillLevel(SKILL))
SKILL_CLUB = "skill_club"SKILL_DISTANCE = "skill_dist"SKILL_SHIELD = "skill_shielding"SKILL_MAGLEVEL = "maglevel"SKILL_SWORD = "skill_sword"SKILL_AXE = "skill_axe"local coinID = 9971 -- moeda para comprar skillslocal tb = {["sd"] = {t= 1, bag = 5926, item= 2268, bag_quant = 2, price= 50, msg= "Parabéns você comprou 4k de SD com sucesso."},["uh"] = {t= 1, bag = 2002, item= 2273, bag_quant = 3, price= 30, msg= "Parabéns você comprou 6k de UH com sucesso."},["explo"] = {t= 1, bag = 2001, item= 2313, bag_quant = 3, price= 10, msg= "Parabéns você comprou 6k de Explosion com sucesso."},["super divine axe"] = {t= 2, item = 8926, price= 60, msg= "Você comprou um super divine axe com sucesso."},["super divine staff"] = {t= 2, item = 8922, price= 60, msg= "Você comprou um super divine staff com sucesso."},["super divine club"] = {t= 2, item = 7423, price= 60, msg= "Você comprou um super divine club com sucesso."},["super divine sword"] = {t= 2, item = 7403, price= 60, msg= "Você comprou um super divine sword com sucesso."},["super divine crossbow"] = {t= 2, item = 8851, price= 60, msg= "Você comprou um super divine crossbow com sucesso."},["livro nivel 6"] = {t= 2, item = 8921, price= 60, msg= "Você comprou um livro nivel 6 com sucesso."},["vip10"] = {t= 3, days= 10, price= 5},["vip30"] = {t= 3, days= 30, price= 10},["magiclevel"] = {t= 4, vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 3, incre = 1, skill = SKILL_MAGLEVEL},["skillclub"] = {t= 5, vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 1, incre = 1, skill = SKILL_CLUB},["skillsword"] = {t= 5, vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 1, incre = 1, skill = SKILL_SWORD},["skillaxe"] = {t=5 , vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 1, incre = 1, skill = SKILL_AXE},["skilldistance"] = {t= 5, vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 1, incre = 1, skill = SKILL_DISTANCE},["skillshielding"] = {t= 5, vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, price= 1, incre = 1, skill = SKILL_SHIELD},["magiclevel5"] = {t= 4, vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 15, incre = 5, skill = SKILL_MAGLEVEL},["skillclub10"] = {t= 5, vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 10, incre = 10, skill = SKILL_CLUB},["skillsword10"] = {t= 5, vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 10, incre = 10, skill = SKILL_SWORD},["skillaxe10"] = {t=5 , vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 10, incre = 10, skill = SKILL_AXE},["skilldistance10"] = {t= 5, vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 10, incre = 10, skill = SKILL_DISTANCE},["skillshielding10"] = {t= 5, vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, price= 10, incre = 10, skill = SKILL_SHIELD},["removerfrag"] = {t= 6, price= 10},}local storage = 45611function onSay(player, words, param)local player = Player(player)local pid = player:getGuid()local tile = player:getTile()local param = param:lower()if not tile:hasFlag(TILESTATE_PROTECTIONZONE) thenplayer:sendCancelMessage("Você precisa está em área protegida para utilizar este comando.")return trueendif player:getStorageValue(storage) >= os.time() thenplayer:sendCancelMessage("Por medidas de segurança você só pode utilizar este comando em " .. player:getStorageValue(storage)-os.time() .. " segundos.")return trueendif param == "" thenplayer:popupFYI("Para comprar digite !comprar (nome do item)\nOpcoes:\nsd = 4000 em SD por 50 barras.\nuh = 6000 em UH por 40 barras.\nexplo = 6000 em explosion por 10 barras.\nvip10 = 10 dias de vip por 5 barras.\nvip30 = 30 dias de vip por 10 barras.\ndivine staff = divine staff por 30 barras.\ndivine axe = divine axe por 30 barras.\nlivro nivel 6 = livro nivel 6 por 60 barras.\ndivine club = divine club por 30 barras.\ndivine sword = divine sword por 30 barras.\ndivine crossbow = divine crossbow por 30 barras.\nlivro nivel 5 = livro nivel 5 por 30 barras.\nsuper divine axe = super divine axe por 60 barras.\nsuper divine club = super divine club por 60 barras.\nsuper divine sword = super divine sword por 60 barras.\nsuper divine staff = super divine staff por 60 barras.\nsuper divine crossbow = super divine crossbow por 60 barras.\nskillclub = adiciona 1 skill club por 1 barras.\nskillsword = adiciona 1 skill sword por 1 barras.\nskillaxe = adiciona 1 skill axe por 1 barras.\nskilldistance = adiciona 1 skill distance por 1 barras.\nskillshielding = adiciona 1 skill shielding por 1 barras.\nmagiclevel = adiciona 1 magic level por 3 barras.\nmagiclevel5 = adiciona 5 magic level por 15 barras.\nskillclub10 = adiciona 10 skills club por 10 barras.\nskillsword10 = adiciona 10 skills sword por 10 barras.\nskillaxe10 = adiciona 10 skills axe por 10 barras.\nskilldistance10 = adiciona 10 skill distance por 10 barras.\nskillshielding10 = adiciona 10 skill shielding por 10 barras.\nremoverfrag = remove todos frags por 100k.\nO Item desejado não existe em nosso stock. Veja a cima os detalhes dos items disponíveis.")return trueendfor f, v in pairs(tb) doif param == f thenif v.t == 1 thenif player:getItemCount(coinID) >= v.price thenlocal item_quant = (v.bag_quant * 2000)/100for x = 1, v.bag_quant dolocal bag = player:addItem(v.bag, 1)for i = 1, item_quant dobag:addItem(v.item, 100)endendplayer:removeItem(coinID, v.price)player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)player:setStorageValue(storage, os.time()+3)breakelseplayer:sendCancelMessage("Você não possui a quantidade necessária para comprar.")endelseif v.t == 2 thenif player:getItemCount(coinID) >= v.price thenitem = player:addItem(v.item, 1)item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. player:getName() ..". Serial: ".. player:getGuid() ..".")player:removeItem(coinID, v.price)player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg)player:setStorageValue(storage, os.time()+3)breakelseplayer:sendCancelMessage("Você não possui a quantidade necessária para comprar.")endelseif v.t == 3 thenif player:getItemCount(coinID) >= v.price thenplayer:addPremiumDays(v.days)player:removeItem(coinID, v.price)player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou " .. v.days .. " dias de vip com sucesso.")player:setStorageValue(storage, os.time()+3)breakelseplayer:sendCancelMessage("Você não possui a quantidade necessária para comprar.")endelseif v.t == 4 thenif player:getBaseMagicLevel() >= v.lim thenplayer:sendCancelMessage(v.lim_msg)return trueendif not isInArray(v.vocations, player:getVocation():getId()) thenplayer:sendCancelMessage(v.voc_msg)return trueendif player:getItemCount(coinID) >= v.price thenplayer:removeItem(coinID, v.price)player:setStorageValue(storage, os.time()+3)player:remove()db.query("UPDATE `players` SET `".. v.skill .. "` = `" .. v.skill .. "` + " .. v.incre .. " WHERE `id` = ".. pid)elseplayer:sendCancelMessage("Você não possui a quantidade necessária para comprar.")endelseif v.t == 5 thenif not isInArray(v.vocations, player:getVocation():getId()) thenplayer:sendCancelMessage(v.voc_msg) return falseendif player:getSkillLevel(v.skill) >= v.lim or (v.lim - player:getSkillLevel(v.skill)) < v.incre thenplayer:sendCancelMessage("Você não pode comprar esse skill.") return falseendif player:getItemCount(coinID) >= v.price thenplayer:removeItem(coinID, v.price)player:setStorageValue(storage, os.time()+3)player:remove()db.query("UPDATE `players` SET `".. v.skill .. "` = `" .. v.skill .. "` + " .. v.incre .. " WHERE `id` = ".. pid)return trueelseplayer:sendCancelMessage("Você não possui a quantidade necessária para comprar.") return falseendelseif v.t == 6 thenif player:getItemCount(2160) >= v.price thenplayer:removeItem(2160, v.price)player:setSkull(SKULL_NONE)player:setSkullTime(0)player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN)player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your skull and frags has been removed!")player:setStorageValue(storage, os.time()+3)db.query("UPDATE `player_deaths` SET `unjustified` = 0 WHERE `unjustified` = 1 AND `killed_by` = " .. db.escapeString(player:getName()))elseplayer:sendCancelMessage("Você não possui a quantidade necessária para comprar.")endendendendreturn falseend
Não aparece erro na Distro nem nada, só que o player fala !comprar skillaxe10 e apenas saiu a mensagem como se ele estivesse falando normalmente com outro jogador no caso... Não seria preciso uma Query? ou está no script mesmo o erro?
UP




info
Grupo: Visconde
Registrado: 28/06/11
Posts: 356
Reputação: +26
Char no Tibia: Akor Rysea
Bom dia gente estava procurando um script de comprar skill e achei so que no meu TFS esta dando o erro e gostaria que vocês me ajudassem, agradeceria muito.
Segue o script que achei aqui:
SKILL_CLUB = "skill_club" SKILL_DISTANCE = "skill_dist" SKILL_SHIELD = "skill_shielding" SKILL_MAGLEVEL = "maglevel" SKILL_SWORD = "skill_sword" SKILL_AXE = "skill_axe" local coinID = 9971 -- moeda para comprar skills local tb = { ["sd"] = {t= 1, bag = 5926, item= 2268, bag_quant = 2, price= 50, msg= "Parabéns você comprou 4k de SD com sucesso."}, ["uh"] = {t= 1, bag = 2002, item= 2273, bag_quant = 3, price= 30, msg= "Parabéns você comprou 6k de UH com sucesso."}, ["explo"] = {t= 1, bag = 2001, item= 2313, bag_quant = 3, price= 10, msg= "Parabéns você comprou 6k de Explosion com sucesso."}, ["super divine axe"] = {t= 2, item = 8926, price= 60, msg= "Você comprou um super divine axe com sucesso."}, ["super divine staff"] = {t= 2, item = 8922, price= 60, msg= "Você comprou um super divine staff com sucesso."}, ["super divine club"] = {t= 2, item = 7423, price= 60, msg= "Você comprou um super divine club com sucesso."}, ["super divine sword"] = {t= 2, item = 7403, price= 60, msg= "Você comprou um super divine sword com sucesso."}, ["super divine crossbow"] = {t= 2, item = 8851, price= 60, msg= "Você comprou um super divine crossbow com sucesso."}, ["livro nivel 6"] = {t= 2, item = 8921, price= 60, msg= "Você comprou um livro nivel 6 com sucesso."}, ["vip10"] = {t= 3, days= 10, price= 5}, ["vip30"] = {t= 3, days= 30, price= 10}, ["magiclevel"] = {t= 4, vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 3, incre = 1, skill = SKILL_MAGLEVEL, skill_id = 7}, ["skillclub"] = {t= 5, vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 1, incre = 1, skill = SKILL_CLUB, skill_id = 1}, ["skillsword"] = {t= 5, vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 1, incre = 1, skill = SKILL_SWORD, skill_id = 2}, ["skillaxe"] = {t=5 , vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 1, incre = 1, skill = SKILL_AXE, skill_id = 3}, ["skilldistance"] = {t= 5, vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 1, incre = 1, skill = SKILL_DISTANCE, skill_id = 4}, ["skillshielding"] = {t= 5, vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, price= 1, incre = 1, skill = SKILL_SHIELD, skill_id = 5}, ["magiclevel5"] = {t= 4, vocations = {1, 5, 2, 6, 11, 12}, voc_msg= "Somente Sorcerers, Druids e Infernalists podem comprar magic level.", lim = 200, lim_msg = "Você não pode ter magic level acima de 200.", price= 15, incre = 5, skill = SKILL_MAGLEVEL, skill_id = 7}, ["skillclub10"] = {t= 5, vocations = {9, 10}, voc_msg= "Somente Drunous podem comprar skill de club.", lim = 350, price= 10, incre = 10, skill = SKILL_CLUB, skill_id = 1}, ["skillsword10"] = {t= 5, vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de sword.", lim = 350, price= 10, incre = 10, skill = SKILL_SWORD, skill_id = 2}, ["skillaxe10"] = {t=5 , vocations = {4, 8}, voc_msg= "Somente Knights podem comprar skill de axe.", lim = 350, price= 10, incre = 10, skill = SKILL_AXE, skill_id = 3}, ["skilldistance10"] = {t= 5, vocations = {3, 7}, voc_msg= "Somente Paladins podem comprar skill de distance.", lim = 350, price= 10, incre = 10, skill = SKILL_DISTANCE, skill_id = 4}, ["skillshielding10"] = {t= 5, vocations = {3, 7, 4, 8, 9, 10}, voc_msg= "Somente Paladins, Knights e Drunous podem comprar skill de shield.", lim = 350, price= 10, incre = 10, skill = SKILL_SHIELD, skill_id = 5}, ["removerfrag"] = {t= 6, price= 10}, } local storage = 45611 function onSay(player, words, param) local pid = player:getGuid() local tile = player:getTile() if not tile:hasFlag(TILESTATE_PROTECTIONZONE) then player:sendCancelMessage("Você precisa está em área protegida para utilizar este comando.") return true end if player:getStorageValue(storage) >= os.time() then player:sendCancelMessage("Por medidas de segurança você só pode utilizar este comando em " .. player:getStorageValue(storage)-os.time() .. " segundos.") return true end if param == "" then player:popupFYI("Para comprar digite !comprar (nome do item)\nOpcoes:\nsd = 4000 em SD por 50 barras.\nuh = 6000 em UH por 40 barras.\nexplo = 6000 em explosion por 10 barras.\nvip10 = 10 dias de vip por 5 barras.\nvip30 = 30 dias de vip por 10 barras.\ndivine staff = divine staff por 30 barras.\ndivine axe = divine axe por 30 barras.\nlivro nivel 6 = livro nivel 6 por 60 barras.\ndivine club = divine club por 30 barras.\ndivine sword = divine sword por 30 barras.\ndivine crossbow = divine crossbow por 30 barras.\nlivro nivel 5 = livro nivel 5 por 30 barras.\nsuper divine axe = super divine axe por 60 barras.\nsuper divine club = super divine club por 60 barras.\nsuper divine sword = super divine sword por 60 barras.\nsuper divine staff = super divine staff por 60 barras.\nsuper divine crossbow = super divine crossbow por 60 barras.\nskillclub = adiciona 1 skill club por 1 barras.\nskillsword = adiciona 1 skill sword por 1 barras.\nskillaxe = adiciona 1 skill axe por 1 barras.\nskilldistance = adiciona 1 skill distance por 1 barras.\nskillshielding = adiciona 1 skill shielding por 1 barras.\nmagiclevel = adiciona 1 magic level por 3 barras.\nmagiclevel5 = adiciona 5 magic level por 15 barras.\nskillclub10 = adiciona 10 skills club por 10 barras.\nskillsword10 = adiciona 10 skills sword por 10 barras.\nskillaxe10 = adiciona 10 skills axe por 10 barras.\nskilldistance10 = adiciona 10 skill distance por 10 barras.\nskillshielding10 = adiciona 10 skill shielding por 10 barras.\nremoverfrag = remove todos frags por 100k.\nO Item desejado não existe em nosso stock. Veja a cima os detalhes dos items disponíveis.") return true end for f, v in pairs(tb) do if param == f then if v.t == 1 then if player:getItemCount(coinID) >= v.price then local item_quant = (v.bag_quant * 2000)/100 for x = 1, v.bag_quant do local bag = player:addItem(v.bag, 1) for i = 1, item_quant do bag:addItem(v.item, 100) end end player:removeItem(coinID, v.price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg) player:setStorageValue(storage, os.time()+3) break else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") end elseif v.t == 2 then if player:getItemCount(coinID) >= v.price then item = player:addItem(v.item, 1) item:setAttribute(ITEM_ATTRIBUTE_DESCRIPTION, "Este item pode ser adquirido através do shopping. Adquirido dia " .. os.date("%d/%m/%Y - %X") .." por ".. player:getName() ..". Serial: ".. player:getGuid() ..".") player:removeItem(coinID, v.price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, v.msg) player:setStorageValue(storage, os.time()+3) break else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") end elseif v.t == 3 then if player:getItemCount(coinID) >= v.price then player:addPremiumDays(v.days) player:removeItem(coinID, v.price) player:sendTextMessage(MESSAGE_STATUS_CONSOLE_BLUE, "Parabéns você comprou " .. v.days .. " dias de vip com sucesso.") player:setStorageValue(storage, os.time()+3) break else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") end elseif v.t == 4 then if player:getBaseMagicLevel() >= v.lim then player:sendCancelMessage(v.lim_msg) return true end if not isInArray(v.vocations, player:getVocation():getId()) then player:sendCancelMessage(v.voc_msg) return true end if player:getItemCount(coinID) >= v.price then player:removeItem(coinID, v.price) player:setStorageValue(storage, os.time()+3) player:remove() db.query("UPDATE `players` SET ".. v.skill .. " = " .. v.skill .. " + " .. v.incre .. " WHERE `id` = ".. pid) else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") end elseif v.t == 5 then if not isInArray(v.vocations, player:getVocation():getId()) then player:sendCancelMessage(v.voc_msg) return false end if player:getSkillLevel(v.skillid) >= v.lim then player:sendCancelMessage("Você não pode comprar esse skill.") return false end if player:getItemCount(coinID) >= v.price then player:removeItem(coinID, v.price) player:setStorageValue(storage, os.time()+3) player:remove() db.query("UPDATE `players` SET ".. v.skill .. " = " .. v.skill .. " + " .. v.incre .. " WHERE `id` = ".. pid) return true else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") return false end elseif v.t == 6 then if player:getItemCount(2160) >= v.price then player:removeItem(2160, v.price) player:setSkull(SKULL_NONE) player:setSkullTime(0) player:getPosition():sendMagicEffect(CONST_ME_MAGIC_GREEN) player:sendTextMessage(MESSAGE_EVENT_ADVANCE, "Your skull and frags has been removed!") player:setStorageValue(storage, os.time()+3) db.query("UPDATE `player_deaths` SET `unjustified` = 0 WHERE `unjustified` = 1 AND `killed_by` = " .. db.escapeString(player:getName())) else player:sendCancelMessage("Você não possui a quantidade necessária para comprar.") end end end end return false endSó que da o seguinte erro:
Por favor me ajudem :'(
Editado Janeiro 18 por julhinhokullitz