Compartilhe
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 539
Reputação : 108
Desde : 07/03/2017
Localização : BH - MG
Ver perfil do usuário

Re: 10. Exercício #1

em Qua 05 Jul 2017, 20:29
@Furiioso escreveu:Diminui bastante,em... :Y:

Valeu! Removendo a interação diminuiria mais umas 12 linhas ou mais. Claro que isto graças a bastante pesquisa e ajuda dos mestres Yoda's do cleo no fórum (XD)

@Matheus Rivaldo escreveu:Script foda. Eu usaria WHILE em vez de REPEAT, mas isso vai do gosto de cada um :v:

Só uso while onde preciso fazer alguma checagem ou coisa do tipo, quando só preciso contar mesmo uso repeat que é mais pratico nisto

______________________________

.::
Os mods que crio serão colocados no meu workshop link
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 695
Reputação : 115
Desde : 22/09/2015
Ver perfil do usuário

Re: 10. Exercício #1

em Qua 05 Jul 2017, 23:39
Legal. :)

______________________________
" Everyone gonna remember my name ! "
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 9
Reputação : 0
Desde : 18/07/2017
Idade : 26
Localização : parana
Ver perfil do usuário

Sera que ficou bom??

em Ter 18 Jul 2017, 17:17
Spoiler:

Código:
/*ESSSE SCRIPT CRIA VARIAVEIS COM VALORES ALEATORIOS, CHECA ESSES VALORES E OS TRANSFORMA
EM UM VALOR ESPECIFICO, SEGUNDO O QUE FOI PEDIDO NO
EXERCICIO DO BLOG BRASILIAN MODDING STUDIO: http://brmodstudio.forumeiros.com/t5989-10-exercicio-1
*/
SCRIPT_START
{
NOP
//Criando as variaveis
LVAR_INT var1
LVAR_INT var2
LVAR_INT var3
LVAR_INT var4
LVAR_INT var5
WAIT 0


iniciarProcesso:
WAIT 0
//O processo so começa quando o usuario pressionar a tecla B, enquanto isso sera impressa uma msg na tela dizendo para pressionar a tecla B.
IF NOT IS_KEY_PRESSED VK_KEY_B
    PRINT_FORMATTED_NOW "Precione B para Iniciar o Processo" 1000
    GOTO iniciarProcesso  
ENDIF

exercicio1:
WAIT 0

//Definindo variaveis aleatorias
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
//Imprimindo uma msg na tela, por alguns segundos, com as variaveis aleatorias.
PRINT_FORMATTED_NOW "Todas as variaveis aleatorias: %d %d %d %d %d" 4113 var1 var2 var3 var4 var5
WAIT 4113

//O operador IF checa se var1 eh menor que 12, se sim, o operador WHILE vai adicionar 1 (uma unidade) ao valor de var1 ate que o seu valor seja igual a 12.
IF var1 < 12
    WHILE var1 < 12
        var1 += 1
        WAIT 0
    ENDWHILE
ENDIF
//o operador IF checa se var1 eh maior que 12, se sim, o operador WHILE vai subtrair 1 (uma unidade) do valor de var1 ate que o seu valor seja igual a 12.
IF var1 > 12
    WHILE var1 > 12
        var1 -= 1
        WAIT 0
    ENDWHILE
ENDIF
//daqui ate a linha 138, o mesmo processo que acontece com a var1 nos codigos acima (linha 73 ate linha 86), acontecera com as variaveis: var2, var3, var4 e var5.
IF var2 < 12
    WHILE var2 < 12
        var2 += 1
        WAIT 0
    ENDWHILE
ENDIF
IF var2 > 12
    WHILE var2 > 12
        var2 -= 1
        WAIT 0
    ENDWHILE
ENDIF
//*******************************
IF var3 < 12
    WHILE var3 < 12
        var3 += 1
        WAIT 0
    ENDWHILE
ENDIF
IF var3 > 12
    WHILE var3 > 12
        var3 -= 1
        WAIT 0
    ENDWHILE
ENDIF
//*******************************
IF var4 < 12
    WHILE var4 < 12
        var4 += 1
        WAIT 0
    ENDWHILE
ENDIF
IF var4 > 12
    WHILE var4 > 12
        var4 -= 1
        WAIT 0
    ENDWHILE
ENDIF
//*******************************
IF var5 < 12
    WHILE var5 < 12
        var5 += 1
        WAIT 0
    ENDWHILE
ENDIF
IF var5 > 12
    WHILE var5 > 12
        var5 -= 1
        WAIT 0
    ENDWHILE
ENDIF
//O computador checa se todas as variaveis sao iguais a 12
IF var1 = 12
AND var2 = 12
AND var3 = 12
AND var4 = 12
AND var5 = 12
//Se sim, uma msg eh impressa na tela com o valor (12) das variaveis por alguns sefundos e, depois retorna para "iniciarProcesso"
    PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
    WAIT 10000
    GOTO iniciarProcesso
//Caso alguma variavel nao seja igual a 12, o processo retorna para "exercicio1"
ELSE
    GOTO exercicio1
ENDIF

}
SCRIPT_END

Esse foi o jeito que fiz, mas andei olhando o pessoal ai e acho que poderia ter feito diferente... aponte meus erros!
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 930
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 10. Exercício #1

em Ter 18 Jul 2017, 17:23

O Script parece estar bom philosoraptor. Só não entendi esse monte de waits. Você poderia ter usado arrays e gosubs/cleo_calls, mas não sei se você
chegou nessa parte dos tutoriais ainda. Ou talvez você pudesse fazer tudo em uma label só, mas talvez você fez assim pra ficar mais bonitinho philosoraptor. Uma dica: ao invés de usar var += 1, você pode usar var++. E var -= 1, var--.

______________________________
Caso te ajudei em algo, clique no botão de reputação (o "coraçãozinho" na parte de cima da mensagem).
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 9
Reputação : 0
Desde : 18/07/2017
Idade : 26
Localização : parana
Ver perfil do usuário

Re: 10. Exercício #1

em Qua 19 Jul 2017, 21:15
Matheu Rivaldo, ainda nao sei usar bem esses "WAITs" vamos ver se melhoro...

nao usei array/cleo_calls, pq (sim, realmente nao tinha chegado a essa parte do tutorial) ate a parte 10 desse tutorial, esses temas nao foram abordados, logo, acredito que era pra utilizar apenas os conhecimentos aprendidos ate o momento (parte 10 do tutorial), entende?

vc disse que eu poderia fazer tudo em apenas uma label, como? E... como vc teria feito esse exercicio?? (apenas utilizando o que foi passado ate a parte 10 do tutorial)

cara, n achei o sinal de + (verdinho) que vc falou... so achei dois + (amarelinhos) que estao do lado de "editar", acredito que nao sejam esses, neeh?
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 930
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 10. Exercício #1

em Qua 19 Jul 2017, 21:46
Acho que pra dar reputação precisa ter umas 50 mensagens philosoraptor

Eu faria assim:
code:

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
    MAIN_LOOP:
    WAIT 0

    IF var1 > 12
        var1--
    ENDIF
    IF var2 > 12
        var2--
    ENDIF
    IF var3 > 12
        var3--
    ENDIF
    IF var4 > 12
        var4--
    ENDIF
    IF var5 > 12
        var5--
    ENDIF
    IF var1 < 12
        var1++
    ENDIF
    IF var2 < 12
        var2++
    ENDIF
    IF var3 < 12
        var3++
    ENDIF
    IF var4 < 12
        var4++
    ENDIF
    IF var5 < 12
        var5++
    ENDIF

    IF IS_KEY_PRESSED VK_KEY_B
        PRINT_FORMATTED_NOW "%d %d %d %d %d" 1000 var1 var2 var3 var4 var5
        WHILE IS_KEY_PRESSED VK_KEY_B
            WAIT 0
        ENDWHILE
    ENDIF

    IF IS_KEY_PRESSED VK_KEY_K
        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 IS_KEY_PRESSED VK_KEY_K
            WAIT 0
        ENDWHILE
    ENDIF
    
    GOTO MAIN_LOOP
}
SCRIPT_END
Talvez esteja meio ruim philosoraptor


Última edição por Matheus Rivaldo em Qui 20 Jul 2017, 00:49, editado 1 vez(es)

______________________________
Caso te ajudei em algo, clique no botão de reputação (o "coraçãozinho" na parte de cima da mensagem).
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 30
Reputação : 6
Desde : 19/10/2016
Ver perfil do usuário

Re: 10. Exercício #1

em Qua 19 Jul 2017, 23:54
Não sei se dá pra ser mais instantâneo que isso   Fuch That Guy :

Código:

Código:
SCRIPT_START
{
    NOP

    LVAR_INT iConstVar iRandomVar[5] iTempVar
 
    WHILE NOT iTempVar > 4
        iConstVar = 12
        GENERATE_RANDOM_INT_IN_RANGE 0 100 iRandomVar[iTempVar]
        iConstVar -= iRandomVar[iTempVar]
        iRandomVar[iTempVar] += iConstVar
        iTempVar++
    ENDWHILE
 
    PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %i %i %i %i %i" 10000 iRandomVar[0] iRandomVar[1] iRandomVar[2] iRandomVar[3] iRandomVar[4]
}
SCRIPT_END
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21885
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 20 Jul 2017, 07:49
↑ Esse método aí é praticamente (ou É) o mais eficaz e curto possível.
Também poderia ser por REPEAT, mas possivelmente o WHILE é mais bem vindo ainda.

______________________________

avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 9
Reputação : 0
Desde : 18/07/2017
Idade : 26
Localização : parana
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 20 Jul 2017, 15:20
@WinterCat escreveu:Não sei se dá pra ser mais instantâneo que isso   Fuch That Guy :

Código:

Código:
SCRIPT_START
{
    NOP

    LVAR_INT iConstVar iRandomVar[5] iTempVar
 
    WHILE NOT iTempVar > 4
        iConstVar = 12
        GENERATE_RANDOM_INT_IN_RANGE 0 100 iRandomVar[iTempVar]
        iConstVar -= iRandomVar[iTempVar]
        iRandomVar[iTempVar] += iConstVar
        iTempVar++
    ENDWHILE
 
    PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %i %i %i %i %i" 10000 iRandomVar[0] iRandomVar[1] iRandomVar[2] iRandomVar[3] iRandomVar[4]
}
SCRIPT_END
nao entendi o que esta acontecendo nesse codigo... alguem poderia explicar o "passo-a-passo so codigo???

e ja aproveitando... porque causa, motivo, razao ou circunstancia esta dando este erro na hora de compilar: "too many arguments"

Código:
SCRIPT_START
{
    NOP
LVAR_INT var0 var1 var2 var3 var4
GENERATE_RANDOM_INT_IN_RANGE 0 100 var0
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
main_loop:
WAIT 0

IF var0 > 12
    var0--
ENDIF
IF var0 < 12
    var0++
ENDIF
///////////////////////
IF var1 > 12
    var1--
ENDIF
IF var1 < 12
    var1++
ENDIF
///////////////////////
IF var2 > 12
    var2--
ENDIF
IF var2 < 12
    var2++
ENDIF
///////////////////////
IF var3 > 12
    var3--
ENDIF
IF var3 < 12
    var3++
ENDIF
///////////////////////
IF var4 > 12
    var4--
ENDIF
IF var4 < 12
    var4++
ENDIF
///////////////////////
IF var0 = 12
AND var1 = 12
AND var2 = 12
AND var3 = 12
AND var4 = 12
    PRINT_STRING_NOW "%d %d %d %d %d" 1000 var0 var1 var2 var3 var4
ENDIF
}
SCRIPT_END

nao me parecem tantos argumentos assim...
obrigado!
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 930
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 20 Jul 2017, 15:41
Explicação do código do WinterCat:

No código dele alí, ele declara uma variável, uma array com 5 espaços e uma variável pra ir alternando entre os espaços da array. Daí ele cria um loop, e esse loop faz as operações que estão dentro dele, enquanto a variável iTempVar for menos do que 4. Essa iTempVar, é a variável que vai alternar entra os 5 espaços dentro da array, então começa por 0, e depois vai 1, 2, 3, 4. Dentro do loop, ele seta a variável iConstVar para 12, gera um número de 0 à 99 na array iRandomVar[iTempVar], que no caso, está no espaço 0 da array, pois iTempVar é 0 neste momento. Depois ele subtrai o valor que está na variável iConstVar, que é 12, pelo valor que está no atual espaço da array. Com isso, a variável iConstVar estará com um determinado valor (depois da subtração). Então, ele soma o valor aleatório, que está no atual espaço da array, com o valor que está na variável iConstVar. Depois disso, aumenta o valor da iTempVar. Depois de aumentar o valor da iTempVar, o script volta pro começo, pois ela ainda não é 4, agora ela é 1, então ele fará as operações no espaço 1 da array, e assim vai. Se a explicação estiver confusa, me diga.
Sobre o seu código:
O erro está na função PRINT_STRING_NOW, ela só tem 2 argumentos, a string e o tempo que ele ficará sendo mostrada. Você deveria usar PRINT_FORMATTED_NOW. Você também esqueceu de voltar pro começo do loop, com GOTO main_loop. Detalhe: Você pode setar o argumento de tempo para 1, pois você está num loop.

______________________________
Caso te ajudei em algo, clique no botão de reputação (o "coraçãozinho" na parte de cima da mensagem).
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 1023
Reputação : 82
Desde : 04/03/2013
Idade : 17
Ver perfil do usuário

Re: 10. Exercício #1

em Sex 28 Jul 2017, 05:24
Spoiler:

Código:
SCRIPT_START
{
    LVAR_INT numbers[5] i varPtr
    LVAR_INT init codeMain
    LVAR_INT scplayer
    CONST_INT player 0

    GET_PLAYER_CHAR player scplayer

    GET_LABEL_POINTER _initCPPCode init
    GET_LABEL_POINTER _codeMain codeMain
    GET_VAR_POINTER numbers[0] varPtr

    CALL_FUNCTION init 0 0

    start:
    REPEAT 5 i
        GENERATE_RANDOM_INT_IN_RANGE 0 100000 numbers[i]
    ENDREPEAT

    PRINT_FORMATTED_NOW "%d, %d, %d, %d, %d" 1000 numbers[0] numbers[1] numbers[2] numbers[3] numbers[4]
    WAIT 1000
    CALL_FUNCTION codeMain 1 1 (varPtr)

    WHILE scplayer > 0
        WAIT 0
        PRINT_FORMATTED_NOW "%d, %d, %d, %d, %d" 1000 numbers[0] numbers[1] numbers[2] numbers[3] numbers[4]

        IF IS_KEY_PRESSED VK_KEY_R
            GOTO start
        ENDIF
    ENDWHILE
}
SCRIPT_END
 
DUMP
0090 1E1B8200 E08B5800 D0148200 B51B8200
ENDDUMP

_codeMain:
/*
extern "C" void __declspec(dllexport) codeMain(int* numbers)
{
   for (int i = 0; i < 5; i++)
   {
      if (numbers[i] == 12)
         continue;
         
      while(numbers[i] > 12)
         numbers[i] -= 12;

      while(numbers[i] != 12)
         numbers[i] += 1;
   }
}
*/
DUMP
5589E5 83EC10 C745FC00000000 837DFC04 0F8F9A000000 8B45FC 8D148500000000 8B4508 01D0 8B00 83F80C 747A 8B45FC 8D148500000000 8B4508 01D0 8B00 83F80C
7E278B45FC 8D148500000000 8B4508 01D0 8B55FC 8D0C9500000000 8B5508 01CA 8B12 83EA0C 8910 EBC3 8B45FC 8D148500000000 8B4508 01D0 8B00 83F80C 7428
8B45FC8D148500000000 8B4508 01D0 8B55FC 8D0C9500000000 8B5508 01CA 8B12 83C201 8910 EBC3 90 8345FC01 E95CFFFFFF 90 C9 C3
58 50 C3 00000000 90 90 90
9090 E929FFFFFF B8FFFFFFFF C3 E8E4FFFFFF C3 55 89E5 83EC18 81450887020000 8B4508 8B550C 89542408 C744240400000000 890424 E8E9000000 90 C9 C3 90
6090 90 61 C3
ENDDUMP

_initCPPCode:
DUMP
5589E5 83EC48 E8B9FFFFFF 8945E8 837DE8FF 0F85C5000000 C745E400000000 E8A6FFFFFF 8945E4 836DE405 836DE401 836DE405 8B45E4 8945E0 8345E001 C745EC05000000
8B45E48945DC 836DDC05 8B45DC 0FB600 8845DB 807DDB90 7507 C745EC02000000 8B45EC 2945E4 8B45E4 8945D4 8B45D4 8945D0 8345D401 837DEC05 750E 8B45D4 8B00
998945F0 8955F4 EB10 8B45D4 0FB600 0FBEC0 99 8945F0 8955F4 8B45D0 99 8945C8 8955CC 8B45EC 99 0145C8 1155CC 8B45C8 8B55CC 0145F0 1155F4 8B55F0 8B45F0 89542404
890424E800FFFFFF 8B45E0 8B55F0 8910 E81EFFFFFF 90 C9 C3 55 89E5 83EC10 C745FC00000000 8B45FC 3B450C 7D39 8B45FC 8D148500000000 8B4508 01D0 8B00 8945F8
8B45100145F8 8B45F8 8945F4 8B45F4 8B00 89C2 8B4510 01D0 89C2 8B45F4 8910 8345FC01 EBBF 90 C9 C3 202D6578706F72743A 5C7265706C61636543 6F6465735C00 202D6578706F72743A
5C696E6974435050436F64655C00 202D6578706F72743A 5C636F64654D61696E 5C00
ENDDUMP


Testando o programa do @Fabio
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 1
Reputação : 0
Desde : 04/09/2017
Ver perfil do usuário

Re: 10. Exercício #1

em Seg 04 Set 2017, 04:54
Iae Junior,

Gostei muito do seu SIte e seu trabalho, resolvi aprender também a programar em gta3script.

ja tive uma base em java (bem fraca) e sei uma boa parte de C.

Criei uma conta especialmente pra mostrar meu resultado desse exercicio.

(PS: eu sei q fiz um trabalho de doido, ate esqueci que dava pra usar vetor rsrsrs. )

Depois vou refazer usando vetor.

(PS2: Rodou de primeira kkkk)

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

VAR1 = VAR1 / 12

IF VAR1 =1
   VAR1 += 11
   ELSE
    IF VAR1 =2
    VAR1 += 10
    ELSE
        IF VAR1 =3
        VAR1 += 9
        ELSE
            IF VAR1 =4
            VAR1 += 8
            ELSE
                IF VAR1 =5
                VAR1 += 7
                ELSE
                    IF VAR1 =6
                    VAR1 += 6
                    ELSE
                        IF VAR1 =7
                        VAR1 += 5
                        ELSE
                            IF VAR1 =8
                            VAR1 += 4

                            ENDIF
                        ENDIF
                    ENDIF
                ENDIF
            ENDIF
        ENDIF
    ENDIF
ENDIF

VAR2 = VAR2 / 12

IF VAR2 =1
   VAR2 += 11
   ELSE
    IF VAR2 =2
    VAR2 += 10
    ELSE
        IF VAR2 =3
        VAR2 += 9
        ELSE
            IF VAR2 =4
            VAR2 += 8
            ELSE
                IF VAR2 =5
                VAR2 += 7
                ELSE
                    IF VAR2 =6
                    VAR2 += 6
                    ELSE
                        IF VAR2 =7
                        VAR2 += 5
                        ELSE
                            IF VAR2 =8
                            VAR2 += 4

                            ENDIF
                        ENDIF
                    ENDIF
                ENDIF
            ENDIF
        ENDIF
    ENDIF
ENDIF

VAR3 = VAR3 / 12

IF VAR3 =1
   VAR3 += 11
   ELSE
    IF VAR3 =2
    VAR3 += 10
    ELSE
        IF VAR3 =3
        VAR3 += 9
        ELSE
            IF VAR3 =4
            VAR3 += 8
            ELSE
                IF VAR3 =5
                VAR3 += 7
                ELSE
                    IF VAR3 =6
                    VAR3 += 6
                    ELSE
                        IF VAR3 =7
                        VAR3 += 5
                        ELSE
                            IF VAR3 =8
                            VAR3 += 4

                            ENDIF
                        ENDIF
                    ENDIF
                ENDIF
            ENDIF
        ENDIF
    ENDIF
ENDIF

VAR4 = VAR4 / 12

IF VAR4 =1
   VAR4 += 11
   ELSE
    IF VAR4 =2
    VAR4 += 10
    ELSE
        IF VAR4 =3
        VAR4 += 9
        ELSE
            IF VAR4 =4
            VAR4 += 8
            ELSE
                IF VAR4 =5
                VAR4 += 7
                ELSE
                    IF VAR4 =6
                    VAR4 += 6
                    ELSE
                        IF VAR4 =7
                        VAR4 += 5
                        ELSE
                            IF VAR4 =8
                            VAR4 += 4

                            ENDIF
                        ENDIF
                    ENDIF
                ENDIF
            ENDIF
        ENDIF
    ENDIF
ENDIF

VAR5 = VAR5 / 12

IF VAR5 =1
   VAR5 += 11
   ELSE
    IF VAR5 =2
    VAR5 += 10
    ELSE
        IF VAR5 =3
        VAR5 += 9
        ELSE
            IF VAR5 =4
            VAR5 += 8
            ELSE
                IF VAR5 =5
                VAR5 += 7
                ELSE
                    IF VAR5 =6
                    VAR5 += 6
                    ELSE
                        IF VAR5 =7
                        VAR5 += 5
                        ELSE
                            IF VAR5 =8
                            VAR5 += 4

                            ENDIF
                        ENDIF
                    ENDIF
                ENDIF
            ENDIF
        ENDIF
    ENDIF
ENDIF

PRINT_FORMATTED_NOW "Todas as variaveis sao 12: %d %d %d %d %d" 10000 var1 var2 var3 var4 var5
}
SCRIPT_END
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 930
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 10. Exercício #1

em Seg 04 Set 2017, 07:18
Eu não achei o script bom. A identação 'tá toda errada, e o script 'tá muito "manual", tipo, você checou número por número, isso deixou o código muito grande. Sugiro que você estude mais sobre os tutoriais: Identação, Arrays e Princípios de funcionamento e loops.

______________________________
Caso te ajudei em algo, clique no botão de reputação (o "coraçãozinho" na parte de cima da mensagem).
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21885
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 Seg 04 Set 2017, 18:25
Realmente, checar se é 1, e então aumentar 11; se é 2 e então aumentar 10 etc não é um pensamento bom. Pense de modo mais algorítmico/matemático.

Você já pensou que, se você subtrair 12 da variável, você teria o valor necessário para chegar até o 12?
Como aprendemos nos primeiros anos da escola, "subtração" = "diferença", você está pegando a diferença que falta para chegar até o 12.

Se "var1" caiu com valor "10", você subtrair "12" dela, ela terá o valor "-2". Viu? "2" é o que precisamos para o "10" chegar ao "12".
Se "var2" caiu com valor "5", você subtrair "12" dela, ela terá o valor "-7". Viu? "7" é o que precisamos para "5" chegar ao "12".

Ou, como as dicas do primeiro post explicam (e como a maioria das pessoas fizeram), tente usar algum loop checando o valor, o que também é interessante.

E não entendi o que isso faz:
Código:
VAR1 = VAR1 / 12
Se a "VAR1" fosse "5", ela vai ter o valor "0.41666666...", tipo, ham?

______________________________

avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 4
Reputação : 0
Desde : 07/09/2017
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 07 Set 2017, 01:57
Rapaz o sistema de login ta bugado, n apareceu a opção de logar com facebook... acabei criando outra conta.

@Matheus Rivaldo escreveu:Eu não achei o script bom. A identação 'tá toda errada, e o script 'tá muito "manual", tipo, você checou número por número, isso deixou o código muito grande. Sugiro que você estude mais sobre os tutoriais: Identação, Arrays e Princípios de funcionamento e loops.

-- Obrigado por sua opinião, realmente eu to há um tempinho sem programar, so fui lembrar do array dps.... mas o script funcionou isso q importa. Em relação à identação eu não vi erros nao... eu poderia ter feito de outra forma mais simples... Sim... mas preferi seguir esse raciocínio, outra hora eu mudo.

@Junior_Djjr escreveu:Realmente, checar se é 1, e então aumentar 11; se é 2 e então aumentar 10 etc não é um pensamento bom. Pense de modo mais algorítmico/matemático.

Você já pensou que, se você subtrair 12 da variável, você teria o valor necessário para chegar até o 12?
Como aprendemos nos primeiros anos da escola, "subtração" = "diferença", você está pegando a diferença que falta para chegar até o 12.

Se "var1" caiu com valor "10", você subtrair "12" dela, ela terá o valor "-2". Viu? "2" é o que precisamos para o "10" chegar ao "12".
Se "var2" caiu com valor "5", você subtrair "12" dela, ela terá o valor "-7". Viu? "7" é o que precisamos para "5" chegar ao "12".

Ou, como as dicas do primeiro post explicam (e como a maioria das pessoas fizeram), tente usar algum loop checando o valor, o que também é interessante.

E não entendi o que isso faz:
Código:
VAR1 = VAR1 / 12
Se a "VAR1" fosse "5", ela vai ter o valor "0.41666666...", tipo, ham?

Hehe foi a unica ideia que eu tive no momento kkk, vou procurar melhorar , valeu.
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 4
Reputação : 0
Desde : 07/09/2017
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 07 Set 2017, 03:13
Junior, n entendi mt bom o que você falou sobre a diferença... refiz o script com array.... JA QUE ESTAMOS FALANDO DE SIMPLIFICAR, NÃO EXISTE FOR NO GTA3SCRIPT? SERIA MUITO MAIS SIMPLES...

===> TEM UM ERRO QUE NO GTA FICA MOSTRANDO O INDICE INDO ATÉ 10. EU FIZ UM CODIGO EM WHILE HJ E TAVA ACONTECENDO ISSO (ERA PRA SER DE 0 A 5, TAVA INDO DE 0 ATE 10) , AI EU COLOQUEI O WAIT NO MESMO TEMPO QUE A MENSAGEM FICA... SO QUE DESSA VEZ NAO FUNCIONOU....

Spoiler:

Código:
//GERALMENTE FICAM EM DÚVIDA NA MINHA LÓGICA, ENTÃO FOI MOSTRAR O QUE PENSEI.

SCRIPT_START
{

NOP

LVAR_INT VAR[4] I // USO DE ARRAY/VETOR E O INDÍCE (I).

I = 0 // SETANDO IGUAL A 0 PARA CHECAR A POSIÇÃO DO NÚMERO. SERIA BOM UM FOR AO INVÉS DO WHILE...

WHILE I<5 // ENQUANTO O INDICE FOR MENOR QUE 5 REALIZE A OPERAÇAO

WAIT 0 // WAIT POR CAUSA DO LOOP

    WHILE NOT VAR[I] = 12 // ENQUANTO NAO FOR 12 , REALIZE AS OPERAÇÕES

        IF VAR[I] < 12  // SE FOR MENOR QUE 12, AUMENTE O VALOR

            VAR[I]++

        ELSE // SENAO, DIMINUA. PS: PRA OS RECLAMÕES, NAO PODE CAIR O NUMERO IGUAL A 12, PORQUE É A CONDIÇÃO DE CONTINUAR O WHILE.
        
            VAR[I]--

        ENDIF

    ENDWHILE

    I++ // AUMENTE O ÍNDICE

ENDWHILE

I = 0 // PORQUE SETEI NOVAMENTE? PRA MOSTRAR OS NÚMEROS ORGANIZADOS DE UM EM UM. DICA DE MINHA PROFESSORA DE LINGUAGEM.

WHILE I<5 // IGUAL AO PRIMEIRO...

    WAIT 1000 // GRAÇAS AOS TESTES Q FIZ, PUDE EVITAR UM ERRO NESSE WAIT.

    PRINT_FORMATTED_NOW "VAR[%d] = %d" 1000 I VAR[I] //MOSTRAR DE UM EM UM.

    I++ //ESQUECI KKKKK, CORRIGINDO APÓS O TESTE...

ENDWHILE

}
SCRIPT_END // *LEIA NA VOZ DO PATRICK* ~ACABOU~

______________________________
#include < stdio.h >                                                                                                                        
int main(void)                                                                                                                                  
{                                                                                                                                                  
   printf ("coe rapaziada");
   printf ("coeee rapaziaaadaaa");
   printf ("coeeeeeeeeeeeeee rapaziadaaaaaaaaaaaaaa");
   return(0);
}
avatar
Mensagens Nível 4
Mensagens Nível 4
Título : Arthropod ¬¬
Mensagens : 326
Reputação : 11
Desde : 02/06/2017
Localização : Vila Velha; Estado do Espírito Santo; Brazil;
Link : 127.0.0.1:80
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 07 Set 2017, 07:13
Não polua tópicos de tutoriais. Tente fazer do seu texto maximamente legível.
Não use encurtamentos de chat. Fazendo isso, você ajudará outras pessoas a identificar seu ponto de vista e resolução da questão, evitando que a mesma questão seja levantada.
Não ESCREVA TUDO EM CAIXA ALTA, isso é depressivo de se ler. E também, no GTA3script quase tudo é feio pra porra está em caixa alta, então NÃO COMENTE EM CAIXA ALTA.
Eu creio que há um problema na sua assinatura, devido a um #include nulo e o uso de printf() aparentemente sem incluir stdio.h ou algum outro header (cstdio, iostream, ...) que o tenha autocontido.


Última edição por Veryzon em Sex 08 Set 2017, 06:23, editado 3 vez(es)

______________________________
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 4
Reputação : 0
Desde : 07/09/2017
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 07 Set 2017, 11:39
Ok desculpe. Eu adicionei o #include stdio.h (ta sem aquelas setas porque não tá aparecendo no chat) por algum motivo não apareceu no resultado final.

______________________________
#include < stdio.h >                                                                                                                        
int main(void)                                                                                                                                  
{                                                                                                                                                  
   printf ("coe rapaziada");
   printf ("coeee rapaziaaadaaa");
   printf ("coeeeeeeeeeeeeee rapaziadaaaaaaaaaaaaaa");
   return(0);
}
avatar
Mensagens Nível 4
Mensagens Nível 4
Título : Arthropod ¬¬
Mensagens : 326
Reputação : 11
Desde : 02/06/2017
Localização : Vila Velha; Estado do Espírito Santo; Brazil;
Link : 127.0.0.1:80
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 07 Set 2017, 12:48
Põe espaço entre espaços < stdio.h > que funciona. Deve ser uma questão de interpretação do HTML.


Última edição por Veryzon em Sex 08 Set 2017, 06:24, editado 1 vez(es)

______________________________
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 4
Reputação : 0
Desde : 07/09/2017
Ver perfil do usuário

Re: 10. Exercício #1

em Qui 07 Set 2017, 12:51
Aeeh agr foi, vlw

______________________________
#include < stdio.h >                                                                                                                        
int main(void)                                                                                                                                  
{                                                                                                                                                  
   printf ("coe rapaziada");
   printf ("coeee rapaziaaadaaa");
   printf ("coeeeeeeeeeeeeee rapaziadaaaaaaaaaaaaaa");
   return(0);
}
avatar
Produtor de vídeos - Avançado
Produtor de vídeos - Avançado
Mensagens : 15839
Reputação : 156
Desde : 03/06/2012
Ver perfil do usuáriohttp://playgamemods.blogspot.com.br/

Re: 10. Exercício #1

em Dom 10 Set 2017, 16:56
Acho que consegui :v
Spoiler:

Código:
SCRIPT_START

{
 NOP

LVAR_INT var1
LVAR_INT var2
LVAR_INT var3
LVAR_INT var4
LVAR_INT var5
LVAR_INT x

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

WAIT 0

IF var1 < 12
        x = 12 - var1
            var1 += x
    ELSE
        x = var1 - 12
            var1 -= x
    ENDIF

IF var2 < 12
        x = 12 - var2
            var2 += x
    ELSE
        x = var2 - 12
            var2 -= x
    ENDIF

IF var3 < 12
        x = 12 - var3
            var3 += x
    ELSE
        x = var3 - 12
            var3 -= x
    ENDIF

IF var4 < 12
        x = 12 - var4
            var4 += x
    ELSE
        x = var4 - 12
            var4 -= x
    ENDIF

IF var5 < 12
        x = 12 - var5
            var5 += x
    ELSE
        x = var5 - 12
            var5 -= x
    ENDIF

PRINT_FORMATTED_NOW " Resultado das variaveis: %d  %d  %d  %d  %d" 5000 var1 var2 var3 var4 var5

}
SCRIPT_END

______________________________
http://playgamemods.blogspot.com.br/






"“Toda verdade passa por três estágios. Primeiro, ela é ridicularizada. Segundo, ela é violentamente resistida. Terceiro, ela é aceita como sendo autoevidente” (Arthur Schopenhauer, filósofo alemão [1788-1860])"

“Se pudesse ser demonstrada a existência de qualquer órgão complexo que não poderia ter sido formado por numerosas, sucessivas e ligeiras modificações, minha teoria desmoronaria por completo.” (DARWIN 1872)"
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 930
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 10. Exercício #1

em Dom 10 Set 2017, 16:59
Tem que botar essas coisas dentro de um loop (menos a geração de número kkk). Exemplo:
Código:

main_loop:
WAIT 0
//codigo pah
GOTO main_loop
A sua identação 'tá um pouco bagunçada, mas isso não é tão necessário por enquanto.

______________________________
Caso te ajudei em algo, clique no botão de reputação (o "coraçãozinho" na parte de cima da mensagem).
avatar
Produtor de vídeos - Avançado
Produtor de vídeos - Avançado
Mensagens : 15839
Reputação : 156
Desde : 03/06/2012
Ver perfil do usuáriohttp://playgamemods.blogspot.com.br/

Re: 10. Exercício #1

em Dom 10 Set 2017, 17:18
assim? ;-;

Spoiler:

Código:
SCRIPT_START

{
NOP

LVAR_INT var1
LVAR_INT var2
LVAR_INT var3
LVAR_INT var4
LVAR_INT var5
LVAR_INT x

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

loop:
WAIT 0

IF var1 < 12
        x = 12 - var1
            var1 += x
    ELSE
        x = var1 - 12
            var1 -= x
ENDIF

IF var2 < 12
        x = 12 - var2
            var2 += x
    ELSE
        x = var2 - 12
            var2 -= x
ENDIF

IF var3 < 12
        x = 12 - var3
            var3 += x
    ELSE
        x = var3 - 12
            var3 -= x
ENDIF

IF var4 < 12
        x = 12 - var4
            var4 += x
    ELSE
        x = var4 - 12
            var4 -= x
ENDIF

IF var5 < 12
        x = 12 - var5
            var5 += x
    ELSE
        x = var5 - 12
            var5 -= x
ENDIF

PRINT_FORMATTED_NOW "Resultado das variaveis: %d  %d  %d  %d  %d" 5000 var1 var2 var3 var4 var5

GOTO loop
}
SCRIPT_END

______________________________
http://playgamemods.blogspot.com.br/






"“Toda verdade passa por três estágios. Primeiro, ela é ridicularizada. Segundo, ela é violentamente resistida. Terceiro, ela é aceita como sendo autoevidente” (Arthur Schopenhauer, filósofo alemão [1788-1860])"

“Se pudesse ser demonstrada a existência de qualquer órgão complexo que não poderia ter sido formado por numerosas, sucessivas e ligeiras modificações, minha teoria desmoronaria por completo.” (DARWIN 1872)"
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 930
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 10. Exercício #1

em Dom 10 Set 2017, 17:23
Sim. Recomendo que você cheque se o jogador existe, e então mostre a mensagem. Você também pode colocar um botão para mostrar a mensagem, dai enquanto segura aparece. Exemplo:
Código:

IF pressionou tal tecla
AND jogador existe?
    mostra a mensagem, coloca 1 milisegundo no argumento de tempo.
ENDIF
Obs: isso é um pseudo-code, ele não funciona, você deve colocar os comandos.

______________________________
Caso te ajudei em algo, clique no botão de reputação (o "coraçãozinho" na parte de cima da mensagem).
avatar
Produtor de vídeos - Avançado
Produtor de vídeos - Avançado
Mensagens : 15839
Reputação : 156
Desde : 03/06/2012
Ver perfil do usuáriohttp://playgamemods.blogspot.com.br/

Re: 10. Exercício #1

em Dom 10 Set 2017, 17:33
ok

Spoiler:
Código:
SCRIPT_START

{
NOP

LVAR_INT var1
LVAR_INT var2
LVAR_INT var3
LVAR_INT var4
LVAR_INT var5
LVAR_INT x

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

loop:
WAIT 0

IF var1 < 12
        x = 12 - var1
            var1 += x
    ELSE
        x = var1 - 12
            var1 -= x
ENDIF

IF var2 < 12
        x = 12 - var2
            var2 += x
    ELSE
        x = var2 - 12
            var2 -= x
ENDIF

IF var3 < 12
        x = 12 - var3
            var3 += x
    ELSE
        x = var3 - 12
            var3 -= x
ENDIF

IF var4 < 12
        x = 12 - var4
            var4 += x
    ELSE
        x = var4 - 12
            var4 -= x
ENDIF

IF var5 < 12
        x = 12 - var5
            var5 += x
    ELSE
        x = var5 - 12
            var5 -= x
ENDIF

IF IS_KEY_PRESSED VK_KEY_H
PRINT_FORMATTED_NOW "Resultado das variaveis: %d  %d  %d  %d  %d" 3000 var1 var2 var3 var4 var5 1
ENDIF

GOTO loop
}
SCRIPT_END

só não sei qual o codigo do player ;-;


Última edição por Hue em Dom 10 Set 2017, 17:37, editado 1 vez(es)

______________________________
http://playgamemods.blogspot.com.br/






"“Toda verdade passa por três estágios. Primeiro, ela é ridicularizada. Segundo, ela é violentamente resistida. Terceiro, ela é aceita como sendo autoevidente” (Arthur Schopenhauer, filósofo alemão [1788-1860])"

“Se pudesse ser demonstrada a existência de qualquer órgão complexo que não poderia ter sido formado por numerosas, sucessivas e ligeiras modificações, minha teoria desmoronaria por completo.” (DARWIN 1872)"
Conteúdo patrocinado

Re: 10. Exercício #1

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