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

9. Variáveis e constantes

em Qui 26 Jan 2017, 03:53




Concluindo esta parte você vai:
Poder responder o que são e como usar: Variáveis, data types, operadores (controlar valores), conversão float-int (vice versa), delta time (independência de fps), operadores de condição (controlar o fluxo), constantes e entender uma piadinha.

"Já li e li, e ainda estou fazendo nada demais!"

Acalme-se meu jovem gafanhoto. Já passamos por muitas coisas importantes, mas ainda temos que fechar mais uma delas: Variáveis! ...E mais: Operadores, mais sobre condições, ainda as constantes, delta time...!



Variáveis

O que são? Onde vivem? O que comem?
Se você nunca leu/ouviu essa palavra antes, irá se cansar de ver a partir de hoje.

Vamos tentar ser diretos:
Variáveis são variáveis.

Tá, nem tanto:
Variáveis são espaços de memória usados para armazenar valores que podem ser facilmente manipulados e usados.

Entendendo a frase acima, você já pode dizer que sabe o que são variáveis para sua mãe. Mas vamos além:

Vamos supor que você tenha uma variável chamada "model" com o valor "400" (o número do modelo da Landstalker! Como você pode ver no vehicles.ide)
Código:
model = 400
E você quer ir para o próximo modelo, ou seja, você quer ir para o 401, e depois 402... 403...
Você pode fazer isso:
Código:
model += 1
Pronto.
A variável "model" guardava o valor de "400", e você aumentou "1". Agora a variável "model" tem o valor "401" (avançamos o modelo, agora temos o número do Bravura!)

E se agora fizermos...?
Código:
model += 20
A variável "model" agora terá o valor "421". Não há mistério.

Abaixo, um script completo demonstrando o uso das teclas "U" e "J" para aumentar e diminuir o valor da variável "model".


Código copiável:

Código:
SCRIPT_START
{
NOP

LVAR_INT model //defini uma variável

model = 400 //dei o valor "400" para ela

mainloop:
WAIT 0

// aqui eu aumento ou diminuo o valor da variável dependente da tecla apertada
IF IS_KEY_PRESSED VK_KEY_U
    model += 1
    WHILE IS_KEY_PRESSED VK_KEY_U //aguardar enquanto ainda estou segurando a tecla U
        WAIT 0
    ENDWHILE
ENDIF
IF IS_KEY_PRESSED VK_KEY_J
    model -= 1
    WHILE IS_KEY_PRESSED VK_KEY_J
        WAIT 0
    ENDWHILE
ENDIF

PRINT_FORMATTED_NOW "model = %d" 1000 model //mostrei o valor da minha variável na tela

GOTO mainloop
}
SCRIPT_END
Você pode compilar e testar dentro do jogo.

Qual a real utilidade das variáveis?
Meu amigo. Você nem imagina.
Por exemplo, você quer criar um carro no jogo, e você tem a opção de usar uma variável para dizer ao jogo qual modelo ser e qual posição ele tem que ficar! E depois de criado, o carro em si também ficará dentro de uma variável que pode ser usada para por exemplo trancar as portas do carro, fazê-lo andar etc.
Mas ainda aprenderemos à criar carros, pedestres etc em breve :)

Mas, você lembra daquele comando SPAWN_VEHICLE_BY_CHEATING que criamos um ELEGY usando ele? Ele é uma forma simples de criação de um carro (como um "cheat"), e podemos usar ele neste código! Basta enviarmos a nossa variável "model" para o comando.

Adicione isso abaixo em algum local do loop do código acima (lá no meio junto com os outros IFs).
Código:
IF IS_KEY_PRESSED VK_KEY_H
    SPAWN_VEHICLE_BY_CHEATING model
    WHILE IS_KEY_PRESSED VK_KEY_H
        WAIT 0
    ENDWHILE
ENDIF
Teste isso dentro do jogo.

Não, sério? Mal começamos a aprender cleo e já criamos um car spawner??
Sim! Você tem um car/vehicle spawner dentro do jogo agora. O único problema é que se você tentar spawnar um ID que não existe (por exemplo 399 ou menos, ou 612 ou mais) vai dar crash. Pode ser facilmente corrigível, mas vamos prosseguir o tutorial...

Eu ainda tocarei mais nesse assunto de controle de valores. Você ainda aprenderá mais.
Antes vamos focar no que as variáveis são:


Definindo variáveis


No exemplo acima, você pode ver esta linha:
Código:
LVAR_INT model
Afinal, o que é isso? Primeiro precisamos saber o que é "data types".

Data types
Como explicado na parte anterior do tutorial, os computadores funcionam com um monte de "1" e "0", mas como eles sabem usar estes bits da maneira correta? É para isso que existem os data types, para dizer o que aqueles bits são (se são um número, ou texto etc).

Em programações, isso é realmente muito importante, mas nem todas, como o caso do nosso GTA3script, onde você não precisa se importar tanto assim. Para a sua alegria.

No exemplo acima, definimos uma nova variável local (LVAR) com data type INT que quer dizer "Integer" — "número inteiro", lembra das suas aulas de matemática no ensino fundamental que você chamava de inúteis? — e demos o nome para esta variável de "model" — o nome é você quem escolhe!!!

Os data types disponíveis no GTA3script são:
INT
FLOAT
TEXT_LABEL
TEXT_LABEL16

Descrições:
INT = Integer = Inteiro.
Exemplos: 0, 1, 1000, -1, 50, 245, -400, 530912...
Nota: Quase sempre você usará este data type.

FLOAT = Floating point = Ponto flutuante = Reais.
Exemplos: 0.0, 1.0, 220.1, -10.4, 5012.423...
Nota: No Brasil nós conhecemos os números reais por vírgulas, e não por pontos, ou seja, "1,5" querendo dizer "um e meio", mas aqui é usado "1.5".

TEXT_LABEL = Simplesmente um texto, mas com limite de 7 letras!
Exemplos: "EXEMPLE", "MYTEXT", "HelloWo", "test", "test 2", "So Isso"...
Nota: Se você entende outras programações, isso é uma "string" — mesmo que você não entenda, lembre-se disso, pois o nome "string" é o mais usado.

TEXT_LABEL16 = O mesmo acima, mas agora com limite de 15 letras!
Exemplos: "Aqui um exemplo", "OUTRO EXEMPLO", "mais outro aqui!", "Sera que vou ca"...
Nota: Isso pode ser chamado de "long string".

Nota: Por que 7 e não 8? Por que 15 e não 16?
Na verdade, variáveis definidas como text labels são na verdade 8 e 16 bytes, mas o último byte é um "null terminator" que tem o objetivo de dizer "acabou o texto!", portanto na verdade só cabe 7 ou 15 letras, enquanto o último espaço para letra é só um "0" dizendo que acabou o texto.
Nota para os programadores avançados: Não, não temos double e muito menos diferentes tipos de integers. Todos os nossos integers são int32 pois todas as variáveis o jogo funcionam com 4 Bytes. E isso nunca muda. Assim como as variáveis de string são na verdade um ponteiro para uma sequência de 2 ou 4 variáveis (para assim ter 8 ou 16 Bytes).

E assim, na hora de defini-las, adicione um "LVAR_" no início da linha, e em seguida o datatype. Por exemplo: "LVAR_INT".

Variáveis locais e globais
O "LVAR" diz "local variable" (variável local), enquanto "VAR" é para "variável global".
Variáveis locais se comunicam somente localmente (só ali naquele lugar), enquanto as globais se comunicam globalmente (ou seja, com todas as threads do jogo, todos os mods, todo o main.scm, todas as missões etc).
Definir novas variáveis globais em custom scripts é errado e o GTA3script até te impossibilita de fazer isso — antigamente, e até hoje iniciantes usando Sanny Builder publicam mods fazendo isso! Estraga o GTA da pessoa de diversas maneiras.

O assunto de "variável local VS variável global" não falarei aqui para não ficar tão longo. Será explicado em breve e será útil caso você esteja querendo criar Multifiles (arquivos .scm). Você só usará as locais (LVAR) agora.

E onde posso definir as variáveis?
Somente dentro dos escopos/scopes (entre chaves {}):
Código:
{
LVAR_INT var
}
Mas o que são os escopos?
Você não precisa se preocupar agora. Lembra que em todos os nossos códigos tínhamos início e fim iguais e a única coisa que editávamos era o miolo?

Simplesmente continue fazendo assim. Em breve você aprenderá a usar melhor os escopos, mas em maioria, você sempre fará desta maneira e tudo estará ali dentro no miolo. Você nem ao menos deve entender ainda aquele NOP ali!

Mas como funciona exatamente a definição de uma variável?

Portanto, isso não funciona:

Você pode definir variáveis em qualquer lugar, mas geralmente elas são definidas no topo, nas primeiras linhas do seu script.


Operadores

Voltando ao início desta parte do tutorial, você pode controlar o valor das variáveis usando os chamados "operadores".

Perceba que você é bem livre em fazer o que quiser.

Você pode até mesmo fazer isso:

Nota:
Somente 1 operador! Não há como fazer coisas como "var1 + var2 - var3 / var4" etc.

Okay, isso foi muito fácil, né?

Por exemplo você quer criar uma coisa 10 metros acima do CJ: Pegue a coordenada do CJ, aumente 10.0 na variável da coordenada Z que você terá a altura do CJ + 10.0!
Eita, não entendi!
Não se preocupe. Se você é realmente muito iniciante no GTA, você possivelmente nem sabe ainda o que são coordenadas, XYZ etc.
Explicação rápida: Coordenada é a posição, onde são separadas em X (direita-esquerda), Y (frente-atrás) e Z (cima-baixo), e no GTA3script você tem comandos para pegar a coordenada.

Com o tempo você vai aprendendo muita coisa sobre o jogo. É tudo natural.


Mas há uma possível confusão que você possa fazer com isso:

Quando você faz isso, você não está "clonando" variáveis, você só está pegando o valor da variável 2, e colocando na 1! Nada além disso.

Também, note que sempre é na esquerda que terá o valor resultado, enquanto na direita terá a variável ou número a ser feito a operação.
Sempre leia como "ISTO é o resultado DISTO". Ou seja, ISTO (esquerda) é o resultado DISTO (o que está na direita). Memorize.


Mais operadores


Conversão INT - FLOAT / FLOAT - INT
Você muitas vezes pode precisar converter um tipo de variável para o outro: Transformar um FLOAT num INT por exemplo.

Neste exemplo, eu tenho uma variável FLOAT (fVolume) com o valor "30.0" e eu transformei este valor em um INT, colocando-o na variável INT (iVolume).
Deste modo, agora eu tenho duas variáveis: Uma com o valor "30.0" (fVolume) e a outra com o valor "30" (iVolume).

Se fosse isso:

A minha variável "iVolume" teria o valor inteiro "29".

E isso:

Adivinha?

Não, não será 30. Será 29 também.

Um dos exemplos de uso: Ao fazer uma divisão ("/=") ou multiplicação ("*=") com números inteiros (INT) pode ter problemas por causa das sobras (por exemplo o resultado de 3 / 2 é 1,5), então, você pode temporariamente converter o valor para FLOAT, fazer a conta, e re-converter para INT.

Assim também como há opcodes que pedem números inteiros e não reais (floats). Por exemplo você quer mostrar o número do volume na tela, e é mais interessante você mostrar um "Volume: 29" ao invés de um "Volume: 29.2" (além de ser também mais fácil, em certos casos)


Delta time
Delta time é usado para um valor calculado em loop seja independente do FPS do jogo, ou seja, útil (útil não, obrigatório!) para por exemplo fazer movimentos em objetos quaisquer.

Isso pode ser um assunto um pouco complicado de entender o motivo, mas se você entendeu bem o início do tutorial onde expliquei sobre o funcionamento do jogo, dos WAITs e de seu FPS, você conseguirá entender fácil:

Código copiável:

Código:
SCRIPT_START
{
NOP

LVAR_FLOAT posicao
posicao = 0.0

main_loop:
WAIT 0

posicao += 5.0
IF posicao > 640.0
    posicao = 0.0
ENDIF

DRAW_RECT (posicao 224.0) (20.0 20.0) (255 0 0 255)

USE_TEXT_COMMANDS FALSE
GOTO main_loop
}
SCRIPT_END

Teste isso dentro do seu jogo. Você verá um quadrado vermelho movendo na sua tela da esquerda pra direita.

Perceba que este quadrado muda de velocidade caso o FPS do seu jogo mude! É este problema!!!
Se você está a 60 FPS, o quadrado irá se mover 2X mais rápido que estar a 30 FPS, devido ao funcionamento dos códigos; de um PC, como eu já expliquei lá no comecinho nas primeiras partes do nosso tutorial. Pois quanto mais FPS, mais rápido o seu script irá rodar, e mais vezes irá fazer o quadrado ir pro lado.

Para corrigir isso, se usa o operador "@", ou seja, se você entendeu o código acima, verá que a velocidade de movimento do quadrado é esta linha:
Código:
posicao += 5.0
Basta adicionarmos o "@" para ser independente de FPS:
Código:
posicao +=@ 5.0
Faça isso e agora teste no jogo! O quadrado irá se mover na mesma velocidade, seja lá qual for o seu FPS.

Isso não é só usado para movimentos, mas também rotações e quaisquer outras coisas que precisem aumentar/diminuir em um loop!


Operadores de condição
E que tal os operadores condicionais? Sim, lá do nosso tutorial de condições!

No exemplo acima irá mostrar "Tenho muitas laranjas!" na tela.
O operador ">" retorna verdadeiro caso o valor da esquerda seja MAIOR do que o valor na direita.
Leia isso como: "SE um É MAIOR do que o outro".
Assim como "<" é o inverso, ou seja MENOR.

Para checar se o valor é igual ao outro:

Não irá mostrar nada na tela, afinal, eu tenho 20 laranjas e não 10!
Se fosse "IF NOT" checará se eu NÃO tenho, e assim daria verdadeiro.

E agora?

Agora eu chequei se tenho 10 ou mais do que 10. E sim, eu tenho 20, então dará verdadeiro, assim como se eu tivesse 10 também daria verdadeiro.

E é claro, nós podemos checar variável contra variável:

No exemplo eu chequei se o valor da variável "laranjas" é igual ao de "mangas". Dará falso, pois "laranjas" é "20" e "mangas" é "15"! Não mostrará nada na tela.

Aqui dará verdadeiro no segundo:


Eu não preciso fazer 1 bilhão de exemplos aqui, você com certeza já entendeu :)
Isso é uma das coisas mais usadas durante a criação dos scripts e você ter aprendido isso foi um grande passo!


Text labels (strings)

O uso de uma variável text label (string) é igual, mas, é claro, bem limitada.

Veja este exemplo legal:

Código copiável:

Código:
SCRIPT_START
{
NOP

LVAR_INT numero_da_camisa
LVAR_TEXT_LABEL tamanho_da_camisa

numero_da_camisa = 2

IF numero_da_camisa = 1
    tamanho_da_camisa = PEQUENA
ENDIF
IF numero_da_camisa = 2
    tamanho_da_camisa = MEDIA
ENDIF
IF numero_da_camisa = 3
    tamanho_da_camisa = GRANDE
ENDIF

PRINT_FORMATTED_NOW "Tamanho da camisa: %s" 5000 $tamanho_da_camisa

}
SCRIPT_END

Será mostrado na tela do jogo "Tamanho da camisa: MEDIA".
Pode ter ficado meio confuso para você no PRINT_FORMATTED_NOW. Basicamente, o "%s" será trocado pelo valor da variável de string (%s) que vem em seguida (ou seja, a variável "$tamanho_da_camisa"), e como sabemos, o valor da nossa variável é "MEDIA".

O motivo de usarmos um "$" no início do nome da variável, é que o compilador não sabe diferenciar o que deveria ser uma variável ou um texto puro.
Você não precisa se preocupar com isso pois caso você não tenha colocado o "$" o compilador irá te dar um alerta de nível verde (do tipo "Tá certo isso, Arnaldo?") para você dar uma olhada se você realmente quis fazer isso.

Então você verá e "opa, tenho que colocar o $", e coloque, e pronto. Se não colocasse, apareceria na tela: "Tamanho da camisa: TAMANHO_DA_CAMISA".

Caso não seja uma palavra, e sim uma pequena frase, você deve usar aspas duplas ("").

Ou de uma forma menos dinâmica usando o PRINT_STRING_NOW,
Ou, se preferir, o uso de underlines "_" ao invés de espaços. Mas não vejo motivos.

Coisas do tipo...:

Não funcionam!
Uso de text labels (strings) são limitados. Você precisa fazer coisas mais complexas para por exemplo saber quantas letras cada string tem e assim saber qual é maior que a outra etc. Se bem que isso não é grande problema devido a isso ser raro de ser usado num script. E se precisa, você pode usar isso.


Constantes

Pensei em deixar em parte separada, mas isso é muito simples e óbvio!

Vamos ser diretos:
Constantes são constantes.
Tá, parei.

Sugiro que você trate "constantes" como "atalhos" ou alguma coisa assim.

O motivo de usarmos, é que é realmente ruim ficar usando números toda hora, as vezes queremos dar nomes aos números. Simplesmente é para isso que as constantes servem.

São ótimas principalmente pela fácil alteração. Por exemplo, você quer editar o limite do seu volume, é só ir ali na definição da constante e mudar o "30.0" :)

O que é importante você saber, é que: Constantes são só uma coisa para VOCÊ! Para o programador. Não irá para o produto final, é só uma coisa para te ajudar (como os comentários!)
No código acima, é exatamente a mesma coisa de eu ter digitado isso:


É diferente de variáveis pois é um número estático definido por você no seu código fonte, e não um número manipulável dentro do jogo: Variáveis são variáveis. Constantes são constantes e não variam!

Código copiável:

Código:
SCRIPT_START
{
NOP

LVAR_INT total_de_laranjas
LVAR_INT caixas

CONST_INT QUANTIDADE_DE_LARANJAS_POR_CAIXA 30

caixas = 2

total_de_laranjas = caixas * QUANTIDADE_DE_LARANJAS_POR_CAIXA

PRINT_FORMATTED_NOW "Eu tenho %d laranjas em %d caixas." 10000 total_de_laranjas caixas
}
SCRIPT_END

Você pode querer fazer isso para organizar melhor o seu código, assim como deixá-lo melhor para ser entendido etc :)
Nota: Eu usei letra maiúscula pois prefiro assim. Assunto de conversões de códigos, é como definir um padrão para ser seguido (e a Rockstar faz igual).

Você verá mais de constantes quando você se aprofundar nos comandos. Por exemplo, há comandos como o de trancar a porta do carro que aceita uma constante por padrão (do próprio compilador, que não precisa ser definida), e lá você facilmente tranca ou destranca a porta de um carro usando palavras ao invés de números — o que é bom!


TRUE e FALSE
Devido ao GTA3script não ter variáveis boolean (quem entende de programações sabe do que estou falando), nós temos uma gambiarra de usar uma constante com nome "TRUE" (verdadeiro) e outra com nome "FALSE" (falso) que na verdade tem o valor de "1" e "0" — lembra daquele ensinamento de 1 e 0 que fiz umas partes atrás? Mas ao invés de usarmos o "1" e "0" é muito mais interessante usar "TRUE" e "FALSE" em certas ocasiões, né? Fica melhor para leitura:

Código copiável:

Código:
SCRIPT_START
{
NOP

LVAR_INT laranjas
LVAR_INT muitas_laranjas

laranjas = 5

main_loop:
WAIT 0

IF laranjas >= 10
    muitas_laranjas = TRUE
ELSE
    muitas_laranjas = FALSE
ENDIF

IF muitas_laranjas = TRUE
    PRINT_FORMATTED_NOW "Voce ja tem %d! Nao precisa de mais!" 1000 laranjas
ELSE
    laranjas += 1
    PRINT_FORMATTED_NOW "Pegue mais uma! Total: %d" 1000 laranjas
    WAIT 1000 // tempo de espera para ler a mensagem na tela
ENDIF

GOTO main_loop
}
SCRIPT_END
É claro, este código poderia ser escrito sem o uso de TRUE e FALSE, mas o que importa é a explicação.

Nota: As constantes "TRUE" e "FALSE" são definidas por padrão, você não precisa defini-las, é só pegar e usar!




Legal! Você já aprendeu condições e variáveis, duas coisas mais importantes para aprender a programar!

Se você já viu e nunca entendeu essa piada antes, possivelmente agora você entenda:
Spoiler:
E você consegue simular esta piada em um código? Tente!

Se não conseguir (você deveria ter conseguido!!!), aqui está:

Spoiler:

Código:
SCRIPT_START
{
NOP

LVAR_INT garrafas_de_leite
LVAR_INT ovos
ovos = TRUE

garrafas_de_leite = 1 // peguei uma garrafa

IF ovos = TRUE // tem ovos
    garrafas_de_leite = 6 // peguei 6
ENDIF

PRINT_FORMATTED_NOW "Por que diabos voce comprou %d garrafas de leite?" 4000 garrafas_de_leite
WAIT 4000
PRINT_STRING_NOW "Porque eles tinham ovos!" 2000
}
SCRIPT_END



Que tal agora fazer um exercício para colocar em prática o que você aprendeu sobre condições e variáveis?

A seguir, você terá um exercício prático para fazer :)


Próxima parte:
10. Exercício #1

______________________________

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

Re: 9. Variáveis e constantes

em Sex 27 Jan 2017, 20:04
Meu spawner de carros:
Spoiler:

Código:

SCRIPT_START
{
    NOP
   
    LVAR_INT model
    model = 400

    LVAR_INT ativado
    ativado = 0

    main_loop:
    WAIT 0

    // LIGAR E DESLIGAR O SPAWNER
    IF IS_KEY_PRESSED VK_INSERT // CHECAR SE APERTOU A TECLA DE LIGAR O SPAWNER DE VEÍCULOS
        IF ativado = 0 // SE ESTIVER DESLIGADO, LIGAR O SPAWNER
            ativado = 1
            PRINT_STRING_NOW "Car spawner ligado", 1000
        ELSE // SENÃO DESLIGAR O SPAWNER.
            ativado = 0
            PRINT_STRING_NOW "Car spawner desligado", 1000
        ENDIF

        WHILE IS_KEY_PRESSED VK_INSERT // EVITAR QUE A PESSOA SEGURE A TECLA E FIQUE TROCANDO BEM RÁPIDO ENTRE LIGADO OU DESLIGADO
            WAIT 0 // ENQUANTO SEGURA A TECLA NÃO FAZ NADA, MAS ESSA PARTE VEM DEPOIS DA PARTE PRINCIPAL, ENTÃO EVITA FAZER A MESMA COISA NOVAMENTE
        ENDWHILE

    ENDIF // FIM DA PARTE QUE CHECA SE APERTOU A TECLA DE LIGAR O SPAWNER DE VEÍCULOS

    // TROCAR O MODELO QUE SERÁ SPAWNADO
    IF ativado = 1
        IF IS_KEY_PRESSED VK_RIGHT
            model += 1
        WHILE IS_KEY_PRESSED VK_RIGHT
            WAIT 0
        ENDWHILE
        ENDIF

        IF IS_KEY_PRESSED VK_LEFT
            model -= 1
            WHILE IS_KEY_PRESSED VK_LEFT
                WAIT 0
            ENDWHILE
        ENDIF
   
    //MOSTRAR O ID DO MODELO
        PRINT_FORMATTED_NOW "ID do modelo: %d", 1000, model
    // EVITAR QUE O ID SEJE DE UM MODELO QUE NÃO EXISTE
        IF model < 400
            model = 400
        ENDIF

        IF model > 611
            model = 611
        ENDIF

    // SPAWNAR
        IF IS_KEY_PRESSED VK_DOWN
            SPAWN_VEHICLE_BY_CHEATING model
            WHILE IS_KEY_PRESSED VK_DOWN // EVITAR SPAWNAR UM CARRO A CADA FPS
                WAIT 0
            ENDWHILE
        ENDIF
    ENDIF
    // VOLTAR PARA O COMEÇO
    GOTO main_loop
}
SCRIPT_END
Bugs:
Está dando crash ao spawnar trens
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : ;-;
Mensagens : 672
Reputação : 111
Desde : 22/09/2015
Idade : 19
Localização : Salvador - BA
Ver perfil do usuário

Re: 9. Variáveis e constantes

em Sex 27 Jan 2017, 20:37
SPAWN_VEHICLE_BY_CHEATING não dá com trens mesmo, tem que ser CREATE_CAR.

PS: Como você inicializou as vars ali no topo do script, o NOP se tornou inútil, mas isso já é costume. Fuch That Guy

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

Re: 9. Variáveis e constantes

em Sex 27 Jan 2017, 20:55
DouglasB2310 escreveu:Bugs:
Está dando crash ao spawnar trens
IS_THIS_MODEL_A_TRAIN Yea baby.

Trens são um saco, melhor desativar totalmente eles, pois eles só são úteis ao criar nos trilhos lá bonitinho.

______________________________

avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 83
Reputação : 0
Desde : 01/03/2017
Idade : 13
Localização : São João da Boa Vista-SP
Ver perfil do usuário

Re: 9. Variáveis e constantes

em Qua 01 Mar 2017, 15:04
Como definir variável para o cj?
LVAR_INT= model 0    ??????????????
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21907
Reputação : 674
Desde : 03/05/2012
Idade : 21
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: 9. Variáveis e constantes

em Qua 01 Mar 2017, 15:21
AlphA escreveu:Como definir variável para o cj?
LVAR_INT= model 0    ??????????????
Olha, último aviso: LEIA OS TUTORIAIS

Ou melhor: Não leia os tutoriais, pois pelo visto você é uma daquelas pessoas que "querem fazer sem aprender", o que na introdução eu disse que esse tipo de pessoa nunca vai pra frente.

______________________________

avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 83
Reputação : 0
Desde : 01/03/2017
Idade : 13
Localização : São João da Boa Vista-SP
Ver perfil do usuário

Re: 9. Variáveis e constantes

em Qua 01 Mar 2017, 15:50
Junior_Djjr escreveu:
AlphA escreveu:Como definir variável para o cj?
LVAR_INT= model 0    ??????????????
Olha, último aviso: LEIA OS TUTORIAIS

Ou melhor: Não leia os tutoriais, pois pelo visto você é uma daquelas pessoas que "querem fazer sem aprender", o que na introdução eu disse que esse tipo de pessoa nunca vai pra frente.
Vc acha que estou nesse tópico fazendo o q??
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 27
Reputação : 0
Desde : 14/05/2017
Idade : 17
Localização : Paracatu
Ver perfil do usuário

SPOILER

em Sab 27 Maio 2017, 10:23


Última edição por vmrgbk em Sab 27 Maio 2017, 10:50, editado 1 vez(es) (Razão : Renovei)
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 35
Reputação : 0
Desde : 21/01/2017
Idade : 13
Localização : Linhares - Es
Link : http://pequenomodsbrasil.blogspot.com.br/
Ver perfil do usuáriohttp://pequenomodsbrasil.blogspot.com.br/

Re: 9. Variáveis e constantes

em Seg 26 Jun 2017, 12:20
expected statement duas linha model += 1 e model -= 1

______________________________

avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18808
Reputação : 342
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: 9. Variáveis e constantes

em Seg 26 Jun 2017, 12:57
thiagograssi escreveu:expected statement duas linha model += 1 e model -= 1

Como está o resto do código?

______________________________

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 : 6
Reputação : 0
Desde : 04/08/2017
Idade : 15
Localização : Nordeste
Link : www.youtube.com/channel/UCX8XsyRXHrMUvP1Z-SSRh0A
Ver perfil do usuário

Re: 9. Variáveis e constantes

em Sex 04 Ago 2017, 21:31
Ta me ajudando pra caralho Junior, otimo tutorial.

______________________________
KK EAE MEN :)
Conteúdo patrocinado

Re: 9. Variáveis e constantes

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