Ir para conteúdo

Featured Replies

Postado

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

@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 Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Postado

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 Abaixo

Facebook

Youtube
Discord

 

Tutoriais / Conteúdos

Clique Aqui

Postado

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.

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.7k

Informação Importante

Confirmação de Termo