Fala galera,
eu estou com um probleminha aqui, em um VIP System que estou criando (na verdade, adaptando),
Eu utilizei como BASE este tutorial: Perfect Vip System
Bem, vamos la,
é o seguinte, eu segui o tutorial, más o script deu alguns erros, então fui adaptando até que deixei ele "QUASE 100% FUNCIONAL".
Como assim ?
Primeiro que o Script, checava o Vocation dentro do addvip.lua, eu fiz direto pelo talkactions.xml más até ai tudo bem,
adaptei também mais 2 novos comandos, que são eles:
/remvip - Remove TODOS os dias de VIP de um determinado player.
/checvip - Mostra a você, quantos dias de VIP, o player em questão possui.
Porém, estou tento um problema com o /addvip.
O comando é basiado nisto:
/addvip NOME, DIAS
Exemplo: /addvip João, 30
no caso eu adicionei 30 dias de VIP para o João, más estou tendo um erro, que é ele:
Quando eu adiciono VIP à um player pela PRIMEIRA VEZ, ou DEPOIS DE TER REMOVIDO A VIP DELE COM O /remvip, A VIP SIMPLISMENTE NÃO FUNCIONA.
Ou seja,
você acaba de criar um Character de nome "João", você nunca teve vip, digamos que vou lhe dar 30 dias de vip, eu escrevo:
/addvip João, 30
Ele dá a menssagem de que os dias foram adicionados com sucesso, tanto para o João, quando para o ADMIN que executou o comando, funciona tudo certinho, porém, quando você da /checvip João, ele fala que tem 0 VIP DAYS.
E caso eu execute o comando novamente, ai sim, desta vez funciona. Ou seja, se eu utilizar 2x o comando de adicionar, na segunda vez o João recebe os dias de VIP.
É como se fosse um BUG na variavel que armazena o tempo de VIP, como se ela tivesse que receber um valor para desbugar, e só então, valores depois do primeiro, fazem efeito.
Ja resolvi dar um /checvip antes de adicionar nenhuma vip no Player, e o player aparece com o numero -14784 na variavel de DIAS de VIP,
ou seja, como se todos characters criados, ja começacem com "-14784 dias de vip", fazendo com que isso, bugue o primeiro comando de /addvip, e não impota o quanto você coloque de vip, no primeiro comando, que não funciona, e o vip reseta pra zero, ai sim, depois ele funciona.
Estou utilizando isto, para Alterar e Pegar o valor da VIP:
getPlayerStorageValue(player, 14540) setPlayerStorageValue(player, 14540, time)
Vou postar o script do /addvip, para vocês que conhecem melhor do assunto, possam localizar o possivel erro, que esta bugando a variavel em seu primeiro valor.
function onSay(cid, words, param) -- explodindo parametros local t = string.explode(param, ",") -- final parametro -- Você colocou os Parâmetros corretos ? if t[1] == '' or t[2] == '' or param == '' then --Não ? Então receba esta menssagem: doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Utilize: /addvip Nome, Dias") return true -- Sim ? Então execute o comando: else player = getPlayerByName(t[1]) if (not isPlayer(player)) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Vip GOLD: Player não encontrado!") return true else daysvalue = tonumber(t[2])*24*60*60 storageplayer = getPlayerStorageValue(player, 14540) timenow = os.time() if storageplayer <= 0 then time = timenow+daysvalue else time = storageplayer+daysvalue end doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Foram adcionados ".. tonumber(t[2]) .." dia(s) de VIP GOLD no seu character.") doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Vip GOLD: Voce adicionou ".. tonumber(t[2]) .." dia(s) de VIP GOLD para ".. t[1]) setPlayerStorageValue(player, 14540, time) local quantity = math.floor((getPlayerStorageValue(player,14540) - os.time())/(24*60*60)) doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Digite !vip para saber quanto tempo de VIP GOLD voce possui.") doPlayerSendTextMessage(player, MESSAGE_INFO_DESCR, "Você tem ".. quantity .." dia(s) de VIP restantes.") return true end end return TRUE end
E o erro não esta localizado no /checvip, nem no /remvip, porque ja retirei os 2 do servior, e testei só com o addvip, e sempre que adiciono pela primeira vez a vip para um jogador, ele buga, e só então na segunda vez, funciona.
Obrigado pela atenção de todos,
Esperando ancioso *.*