WE

qual a diferença neste script

Por wevertonvrb, 06 de fev. de 2017 em Resolvidos

melhorando
5
883
wevertonvrbW
06 de fevereiro de 2017 às 03:04

então gente eu tou add um sistema no meu serve e gostaria da ajuda de voces para me ajudarem numa pequena duvida 

segue
como devo deixar o script? tem alguma diferença entre os 2 modos ao executa-lo?
if ou elseif

modo 1

Spoiler

 

if it == "2" then
    if getItemAttribute(idd, "skt2") then  
  move = movestable[getItemAttribute(idd, "skt2")].move2


  elseif getItemAttribute(slotball, "TMN") == 2 then

                move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0}
  else
        move = movestable[name].move2
        end
        end

 

 

modo 2
 

Spoiler

 

if it == "2" then
    if getItemAttribute(idd, "skt2") then  
  move = movestable[getItemAttribute(idd, "skt2")].move2


  if getItemAttribute(slotball, "TMN") == 2 then

                move = {name = ""..tmname.."", level = 0, cd = 12, dist = 0, target = 0}
  else
        move = movestable[name].move2
        end
        end

 

 

Editado Fevereiro 6 por wevertonvrb

GengoG
06 de fevereiro de 2017 às 08:48

Tem diferença sim, não posso falar qual é a melhor forma de se fazer,  depende do que você quer fazer da sua logica as duas formas estão corretas.

PoccnnP
06 de fevereiro de 2017 às 09:16

Existe uma coisa chamada cadeia de cascata. 

Ao abrir um "if" ele cria um bloco que vai até o próximo "end" que finalizar ele. Tudo o que tiver dentro desse "if" só será executado se a condição  (condição criada para esse if) for verdadeira.

 

Citar

if getItemAttribute(slotball, "TMN") == 2 then

No seu caso, esse "if" só será executado se esse outro "if" for verdadeiro.

Citar

 if getItemAttribute(idd, "skt2") then 

 

Isso que chamamos de cadeia em cascata.

wevertonvrbW
07 de fevereiro de 2017 às 19:18
Em 06/02/2017 at 09:16, Poccnn disse:

Existe uma coisa chamada cadeia de cascata. 

Ao abrir um "if" ele cria um bloco que vai até o próximo "end" que finalizar ele. Tudo o que tiver dentro desse "if" só será executado se a condição  (condição criada para esse if) for verdadeira.

 

No seu caso, esse "if" só será executado se esse outro "if" for verdadeiro.

 

Isso que chamamos de cadeia em cascata.

sim acabei percebendo isso de uma maneira triste simplesmetem da forma que coloquei n funciona acabei bugando tudo e tendo q desmanchar, tentarei refazer hoje 

 

LordfireL
08 de fevereiro de 2017 às 23:25
Melhor resposta

Quando um if é seguido de um elseif, se o código entrar no bloco do if, ele não executa o teste do elseif e pula até o end que fecha o if. Sem elseif, ele vai testar as 2 situações, uma depois da outra, e isso pode alterar o resultado do script - no seu caso, pode mudar o conteúdo de move