Ir para conteúdo
  • Cadastre-se

(Resolvido)Setar Storage em Player Offline


Ir para solução Resolvido por Frenesy,

Posts Recomendados

Olá pessoal, estou tentando fazer um sisteminha de premium points por storage, sei q pode ter outros mais complexos pelo forum ai, mas eu estou progredindo na programação lua então estou tentando fazer...

 

A minha duvida é a seguinte qdo eu digito no comando /addpoints Player,200 ele adicionar StorageValue 200 no storage que eu escolhi, porem isso só funciona quando o player esta online, gostaria de saber se tem como fazer pra qdo ele estiver offline tb, segue meu script:

function onSay(cid, words, param)
local parametres = string.explode(param, ",")
local player = getPlayerByNameWildcard(parametres[1])
local points = getPlayerStorageValue(player,9876)
if (getPlayerStorageValue(player,9876) == -1) and (parametres[1] ~= nil) and (parametres[2] ~= nil) and (isPlayer(player) == true) then
	setPlayerStorageValue(player,9876, (points+parametres[2]+1))
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce adicionou "..(parametres[2]).." points ao jogador "..parametres[1]..".")
	doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_BLUE, "Voce recebeu "..(parametres[2]).." premium points.")

elseif (parametres[1] ~= nil) and (parametres[2] ~= nil) and (isPlayer(player) == true) then
	setPlayerStorageValue(player,9876, (points+parametres[2]))
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Voce adicionou "..(parametres[2]).." points ao jogador "..parametres[1]..".")
	doPlayerSendTextMessage(player, MESSAGE_STATUS_CONSOLE_BLUE, "Voce recebeu "..(parametres[2]).." premium points.")
elseif (parametres[1] == nil) or (parametres[2] == nil) then
	doPlayerSendTextMessage(cid, MESSAGE_STATUS_CONSOLE_BLUE, "Este comando requer 2 parametros.")
end

return true
end 
Link para o post
Compartilhar em outros sites

eu ja vi os comando de adicionar database, porem eu nao sei meuito bem essa parte, poderia me passar o comando?! o resto eu me viro aqui.

Link para o post
Compartilhar em outros sites

@Frenesy

Só faltou encerrar o parâmetro do metamétodo da função:

db.executeQuery("INSERT `player_storage` SET `key` = 0000, 'value' = 1, WHERE `player_id` = " .. getPlayerGUID(cid) .. ";")

The corrupt fear us.

The honest support us.

The heroic join us.

Link para o post
Compartilhar em outros sites
  • 1 year later...
Em 06/01/2015 at 13:25, Kolisium disse:

Vlw mano!

estou tantando fazer um sistema parecido porem é pra dar premeação a ganhadores de eventos etc...
eu tou com outro script que faz o mesmo que este seu, porem ele da a storage apenas se o jogador estiver online
tentei executar esse query mas deu exo na hora de executar ele, talvez executei errado, poderia me explicar caso tenha conseguido?

Link para o post
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.


  • Conteúdo Similar

    • Por Nazo
      Buenas, TK!
      Um usuário pediu ajuda em um script, onde queria limitar para a quest ser feita apenas uma vez por IP, mesmo que ainda seja possível mudá-lo, resolvi postar aqui xd
       
      Execute esse código SQL no seu banco de dados MySQL, para a criação da tabela onde ficarão as storages e o IP armazenado do player:
      CREATE TABLE player_ip_storage( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);  
      Ou caso seja SQLITE, utilize esse código:
      CREATE TABLE player_ip_storage( player_id INT NOT NULL, ip CHAR(15) NOT NULL, storage INT NOT NULL ); ALTER TABLE player_ip_storage ADD CONSTRAINT FK_PLAYER_ID FOREIGN KEY (player_id) REFERENCES players(id);  
      Crie um arquivo chamado nazo-functions.lua em data/lib e adicione o seguinte conteúdo:
      -- by Nazo (tibiaking.com) -- IP Storage System function getIpQuestStatus(cid, storage) storages = db.getResult("SELECT * FROM `player_ip_storage` WHERE `ip` = \"" .. doConvertIntegerToIp(getPlayerIp(cid)) .. "\" and `storage` = "..storage..";") if(storages:getID() ~= -1) then return false end return true end function setIpQuestStatus(cid, storage) db.executeQuery("INSERT INTO player_ip_storage(player_id, ip, storage) VALUES("..getPlayerGUID(cid)..",\""..doConvertIntegerToIp(getPlayerIp(cid)).."\","..storage..")") return true end  
      Agora, quando você tiver uma quest, adicione na verificação a função getIpQuestStatus na checagem junto, e quando finalizar a quest utilize o setIpQuestStatus, com os parâmetros cid e número da storage, porém a função só armazena que essa storage tem algo no banco de dados, ou seja, a quest já foi feita, você não armazena o valor da storage junto (como a função normal que geralmente adiciona "1" na storage).
       
      Exemplo de quest abaixo:
      -- by Nazo (tibiaking.com) config = { storage = 123123, -- storage da quest premio = {2160, 1} -- {itemid, quantia} } function onUse(cid, item, frompos, item2, toPosition) queststatus = getPlayerStorageValue(cid,config.storage) if(queststatus == -1 and getIpQuestStatus(cid, config.storage)) then -- note que eu só adicionei a função, nenhuma comparação, explicarei abaixo do código doPlayerSendTextMessage(cid,22,"Tome seu prêmio.") doPlayerAddItem(cid,config.premio[1],config.premio[2]) setPlayerStorageValue(cid,config.storage,1) setIpQuestStatus(cid,config.storage) -- função que adiciona a storage no banco de dados else doPlayerSendTextMessage(cid,22,"Você já fez esta quest.") end end  
      Explicação básica do motivo da função não possuir comparação na verificação e ficar como a seguir:
       
      if(getIpQuestStatus(cid, config.storage)) then Quando você faz um if, com uma função dentro sem comparações, ela continuará o bloco de comando apenas se o retorno da mesma for verdadeiro, assim quando você fizer a quest, e tentar novamente, o get retorna falso, e isso cancela a condição e vai para o bloco de comando do "else".
    • Por 001rafa
      Galera como faz para poder criar um slot a mais no otcliente para poder equipar com itens por exemplo mais um ring e mais um colar?
      sei que tem q modificar no source do cliente e no distro alguem poderia me ajudar com um tutorial?

      grato pela atenção.

      up
    • Por M Cronos
      Boa Noite amigos, eu estava usando o Object builder e o item editor para adicionar uns sprites no meu servidor para usar com um script, este aqui >>> 
       que o @Comedinha postou para ajudar um outro membro.
      Bom a questão é que o script parece estar funcionando,por que não dá nenhum erro, mas o item também não é usado. bom eu fucei bastante e ainda  não consegui resultado então eu pensei que talvez eu tivesse que setar o item como usável no OB ou no IE, pois me lembro de ter visto isso em algum lugar, mas não consigo achar onde eu faço isso. alguém pode me ajudar? se possível. obrigado.
    • Por fezeRa
      Estou com um problema chato. Seguinte:
       
      O player pega , compra promotion, dai fica lá "Elder Druid", dai se ele reloga, ele volta pra Druid.
      Ou seja não ta salvando a vocation, é algum problema no login.lua que nao salva a vocation atual? Alguem sabe?
    • Por Digoshow
      Alguem sabe me fazer um script que deixaria apenas players mudo?
      Um script que assim, apenas Tutores, God e ADM poderia usar!
      O tipo do comando assim /mudo, player, TEMPO QUE FICA MUDO
      O script se for possivel so pegara em players !
       
      Obrigado, REP+ !
×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo