Vamos lá,
O sistema será executado toda vez que jogador entrar no jogo, então, se ele entrar, ficar online uma hora, o sistema não dará o prêmio, a menos que ele saia e entre no jogo.
Quanto a sua dúvida sobre a query SQL:
db.executeQuery("UPDATE total_time_on SET value = "..hora + value.." WHERE player_id = "..id.. "")
Do jeito que você fez, dá errado mesmo, pois aí você está chamando duas variáveis hora e value, e como você quer, value não é uma variável.
Atenção também para a variável id, que você não declarou também, e a coluna não se chama player_id, mas sim id, no banco de dados dos servidores atuais.
db.executeQuery("UPDATE `players` SET `value` = `value` + ".. hora .." WHERE `id` = ".. getPlayerGUID(cid) ..";")
Fica desse jeito.
Não desanime no primeiro erro, estude um pouco mais e você vai longe.
Abraço.







info
Grupo: Campones
Registrado: 07/03/14
Posts: 64
Reputação: +19
Bom galera, quis fazer o script pra ajudar um membro da comunidade.. Espero que gostem!
É um script simples, que a cada 1 hora online, dá um item para o player. Esse tempo online será salva num espaço na sua database, e depois vou aprimorar o script para criar um rank dos mais online. De qualquer forma, modificações desse script viram, então aguardem.
Em creaturescript.xml adicione:
Em login.lua adicione:
Agora, na pasta scripts, cria um arquivo chamado rewardON.lua e adicione dentro:
-- Script made by GstavoLiber -- -- Config -- storage = 2001 -- storage que vai salvar o tempo online temporariamente. item = 2160 -- id do item que será dado como presente hora = 3600 -- tempo em segundos a ficar online para receber o premio count = 50 -- qntidade do item premio -- Config -- function onLogin(cid) if(getPlayerStorageValue(uid, storage) >= hora )then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já está logado a 1 hora! Você receberá seu prêmio em breve. " ) doPlayerAddItem(uid, item, count) local rest = getPlayerStorageValue(uid, storage) - hora local query = db.executeQuery("UPDATE `players` SET `value` = `value` + ".. hora .." WHERE `id` = ".. getPlayerGUID(cid) ..";") setPlayerStorageValue(uid, storage, 0) setPlayerStorageValue(uid, storage, rest) return TRUE else setPlayerStorageValue(uid, storage, getPlayerStorageValue(uid, storage) + os.time()) doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Fique logado por 1 hora para ganhar premio! Lembre-se de deslogar e logar para recebe-lo. " ) end return TRUE end function onLogout(cid) setPlayerStorageValue(uid, storage, getPlayerStorageValue(uid, storage) + os.time()) return TRUE -- return false impede o jogador de dar logout endPessoal, tenho uma leve impressão que eu errei na lógica, então caso não funcione o de cima, testa esse de baixo:
-- Script made by GstavoLiber -- -- Config -- storageInit = 2001 -- storage que vai salvar o tempo online temporariamente. storageFinish = 2002 -- storage que vai salvar o tempo online temporariamente. storageTotal = 2003 item = 2160 -- id do item que será dado como presente hora = 3600 -- tempo em segundos a ficar online para receber o premio count = 50 -- qntidade do item premio -- Config -- function onLogin(cid) setPlayerStorageValue(uid, storageInit, os.time()) if(getPlayerStorageValue(uid, storageTotal) >= hora )then doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Você já está logado a 1 hora! Você receberá seu prêmio em breve. " ) doPlayerAddItem(uid, item, count) local rest = getPlayerStorageValue(uid, storageTotal) - hora local query = db.executeQuery("UPDATE `players` SET `value` = `value` + ".. hora .." WHERE `id` = ".. getPlayerGUID(cid) ..";") if(rest > 0) then setPlayerStorageValue(uid, storageTotal, rest) else setPlayerStorageValue(uid, storageTotal, 0) end return TRUE else doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Fique logado por 1 hora para ganhar premio! Lembre-se de deslogar e logar para recebe-lo. " ) end return TRUE end function onLogout(cid) setPlayerStorageValue(uid, storageFinish, os.time()) setPlayerStorageValue(uid, storageTotal, getPlayerStorageValue(uid, storageTotal) + (getPlayerStorageValue(uid, storageFinish) - getPlayerStorageValue(uid, storageInit))) return TRUE -- return false impede o jogador de dar logout endObrigado pela atenção,
Já ia esquecendo, tem que adicionar na sua database em MYSQl, o seguinte query:
Mude a palavra frags, para o nome da ultima coluna da sua table players.
Se Possível +REP-GstavoLiber
Editado Abril 10 por GstavoLiber