Compartilhe
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21893
Reputação : 676
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

10. Exercício #1

em Qui 26 Jan 2017, 04:06
Antes de prosseguir no tuturial, é importante que você realmente tenha aprendido tudo o que foi feito aqui.

Eu defendo o grande uso da prática durante o aprendizado de programação, pois não é só lendo que se aprende, você também precisa colocar a mão na massa após ler! (mas não antes de ler, calma...)

Devido ao sucesso — e boa ideia — do exercício do tutorial de Sanny Builder do LINK/2012, eu irei repassar o mesmo exercício aqui em forma de GTA3script.




Exercício

Faça com que 5 variáveis iniciadas com valores aleatórios fiquem com o valor "12".


Regras

Você deve iniciar o script usando o seguinte comando:
Código:
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
Em todas as 5 variáveis. Assim, todas as variáveis terão um valor aleatório entre 0 e 99, e você não sabe qual valor!

Você terá que fazer com que todas as 5 variáveis fiquem com valor "12", e para isso, você terá que usar condições e operações matemáticas.

Não jogue dados! Não fique rodando o comando para gerar o número aleatório até que seja "12", isso é jogar 1 (ou 5) dado de 100 lados! Pode demorar para dar 12 (o certo é ter resultado instantâneo ou quase instantâneo), e este não é o desafio deste tutorial, o desafio deste tutorial é usar condições e matemática para o número ser 12, e não tirar a sorte.

É óbvio que você não poderá fazer nada deste tipo:
Código:
var1 = 12
Tente usar o que você aprendeu nas últimas partes do tutorial! Controle os valores.

Quando todas as 5 variáveis serem "12", mostre na tela o valor de todas elas usando o seguinte comando:
Código:
PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5

Coisas do tipo "comando para ativar, voltar e poder ativar de novo" são opcionais mas recomendados que você faça.
Você pode em seguida (após ter terminado o desafio) abrir os spoilers de dicas abaixo e ver um código já pronto, para ter novas ideias de como poderia ser feito etc.


Vamos ao trabalho!


Dúvidas?

Abra os spoilers abaixo para receber dicas. Quanto mais spoilers abrir, mais você vai tendo respostas, e no último spoiler você terá o código pronto.
Portanto, evite ao máximo abrir os spoilers abaixo. Tente fazer sozinho! Mas se tiver dúvidas, abra:

Spoiler:
Há uma infinidade de maneiras de fazer isso, uma delas é checar o valor da variável e abaixar ou subir até que fique "12".

Spoiler:
Por exemplo, loope checando se o valor da variável é "12", e se não for, você checa se é acima ou abaixo de "12". Se for abaixo, aumente, e se for acima, diminua!

Spoiler:
O exemplo que eu disse seria escrito desta forma:

Ou com o uso do WHILE ao invés do IF.

Spoiler:
Rode isso repetindo o mesmo para todas as variáveis, e no fim, cheque se todas as variáveis ficaram "12" e mostre na tela e pare o script.

Abaixo você terá o script pronto, incluindo variações:

Spoiler:
Este é um script simples de ter imaginado:

Spoiler:

Código:
SCRIPT_START
{
NOP

WAIT 2000

LVAR_INT var1 var2 var3 var4 var5

GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

main_loop:
WAIT 0

IF NOT var1 = 12
   IF var1 > 12
       var1 -= 1
   ELSE
       var1 += 1
   ENDIF
ENDIF

IF NOT var2 = 12
   IF var2 > 12
       var2 -= 1
   ELSE
       var2 += 1
   ENDIF
ENDIF

IF NOT var3 = 12
   IF var3 > 12
       var3 -= 1
   ELSE
       var3 += 1
   ENDIF
ENDIF

IF NOT var4 = 12
   IF var4 > 12
       var4 -= 1
   ELSE
       var4 += 1
   ENDIF
ENDIF

IF NOT var5 = 12
   IF var5 > 12
       var5 -= 1
   ELSE
       var5 += 1
   ENDIF
ENDIF

IF var1 = 12
AND var2 = 12
AND var3 = 12
AND var4 = 12
AND var5 = 12
   PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
   TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF

GOTO main_loop
}
SCRIPT_END

O problema dele é que ele fica rodando tudo isso caso alguma variável não seja 12, assim deixando o script muito "lento".

Aqui, parecido, mas ao invés de um loop com vários IF, usaremos um loop em cada variável, usando WHILE:

Spoiler:

Código:
SCRIPT_START
{
NOP

WAIT 2000

LVAR_INT var1 var2 var3 var4 var5

GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

WHILE NOT var1 = 12
   IF var1 > 12
       var1 -= 1
   ELSE
       var1 += 1
   ENDIF
ENDWHILE

WHILE NOT var2 = 12
   IF var2 > 12
       var2 -= 1
   ELSE
       var2 += 1
   ENDIF
ENDWHILE

WHILE NOT var3 = 12
   IF var3 > 12
       var3 -= 1
   ELSE
       var3 += 1
   ENDIF
ENDWHILE

WHILE NOT var4 = 12
   IF var4 > 12
       var4 -= 1
   ELSE
       var4 += 1
   ENDIF
ENDWHILE

WHILE NOT var5 = 12
   IF var5 > 12
       var5 -= 1
   ELSE
       var5 += 1
   ENDIF
ENDWHILE

PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
}
SCRIPT_END

Este é muito legal e o resultado é instantâneo. A leitura do código também é boa: "enquanto não é 12, checa se é maior que 12, e se for, diminua, se não for, então aumente". No fim, nós temos certeza que todas são 12! É só mostrar na tela e fim.

Se você ter um pensamento mais matemático, faria assim:

Spoiler:

Código:
SCRIPT_START
{
NOP

LVAR_INT var1 var2 var3 var4 var5
LVAR_INT diferenca

GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

diferenca = var1 - 12
var1 -= diferenca

diferenca = var2 - 12
var2 -= diferenca

diferenca = var3 - 12
var3 -= diferenca

diferenca = var4 - 12
var4 -= diferenca

diferenca = var5 - 12
var5 -= diferenca

PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
}
SCRIPT_END

Na qual realmente é muito interessante. Não usou condições, mas o que importa é que ficou legal.

Você não sabe ainda, mas usar arrays também é uma ótima. Você aprenderá a usar arrays logo logo e pode querer refazer este exercício!


Eaí? Conseguiu fazer? Responda esse tópico mostrando como você fez esse código! Use a seguinte tag para enviar o código na mensagem:


Se você não conseguiu fazer ou precisou das dicas acima para conseguir, possivelmente você precisa reler o tutorial inteiro ou algumas partes que você acha que não entendeu bem e que está com dificuldades. Evite prosseguir o tutorial com falta de conhecimento pois é sempre bom ir devagar conhecendo cada pedaço do caminho para não se perder — ao invés de sair correndo.


Próxima parte:
11. Comandos e argumentos


Última edição por Junior_Djjr em Seg 30 Jan 2017, 18:54, editado 2 vez(es) (Razão : Adicionado sobre não jogar dados (tirar a sorte))

______________________________

avatar
Modelador - Básico
Modelador - Básico
Mensagens : 873
Reputação : 20
Desde : 16/08/2016
Idade : 14
Localização : Mississippi
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 26 Jan 2017, 13:38
Muito bom, já li todos os tutoriais, o GTA3script achei bem mais simples de aprender
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 652
Reputação : 38
Desde : 19/08/2015
Idade : 15
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 26 Jan 2017, 13:57
Spoiler:


Eu poderia ter usado menos linhas mas não sei usar thread memory em gta3script ;-;

Código:

SCRIPT_START
{
NOP

LVAR_INT var1 var2 var3 var4 var5

main:
WAIT 0
IF NOT var1 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
ENDIF
IF NOT var2 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
ENDIF
IF NOT var3 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
ENDIF
IF NOT var4 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
ENDIF
IF NOT var5 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
ENDIF
IF var1 = 12
AND var2 = 12
AND var3 = 12
AND var4 = 12
AND var5 = 12
    PRINT_FORMATTED_NOW "var1: %d var2: %d var3: %d var4: %d var4: %d" 10000 var1 var2 var3 var4 var5
    TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
GOTO main
}
SCRIPT_END

______________________________


avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 703
Reputação : 115
Desde : 22/09/2015
Ver perfil do usuário
  • Reputação da mensagem: 100% (1 votos)

Re: 10. Exercício #1

em Qui 26 Jan 2017, 15:07
Spoiler:

Código:
SCRIPT_START
{
NOP
LVAR_INT var[5], i

WHILE i <= 4
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var[i]
    WHILE NOT var[i] = 12
        IF var[i] > 12
            var[i]--
        ELSE
            var[i]++
        ENDIF
    ENDWHILE
    i++
ENDWHILE
 
PRINT_FORMATTED_NOW "~g~Vars: ~s~%i %i %i %i %i" 3500 var[0] var[1] var[2] var[3] var[4]
}
SCRIPT_END


Última edição por israel em Dom 29 Jan 2017, 02:39, editado 1 vez(es) (Razão : msm var 2 vezes wat)

______________________________
" Everyone gonna remember my name ! "
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21893
Reputação : 676
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 10. Exercício #1

em Qui 26 Jan 2017, 15:09
@AguiaX2 escreveu:
Spoiler:


Eu poderia ter usado menos linhas mas não sei usar thread memory em gta3script ;-;

Código:

SCRIPT_START
{
NOP

LVAR_INT var1 var2 var3 var4 var5

main:
WAIT 0
IF NOT var1 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
ENDIF
IF NOT var2 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
ENDIF
IF NOT var3 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
ENDIF
IF NOT var4 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
ENDIF
IF NOT var5 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
ENDIF
IF var1 = 12
AND var2 = 12
AND var3 = 12
AND var4 = 12
AND var5 = 12
    PRINT_FORMATTED_NOW "var1: %d var2: %d var3: %d var4: %d var4: %d" 10000 var1 var2 var3 var4 var5
    TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF
GOTO main
}
SCRIPT_END
Isso não tá legal... Vai demorar pra kct para todas as vars serem 12, pois você basicamente jogou um dado de 100 lados esperando que ele seja "12" (se estiver em 100 FPS, demoraria mais ou menos 1 segundo, mas 1 segundo é muito numa coisa que poderia ser instantânea), e você não usou operações matemáticas.

O do Israel deve ser o topo do mais correto :v: que é usando array e tal.

______________________________

avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 703
Reputação : 115
Desde : 22/09/2015
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 26 Jan 2017, 15:18
Esse tutorial tá muito bem feito, esse tipo de interação no meio do texto (algo como se tivesse literalmente conversando com o leitor, não sei explicar direito) tira o "cansaço" do tutorial, deixando tudo de uma forma mais "livre". Qualquer um com vontade, aprende facil.  :v:

Belo trabalho. :)

______________________________
" Everyone gonna remember my name ! "
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 652
Reputação : 38
Desde : 19/08/2015
Idade : 15
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 26 Jan 2017, 15:26
Eu tbm não sabia usar array no gta3script ;-;

______________________________


avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21893
Reputação : 676
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 10. Exercício #1

em Qui 26 Jan 2017, 15:28
@israel escreveu:Esse tutorial tá muito bem feito, esse tipo de interação no meio do texto (algo como se tivesse literalmente conversando com o leitor, não sei explicar direito) tira o "cansaço" do tutorial, deixando tudo de uma forma mais "livre". Qualquer um com vontade, aprende facil.  :v:

Belo trabalho. :)
vlw :v: :v:

@AguiaX2 escreveu:Eu tbm não sabia usar array no gta3script ;-;
Não está na hora disso ainda, no futuro será ensinado aqui. É que array na real, para iniciantes, não é uma coisa que eles precisem. Eu mesmo demorei DEMAIS para começar a usar array nos meus scripts, e ainda quando eu queria usar eu não encontrava motivos de uso kkkk

______________________________

avatar
Veterano
Veterano
Título : "Griffin Station! Follow me!"
Mensagens : 1029
Reputação : 53
Desde : 16/02/2015
Idade : 20
Localização : Mato Grosso
Link : Ednaldo Pereira
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 26 Jan 2017, 23:23
Spoiler:

Código:
SCRIPT_START
{
NOP


WAIT 0

LVAR_INT var1 var2 var3 var4 var5

var1_loop:
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1

var2_loop:
IF var1 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
ELSE
    GOTO var1_loop
ENDIF

var3_loop:
IF var2 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
ELSE
    GOTO var2_loop
ENDIF

var4_loop:
IF var3 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
ELSE
    GOTO var3_loop
ENDIF

var5_loop:
IF var4 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
ELSE
    GOTO var4_loop
ENDIF

IF var5 = 12
    PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
ELSE
    GOTO var5_loop
ENDIF
      
}
SCRIPT_END

______________________________

Workshop e PC:
Minha Workshop
Abrir carros do 3DS Max no ZModeler
Converter Modelos do Mafia III
Armas do Mafia 3 .sds
HD 300GB e 1TB
Processador AMD FX-6300 3.5Ghz
Placa de video XFX Radeon R7 260x 1 GB
8 Gb Ram(2x4) Kingston 1333Mhz DDR3
Placa Mae Gigabite GA-78LMT-USB3 Rev 5.0 AM3+
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21893
Reputação : 676
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 10. Exercício #1

em Sex 27 Jan 2017, 00:47
@Killer_xD escreveu:
Spoiler:

Código:
SCRIPT_START
{
NOP


WAIT 0

LVAR_INT var1 var2 var3 var4 var5

var1_loop:
GENERATE_RANDOM_INT_IN_RANGE 0 100 var1

var2_loop:
IF var1 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
ELSE
    GOTO var1_loop
ENDIF

var3_loop:
IF var2 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
ELSE
    GOTO var2_loop
ENDIF

var4_loop:
IF var3 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
ELSE
    GOTO var3_loop
ENDIF

var5_loop:
IF var4 = 12
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
ELSE
    GOTO var4_loop
ENDIF

IF var5 = 12
    PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
ELSE
    GOTO var5_loop
ENDIF
      
}
SCRIPT_END
Você também ficou jogando dados, como o AguiaX2. Tem que usar operações matemáticas ao invés de tirar a sorte.

______________________________

avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 429
Reputação : 12
Desde : 12/01/2016
Localização : 127.0.0.1:25565
Ver perfil do usuário

Re: 10. Exercício #1

em Sex 27 Jan 2017, 22:00
Spoiler:

Código:

SCRIPT_START
{
    NOP
    LVAR_INT numero1, numero2, numero3, numero4, numero5
   
    WAIT 0
    GENERATE_RANDOM_INT_IN_RANGE 0, 100, numero1
    GENERATE_RANDOM_INT_IN_RANGE 0, 100, numero2
    GENERATE_RANDOM_INT_IN_RANGE 0, 100, numero3
    GENERATE_RANDOM_INT_IN_RANGE 0, 100, numero4
    GENERATE_RANDOM_INT_IN_RANGE 0, 100, numero5
   
    main_loop:
    // Número 1
    IF NOT numero1 = 12
        IF numero1 > 12
            numero1 -= 1
        ELSE
            numero1 += 1
        ENDIF
    ENDIF

    // Número 2
    IF NOT numero2 = 12
        IF numero2 > 12
            numero2 -= 1
        ELSE
            numero2 += 1
        ENDIF
    ENDIF

    // Número 3
    IF NOT numero3 = 12
        IF numero3 > 12
            numero3 -= 1
        ELSE
            numero3 += 1
        ENDIF
    ENDIF

    // Número 4
    IF NOT numero4 = 12
        IF numero4 > 12
            numero4 -= 1
        ELSE
            numero4 += 1
        ENDIF
    ENDIF

    // Número 5
    IF NOT numero5 = 12
        IF numero5 > 12
            numero5 -= 1
        ELSE
            numero5 += 1
        ENDIF
    ENDIF

    // Checar se todos são 12 e só então mostrar que realmente são 12
    IF numero1 = 12
    AND numero2 = 12
    AND numero3 = 12
    AND numero4 = 12
    AND numero5 = 12
        PRINT_FORMATTED_NOW "Os números são: %d %d %d %d %d", 10000, numero1, numero2, numero3, numero4, numero5
    ELSE
        GOTO main_loop
    ENDIF
}
SCRIPT_END

Só depois de 3 minutos eu percebi que o marcador ou atalho do GOTO estava no lugar errado e ficava gerando números aleatórios à cada frame e por isso nunca chegava a ser 12. facepalm

______________________________
avatar
Designer - Intermediário
Designer - Intermediário
Título : Lâminas Mortais
Mensagens : 3223
Reputação : 138
Desde : 13/10/2012
Idade : 17
Localização : Terra Mágica dos Poneys
Link : MixMods.com.br
Ver perfil do usuáriohttp://www.mixmods.blogspot.com

Re: 10. Exercício #1

em Sab 28 Jan 2017, 13:31
Spoiler:

Código:

SCRIPT_START
{
    NOP

    LVAR_INT var1
    LVAR_INT var2
    LVAR_INT var3
    LVAR_INT var4
    LVAR_INT var5
    LVAR_INT operation

    GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

    main_loop:
    WAIT 0
        IF var1 > 12
        var1 -= 1
    ELSE
        IF var1 < 12
        var1 += 1
    ELSE
        IF var1 = 12
        operation = TRUE
    ENDIF
    ENDIF
    ENDIF
        IF operation = TRUE
    var2 = var1
    var3 = var1
    var4 = var1
    var5 = var1
    PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
    ENDIF
    GOTO main_loop
}
SCRIPT_END

Eu poderia ter definido as variaveis todas numa linha massss esqueci xd

______________________________
Configs:

Processador : Intel Core 2 Quad Q8200 2.34 Ghz
Memória RAM : 8GB DDR2
Placa de Vídeo : GTX 750 1GB
Sistema Operacional :  Windows 10 64 Bits Pro
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21893
Reputação : 676
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 10. Exercício #1

em Sab 28 Jan 2017, 16:06
A identação tá bagunçada, você abriu e fechou TAB tudo errado, veja como é lá a organização do IF...ELSE...ENDIF nos tutoriais de condições.
Você setou a variável, também disse que pode fazer nada desse tipo, mas você ajeitou o valor de uma, então menos mal, já que era só fazer nas outras.
E como está pedindo, envie o código em spoiler para quem estiver vendo o tópico não ver seu código.

______________________________

avatar
Designer - Intermediário
Designer - Intermediário
Título : Lâminas Mortais
Mensagens : 3223
Reputação : 138
Desde : 13/10/2012
Idade : 17
Localização : Terra Mágica dos Poneys
Link : MixMods.com.br
Ver perfil do usuáriohttp://www.mixmods.blogspot.com

Re: 10. Exercício #1

em Sab 28 Jan 2017, 16:23
Spoiler:

Código:

SCRIPT_START
{
    NOP

    LVAR_INT var1
    LVAR_INT var2
    LVAR_INT var3
    LVAR_INT var4
    LVAR_INT var5
    LVAR_INT operation1
    LVAR_INT operation2
    LVAR_INT operation3
    LVAR_INT operation4
    LVAR_INT operation5

    GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

    main_loop:
    WAIT 0
//Variavel1
    IF var1 > 12
        var1 -= 1
    ELSE
    IF var1 < 12
        var1 += 1
    ELSE
    IF var1 = 12
        operation1 = TRUE
    ENDIF
    ENDIF
    ENDIF
//Variavel2
    IF var2 > 12
        var2 -= 1
    ELSE
    IF var2 < 12
        var2 += 1
    ELSE
    IF var2 = 12
        operation2 = TRUE
    ENDIF
    ENDIF
    ENDIF
//Variavel3
    IF var3 > 12
        var3 -= 1
    ELSE
    IF var3 < 12
        var3 += 1
    ELSE
    IF var3 = 12
        operation3 = TRUE
    ENDIF
    ENDIF
    ENDIF
//Variavel4
    IF var4 > 12
        var4 -= 1
    ELSE
    IF var4 < 12
        var4 += 1
    ELSE
    IF var4 = 12
        operation4 = TRUE
    ENDIF
    ENDIF
    ENDIF
//Variavel5
    IF var5 > 12
        var5 -= 1
    ELSE
    IF var5 < 12
        var5 += 1
    ELSE
    IF var5 = 12
        operation5 = TRUE
    ENDIF
    ENDIF
    ENDIF
    IF operation1 = TRUE
    AND operation2 = TRUE
    AND operation3 = TRUE
    AND operation4 = TRUE
    AND operation5 = TRUE
    GOTO operacaoconcluida
    ELSE
    GOTO main_loop
    operacaoconcluida:
    wait 0
        IF TEST_CHEAT VARIAVEIS
            PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
        ENDIF
    ENDIF
    GOTO operacaoconcluida
}
SCRIPT_END

Coloquei pra processar os outros também, coloquei pra só aparecer ao digitar VARIAVEIS e coloquei uma label depois de verificar se as variaveis são todas verdadeiras pra não precisar processar tudo denovo.



Ficou bom agora a identação?

______________________________
Configs:

Processador : Intel Core 2 Quad Q8200 2.34 Ghz
Memória RAM : 8GB DDR2
Placa de Vídeo : GTX 750 1GB
Sistema Operacional :  Windows 10 64 Bits Pro
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21893
Reputação : 676
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 10. Exercício #1

em Sab 28 Jan 2017, 16:31
Você está esquecendo de dar TAB no ELSE. Volte dar uma olhada lá na parte de condições, ou veja outros códigos pelo tutorial (neste próprio tutorial mostrou novamente o uso do ELSE)
E por que você usou uma 5 variáveis com TRUE para checar ao invés de checar diretamente se as variáveis fossem 12? Estas 5 variáveis são desnecessárias, é só checar se são 12, e não checar se cada uma é 12 e marcar a variável e depois checar a outra variável.

______________________________

avatar
Designer - Intermediário
Designer - Intermediário
Título : Lâminas Mortais
Mensagens : 3223
Reputação : 138
Desde : 13/10/2012
Idade : 17
Localização : Terra Mágica dos Poneys
Link : MixMods.com.br
Ver perfil do usuáriohttp://www.mixmods.blogspot.com

Re: 10. Exercício #1

em Sab 28 Jan 2017, 16:41
Spoiler:

Código:

SCRIPT_START
{
    NOP

    LVAR_INT var1
    LVAR_INT var2
    LVAR_INT var3
    LVAR_INT var4
    LVAR_INT var5

    GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
    GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

    main_loop:
    WAIT 0
//Variavel1
    IF var1 > 12
        var1 -= 1
        ELSE
    IF var1 < 12
        var1 += 1
        ELSE
    IF var1 = 12
    ENDIF
    ENDIF
    ENDIF
//Variavel2
    IF var2 > 12
        var2 -= 1
        ELSE
    IF var2 < 12
        var2 += 1
        ELSE
    IF var2 = 12
    ENDIF
    ENDIF
    ENDIF
//Variavel3
    IF var3 > 12
        var3 -= 1
        ELSE
    IF var3 < 12
        var3 += 1
        ELSE
    IF var3 = 12
    ENDIF
    ENDIF
    ENDIF
//Variavel4
    IF var4 > 12
        var4 -= 1
        ELSE
    IF var4 < 12
        var4 += 1
        ELSE
    IF var4 = 12
    ENDIF
    ENDIF
    ENDIF
//Variavel5
    IF var5 > 12
        var5 -= 1
        ELSE
    IF var5 < 12
        var5 += 1
        ELSE
    IF var5 = 12
    ENDIF
    ENDIF
    ENDIF
    IF var1 = 12
    AND var2 = 12
    AND var3 = 12
    AND var4 = 12
    AND var5 = 12
    GOTO operacaoconcluida
        ELSE
    GOTO main_loop
    operacaoconcluida:
    wait 0
        IF TEST_CHEAT VARIAVEIS
            PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
        ENDIF
    ENDIF
    GOTO operacaoconcluida
}
SCRIPT_END
Melhor assim?

______________________________
Configs:

Processador : Intel Core 2 Quad Q8200 2.34 Ghz
Memória RAM : 8GB DDR2
Placa de Vídeo : GTX 750 1GB
Sistema Operacional :  Windows 10 64 Bits Pro
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21893
Reputação : 676
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 10. Exercício #1

em Sab 28 Jan 2017, 16:43
Cara, vai lá no tutorial de condições, ou veja o script pronto aqui desta mesma parte, ou de outras.

Se você tá com preguiça de ir lá, aqui:


______________________________

avatar
Designer - Intermediário
Designer - Intermediário
Título : Lâminas Mortais
Mensagens : 3223
Reputação : 138
Desde : 13/10/2012
Idade : 17
Localização : Terra Mágica dos Poneys
Link : MixMods.com.br
Ver perfil do usuáriohttp://www.mixmods.blogspot.com

Re: 10. Exercício #1

em Sab 28 Jan 2017, 16:49
Well, pelo que eu entendi é assim então?:
Spoiler:

Código:

SCRIPT_START
{
NOP

LVAR_INT var1
LVAR_INT var2
LVAR_INT var3
LVAR_INT var4
LVAR_INT var5
LVAR_INT operation

GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

main_loop:
WAIT 0
//Variavel1
IF var1 > 12
    var1 -= 1
ELSE
IF var1 < 12
    var1 += 1
ELSE
IF var1 = 12
ENDIF
ENDIF
ENDIF
//Variavel2
IF var2 > 12
    var2 -= 1
ELSE
IF var2 < 12
    var2 += 1
ELSE
IF var2 = 12
ENDIF
ENDIF
ENDIF
//Variavel3
IF var3 > 12
    var3 -= 1
ELSE
IF var3 < 12
    var3 += 1
ELSE
IF var3 = 12
ENDIF
ENDIF
ENDIF
//Variavel4
IF var4 > 12
    var4 -= 1
ELSE
IF var4 < 12
    var4 += 1
ELSE
IF var4 = 12
ENDIF
ENDIF
ENDIF
//Variavel5
IF var5 > 12
    var5 -= 1
ELSE
IF var5 < 12
    var5 += 1
ELSE
IF var5 = 12
ENDIF
ENDIF
ENDIF
IF var1 = 12
AND var2 = 12
AND var3 = 12
AND var4 = 12
AND var5 = 12
    GOTO operacaoconcluida
ELSE
    GOTO main_loop
operacaoconcluida:
wait 0
IF TEST_CHEAT VARIAVEIS
    PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
ENDIF
ENDIF
    GOTO operacaoconcluida
}
SCRIPT_END

______________________________
Configs:

Processador : Intel Core 2 Quad Q8200 2.34 Ghz
Memória RAM : 8GB DDR2
Placa de Vídeo : GTX 750 1GB
Sistema Operacional :  Windows 10 64 Bits Pro
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21893
Reputação : 676
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 10. Exercício #1

em Sab 28 Jan 2017, 16:54
denilson gostoso
Se bem que não entendo o motivo de você não querer voltar pra aquele tutorial.
Aqui outra imagem do tutorial mostrando um IF dentro do outro que é o que você está tentando fazer:

Você tá fazendo:
Código:
IF tecla
    IF tecla
        //pah
    ELSE
    IF tecla
        // pah
    ENDIF
    ENDIF
ENDIF
Por causa desse erro de organização você se confundiu todo, e fez isso:
Código:
IF var1 = 12
ENDIF
ENDIF
ENDIF
Tipo, você faz nada caso a var ser 12, e ainda ficou um monte de ENDIF sem sentido um embaixo do outro sem você poder saber de onde vem cada um.
Você tem que botar e tirar TAB nas horas certas. Tudo (IF...ELSE...ENDIF) tem que ficar organizadinho um embaixo do outro.

______________________________

avatar
Designer - Intermediário
Designer - Intermediário
Título : Lâminas Mortais
Mensagens : 3223
Reputação : 138
Desde : 13/10/2012
Idade : 17
Localização : Terra Mágica dos Poneys
Link : MixMods.com.br
Ver perfil do usuáriohttp://www.mixmods.blogspot.com

Re: 10. Exercício #1

em Sab 28 Jan 2017, 17:12
Acho que entendi agora, se não, eu n entendi msm :
Spoiler:

Código:

SCRIPT_START
{
NOP

LVAR_INT var1
LVAR_INT var2
LVAR_INT var3
LVAR_INT var4
LVAR_INT var5

GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

main_loop:
WAIT 0
//Variavel1
IF var1 > 12
    var1 -= 1
ELSE
    IF var1 < 12
        var1 += 1
    ENDIF
ENDIF
//Variavel2
IF var2 > 12
    var2 -= 1
ELSE
    IF var2 < 12
        var2 += 1
    ENDIF
ENDIF
//Variavel3
IF var3 > 12
    var3 -= 1
ELSE
    IF var3 < 12
        var3 += 1
    ENDIF
ENDIF
//Variavel4
IF var4 > 12
    var4 -= 1
ELSE
    IF var4 < 12
        var4 += 1
    ENDIF
ENDIF
//Variavel5
IF var5 > 12
    var5 -= 1
ELSE
    IF var5 < 12
        var5 += 1
    ENDIF
ENDIF
IF var1 = 12
AND var2 = 12
AND var3 = 12
AND var4 = 12
AND var5 = 12
    GOTO operacaoconcluida
ELSE
    GOTO main_loop
ENDIF
operacaoconcluida:
wait 0
IF TEST_CHEAT VARIAVEIS
    PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
ENDIF
    GOTO operacaoconcluida
}
SCRIPT_END


Última edição por ThePedro004 em Sab 28 Jan 2017, 17:38, editado 1 vez(es)

______________________________
Configs:

Processador : Intel Core 2 Quad Q8200 2.34 Ghz
Memória RAM : 8GB DDR2
Placa de Vídeo : GTX 750 1GB
Sistema Operacional :  Windows 10 64 Bits Pro
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21893
Reputação : 676
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 10. Exercício #1

em Sab 28 Jan 2017, 17:20
Sim.

______________________________

avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 453
Reputação : 30
Desde : 11/01/2016
Ver perfil do usuário

Re: 10. Exercício #1

em Sab 28 Jan 2017, 21:59
CODIGO:
Código:
SCRIPT_START
{
NOP

LVAR_INT var1 var2 var3 var4 var5

GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

script_test:
WAIT 0

IF NOT var1 = 12
    IF var1 > 12
    var1 -= 1
    ELSE
    var1 += 1
    ENDIF
ENDIF

IF NOT var2 = 12
    IF var2> 12
    var2 -= 1
    ELSE
    var2 += 1
    ENDIF
ENDIF

IF NOT var3 = 12
    IF var3> 12
    var3 -= 1
    ELSE
    var3 += 1
    ENDIF
ENDIF

IF NOT var4 = 12
    IF var4> 12
    var4 -= 1
    ELSE
    var4 += 1
    ENDIF
ENDIF

IF NOT var5 = 12
    IF var5> 12
    var5 -= 1
    ELSE
    var5 += 1
    ENDIF
ENDIF

IF var1=12
AND var2=12
AND var3=12
AND var4=12
AND var5=12
PRINT_FORMATTED_NOW "Todas as variaveis são 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
ENDIF

IF var1>=12
AND var2>=12
AND var3>=12
AND var4>=12
AND var5>=12
PRINT_FORMATTED_NOW "Esse script aqui tá uma porra" 1000
ENDIF

IF var1<=12
AND var2<=12
AND var3<=12
AND var4<=12
AND var5<=12
PRINT_FORMATTED_NOW "Esse script aqui tá uma porra" 1000
ENDIF
goto script_test

}
SCRIPT_END


DUVIDA:
Ali no final eu perguntei se as variaveis são maiores ou menores que 12, e mandei uma mensagem, mesmo sabendo que o script lê tudo de cima para baixo, então quando chegasse nelas as variaveis ja seriam doze, mas existe alguma chance do script falhar? e se falhar, ele vai executar esse comando?
avatar
Designer - Intermediário
Designer - Intermediário
Título : Lâminas Mortais
Mensagens : 3223
Reputação : 138
Desde : 13/10/2012
Idade : 17
Localização : Terra Mágica dos Poneys
Link : MixMods.com.br
Ver perfil do usuáriohttp://www.mixmods.blogspot.com

Re: 10. Exercício #1

em Sab 28 Jan 2017, 22:14
Eu acho qur no final você poderia ter colocado só um ELSE e depois mostrar o texto, alem de q vc colocou maior ou IGUAL eu acho que o certo ali seria colocar só o > ou o <.

______________________________
Configs:

Processador : Intel Core 2 Quad Q8200 2.34 Ghz
Memória RAM : 8GB DDR2
Placa de Vídeo : GTX 750 1GB
Sistema Operacional :  Windows 10 64 Bits Pro
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 50
Reputação : 2
Desde : 14/03/2015
Ver perfil do usuário

Re: 10. Exercício #1

em Sab 28 Jan 2017, 22:41
@Und escreveu:
CODIGO:

Código:
SCRIPT_START
{
NOP

LVAR_INT var1 var2 var3 var4 var5

GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var5

script_test:
WAIT 0

IF NOT var1 = 12
    IF var1 > 12
    var1 -= 1
    ELSE
    var1 += 1
    ENDIF
ENDIF

IF NOT var2 = 12
    IF var2> 12
    var2 -= 1
    ELSE
    var2 += 1
    ENDIF
ENDIF

IF NOT var3 = 12
    IF var3> 12
    var3 -= 1
    ELSE
    var3 += 1
    ENDIF
ENDIF

IF NOT var4 = 12
    IF var4> 12
    var4 -= 1
    ELSE
    var4 += 1
    ENDIF
ENDIF

IF NOT var5 = 12
    IF var5> 12
    var5 -= 1
    ELSE
    var5 += 1
    ENDIF
ENDIF

IF var1=12
AND var2=12
AND var3=12
AND var4=12
AND var5=12
PRINT_FORMATTED_NOW "Todas as variaveis são 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
ENDIF

IF var1>=12
AND var2>=12
AND var3>=12
AND var4>=12
AND var5>=12
PRINT_FORMATTED_NOW "Esse script aqui tá uma porra" 1000
ENDIF

IF var1<=12
AND var2<=12
AND var3<=12
AND var4<=12
AND var5<=12
PRINT_FORMATTED_NOW "Esse script aqui tá uma porra" 1000
ENDIF
goto script_test

}
SCRIPT_END


Nos "IFS" do "Esse script aqui tá uma porra" não deveria ser "IF OR"? E não era mais fácil usar "IF NOT var = 12" invés de usar dois "ifs" com > e < ?
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 1
Reputação : 0
Desde : 28/01/2017
Idade : 17
Ver perfil do usuário

Re: 10. Exercício #1

em Sab 28 Jan 2017, 22:51
Spoiler:
Código:

SCRIPT_START
{
    NOP

    LVAR_INT var1 var2 var3 var4 var5    // Definindo as variáveis.
   
    ATIVACAO: // Ativando e desativando a geração dos valores.

        WAIT 0

        IF IS_KEY_PRESSED VK_KEY_1    // Apertando "1" e "2" pula para GERACAO depois de 5 segundos.
        AND IS_KEY_PRESSED VK_KEY_2   
            PRINT_STRING_NOW "A geracao comecara em 5 segundos" 5000   
        WHILE IS_KEY_PRESSED VK_KEY_1
        AND IS_KEY_PRESSED VK_KEY_2
            WAIT 0
        ENDWHILE
            WAIT 5000
            GOTO geracao
        ENDIF
        GOTO ativacao

    GERACAO: // Thread onde são gerados os valores.

        WAIT 0
       
        GENERATE_RANDOM_INT_IN_RANGE 0 100 var1
        GENERATE_RANDOM_INT_IN_RANGE 0 100 var2
        GENERATE_RANDOM_INT_IN_RANGE 0 100 var3
        GENERATE_RANDOM_INT_IN_RANGE 0 100 var4
        GENERATE_RANDOM_INT_IN_RANGE 0 100 var5
 
    REGULACAO: //Thread onde são regulados os valores.
           
        WAIT 0
       
        IF var1 >= 12
            var1 -= 1
        ELSE
            var1 += 1 
        ENDIF
       
        IF var2 >= 12
            var2 -= 1
        ELSE
            var2 += 1 
        ENDIF
 
        IF var3 >= 12
            var3 -= 1
        ELSE
            var3 += 1 
        ENDIF                       

        IF var4 >= 12
            var4 -= 1
        ELSE
            var4 += 1 
        ENDIF

        IF var5 >= 12
            var5 -= 1
        ELSE
            var5 += 1 
        ENDIF

    VERIFICACAO:

        WAIT 0
       
        IF var1 = 12
        AND var2 = 12
        AND var3 = 12
        AND var4 = 12
        AND var5 = 12
            PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
        ELSE
            GOTO regulacao
        ENDIF

    WAIT 5000
    GOTO ativacao
}
SCRIPT_END

Nas 2 primeiras vezes funcionou, depois ele não pegou mais depois da ativação.

Dúvidas:
-Se usa o WAIT 0 no inicio de toda ação? Nas lições anteriores as vezes você usava, as vezes não.
-Primeiro eu fiz no sorteio que nem o resto do pessoal, mas quando vim postar vi o que você disse. Fiz assim, mas nas 2 vezes que funcionou demorou uns 2 segundos depois de ter começado. Eu tentei usar o IFNOT no início de cada um, mas sempre dava erro no ENDIF.
-E que tipos de mod você nos recomenda para treinar?
Conteúdo patrocinado

Re: 10. Exercício #1

Permissão deste fórum:
Você não pode responder aos tópicos neste fórum