Compartilhe
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21864
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

#. Gerador de carros estacionados e SAVE_THIS_CUSTOM_SCRIPT

em Sab 04 Fev 2017, 13:23

Quando usar?


Já vou começar assim: Usar geradores de carros (carros estacionados) não é tão interessante assim e você pode na grande maioria das vezes querer usar um método manual, na qual eu já ensinei:
Criação de carros, pedestres, objetos (uso de modelos)
Assim, daquele modo, é só você criar o carro, marcar ele como não mais necessário e só.

Aqui, será mais fácil, mas também mais preocupante...


Quais comandos usar?


Código:
SAVE_THIS_CUSTOM_SCRIPT
CREATE_CAR_GENERATOR
CREATE_CAR_GENERATOR_WITH_PLATE
SWITCH_CAR_GENERATOR

Pegue, e agora misture tudo!

Aqui um código pronto que cria um Elegy estacionado na frente da casa do CJ (na coordenada 2490.9143 -1682.3418 12.8685)

Código copiável:

Código:
SCRIPT_START
{
LVAR_INT car_generator

SAVE_THIS_CUSTOM_SCRIPT

CREATE_CAR_GENERATOR (2490.9143 -1682.3418 12.8685, 270.0) ELEGY (-1 -1) TRUE (0 0) (0 10000) car_generator
SWITCH_CAR_GENERATOR car_generator 101
SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR car_generator TRUE

}
SCRIPT_END
Lembrando mais uma vez que, os "(" ")" "," são só cosméticos e não influenciam de maneira alguma no funcionamento do código. Você inclusive pode preferir organizar eles de outro jeito.

Perceba que a linha do CREATE_CAR_GENERATOR é gigante! Há muitos argumentos que até dificulta olhar e saber o que é cada um, por este motivo eu peço para que você digite uma linha "do zero", digitando coisa por coisa para ver "na íntegra" as informações pipocando.

O comando já está muito bem documentado na gtamodding. Vou repetir e explicar um pouco mais aqui:


  1. Coordenada X
  2. Coordenada Y
  3. Coordenada Z
  4. Heading — ângulo/rotação Z, ou seja, para o onde o carro está apontado: 0.0 = norte, 90.0 = leste etc.
  5. ID do modelo (use -1 para ser um veículo aleatório baseado no local). Também aceitável a hash do nome do .dff do veículo.
  6. Cor primária — use -1 para uma cor aleatória baseada no carcols.dat do veículo.
  7. Cor secundária — idem acima.
  8. Forçar o spawm. Use "TRUE" (1) para evitar que o veículo não apareça.
  9. Porcentagem de chances para o veículo aparecer com alarme. (0~100)
  10. Porcentagem de chances para o veículo aparecer com a porta trancada. (0~100)
  11. Delay (atraso) mínimo para ser criado. Aparentemente não utilizado pelo jogo. A Rockstar sempre usou "0" aqui.
  12. Delay (atraso) máximo para ser criado. Aparentemente não utilizado pelo jogo. A Rockstar sempre usou "10000" aqui.
  13. Variável para ser armazenado o handle para o car generator. Por favor, não pense que aqui retornará uma variável do tipo "CAR", isso nem faria sentido, o que este comando faz é criar um gerador de carro, e não um carro. A variável retornada será um CAR_GENERATOR na qual pode ser usado em outros comandos sobre geradores de carros.


Pronto! Você acabou de criar um gerador de veículo, que gerará um veículo automaticamente naquela coordenada com tais especificações.

A variável retornada pode ser usada em comandos relacionados com geradores de carros.

O próximo comando que daremos uma olhada é este:
Código:
SWITCH_CAR_GENERATOR car_generator 101
Ele é interessante e não interessante ao mesmo tempo:
Use "0" para fazer o carro não aparecer e "101" para aparecer.
Perceba que estes números nem fazem sentido! Ou fazem...
"Mas no tutorial do LINK/2012 ele ensinou a usar outros números"
Sim, ensinou, e está errado. Possivelmente na época não havia este conhecimento.
Caso você usar número abaixo de "101" irá dizer ao jogo que ele tem que gerar um veículo num tanto de vezes, por exemplo, "50" fará gerar 50 veículos para em seguida nunca mais gerar nenhum. Mas devido a um bug do jogo, isso não funciona!
Portanto, é simples: "0" não aparecerá o veículo, e "101" aparecerá.

O importante é: Por padrão é "0"!!! Portanto você sempre tem que colocar "101" para o nosso gerador funcionar, senão ele só estará lá armazenado sem gerar nada.

E este:
Código:
SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR car_generator TRUE
Use este comando com TRUE para dizer ao jogo que o CJ é o dono do veículo. Resultado? A polícia não irá atrás dele quando ele entrar no veículo, ou seja, não será considerado roubo :)
Por padrão é "FALSE" (0), portanto se eu quisesse FALSE eu não precisaria ter usado este comando.

Mas ainda falta explicar um deles:
Código:
SAVE_THIS_CUSTOM_SCRIPT
Afinal o que diabos é isso?


Introdução ao SAVE_THIS_CUSTOM_SCRIPT


Este comando diz ao jogo (ou melhor, para a CLEO!) que este script deve ser salvo caso o jogo ser salvo.
Basicamente, o progresso do script será salvo, assim não voltando do início quando você carregar o jogo, continuará "de onde parou" com os mesmos valores de variáveis etc.

"Mas no quê isso é útil aqui??????"

O fato é que um gerador de veículos fica "preso" no save game. Ou seja, quando você salvar o jogo, este gerador ficará no seu jogo salvo.
Mas isso não é problema, muita coisa fica presa no save, é porque tudo foi feito pro main.scm, pra storyline do jogo, não somos culpados. O problema vem depois!
Se você iniciar um save game já com o car generator preso nele, o script adicionará mais outro car generator, ou seja, agora você terá 2 geradores iguais! Vai criar um carro por cima do outro!! Não seja eu em 2011!!!
E se você salvar o jogo mais uma vez? Terá 3!!! Isso vai se multiplicar.

O que este comando faz aqui neste caso, é literalmente desativar o script para sempre.

"Como assim?"

Este script só roda e termina. O que será salvo será a informação de que ele terminou, oras bolas. Assim a CLEO saberá que o script já terminou e nunca mais se ativará novamente naquele jogo salvo. Não ativando novamente, não duplicará os geradores.

A informação de script salvo fica armazenado na pasta "CLEO\CLEO_SAVES". Haverá arquivos lá dentro, se você deletar e entrar no jogo, o seu script voltará a rodar e criará novamente o gerador!

Eu só quero deixar claro que: Não é comum usar SAVE_THIS_CUSTOM_SCRIPT. Geralmente só é usado para este tipo de coisa mesmo, você dificilmente usará para outros motivos. Por exemplo, o mesmo problema acontece com ícones de radar, portanto num script que cria ícones no radar que ficam armazenados para informar um local, adicione um SAVE_THIS_CUSTOM_SCRIPT também para não duplicar os ícones sempre que salvar o jogo, assim o script rodará, criará os ícones, desligará, e caso salvar o jogo, os ícones ficam no jogo salvo, e o script nunca mais voltará a rodar naquele save.


Nota 1: Não, no momento não há como evitar ficar preso no save. Mas você inclusive pode editar o save por algum save editor. Lembro que alguns deles há como deletar os geradores, não sei se estou enganado.

Nota 2: Se você não quer passar por dor de cabeça com esses geradores, então passe dor de cabeça criando os carros manualmente. Dependente o caso é muito melhor. Eu inclusive recomendo caso você esteja criando alguma conversão total na qual você vai editar o main.scm etc, daí aproveite e adicione os geradores no main.scm! Eles se sentirão em casa! Pois, tipo, você cria os geradores no New Game, e quando salvar o jogo eles estarão salvos, e pronto, não duplicará, pois eles só são criados no New Game.

Nota 3: Tudo há limite. Se você quiser criar um mod de muitos geradores, vai ter que aumentar o limite: Use fastman92 limit adjuster, no .ini procure pela linha "#Car generators = 500", remova o "#" e aumente o "500" como necessário.

Nota 4: Para usar geradores com qualquer ID de veículo incluindo adicionados sem substituir: Use fastman92 limit adjuster, no .ini procure pela linha "#Accept any ID for car generator = 0", remova o "#" e deixe "1" (true).

Nota 5: Se você está querendo criar geradores não para um mod e sim para uso próprio, você pode querer preferir o uso do meu mod In-game Parked Car Creator (criar carros estacionados).


Finalizando

Agora adicionei um gerador numa outra casa ali na Grove, na qual pode aparecer algum veículo aleatório, em cor aleatória, e com possibilidade de ter alarme e porta trancada. E agora este carro não é do CJ — será considerado roubo se entrar nele.
Código:
SCRIPT_START
{
LVAR_INT car_generator

SAVE_THIS_CUSTOM_SCRIPT

CREATE_CAR_GENERATOR (2490.9143 -1682.3418 12.8685, 270.0) ELEGY (-1 -1) TRUE (0 0) (0 10000) car_generator
SWITCH_CAR_GENERATOR car_generator 101
SET_HAS_BEEN_OWNED_FOR_CAR_GENERATOR car_generator TRUE

CREATE_CAR_GENERATOR (2442.9546 -1643.8577 13.4659, 180.0) -1 (-1 -1) TRUE (50 50) (0 10000) car_generator
SWITCH_CAR_GENERATOR car_generator 101

}
SCRIPT_END
Perceba que eu usei a mesma variável para ambos os geradores. Ué, por que não? Eu já usei o que tinha que usar, posso reutilizar a variável para um novo agora, já que não preciso mais dela.

E que tal nós usarmos o comando CREATE_CAR_GENERATOR_WITH_PLATE ?
Código:
CREATE_CAR_GENERATOR_WITH_PLATE (2490.9143 -1682.3418 12.8685, 270.0) ELEGY (-1 -1) TRUE (0 0) (0 10000) "___CJ___" car_generator
Este comando inclui uma placa personalizada! :D

Use no máximo 8 letras/números. Use "_" para um espaço em branco.


Crítica

No tutorial do LINK/2012 para o Sanny Builder você pode ver críticas no próprio tutorial, e também nos comentários. Lá já dá uma boa demonstração de como isso é um problema.

É que "criar carros estacionados" é coisa muito youtuber mirim que acha que sabe fazer mods cleos...
Geralmente tutoriais destes são extremamente ruins e mal ensinados, e os mods que fazem tal coisa também são extremamente ruins! Eles conseguem aplicar erros até acima do normal, parece até proposital.
Um dos poucos erros, é usar isso em um loop. Imagine a pessoa em 60 FPS! Será criado 60 geradores duplicados por segundo!!! Além de não salvar o script e usar números sem sentido nos argumentos.

Espero que na "geração GTA3script" isso se limpe e as pessoas deem importância no aprendizado ao invés de fazer qualquer coisa que vem na mente ou aprender olhando códigos mal feitos dos outros, pois a "geração Sanny Builder" já explodiu de tutoriais ruins pela net!


Última edição por Junior_Djjr em Ter 07 Fev 2017, 14:52, editado 1 vez(es)

______________________________

avatar
Veterano
Veterano
Mensagens : 2915
Reputação : 81
Desde : 31/07/2013
Ver perfil do usuário

Re: #. Gerador de carros estacionados e SAVE_THIS_CUSTOM_SCRIPT

em Sab 04 Fev 2017, 13:49
Junior_Djjr escreveu:Use "0" para fazer o carro aparecer e "101" para fazer ele aparecer.
:v

______________________________
I̜mpe͢r͚at̲ivoͯ, ͘no̅ mụnd̶o͋ ̺sl͟o͗w
́Co͔m͢ó ̼a ̒p̎eçͦa̲ ̖MC͝s ̚só͊ ͡faz̀em̈́ ̛s̸p͆ee͌df̡l̡owͭ
̟Pͭra ̌que̲ ä́ p̐r͜es̋s͉aͤ?
avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 426
Reputação : 12
Desde : 12/01/2016
Localização : 127.0.0.1:25565
Ver perfil do usuário

Re: #. Gerador de carros estacionados e SAVE_THIS_CUSTOM_SCRIPT

em Seg 06 Fev 2017, 00:16
Elyzandro escreveu:
Junior_Djjr escreveu:Use "0" para fazer o carro aparecer e "101" para fazer ele aparecer.
:v

Colocar 0 faz o carro desaparecer.
http://www.gtamodding.com/wiki/014C
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: #. Gerador de carros estacionados e SAVE_THIS_CUSTOM_SCRIPT

em Seg 06 Fev 2017, 00:17
DouglasB2310 escreveu:
Elyzandro escreveu:
Junior_Djjr escreveu:Use "0" para fazer o carro aparecer e "101" para fazer ele aparecer.
:v

Colocar 0 faz o carro desaparecer.
http://www.gtamodding.com/wiki/014C
Sim, foi erro de digitação mas mais abaixo ele disse:
"Portanto, é simples: "0" não aparecerá o veículo, e "101" aparecerá."
Conteúdo patrocinado

Re: #. Gerador de carros estacionados e SAVE_THIS_CUSTOM_SCRIPT

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