GstvoLiber 19 Postado Abril 10, 2014 Share Postado Abril 10, 2014 (editado) 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: <event type="login" name="tempo_on_reward" event="script" value="rewardON.lua"/> <event type="logout" name="tempo_on_reward2" event="script" value="rewardON.lua"/> Em login.lua adicione: registerCreatureEvent(cid, "tempo_on_reward2") 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 end Pessoal, 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 end Obrigado pela atenção,Já ia esquecendo, tem que adicionar na sua database em MYSQl, o seguinte query: ALTER TABLE players ADD total_time_on int(16) not null AFTER frags; Mude a palavra frags, para o nome da ultima coluna da sua table players. Se Possível +REP -GstavoLiber Editado Abril 10, 2014 por GstavoLiber Link para o comentário https://xtibia.com/forum/topic/231648-system-de-premia%C3%A7%C3%A3o-por-ficar-online/ Compartilhar em outros sites More sharing options...
Oneshot 732 Postado Abril 10, 2014 Share Postado Abril 10, 2014 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. Link para o comentário https://xtibia.com/forum/topic/231648-system-de-premia%C3%A7%C3%A3o-por-ficar-online/#findComment-1635867 Compartilhar em outros sites More sharing options...
GstvoLiber 19 Postado Abril 10, 2014 Autor Share Postado Abril 10, 2014 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. Obrigado pela atenção, realmente significa muito pra min, foi o primeiro sistema útil que fiz eu acho rsrs... Vou editar e fazer as alterações corretas. -GstavoLiber Link para o comentário https://xtibia.com/forum/topic/231648-system-de-premia%C3%A7%C3%A3o-por-ficar-online/#findComment-1635868 Compartilhar em outros sites More sharing options...
duasrodas 5 Postado Abril 11, 2014 Share Postado Abril 11, 2014 Parabéns,gostei do sistema,continue assim cara!! Link para o comentário https://xtibia.com/forum/topic/231648-system-de-premia%C3%A7%C3%A3o-por-ficar-online/#findComment-1635989 Compartilhar em outros sites More sharing options...
GstvoLiber 19 Postado Abril 11, 2014 Autor Share Postado Abril 11, 2014 Valeu cara, pode ter certeza que vou. =) -GstavoLiber Link para o comentário https://xtibia.com/forum/topic/231648-system-de-premia%C3%A7%C3%A3o-por-ficar-online/#findComment-1636069 Compartilhar em outros sites More sharing options...
robiie123 0 Postado Janeiro 25, 2016 Share Postado Janeiro 25, 2016 nao entendi muito esta parte.. ALTER TABLE players ADD total_time_on int(16) not null AFTER frags; Mude a palavra frags, para o nome da ultima coluna da sua table players. Link para o comentário https://xtibia.com/forum/topic/231648-system-de-premia%C3%A7%C3%A3o-por-ficar-online/#findComment-1683323 Compartilhar em outros sites More sharing options...
kinglekke 2 Postado Dezembro 21, 2016 Share Postado Dezembro 21, 2016 ainda tem alguem para dar supp ? Link para o comentário https://xtibia.com/forum/topic/231648-system-de-premia%C3%A7%C3%A3o-por-ficar-online/#findComment-1709619 Compartilhar em outros sites More sharing options...
Darciio 0 Postado Abril 28, 2017 Share Postado Abril 28, 2017 vish nem sei como adiciona as paradas aiALTER TABLE players ADD total_time_on int(16) not null AFTER frags; Link para o comentário https://xtibia.com/forum/topic/231648-system-de-premia%C3%A7%C3%A3o-por-ficar-online/#findComment-1716806 Compartilhar em outros sites More sharing options...
brumarty 0 Postado Março 4, 2021 Share Postado Março 4, 2021 (editado) Em 28/04/2017 em 15:49, Darciio disse: vish nem sei como adiciona as paradas aiALTER TABLE players ADD total_time_on int(16) not null AFTER frags; Então cara, na real seria pelo acesso ao PhpMyAdmin, tu seleciona sua DATABASE e na aba SQL tu cola e executa Mas eu mesmo ainda não o teste e não sei dizer se realmente funciona, porém procuro um sistema parecido com o do pbotwars.com Editado Março 4, 2021 por brumarty erro na escrita Link para o comentário https://xtibia.com/forum/topic/231648-system-de-premia%C3%A7%C3%A3o-por-ficar-online/#findComment-1764619 Compartilhar em outros sites More sharing options...
Posts Recomendados