Compartilhe
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br
  • Reputação da mensagem: 100% (1 votos)

15. Mais sobre condições

em Qua 08 Fev 2017, 17:11
Concluindo esta parte você irá:
Aprender REPEAT e SWITCH, incluindo uma parte pouco mais teórica sobre condições e uma tática de retorno de verdadeiro/falso.

Eu li uma apostila de Java onde tinha um foco legal: Ensinar cada coisa quando a pessoa estiver pronta para aquilo, eu achei isso interessante e logo iniciei este tutorial tentando passar isso para vocês também.

Na parte 6 eu deixei de ensinar para você um tipo de loop.
Na parte 7 eu deixei de ensinar para você um tipo de condição e uma tática de condição.
Motivos: Você não sabia o que era variáveis, gosub/cleo_call e mal tinha noções ainda! Mas agora acredito que você já está pegando o jeito da coisa!




REPEAT


REPEAT é um loop que será repetido um tanto definido de vezes:

Código copiável:
SCRIPT_START
{
WAIT 3000

LVAR_INT var1

REPEAT 5 var1
   PRINT_FORMATTED_NOW "%d" 1000 var1
   WAIT 1000
ENDREPEAT

}
SCRIPT_END[/code]
Este script, após 3 segundos, irá mostrar os números: 0, 1, 2, 3, 4 na tela com intervalo de 1 segundo cada.
"Por que 0 a 4? Por que não 1 a 5?"
Meu filho, se acostume, você está num mundo diferente! Você verá muito disso pra todo lado.

Note que você pode usar a variável "var1" dentro desse loop, assim pode te ser útil (mas eu particularmente não gosto, prefiro o bom e velho WHILE).

Perceba que o REPEAT é o mesmo disso:

Mas neste caso, o REPEAT é mais bem vindo, né? O código do WHILE ficou poluído.


SWITCH


Ohh, SWITCH é ótimo!
É como se fosse vários IFs, mas de uma maneira mais "correta", elegante.



Nele, você envia uma variável, e dependente do valor dela, ele fará diferentes coisas.

No SWITCH eu enviei esta "var", e CASE ("caso") 1, aparecerá a mensagem de que o valor é 1.
A variável atualmente tem o valor "2", portanto, neste exemplo, aparecerá a mensagem do valor 2.
No "DEFAULT" é para caso não seja nenhum dos valores. Este é opcional e você não precisa colocar.

E você pode personalizar como bem entender:


Vamos ver um exemplo mais útil que você poderá usar no futuro:

Você tem um menu, o jogador pode mexer neste menu, e quando selecionar (pressionar uma tecla), você enviará a variável "item_do_menu" para o SWITCH, na qual a "item_do_menu" diz qual dos itens foi selecionado, e assim fará diferentes coisas dependente de qual item do menu ele selecionou. Como por exemplo, dar spawn em diferentes carros:


Muito legal, né?


Táticas de condições


Vamos nos aprofundar um pouco no que exatamente são as condições:

Vamos voltar a lembrar: 1 = true, 0 = false.

Vamos esquecer o "IF".

O seu script está rodando, e ali num cantinho há um bit.

Quando ele passar por isso:
Código:
IS_PC_VERSION
Aquele bit ficará TRUE

Agora, o "sistema" do jogo fará alguma resposta de verdadeiro-falso. E como ele vai saber? Indo naquele bit!

Esse é um resumão de como funciona, há inclusive 8 bits (lembra que você pode usar até 8 condições?) e o "AND" e "OR" do IF é na verdade um argumento para o IF, na qual dará verdadeiro só caso todas (AND), ou alguma (OR) das condições for verdadeira, onde ele saberá isso indo lá nos bits ver se eles estão true (1).

Blá blá blá, e o que isso importa?

Dê uma olhada neste script:

Código copiável:

Código:
SCRIPT_START
{
NOP

LVAR_INT scplayer

GET_PLAYER_CHAR 0 scplayer


main_loop:
WAIT 0
IF GOSUB Activated
    PRINT_STRING_NOW "Whoaaaaaa" 100
ENDIF
GOTO main_loop


Activated:
IF IS_CHAR_SITTING_IN_ANY_CAR scplayer
AND IS_KEY_PRESSED VK_KEY_Y
    IS_PC_VERSION
ELSE
    IS_AUSTRALIAN_GAME
ENDIF
RETURN

}
SCRIPT_END
Sério! Isso funciona!

Nós fizemos uma gambiarra de usar "IS_PC_VERSION" para marcar o tal bit como "true" (afinal, o jogo é de PC, então sempre retornará verdadeiro), e "IS_AUSTRALIAN_GAME" para marcar o tal bit como "false" (afinal, o jogo não é australiano, então sempre retornará falso).
Após setar TRUE ou FALSE, terá um RETURN que retornará, e aquele IF irá agir pegando o TRUE ou FALSE que ele armazenou durante a sua jornada dentro de um GOSUB.
Note, que, os nomes "reais" para tal coisa deveria ser: IS_PC_VERSION = RETURN_TRUE e IS_AUSTRALIAN_GAME = RETURN_FALSE, mas estranhamente a Rockstar removeu estes comandos no GTA SA, então nós usamos estes dois de modo gambiarrado que dá o mesmo resultado.
Aqui um exemplo menos útil mas mais fácil de entender:

Seria o mesmo de eu ter digitado isso:


Mas a utilidade vem quando:
Você quer fazer alguma coisa naquele GOSUB, e após ter feito a tal coisa, você quer retornar um verdadeiro ou falso. Alguma coisa como "tudo deu certo ou não?"

Veja este outro exemplo útil:

Código copiável:

Código:
SCRIPT_START
{
LVAR_INT key1 key2

IF GOSUB carregar_arquivos
    // ok
    PRINT_STRING_NOW "Tudo certo" 2000
    WAIT 2000
ELSE
    // fail
    PRINT_STRING_NOW "Nao foi possivel continuar." 5000
    TERMINATE_THIS_CUSTOM_SCRIPT
ENDIF

main_loop:
WAIT 0
PRINT_STRING_NOW "Mod rodando..." 1
GOTO main_loop

carregar_arquivos:
IF NOT READ_INT_FROM_INI_FILE "cleo\mod.ini" "config" "key1" key1
    PRINT_STRING_NOW "Falha ao carregar 'key1' do .ini" 5000
    WAIT 5000
    IS_AUSTRALIAN_GAME
    RETURN
ENDIF
IF NOT READ_INT_FROM_INI_FILE "cleo\mod.ini" "config" "key2" key2
    PRINT_STRING_NOW "Falha ao carregar 'key2' do .ini" 5000
    WAIT 5000
    IS_AUSTRALIAN_GAME
    RETURN
ENDIF
PRINT_STRING_NOW ".ini carregado com sucesso! do .ini" 5000
WAIT 5000
IS_PC_VERSION
RETURN
}
SCRIPT_END
 
Algum dia você possivelmente fará coisa assim em um mod seu.

Perceba o que eu fiz: Um GOSUB onde carrega o meu .ini (Veja como carregar arquivos .ini aqui se ainda não viu!!!) e caso dar algum problema ao tentar carregar, eu mostro uma mensagem e retorno falso (IS_AUSTRALIAN_GAME), mas se nada dar errado, irá retornar verdadeiro (IS_PC_VERSION), e no retorno, o IF dará o resultado conforme ("foi verdadeiro ou falso?")

E CLEO_CALL?
Exatamente a mesma coisa!!! Muda nada.


Limitações:

É super perigoso você usar tal tática com um IF AND/OR, pois, basicamente, dentro do GOSUB/CLEO_CALL também terá um outro IF, ou seja, você sobrescreveu o IF antigo.
Se tomar certos cuidados não passará por isso, mas, sério, é melhor nem tentar. Só use tal tática com IF único! Não use em IF AND/OR.

Lembra que é possível fazer coisa desse tipo?
Código:
IS_CHAR_SITTING_IN_ANY_CAR scplayer
RETURN
Mas perceba que não é possível fazer coisa assim:
Código:
IF var1 = 10
RETURN
Pois não é aceito "IF" desta maneira.
E como seria sem IF?
Código:
var1 = 10
RETURN
Wat?? Isso deixou de ser condição!
Para retornar um verdadeiro ou falso, você teria que ter feito assim:
Código:
IF var1 = 10
    IS_PC_VERSION
ELSE
    IS_AUSTRALIAN_GAME
ENDIF
RETURN
Mas ainda há como!
Este comando é o mesmo de "var1 = 10":
Código:
IS_INT_LVAR_EQUAL_TO_INT_LVAR var1 10
RETURN
Digitar isso foi exatamente a mesma coisa de ter feito um "IF var1 = 10", mas agora ao invés de usarmos um operador, nós usamos um comando :)
Ou melhor ainda:
Código:
IS_THING_EQUAL_TO_THING var1 10
Assim não precisando especificar que seja uma LVAR com INT e tal.
Incluindo variações, como IS_THING_LESS_THAN_THING, IS_THING_GREATER_THAN_THING etc.




Eu só queria deixar claro que isso não é uma coisa obrigatória de usar (ué, por que seria?). Só use caso você achar útil, não se sinta obrigado a usar isso, ok? Isso não é uma das coisas "ohh, todo mundo usa! Você usará!", isso é só uma coisinha legal para se fazer na qual pode deixar seu código mais interessante e dinâmico :) (eu particularmente uso muito, não sei do que será de você)


Próxima parte:
Arrays


Última edição por Junior_Djjr em Dom 21 Maio 2017, 20:57, editado 3 vez(es) (Razão : "mostrou" errado, e dicas IS_THING_LESS_THAN_THING e IS_THING_GREATER_THAN_THING)

______________________________

avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 56
Reputação : 0
Desde : 19/01/2017
Ver perfil do usuário

Re: 15. Mais sobre condições

em Qua 08 Fev 2017, 17:54
belo tutorial
avatar
Designer - Intermediário
Designer - Intermediário
Mensagens : 166
Reputação : 32
Desde : 27/03/2016
Idade : 15
Localização : Rio Grande do Sul - Brasil
Ver perfil do usuário

Re: 15. Mais sobre condições

em Qui 09 Fev 2017, 19:44
bem que podia ter um tuto sobre Multifiles ou Missões em Geral

______________________________
Se eu te ajudei/fui útil a você clique no no lado da minha mensagem,ou se fiz um bom trabalho tbm clique no

Spoiler:
isso vai aumentar um numero inútil que n serve pra porra nenhuma mas que aumenta minha auto-estima a continuar :v
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 15. Mais sobre condições

em Qui 09 Fev 2017, 22:34
@LightVelox escreveu:bem que podia ter um tuto sobre Multifiles ou Missões em Geral
É tipo assim:
5 pessoas querem aprender a criar .SCM
Daí elas me pedem.
Eu começo a fazer tais tutoriais.
Mas todas destas 5, e mais umas 10 por fim falam "ei, você não vai criar o tutorial de manuseamento de memória não? Isso traz muito mais possibilidades de mod!"
Ué, tudo tem seu tempo, e as coisas precisam ser colocadas nas horas certas.
Ainda nem terminou os essenciais... E a criação de missões da "forma correta" tem várias regras chatas que ninguém que está começando vai conseguir controlá-las bem.

Multifiles então, vei, saporra é o núcleo da porra, é lá que o CJ é criado, montado, e o funcionamento dos scripts anda (exemplo, variáveis indicando quantas missões se passou para assim determinar se tal coisa será aberta ou não, o funcionamento das propriedades, comprar, poder entrar em tais locais, quais garagens abre pra você etc).
Se a pessoa quer aprender a criar .SCM é porque ela pensa que é incrivelmente foda, mas acho que só vai mexer um pouco e "meh, isso tem produtividade alguma, cheio de frescura e ninguém usaria isso a não ser numa conversão total, melhor eu criar uns mods separadamente ali". Eu só vejo necessidade de aprender Multifiles caso a pessoa seja o principal programador de uma conversão total. Fora de conversões totais, vejo utilidade alguma (inclusive, uma pessoa que sabe Multifiles pode facilmente pegar um script cleo de outra e adicionar ali no .SCM, ou seja, meio que só uma pessoa numa comunidade precisa aprender kkkk

______________________________

avatar
Designer - Intermediário
Designer - Intermediário
Mensagens : 166
Reputação : 32
Desde : 27/03/2016
Idade : 15
Localização : Rio Grande do Sul - Brasil
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 10 Fev 2017, 11:57
@Junior_Djjr escreveu:
@LightVelox escreveu:bem que podia ter um tuto sobre Multifiles ou Missões em Geral
É tipo assim:
5 pessoas querem aprender a criar .SCM
Daí elas me pedem.
Eu começo a fazer tais tutoriais.
Mas todas destas 5, e mais umas 10 por fim falam "ei, você não vai criar o tutorial de manuseamento de memória não? Isso traz muito mais possibilidades de mod!"
Ué, tudo tem seu tempo, e as coisas precisam ser colocadas nas horas certas.
Ainda nem terminou os essenciais... E a criação de missões da "forma correta" tem várias regras chatas que ninguém que está começando vai conseguir controlá-las bem.

Multifiles então, vei, saporra é o núcleo da porra, é lá que o CJ é criado, montado, e o funcionamento dos scripts anda (exemplo, variáveis indicando quantas missões se passou para assim determinar se tal coisa será aberta ou não, o funcionamento das propriedades, comprar, poder entrar em tais locais, quais garagens abre pra você etc).
Se a pessoa quer aprender a criar .SCM é porque ela pensa que é incrivelmente foda, mas acho que só vai mexer um pouco e "meh, isso tem produtividade alguma, cheio de frescura e ninguém usaria isso a não ser numa conversão total, melhor eu criar uns mods separadamente ali". Eu só vejo necessidade de aprender Multifiles caso a pessoa seja o principal programador de uma conversão total. Fora de conversões totais, vejo utilidade alguma (inclusive, uma pessoa que sabe Multifiles pode facilmente pegar um script cleo de outra e adicionar ali no .SCM, ou seja, meio que só uma pessoa numa comunidade precisa aprender kkkk

na verdade so tava querendo aprender como fazer missões,nem precisa ser missão de verdade podia ser a gambiarra que eu faco:
-Escureco a Tela
-Teleporto o CJ
-Apago todos os Peds
-Faco as missao(tipo spawno peds pro player mata)
-Checo se ta tudo morto
-Mostro mensagem falsa de "mission passed" e uso o "play_mission_tune" :v
tipo isso aqui:
Spoiler:

Código:

SCRIPT_START
{
NOP

LVAR_INT groov1 groov2 groov3 balla1 balla2 balla3 player
LVAR_INT groov4 groov5 balla4 balla5 balla6
GET_PLAYER_CHAR 0 player

Loop:
WAIT 0

IF IS_KEY_PRESSED VK_KEY_Z
    REQUEST_MODEL FAM3
    REQUEST_MODEL BALLAS2
    REQUEST_MODEL TEC9
    WHILE NOT HAS_MODEL_LOADED FAM3
        WAIT 0
    ENDWHILE
    WHILE NOT HAS_MODEL_LOADED BALLAS2
        WAIT 0
    ENDWHILE
    WHILE NOT HAS_MODEL_LOADED TEC9
        WAIT 0
    ENDWHILE
    DO_FADE 250 FADE_OUT
    SET_CHAR_COORDINATES player 2566.54 -1077.2 69.0801
    WAIT 250
    SET_PED_DENSITY_MULTIPLIER 0.0
    SET_CAR_DENSITY_MULTIPLIER 0.0
    WAIT 2500
    CREATE_CHAR PEDTYPE_GANG2 FAM3 2562.86 -1079.56 68.3118 groov1
    CREATE_CHAR PEDTYPE_GANG2 FAM3 2561.18 -1077.07 68.3501 groov2
    CREATE_CHAR PEDTYPE_GANG2 FAM3 2561.96 -1080.57 68.0461 groov3
    CREATE_CHAR PEDTYPE_GANG2 FAM3 2565.72 -1074.47 69.1414 groov4
    CREATE_CHAR PEDTYPE_GANG2 FAM3 2568.63 -1074.83 69.1890 groov5
    TASK_TURN_CHAR_TO_FACE_CHAR player groov1
    CREATE_CHAR PEDTYPE_GANG1 BALLAS2 2532.43 -1098.34 58.8073 balla1
    CREATE_CHAR PEDTYPE_GANG1 BALLAS2 2533.95 -1100.80 59.1936 balla2
    CREATE_CHAR PEDTYPE_GANG1 BALLAS2 2531.06 -1095.35 58.4566 balla3
    CREATE_CHAR PEDTYPE_GANG1 BALLAS2 2519.88 -1095.98 55.1887 balla4
    CREATE_CHAR PEDTYPE_GANG1 BALLAS2 2518.62 -1098.73 55.0010 balla5
    CREATE_CHAR PEDTYPE_GANG1 BALLAS2 2517.71 -1093.35 54.6461 balla6
    SET_PLAYER_MODEL 0 FAM3
    CLEAR_AREA 2468.8 -1095.65 44.3526 10000.0 1
    GIVE_WEAPON_TO_CHAR player 32 999
    GIVE_WEAPON_TO_CHAR balla1 32 999
    GIVE_WEAPON_TO_CHAR balla2 32 999
    GIVE_WEAPON_TO_CHAR balla3 32 999
    GIVE_WEAPON_TO_CHAR balla4 32 999
    GIVE_WEAPON_TO_CHAR balla5 32 999
    GIVE_WEAPON_TO_CHAR balla6 32 999
    GIVE_WEAPON_TO_CHAR groov1 32 999
    GIVE_WEAPON_TO_CHAR groov2 32 999
    GIVE_WEAPON_TO_CHAR groov3 32 999
    GIVE_WEAPON_TO_CHAR groov4 32 999
    GIVE_WEAPON_TO_CHAR groov5 32 999
    CLEAR_AREA 2468.8 -1095.65 44.3526 10000.0 1
    DO_FADE 1000 FADE_IN
    PRINT_BIG_FORMATTED "PCC vs CV" 1000 1 1
    TASK_FOLLOW_FOOTSTEPS groov1 player
    TASK_FOLLOW_FOOTSTEPS groov2 player
    TASK_FOLLOW_FOOTSTEPS groov3 player
    TASK_FOLLOW_FOOTSTEPS groov4 player
    TASK_FOLLOW_FOOTSTEPS groov5 player
    TASK_KILL_CHAR_ON_FOOT balla1 player
    TASK_KILL_CHAR_ON_FOOT balla2 player
    TASK_KILL_CHAR_ON_FOOT balla3 player
    TASK_KILL_CHAR_ON_FOOT balla4 player
    TASK_KILL_CHAR_ON_FOOT balla5 player
    TASK_KILL_CHAR_ON_FOOT balla6 player
    CLEAR_AREA 2468.8 -1095.65 44.3526 10000.0 1
    MARK_MODEL_AS_NO_LONGER_NEEDED FAM3
    MARK_MODEL_AS_NO_LONGER_NEEDED BALLAS2
    MARK_MODEL_AS_NO_LONGER_NEEDED TEC9
    CLEAR_AREA 2468.8 -1095.65 44.3526 10000.0 1
    WHILE IS_KEY_PRESSED VK_KEY_Z
        WAIT 0
    ENDWHILE
    WAIT 120000
    SET_PED_DENSITY_MULTIPLIER 1.0
    SET_CAR_DENSITY_MULTIPLIER 1.0
ENDIF

GOTO Loop

Passed:
    IF IS_CHAR_DEAD balla1
        IF IS_CHAR_DEAD balla2
            IF IS_CHAR_DEAD balla3
                IF IS_CHAR_DEAD balla4
                    IF IS_CHAR_DEAD balla5
                        IF IS_CHAR_DEAD balla6
                            PLAY_MISSION_PASSED_TUNE 1
                            PRINT_BIG_FORMATTED "Mission Passed" 2500 1 1
                        ENDIF
                    ENDIF
                ENDIF
            ENDIF
        ENDIF
    ENDIF
    GOTO Passed
}
SCRIPT_END
(eu sei que ta cheio de erro,a missao nunca termina e os 77 bilhoes de "IF ENDIF IF ENDIF IF ENDIF" tão errados no final" mas isso é pq ainda to fazendo ela e tbm é so um teste,os 3 "clear area" é so pq eu fiquei puto pelos peds ficarem spawnando de vez enquando)
so falei de multifile msm pq la no Learn X in y Minutes os multifiles falam mais sobre missões do que qualquer outra coisa

______________________________
Se eu te ajudei/fui útil a você clique no no lado da minha mensagem,ou se fiz um bom trabalho tbm clique no

Spoiler:
isso vai aumentar um numero inútil que n serve pra porra nenhuma mas que aumenta minha auto-estima a continuar :v
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 15. Mais sobre condições

em Sex 10 Fev 2017, 12:16
Fazer uma missão "básica" sem seguir as regras de "boas verdadeiras missões" não requer nenhum tutorial. No máximo uns pedidos para explicar como fazer tais coisas e ter umas dicas (como o clear area, que realmente é útil)

Para mostrar o nome da missão: PRINT_BIG (após ter feito fade out)
Para mostrar missão "failed": PRINT_BIG com style 1 tempo 5000 e GXT M_FAIL
Para mostrar missão "passed":  PRINT_WITH_NUMBER_BIG também com style 1 e tempo 5000, agora com GXT M_PASS e no número você coloca o tanto de dinheiro que você deu para o player.
Para tocar a musiquinha de missão passada: PLAY_MISSION_PASSED_TUNE com "1"

Acho que é o básico, o resto é meio que aprendido com o tempo e tutoriais...

Exemplo de MISSION PASSED no MAIN.SCM dentro do Sanny Builder:
Código:
$Catalina_Total_Passed_Missions += 1
$1520 += 1
0629: change_integer_stat 315 to 1
168@ += 10000
01E3: show_text_1number_styled GXT 'M_PASS' number 10000 time 5000 style 1  // MISSION PASSED!~n~~w~$~1~
Player.Money($PLAYER_CHAR) += 10000
Player.ClearWantedLevel($PLAYER_CHAR)
0394: play_music 1
030C: progress_made = 1
0318: set_latest_mission_passed 'CAT_2'  // Small Town Bank
$Mission_Small_Town_Bank_Passed = 1
ps: Os "$" são variáveis globais e muita coisa como "progress_made" é exclusivo de multifile e não faz sentido usar em mods cleos.

______________________________

avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 9
Reputação : 0
Desde : 18/12/2016
Idade : 15
Localização : Várzea Paulista - São Paulo
Ver perfil do usuário

Re: 15. Mais sobre condições

em Qua 10 Maio 2017, 19:23
Switchs são uma maravilha... Pena que não tem no GTA:SA. Ahhh, Rockstar, porque fizeste isso conosco?
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18915
Reputação : 346
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: 15. Mais sobre condições

em Qua 10 Maio 2017, 19:30
@Adryan Araújo escreveu:Switchs são uma maravilha... Pena que não tem no GTA:SA. Ahhh, Rockstar, porque fizeste isso conosco?

A Rockstar fez SWITCHes, são aqueles jump table que você vê no sanny, a forma original dele usada pela Rockstar é suportada pelo compilador de gta3script do LINK/2012. Exemplo: https://github.com/thelink2012/gta3sc/blob/454c9f93de8a9d77eb2950cf62610b5d5a916c23/test/semantics/switch.sc

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
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: 15. Mais sobre condições

em Sex 21 Jul 2017, 03:11
Pessoal, gostaria que voces dessem uma olhada nesse codigo aqui:
Código:
////////////////////////////////////////////////////////////////////////////////////////////////////
/* Esse script define um numero aleatorio (1, 2 ou 3) para cada uma dentre 03 variaveis que serao
criadas. Quando o "jogo" começar, o seu unico objetivo eh acertar esse 03 numeros digitando um
numero de cada vez. */
////////////////////////////////////////////////////////////////////////////////////////////////////
SCRIPT_START
{
   NOP

LVAR_INT num1 num2 num3 tentativas
tentativas = 1
//A variavel 'tentativas' serve para saber "onde estamos". Ela começa com o valor '01', se voçe
//digitar o primeiro numero e acertar, ela sera definida para '02', assim, quando voçe for digitar o
//segundo numero, o script 'sabera' que voçe ja acertou o primeiro e se acertar o proximo ira para o
//ultimo numero

inicio:
WAIT 0

GENERATE_RANDOM_INT_IN_RANGE 1 4 num1
GENERATE_RANDOM_INT_IN_RANGE 1 4 num2
GENERATE_RANDOM_INT_IN_RANGE 1 4 num3

IF IS_KEY_PRESSED VK_KEY_1
   WHILE IS_KEY_PRESSED VK_KEY_1
       wait 0
   ENDWHILE
       SWITCH tentativas
           CASE 1 //Se a variavel 'tentativas' for igual a '01', significa que voçe começou agora. Agora, o script vai comparar o numero que voçe escolheu (01 nesse caso) com a variavel 'num1', se '01' for o valor aleatoriamente atribuido a 'num1', voçe acertou!
               IF num1 = 1
                   tentativas ++
                   PRINT_STRING_NOW "OK" 1000
                   GOTO inicio
               ELSE
                   PRINT_STRING_NOW "COMECE NOVAMENTE" 1000
                   GOTO inicio
               ENDIF
               BREAK
           CASE 2
               IF num2 = 1
                   tentativas ++
                   PRINT_STRING_NOW "OK" 1000
                   GOTO inicio
               ELSE
                   tentativas = 1 //Aqui voçe tambem escolheu o numero '01', mas dessa vez, voçe ja acertou uma vez (entao, 'tentativas' = 2). So que desta vez, o numero '01' nao eh igual ao valor atribuido a 'var2' (agora eh usada a 'var2' porque ('tentativas' = 2) voçe ja acertou o primeiro numero) entao voçe errou e começara novamente.
                   PRINT_STRING_NOW "COMECE NOVAMENTE" 1000
                   GOTO inicio
               ENDIF
               BREAK
           CASE 3
               IF num3 = 1
                   tentativas = 1
                   PRINT_STRING_NOW "ACERTOU TODOS" 3000
                   WAIT 3000
                   GOTO inicio
               ELSE
                   tentativas = 1
                   PRINT_STRING_NOW "COMECE NOVAMENTE" 1000
                   GOTO inicio
               ENDIF
               BREAK
       ENDSWITCH
ENDIF
IF IS_KEY_PRESSED VK_KEY_2
   WHILE IS_KEY_PRESSED VK_KEY_2
       WAIT 0
   ENDWHILE
   SWITCH tentativas
       CASE 1
           IF num1 = 2
               tentativas ++
               PRINT_STRING_NOW "OK" 1000
               GOTO inicio
           ELSE
               PRINT_STRING_NOW "COMECE NOVAMENTE" 1000
               GOTO inicio
           ENDIF
           BREAK
       CASE 2
           IF num2 = 2
               tentativas ++
               PRINT_STRING_NOW "OK" 1000
               GOTO inicio
           ELSE
               tentativas = 1
               PRINT_STRING_NOW "COMECE NOVAMENTE" 1000
               GOTO inicio
           ENDIF
           BREAK
       CASE 3
           IF num3 = 2
               tentativas = 1
               PRINT_STRING_NOW "ACERTOU TODOS" 3000
               WAIT 3000
               GOTO inicio
           ELSE
               tentativas = 1
               PRINT_STRING_NOW "COMECE NOVAMENTE" 1000
               GOTO inicio
           ENDIF
           BREAK
   ENDSWITCH
ENDIF
IF IS_KEY_PRESSED VK_KEY_3
   WHILE IS_KEY_PRESSED VK_KEY_3
       WAIT 0
   ENDWHILE
   SWITCH tentativas
       CASE 1
           IF num1 = 3
               tentativas ++
               PRINT_STRING_NOW "OK" 1000
               GOTO inicio
           ELSE
               PRINT_STRING_NOW "COMECE NOVAMENTE" 1000
               GOTO inicio
           ENDIF
           BREAK
       CASE 2
           IF num2 = 3
               tentativas ++
               PRINT_STRING_NOW "OK" 1000
               GOTO inicio
           ELSE
               tentativas = 1
               PRINT_STRING_NOW "COMECE NOVAMENTE" 1000
               GOTO inicio
           ENDIF
           BREAK
       CASE 3
           IF num3 = 3
               tentativas = 1
               PRINT_STRING_NOW "ACERTOU TODOS" 3000
               WAIT 3000
               GOTO inicio
           ELSE
               tentativas = 1
               PRINT_STRING_NOW "COMECE NOVAMENTE" 1000 // Sempre que errar, começara tudo denovo.
               GOTO inicio
           ENDIF
           BREAK
   ENDSWITCH
ENDIF
GOTO inicio
}
SCRIPT_END
Esse e um script bem simples que criei apenas para exercitar o conteudo que aprendi.

O script vai definir 3 variaveis diferentes com valores aleatorios variando entre 1, 2 e 3. voçe so tem que acertar esses 03 numeros, digitando um de cada vez, se errar algum, começa novamente, se acertar os tres, o script printa uma msg na tela e recomeça.

Eu quero saber se o codigo ficou legal... comentarios, metodo e utilizaçao dos comandos, identação...

OBSERVAÇAO: eu estou na aula 15 do tutorial de GTA3Script, logo, ainda nao aprendi muuuuuita coisa, entao e como eu disse: "para exercitar o conteudo que aprendi".
ja agradeço, obrigado!


Última edição por ThiagoD em Sex 21 Jul 2017, 13:07, editado 1 vez(es)
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 941
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 11:24
Coloque o código entre numa tag code: [ code ] seu código [ /code ] <<<< sem os espaços

______________________________
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 : 69
Reputação : 6
Desde : 08/06/2017
Idade : 17
Localização : São Gabriel - RS
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 11:38
senta que la vem historia
1_Variaveis por padrao tem valor 0, entao nao precisa setar 1.
2_Voce esta gerando num's aleatorios em loop e em 3 variaveis diferentes. 60fps = 60 num's aleatorios nas 3 variaveis, tudo isso ja ao entrar no jogo. (Wtf)
3_O uso do while esta muito acima do Script, nesse caso o Script so seguirá seu caminho apos soltar a tecla. (Wtf)
4_Nesse Script especifico o uso do Switch so serve para "comer" linhas, veja esse Script que fiz em 5 min com a mesma finalidade so seu.
Spoiler:

Código:
script_start
{
    NOP
    LVAR_INT random tent

main_loop:
WAIT 0
    IF IS_KEY_PRESSED VK_KEY_1
    AND tent = 0
        GENERATE_RANDOM_INT_IN_RANGE 1 4 random
        IF random = 1
            PRINT_FORMATTED_NOW "OK 1" 1000
            tent ++
        ELSE
            PRINT_FORMATTED_NOW "Errou na 1" 1000
        ENDIF
        WHILE IS_KEY_PRESSED VK_KEY_1
            WAIT 0
        ENDWHILE
    ENDIF

    IF IS_KEY_PRESSED VK_KEY_2
    AND tent = 1
        GENERATE_RANDOM_INT_IN_RANGE 1 4 random
        IF random = 2
            PRINT_FORMATTED_NOW "OK 2" 1000
            tent ++
        ELSE
            PRINT_FORMATTED_NOW "Errou na 2" 1000
            tent = 0
        ENDIF
        WHILE IS_KEY_PRESSED VK_KEY_2
            WAIT 0
        ENDWHILE
    ENDIF

    IF IS_KEY_PRESSED VK_KEY_3
    AND tent = 2
        GENERATE_RANDOM_INT_IN_RANGE 1 4 random
        IF random = 3
            PRINT_FORMATTED_NOW "Acertou todas" 1000
        ELSE
            PRINT_FORMATTED_NOW "Errou na 3" 1000
        ENDIF
        tent = 0
        WHILE IS_KEY_PRESSED VK_KEY_3
            WAIT 0
        ENDWHILE
    ENDIF

GOTO main_loop
}
script_end
fiquei 2hr jogando ate acertar as 3  :)

______________________________
Certa vez perguntaram ao Dalai Lama:
Oque mais te decepciona em Custom Scripts ?
E ele respondeu:
reached maximum local variable limit (32).
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 941
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 11:47
Luciano, por que você usou PRINT_FORMATTED_NOW sendo que você não formatou a string?

______________________________
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 : 69
Reputação : 6
Desde : 08/06/2017
Idade : 17
Localização : São Gabriel - RS
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 11:49
Pq eu gosto assim ora
Antes eu fazia o contrario, tentava usar PRINT STRING NOW pra printar variaveis kkkkk
So para manter um padrao msm
@edit: meu celular da lag enquanto escrevo entao as vezes sai letra errada ou nem sai kk


Última edição por Luciano Modernel em Sex 21 Jul 2017, 11:52, editado 1 vez(es)

______________________________
Certa vez perguntaram ao Dalai Lama:
Oque mais te decepciona em Custom Scripts ?
E ele respondeu:
reached maximum local variable limit (32).
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 941
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 11:51
Eu acho que usa mais memória fazer assim philosoraptor. Mas um pouquinho de memória a mais nem tem problema Fuch That Guy

______________________________
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 : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 11:53
↑ Nas primeiras versões da CLEO 4.3 fazer isso causava crash. Eu enchi o saco do Deji para ele corrigir isso, pois ele não queria corrigir pois quem está sendo errado é o programador, mas mesmo assim ele corrigiu (onde na verdade acho que ele só fez não crashar, continuou sendo errado).
Ou seja, me agradeça por não ter crashado.

@Adryan Araújo escreveu:Switchs são uma maravilha... Pena que não tem no GTA:SA. Ahhh, Rockstar, porque fizeste isso conosco?
?? você vem num tópico onde ensino SWITCH para falar que não existe SWITCH?

______________________________

avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 941
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 11:56
@Junior_Djjr escreveu:
@Adryan Araújo escreveu:Switchs são uma maravilha... Pena que não tem no GTA:SA. Ahhh, Rockstar, porque fizeste isso conosco?
?? você vem num tópico onde ensino SWITCH para falar que não existe SWITCH?
O cara tá num tópico de tutorial e não lê o tutorial facepalm

______________________________
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 : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 12:26
@Matheus Rivaldo escreveu:
@Junior_Djjr escreveu:  
@Adryan Araújo escreveu:Switchs são uma maravilha... Pena que não tem no GTA:SA. Ahhh, Rockstar, porque fizeste isso conosco?
?? você vem num tópico onde ensino SWITCH para falar que não existe SWITCH?
O cara tá num tópico de tutorial e não lê o tutorial facepalm
Se fosse numa parte anterior, tudo bem.
Se fosse numa parte adiante, então ele pulou parte.
Mas falar isso justamente na mesma parte onde é ensinado é foda kkkkkk

______________________________

avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 941
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 12:31
Aproveitando que o Djjr tá aqui:
Djjr, você poderia ler minha inscrição para o grupo de scripters cleo no tópico de inscrição para grupos?

______________________________
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 : 69
Reputação : 6
Desde : 08/06/2017
Idade : 17
Localização : São Gabriel - RS
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 12:57
@Junior_djjr Aliás voce poderia fazer um tutorial dos diferentes tipos de PRINT e seus argumentos

______________________________
Certa vez perguntaram ao Dalai Lama:
Oque mais te decepciona em Custom Scripts ?
E ele respondeu:
reached maximum local variable limit (32).
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 941
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 12:58
É só olhar no opcode database, do Deji.

______________________________
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 : 69
Reputação : 6
Desde : 08/06/2017
Idade : 17
Localização : São Gabriel - RS
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 13:00
Digo para iniciantes

______________________________
Certa vez perguntaram ao Dalai Lama:
Oque mais te decepciona em Custom Scripts ?
E ele respondeu:
reached maximum local variable limit (32).
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Título : Noob
Mensagens : 941
Reputação : 30
Desde : 13/08/2015
Localização : Passo de Torres - SC
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 13:02
Mas o opcode database serve pra iniciantes. É super simples, tem lista dos argumentos e exemplos de como usar o comando. O Djjr poderia ter citado o opcode database em alguma parte deste tutorial philosoraptor

______________________________
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 : 69
Reputação : 6
Desde : 08/06/2017
Idade : 17
Localização : São Gabriel - RS
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 13:06
Enfim so pensei que encaixaria ate na parte "Seu primeiro Script Cleo"
Tbm gosto dos textos do junior, bem informal e pratico

______________________________
Certa vez perguntaram ao Dalai Lama:
Oque mais te decepciona em Custom Scripts ?
E ele respondeu:
reached maximum local variable limit (32).
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 14:20
@Matheus Rivaldo escreveu:Mas o opcode database serve pra iniciantes. É super simples, tem lista dos argumentos e exemplos de como usar o comando. O Djjr poderia ter citado o opcode database em alguma parte deste tutorial philosoraptor
Gente, vocês estão perdidos no tutorial.

Quando você passa o mouse em cima de um comando, aparece a documentação explicando como usar etc.
Este é o texto do Opcode Database!
Quando você clica no "see online reference" você vai pro Opcode Database com o exato mesmo texto lá. Isso foi explicado já.

ps: o site do Opcode Database não abre mais, de qualquer modo, o GTA3script está configurado para dar prioridade ao GTAModding.com, devido a ser uma wiki aberta para qualquer um editar, portanto geralmente tem mais qualidade pois qualquer um pode ir lá fazer correções, ele só pega o Opcode Database caso não tiver artigo no GTAModding.com.

______________________________

avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 69
Reputação : 6
Desde : 08/06/2017
Idade : 17
Localização : São Gabriel - RS
Ver perfil do usuário

Re: 15. Mais sobre condições

em Sex 21 Jul 2017, 14:30
Ops esqueci de dizer que uso o VSC offline
longa novela com provedores ;-;

______________________________
Certa vez perguntaram ao Dalai Lama:
Oque mais te decepciona em Custom Scripts ?
E ele respondeu:
reached maximum local variable limit (32).
Conteúdo patrocinado

Re: 15. Mais sobre condições

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