Postado Outubro 27, 2012 12 anos 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 -
Postado Outubro 27, 2012 12 anos 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
Postado Setembro 14, 2013 11 anos 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 Setembro 14, 2013 11 anos por Oneshot (veja o histórico de edições)
Postado Setembro 17, 2013 11 anos 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 -
Postado Setembro 19, 2013 11 anos 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.