SE
dúvida

if and elseif - Dúvida

Por SeKtooR, 17 de fev. de 2014 em Scripts

script
4
774
SeKtooRS
17 de fevereiro de 2014 às 19:06

Oi pessoal, teria uma dúvida estou me esforçando para aprender Scripting e teria uma dúvida/pedido.



Tem como usar para verificar e executar uma função de acordo com a quantidade de storages que o jogador tem?


Ex:



Se ele tiver 1
receber certo item
receber mensagem
Se ele tiver 2
receber certo item
receber mensagem
Se ele tiver 3
receber certo item
receber mensagem
Se ele não tiver nenhum
receber mensagem

Se não me engano o jeito mais fácil e usando Elseif que ainda quero aprender a utilizar, bom gostaria que alguém reproduzi-se o código que citei acima, e se possível explicar um pouco do uso.


Editado Fevereiro 17 por SeKtooR

zipter98Z
17 de fevereiro de 2014 às 19:37

Há uma maneira mais simples e menor de fazer isso: tabelas. Aqui está o seu código (não lhe culpo se não entender, não sou bom com explicações):

local tabela_de_exemplo = {
    [1] = {item, "mensagem"},     --[valor da storage] = {id do item, mensagem},
    [2] = {item, "mensagem"},
    [3] = {item, "mensagem"},
}
    if tabela_de_exemplo[getPlayerStorageValue(cid, storage)] then   --Se o valor da storage "storage" do jogador for igual à algum dos valores entre colchetes da tabela_de_exemplo, então:
        local tab = tabela_de_exemplo[getPlayerStorageValue(cid, storage)]
        doPlayerAddItem(cid, tab[1], 1)  --O jogador receberá o item com ID programado no índice 1 da tabela equivalente ao valor da storage do jogador entre colchetes na tabela_de_exemplo.
        doPlayerSendTextMessage(cid, 27, tab[2])     --Será enviada ao jogador uma mensagem programada no índice 2 da tabela equivalente ao valor da storage do jogador entre colchetes na tabela_de_exemplo.
    else   --Caso contrário:
        return doPlayerSendCancel(cid, "Mensagem")   --Enviará uma mensagem.
    end

Entende-se como cid quem executou a ação.

PS: Não entendi muito bem a parte de "storages que o jogador tem". Assim, é possível entender como keys, e não values. Porém, suponho que seu objetivo fosse a segunda opção.

Editado Fevereiro 17 por zipter98

SeKtooRS
17 de fevereiro de 2014 às 19:46

Há uma maneira mais simples e menor de fazer isso: tabelas. Aqui está o seu código (não lhe culpo se não entender, não sou bom com explicações):

local tabela_de_exemplo = {
    [1] = {item, "mensagem"},     --[valor da storage] = {id do item, mensagem},
    [2] = {item, "mensagem"},
    [3] = {item, "mensagem"},
}
    if tabela_de_exemplo[getPlayerStorageValue(cid, storage)] then   --Se o valor da storage "storage" do jogador for igual à algum dos valores entre colchetes da tabela_de_exemplo, então:
        local tab = tabela_de_exemplo[getPlayerStorageValue(cid, storage)]
        doPlayerAddItem(cid, tab[1], 1)  --O jogador receberá o item com ID programado no índice 1 da tabela equivalente ao valor da storage do jogador entre colchetes na tabela_de_exemplo.
        doPlayerSendTextMessage(cid, 27, tab[2])     --Será enviada ao jogador uma mensagem programada no índice 2 da tabela equivalente ao valor da storage do jogador entre colchetes na tabela_de_exemplo.
    else   --Caso contrário:
        return doPlayerSendCancel(cid, "Mensagem")   --Enviará uma mensagem.
    end

Entende-se como cid quem executou a ação.

PS: Não entendi muito bem a parte de "storages que o jogador tem". Assim, é possível entender como keys, e não values. Porém, suponho que seu objetivo fosse a segunda opção.

 

A obrigado Zipter, revisei e aprendi algumas coisas, tópico sanado obrigado.

zipter98Z
17 de fevereiro de 2014 às 19:48

Nada.

Sanado, movido.