spin182 0 Postado Março 5, 2010 Share Postado Março 5, 2010 (editado) 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! Editado Março 5, 2010 por spin182 Link para o comentário https://xtibia.com/forum/topic/129167-alavanca-vip-tfs-036-resolvido/ Compartilhar em outros sites More sharing options...
joaohd 200 Postado Março 5, 2010 Share Postado Março 5, 2010 Eu não mexo com LuaSql mas acho que isso funciona: local config = { moneyid = 2159, } function onUse(cid, fromPosition, itemEx, toPosition, moneyid) if doPlayerRemoveItem(cid, config.moneyid, 5) == TRUE then local Target = db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. db.escapeString(cid) .. ";") if (Target:getID() ~= -1) then if (getPlayerByName(getPlayerName(cid))) then doSendMagicEffect(getCreaturePosition(getPlayerByName(data1)), CONST_ME_MAGIC_GREEN) end if getVipTimeByName(getPlayerName(cid)) == 0 then db.executeQuery("UPDATE `accounts` SET `vip_time` = 86400 * 30 + ".. os.time() .." WHERE `accounts`.`id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") else db.executeQuery("UPDATE `accounts` SET `vip_time` = `accounts`.`vip_time` + (86400 * 30) 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` + 30 WHERE `accounts`.`id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foi adicionado 30 dias de vip ao player ".. getPlayerName(cid) ..".") else doPlayerSendCancel(cid, "O player ".. getPlayerName(cid) .." não existe.") end return TRUE end end Você não tinha definido o que era "data1". Teste e veja se deu certo. flw Link para o comentário https://xtibia.com/forum/topic/129167-alavanca-vip-tfs-036-resolvido/#findComment-851403 Compartilhar em outros sites More sharing options...
spin182 0 Postado Março 5, 2010 Autor Share Postado Março 5, 2010 Eu não mexo com LuaSql mas acho que isso funciona: local config = { moneyid = 2159, } function onUse(cid, fromPosition, itemEx, toPosition, moneyid) if doPlayerRemoveItem(cid, config.moneyid, 5) == TRUE then local Target = db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. db.escapeString(cid) .. ";") if (Target:getID() ~= -1) then if (getPlayerByName(getPlayerName(cid))) then doSendMagicEffect(getCreaturePosition(getPlayerByName(data1)), CONST_ME_MAGIC_GREEN) end if getVipTimeByName(getPlayerName(cid)) == 0 then db.executeQuery("UPDATE `accounts` SET `vip_time` = 86400 * 30 + ".. os.time() .." WHERE `accounts`.`id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") else db.executeQuery("UPDATE `accounts` SET `vip_time` = `accounts`.`vip_time` + (86400 * 30) 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` + 30 WHERE `accounts`.`id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Foi adicionado 30 dias de vip ao player ".. getPlayerName(cid) ..".") else doPlayerSendCancel(cid, "O player ".. getPlayerName(cid) .." não existe.") end return TRUE end end Você não tinha definido o que era "data1". Teste e veja se deu certo. flw bem primeiro tava dizendo que o player com o meu nome nao exisita. daí eu fui no script e removi o " else doPlayerSendCancel(cid, "O player ".. getPlayerName(cid) .." não existe.") end" dae quando eu uso a alavanca, some o valor da grana do char, mas, nao aparece efeito, nao aparece mensagem, e o player nao ganha os dias de vip. =/ vlw a força ae, tem alguma ideia mais? Aeee amigo vlw a força ae fiz mais uns ajustes daqui finalmente consegui fazer funcionar! ;D Só os efeitos que nao estão aparecendo alguma ideia ae? taí o script local config = { moneyid = 2159, } function onUse(cid, fromPosition, itemEx, toPosition, moneyid) if doPlayerRemoveItem(cid, config.moneyid, 30) == TRUE then local Target = db.getResult("SELECT `name` FROM `players` WHERE `name` = " .. (db.escapeString(getPlayerName(cid))) .. ";") if (Target:getID() ~= -1) then if (getPlayerByName(getPlayerName(cid))) then doSendMagicEffect(fromPosition, CONST_ME_GIFT_WRAPS) doSendAnimatedText(fromPosition, "Comprado", TEXTCOLOR_RED) end if getVipTimeByName(getPlayerName(cid)) == 0 then db.executeQuery("UPDATE `accounts` SET `vip_time` = 86400 * 30 + ".. os.time() .." WHERE `accounts`.`id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") else db.executeQuery("UPDATE `accounts` SET `vip_time` = `accounts`.`vip_time` + (86400 * 30) 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` + 30 WHERE `accounts`.`id` = ".. getAccountIdByName(getPlayerName(cid)) ..";") 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") end return TRUE end end ve se da pra colocar uns confetes algo bem exagerado mesmo... hehe logo em seguida eu posto pra galera la! valeu! Link para o comentário https://xtibia.com/forum/topic/129167-alavanca-vip-tfs-036-resolvido/#findComment-851407 Compartilhar em outros sites More sharing options...
joaohd 200 Postado Março 5, 2010 Share Postado Março 5, 2010 Então aqui está: 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 flw Link para o comentário https://xtibia.com/forum/topic/129167-alavanca-vip-tfs-036-resolvido/#findComment-851424 Compartilhar em outros sites More sharing options...
helinholima 13 Postado Março 5, 2010 Share Postado Março 5, 2010 Dúvida sanada, tópico fechado. +REP para o usuário apocarai, e caso você continue com dúvidas reporte o tópico que eu reeabro. Link para o comentário https://xtibia.com/forum/topic/129167-alavanca-vip-tfs-036-resolvido/#findComment-851437 Compartilhar em outros sites More sharing options...
Posts Recomendados