Postado Junho 19, 2019 6 anos Olá segundo tópico que crio com o mesmo intuito. aprendi muito oque foi me ensinado pelo Lyu pelo tópico passado, porém estou com problemas sem setar storage. Spoiler local levels = {100, 201} -- indice 1 = level 100 // indice 2 = level 200 e assim vai... local items = {1951, 1951} -- indice 1 = item = 1951 // indice 2 = item 1951 e assim vai function onUse(cid, item) if getPlayerStorageValue(cid, 1992) < 1 then -- checando a storage doPlayerSendTextMessage(cid, 21, "já recebeu") -- ? elseif getPlayerStorageValue(cid, 1993) < 1 then -- checando a storage doPlayerSendTextMessage(cid, 21, "já recebeu")-- ? elseif getPlayerStorageValue(cid, 1994) < 1 then -- checando a storage doPlayerSendTextMessage(cid, 21, "já recebeu") -- ? end if getPlayerLevel(cid) == levels[1] then -- checa o level da index tabela levels doPlayerAddItem(cid, items[1]) -- checa 2 index da tabela items setPlayerStorageValue(cid, 1992, 1) -- setá storage doPlayerSendTextMessage(cid, 21, "Voce recebeu um item parabens") -- mensagem que ira receber se for verdadeiro elseif getPlayerLevel(cid) == levels[2] then doPlayerAddItem(cid, items[2]) setPlayerStorageValue(cid, 1993, 1) doPlayerSendTextMessage(cid, 21, "Voce recebeu um item parabens") elseif getPlayerLevel(cid) == levels[3] then doPlayerAddItem(cid, items[3]) doPlayerSendTextMessage(cid, 21, "Voce recebeu um item parabens") setPlayerStorageValue(cid, 1994, 1) else -- se for colocar mais use acima desse else doPlayerSendTextMessage(cid, 21, "Nao tem level necessario") end return true -- retornando verdadeiro pois getPlayerLevel(cid) == levels[1] é um valor verdadeiro. end --[[ PARA ADICIONAR MAIS LEVEL elseif getPlayerLevel(cid) == levels[4] then doPlayerAddItem(cid, items[4]) doPlayerSendTextMessage(cid, 21, "Você recebeu " .. items[4] .. " parabens") ]]--- Sim, sou iniciante em lua pelo modo que estou fazendo é um modo que ira ter muitos codigos e sei que possui modo mais facil de ser feito. porém é um modo que estou aprendendo, logo mais tento trazer algo mais profissional. então o problema desse script é que não sei setar a a storage no player, minha duvida basicamente é sobre toda a função getPlayerStorageValue(cid) e SetPlayerStorageValue(cid). alguém pode me dar uma ajuda? O rei de seu proprio destino é aquele que luta pela gloria do amanhã! Discord : ZoR#9373
Postado Junho 19, 2019 6 anos @ZikaLord Básicamente getPlayerStorage(cid) - Verifica a storage do player no caso o cid significa player setPlayerStorage(cid) - Vai setar uma storage no player Acredito que o problema esta aqui if getPlayerStorageValue(cid, 1992) < 1 then -- checando a storage No caso < 1 esta verificando se tem a storage 1 ou menor e ai vai gerar o erro então teria que ser = porque se a storage alvo for igual a 1 vai mandar a mensagem de storage no seu caso esta verificando se a storage alvo for 1 ou menor vai gerar o erro e não vai dar os itens Obs: Pelo que eu me lembro é assim mas posso estar equivocado faz um tempo que o @Yan Liima me explicou essa parte Projeto ATS (Naruto)Informações AbaixoFacebookYoutubeDiscord Tutoriais / ConteúdosClique Aqui
Postado Junho 19, 2019 6 anos Este tópico foi movido para a área correta. Esta é uma mensagem automática!Pedimos que leia as regras do fórum! Spoiler This topic has been moved to the correct area. This is an automated message!Please read the forum rules. Projeto ATS (Naruto)Informações AbaixoFacebookYoutubeDiscord Tutoriais / ConteúdosClique Aqui
Postado Junho 19, 2019 6 anos Autor Não gera erros, apenas não seta a storage e nem verifica. @Brunds Editado Junho 19, 2019 6 anos por ZikaLord (veja o histórico de edições) O rei de seu proprio destino é aquele que luta pela gloria do amanhã! Discord : ZoR#9373
Postado Junho 23, 2019 6 anos para "corrigir" seu script ficaria assim local levels = {100, 201} -- indice 1 = level 100 // indice 2 = level 200 e assim vai... local items = {1951, 1951} -- indice 1 = item = 1951 // indice 2 = item 1951 e assim vai function onUse(cid, item) if getPlayerStorageValue(cid, 1992) == 1 then -- verifica se o storage é 1, pois se for 1 ja recebeu doPlayerSendTextMessage(cid, 21, "já recebeu") elseif getPlayerStorageValue(cid, 1993) == 1 then doPlayerSendTextMessage(cid, 21, "já recebeu") elseif getPlayerStorageValue(cid, 1994) == 1 then doPlayerSendTextMessage(cid, 21, "já recebeu") end if getPlayerLevel(cid) >= levels[1] then -- checa o indice 1 da tabela levels que corresponde a 100 (se o nivel do jogador for maior ou igual a 100) doPlayerAddItem(cid, items[1]) -- checa o indice 1 da tabela items que corresponde a 1951 setPlayerStorageValue(cid, 1992, 1) -- define o valor do storage 1992 para 1 doPlayerSendTextMessage(cid, 21, "Voce recebeu um item parabens") elseif getPlayerLevel(cid) >= levels[2] then doPlayerAddItem(cid, items[2]) setPlayerStorageValue(cid, 1993, 1) doPlayerSendTextMessage(cid, 21, "Voce recebeu um item parabens") --[[elseif getPlayerLevel(cid) >= levels[3] then -->>>>>>>>>>>>>essa parte da comentada pois não existe o indice 3 na tabela e caso cair aqui vai da erro doPlayerAddItem(cid, items[3]) doPlayerSendTextMessage(cid, 21, "Voce recebeu um item parabens") setPlayerStorageValue(cid, 1994, 1)]] else -- se for colocar mais use acima desse else doPlayerSendTextMessage(cid, 21, "Nao tem level necessario") end return true -- retornando verdadeiro para dizer que o script foi executado com sucesso end porem isso ainda não resolveria seu problema, tendo em vista que o jogador pode receber a mensagem de que ja recebeu o item e receber o item na mesma execução do código outro problema é que nivel 200 ele vai receber a recompensa do 100, pois a primeira verificação sera verdadeira. a melhor maneira de corrigir isso seria local levels = {100, 200, 300} -- indice 1 = level 100 // indice 2 = level 200 e assim vai... local items = {1951, 1951, 0000} -- indice 1 = item = 1951 // indice 2 = item 1951 e assim vai local storage = 1992 --storage que vai armazenar "quantas" recompensas o jogador ja recebeu function onUse(cid, item) level = getPlayerLevel(cid) value = getPlayerStorageValue(cid, storage) if level >= levels[1] and value < 1 then -- se o nivel do jogador for maior que o da tabela e o storage for menor que 1 doPlayerAddItem(cid, items[1]) -- adiciona o item que corresponde ao indice 1 da tabela items setPlayerStorageValue(cid, storage, 1) -- define o valor do storage 1992 para 1 doPlayerSendTextMessage(cid, 21, "Voce recebeu um item parabens") elseif level >= levels[2] and value < 2 then doPlayerAddItem(cid, items[2]) setPlayerStorageValue(cid, storage, 2) --atribui o storage pra 2 para dizer que ele ja recebeu a sua segunda recompensa doPlayerSendTextMessage(cid, 21, "Voce recebeu um item parabens") elseif level >= levels[3] and value < 3 then doPlayerAddItem(cid, items[3]) doPlayerSendTextMessage(cid, 21, "Voce recebeu um item parabens") setPlayerStorageValue(cid, storage, 3) -- recebeu a terceira recompensa else -- se for colocar mais use acima desse else doPlayerSendTextMessage(cid, 21, "Voce nao tem nivel suficiente para receber a proxima recompensa") end return true -- retornando verdadeiro para dizer que o script foi executado com sucesso end --[[PARA ADICIONAR MAIS LEVEL elseif level >= levels[4] then doPlayerAddItem(cid, items[4]) setPlayerStorageValue(cid, storage, 4) doPlayerSendTextMessage(cid, 21, "Você recebeu " .. items[4] .. " parabens") ]] seu erro foi na verificação dos níveis, tava verificando igual ao invés de maior, e nos storages tava verificando menor ao invés de menor ou igual adicionei 1 única variável que o valor aumenta conforme as recompensas são obtidas pelo jogador, e comentei tudo certinho para ajudar vc a entender o que esta acontecendo no script existe uma maneira muito mais fácil de fazer usando for e fazendo um script dinâmico que se adequa ao tamanho da tabela, mas como vc esta aprendendo vamos ficar por aqui ? espero ter ajudado, qualquer dúvida pode perguntar por aqui mesmo que eu ajudo
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.