Ir para conteúdo

Featured Replies

Postado
  • Este é um post popular.

O que são Storages?

Storage Value é um valor que fica gravado no banco de dados, no banco de dados ele é estruturado assim:

Id = 5 -- A Storage pertence ao player que tem o id 5 no banco de dados

Key = 2000 -- Key é um índice que serve para diferenciar uma storage de outras storages

Value = 50 -- Valor da Storage, pode ser númerico ou string

quando você usa a função getPlayerStorageValue(uid, chave)

O que acontece é praticamente o seguinte:

Baseado no uid da criatura pegue o Id do player no banco de dados

Em seguida abra a tabela player_storage e procure lá um valor em que

Key seja igual a key do parâmetro e o Id seja o mesmo do player que eu requisitei

Caso exista retorne o Value

Caso não exista retorne -1

É basicamente assim que funciona, por isso por padrão todas storages que não tenham um valor definido recebem o valor -1.

Se não me engano um player pode ter até 65555 storages, todas ficam em uma única tabela no banco de dados.

Como atribuir uma storage a um player:


setPlayerStorageValue(cid, key, value)

Onde cid é o player que vai receber a storage, key é o identificador da storage e value é o valor que a storage vai ter.
Como verificar a storage de um player:

getPlayerStorageValue(cid, key)

Onde cid é o player que tem a storage e key é o identificador da storage que você quer verificar.

Exercício: Crie um script que só deixe o player usar um item uma vez.

Esse tutorial ficou bem curto, mas algumas pessoas têm dificuldade em entender as Storages

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

  • Respostas 6
  • Visualizações 3.2k
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • Sua definição de storages é totalmente errônea, uma vez que o armazenamento dos valores de storages em um banco ou base de dados, só é feito, para o jogador carregar todos esses valores quando fazer u

  • Deixa eu ver se entendi, em : if getPlayerStorageValue(cid, 34534) == -1 then está dizendo "caso a storage 34534 do player esteja vazia, faça adiciona item envia mensagem adicion

  • pra quem não sabe como funciona é perfeito, fiz o Exercício só pra interagir mesmo function onUse(cid, item, fromPosition, itemEx, toPosition) if getPlayerStorageValue(cid, 34534) == -1 th

Postado

pra quem não sabe como funciona é perfeito, fiz o Exercício só pra interagir mesmo ^^


function onUse(cid, item, fromPosition, itemEx, toPosition)

if getPlayerStorageValue(cid, 34534) == -1 then

if getPlayerLevel(cid) >= 100 then

doPlayerAddItem(cid, 2160, 100)

doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Você ganhou 1kk!")

   doPlayerSetStorageValue(cid, 34534, 1)

   else

    doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Você não tem level suficiente!")

end

	 doPlayerSendTextMessage(cid,MESSAGE_INFO_DESCR, "Você já fez a quest!")

end

return TRUE

end

16/11/2014

23/11/2014

 

RIP AnneMotta 21/01/2012 - 15/01/2014

Liga das lendas: DIAMOND É A META

6qpqBbJ.png

  • 10 months later...
Postado

Sua definição de storages é totalmente errônea, uma vez que o armazenamento dos valores de storages em um banco ou base de dados, só é feito, para o jogador carregar todos esses valores quando fazer um login.

 

A prova maior disso é que você pode setar storages em monstros, eles ganham o valor e o mantém até o momento de sua deleção (ou no jogo, morte). Isso porque as storages são armazenadas na memória do servidor, primeiro, nos uniqueids das criaturas, maior prova disso, é que mesmo 100 Rats, com nomes iguais, por terem uniqueids diferentes, podem ter valores de storages diferentes.

 

 

Experimente deletar a tabela player_storages, as storages funcionaram normalmente, o único problema é depois de um logoff ;)

 

Um abraço,

Oneshot

Editado por Oneshot (veja o histórico de edições)

Postado
  • Autor

Sua definição de storages é totalmente errônea, uma vez que o armazenamento dos valores de storages em um banco ou base de dados, só é feito, para o jogador carregar todos esses valores quando fazer um login.

 

A prova maior disso é que você pode setar storages em monstros, eles ganham o valor e o mantém até o momento de sua deleção (ou no jogo, morte). Isso porque as storages são armazenadas na memória do servidor, primeiro, nos uniqueids das criaturas, maior prova disso, é que mesmo 100 Rats, com nomes iguais, por terem uniqueids diferentes, podem ter valores de storages diferentes.

 

 

Experimente deletar a tabela player_storages, as storages funcionaram normalmente, o único problema é depois de um logoff ;)

 

Um abraço,

Oneshot

 

Algumas coisas que você falou eu não sabia, obrigado por complementar a ideia {:

Mas tipo, não creio que seja totalmente errôneo, simplificadamente o método setPlayerStorageValue serve para mudar o valor no banco de dados, quando for player. Se eu fosse entrar em mais detalhes poderia confundir mais as pessoas que têm dificuldade com isso.

-"Supra Omnes Lux Lucis"

- Acima de todos brilha a Luz -

5VGnDyBz.png

Postado

Concordo com OneShot, Você errou nas suas afirmações, Storagens servem para armazenar dados primários em um certo uid, Sem contar que você poderia ter citado mais exemplos de uso, com monstros, e até com storages globais, E citar que se for mal utilizada, pode causar lag.

 

Parabéns por sua iniciativa.

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo