Olá pessoal, bom eu tentei montar um npc que venda vip em um sistema, sql, mas quebrei a cabeça = um loco até desistir dae então resolvi montar uma alavanca que venda vip. Mas não consegui completar e nem estou conseguindo achar aonde está o problema no script vou mandar dae alguem que saiba por favor faça a correção dae agente deixa disponivel pra galera no forum:
Ta aí o codigo do script
local config = { moneyid = 2159, } function onUse(cid, data1, fromPosition, itemEx, toPosition, moneyid) if doPlayerRemoveItem(cid, config.moneyid, 5) == TRUE then local Target = db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. db.escapeString(data1) .. ";") if (Target:getID() ~= -1) then if (getPlayerByName(data1)) then doSendMagicEffect(getCreaturePosition(getPlayerByName(data1)), CONST_ME_MAGIC_GREEN) end if getVipTimeByName(Data) == 0 then db.executeQuery("UPDATE `accounts` SET `vip_time` = 86400 * 30 + ".. os.time() .." WHERE `accounts`.`id` = ".. getAccountIdByName(data1) ..";") else db.executeQuery("UPDATE `accounts` SET `vip_time` = `accounts`.`vip_time` + (86400 * 30) WHERE `accounts`.`id` = ".. getAccountIdByName(data1) ..";") end db.executeQuery("UPDATE `accounts` SET `vip` = 1 WHERE `accounts`.`id` = ".. getAccountIdByName(data1) ..";") db.executeQuery("UPDATE `accounts` SET `vip_days` = `accounts`.`vip_days` + 30 WHERE `accounts`.`id` = ".. getAccountIdByName(data1) ..";") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foi adicionado 30 dias de vip ao player ".. data1 ..".") else doPlayerSendCancel(cid, "O player ".. data1 .." não existe.") end return TRUE end end
e o erro que esta dando no console quando usa a alavanca é o seguinte:
Error - Action Interface]
data/actions/scripts/vip.lua:onUse
Description:
data/actions/scripts/vip.lua:21: attempt to concatenate local 'data1' (a table value)
stack traceback:
data/actions/scripts/vip.lua:21: in function <data/actions/scripts/vip.lua:5>
Aguardo respostas!
------------ edit ------------
Segue a prova do crime: o script funfando blz. Valeu Neox Boy!
function doAddVipDays(cid, days) local Target = db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. (db.escapeString(getPlayerName(cid))) .. ";") if (Target:getID() ~= -1) then if getVipTimeByName(getPlayerName(cid)) == 0 then db.executeQuery("UPDATE `accounts` SET `vip_time` = 86400 * days + ".. os.time() .." WHERE `accounts`.`id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") else db.executeQuery("UPDATE `accounts` SET `vip_time` = `accounts`.`vip_time` + (86400 * days) WHERE `accounts`.`id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") end db.executeQuery("UPDATE `accounts` SET `vip` = 1 WHERE `accounts`.`id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") db.executeQuery("UPDATE `accounts` SET `vip_days` = `accounts`.`vip_days` + days WHERE `accounts`.`id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") else print("Erro ao tentar adicionar vip para o jogador " .. getPlayerName(cid) .. ".") end return TRUE end local config = { moneyid = 2159, } function onUse(cid, fromPosition, itemEx, toPosition, moneyid) if doPlayerRemoveItem(cid, config.moneyid, 30) then doAddVipDays(cid, 30) doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Parabéns! Foi adicionado 30 dias de vip ao player ".. getPlayerName(cid) ..". Digite !checkvip para checar os dias de VIP.") doSendMagicEffect(getCreaturePosition(cid), 27) doSendAnimatedText(getCreaturePosition(cid), "Vip!", 180) else doPlayerSendCancel(cid, "Você não possui moedas VIP suficiente.") end return TRUE end
PS: FUNCIONA APENAS EM SISTEMA VIP SQL!