Ir para conteúdo

Alavanca Vip - Tfs 0.3.6 [ Resolvido ]


spin182

Posts Recomendados

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 por spin182
Link para o comentário
Compartilhar em outros sites

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
Compartilhar em outros sites

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
Compartilhar em outros sites

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
Compartilhar em outros sites

×
×
  • Criar Novo...