"Pra quê vou ler a introdução? Desnecessário."
Opa! Se isso passou pela sua cabeça ao vir aqui, você já começou mal.
Cuidado onde você pisa ou deixa de pisar.
"Por que estou aqui?"
Acredito que você veio até aqui pois quer aprender a "
criar mods cleos" para GTA San Andreas, III ou Vice City.
Em minha visão, você é um leigo que nunca sequer ouviu falar sobre "programação" antes, ou pelo menos nunca chegou a tentar fazer uma coisa com ela. Ou no máximo a única linguagem que você sabe é BBCode de fóruns ou HTML básico. Você não é um programador.
Mas posso estar errado, e você é na verdade um programador experiente, ou pelo menos sabe o que faz, e está aqui para aprender uma nova programação. Não sei!
Este tutorial foi escrito mais voltado ao primeiro caso. O caso onde você — leitor — é só um cara curioso e com sede de aprender (ou só quer fazer mods para contar pros amiguinhos da escola como você é nerdinho).
Este é um tutorial diferente
Este não é um tutorial de programação onde o "professor" te dá um monte de palavras difíceis e símbolos para todo lado e te obriga a misturar tudo.
Os textos deste tutorial foram escritos com um tom informal, buscando um certo divertimento, como algumas pequenas atividades no meio para você parar um pouco de ler e ir praticar etc.
Este tutorial é muitíssimo prático. Ao decorrer do tutorial você terá dezenas de códigos completos prontos para você ler, e já ver na prática o uso.
Às vezes pode parecer muito longo com muito texto, mas é porque eu tento "conversar" com você e simular o que você possivelmente fará durante a criação de um mod. Inclusive, às vezes posso até falar coisas óbvias para te lembrar daquilo e você não esquecer.
Este tutorial não foi escrito de qualquer jeito! Na real, várias vezes eu reescrevi partes inteiras em busca de explicações mais simples de entender, buscando sempre explicações fáceis. Inclusive, este é o terceiro tutorial de CLEO que estou escrevendo, mas o primeiro a ser publicado!
E não entenda mal, o modo simplificado de explicações deste tutorial pode às vezes parecer ter sido escrito por uma pessoa que não entende do que está falando, mas não é bem assim.
"Se você não consegue explicar de maneira simples, você não entende o suficiente".
Inclusive, você já deve me conhecer ("Junior_Djjr") ou mesmo que não conheça, com certeza já deve ter usado mods meus. Portanto, pode confiar na qualidade deste tutorial.
Eu tentarei usar palavras e termos fáceis e simples, posso às vezes não conseguir, mas pelo menos tentarei. Eu espero sinceramente que todas as pessoas entendam cada frase dita aqui.
!!! Alerta !!!
Se você já é um programador do Sanny Builder ou MoonLoader, você pode não precisar deste tutorial.
LINK/2012 fez
um tutorial no estilo "Learn X in Y minutes" que te ajudará a migrar rapidamente para o GTA3script.
Mas você também tem opção de rever o que já sabe (revisão é sempre bem vinda) e continuar lendo este tutorial para aprender coisas novas.
O que é programação?
Como o próprio nome diz, é uma "linguagem", onde com esta linguagem, você conseguirá se comunicar com um computador. Você conseguirá falar com ele. Sim.
No GTA3script você criará um código (chamado de "script" ou "roteiro"), e terá um compilador. O compilador terá o trabalho de compilar o seu código para o formato que o computador lê. E ele lerá. E fará tudinho que você pediu pra ele fazer. Literalmente.
O computador é legal, ele te responde perfeitamente, desde que você saiba se comunicar com ele corretamente! E é pra isso que existem tutoriais de programação, e por isso que tais tutoriais são geralmente tão grandes e cheios de texto. Você nunca conseguirá aprender programação corretamente assistindo um monte de vídeos no Youtube. Entenda isso. Em programação, leitura é tudo.
Garotos de programa -digo, programadores, estudaram incansavelmente para fazer o que conseguem, e com você não será diferente, e é aqui que iniciarei a fase de "Fuja enquanto há tempo".
Fuja enquanto há tempo!
Se você é iniciante em programações, tenha em mente que você pode demorar meses para ter habilidade. É sério, não estou exagerando.
Tuning Mod é o meu atual maior projeto, e eu iniciei ele em 2012, continuei até
2016 2018. Por quê? Porque eu não tinha conhecimento o suficiente. O tempo se passou, ganhei habilidade, reescrevi o código dele 3 vezes, já são mais de
30 40 mil linhas de códigos com um habilidade adquirida em 4 anos. Fazer isso não é fácil.
Se você for um bom estudante (e/ou eu for um bom professor aqui) conseguirá fazer coisas legais em uma, ou poucas semanas em vez de meses. Mas aprender de verdade mesmo (diríamos, "fluente"), requer meses de muita leitura, prática e frustrações.
(english)
E lembre-se, se está funcionando, não necessariamente está certo!
Você não só terá que aprender a fazer um código funcionar, como também
fazê-lo funcionar da maneira correta.
Programação é sim difícil, mas se você tiver fácil aprendizado, boa atenção e muita vontade, conseguirá aprender rápido.
Inclusive, o aprendizado de programação é infinito. Você nunca conseguirá chegar ao nível máximo, pois não existe o "máximo"! E isso inclusive dá um certo vício, já que quanto mais você aprende, mais você consegue aprender mais ainda e fazer coisas cada vez mais complexas. A diversão de programar é esta. É como você jogar um jogo difícil que nunca termina, e que cada vez fica mais difícil, e que cada vez você acha mais fácil de fazer as coisas difíceis.
Requisitos mínimos
Ter mais de 5 anos de idade;
Um PC;
Acesso à internet;
Dedos para (muita) digitação;
Algum GTA da Era 3D;
Entender o básico sobre usar mods;
Não ser um cara "só quero fazer sem aprender";
Não ser um cara "vou pular essa parte";
Saber pelo menos um pouco de inglês.
Requisitos recomendados
Ter mais de 7 anos de idade;
Ter muita atenção na leitura de grandes textos;
Gostar de PC e funcionamento das coisas;
Leitura;
Paciência;
Leitura;
Noção básica de matemática (alá ensino fundamental);
Leitura;
Saber usar muito bem o raciocínio lógico;
Saber bem o inglês básico;
Note que brinquei com a idade. Não foi por acaso.
Mesmo que estatísticas mostrem que quanto mais criança, menos conseguem fazer as coisas direito, é totalmente de se imaginar que, se a tal criança realmente tem vontade de aprender, ela irá aprender, e muito bem — de fato criança aprende mais facilmente que adultos devido ao cérebro estar sempre "aberto" à novas coisas.
Quando eu tinha 8/9 anos de idade eu já modificava uns joguinhos 2D fuçando nos arquivos deles. Aprendi sozinho, não tinha internet nem nada, só com a força de vontade. Assim como o LINK/2012 começou a criar mods cleos com 11 anos de idade; com 12 anos ele já me ensinava a criar scripts, com 14 anos começou a criar o que é hoje um dos melhores mods do mundo:
ModLoader, poucos anos depois,
se tornou um funcionário da Google, e hoje você estará aprendendo a programar com uma coisa que ele mesmo criou. Sim, você aprenderá uma programação "criada" (re-feita, pra ser mais exato, lançada em 2017) pelo LINK/2012 que é uma cópia quase perfeita da programação que a Rockstar North criou para criar os códigos do GTA! Olha só que coisa foda...
Antes de começarmos a aprender, vamos aumentar um pouco a sede:
GTA3script
// Você pode pular o texto abaixo, mas é uma curiosidade interessante e pode ser de seu interesse.
Se você é uma pessoa que entende bem da comunidade modding do GTA, sabe que o que fazemos é uma guerra contra a nossa própria falta de informação. Nós somos obrigados a documentar, pesquisar, descobrir informações sobre o funcionamento do jogo, pois a Rockstar nunca nos dá nenhum tipo de ajuda, não há suporte, não há nada, tudo o que nós fazemos é produto de nós mesmos!
Não deve ser todos que imaginam, mas o fato é que nós, modders, gostamos de tentar entender o desenvolvimento do jogo (é assim que o modding evolui! Nós fazemos uma verdadeira ciência) e sempre ficamos tentando imaginar como a Rockstar criou as coisas no GTA.
Quer dar uma olhada? Vai lá na pasta "data" do seu GTA SA e abre o arquivo "main.sc" com o bloco de notas.
Sim, eu estou te mandando fazer uma coisa, não é só pra ler aqui.
Este é um código de testes do funcionamento do jogo, usado no desenvolvimento do GTA III.
Sim, e ele está presente no GTA SA, VC e até no GTA IV. Daí você pergunta o motivo. E eu não sei. Ninguém sabe. É só a Rockstar fazendo Rockstarzisses.
Foi desta maneira que a Rockstar North criou os códigos de todos os GTAs da Era 3D (GTA III, VC, SA, LCS, VCS). E nós hoje temos uma réplica quase perfeita desse sistema (do III, VC e SA. LCS e VCS não).
Como conseguimos?
O arquivo main.sc é pequeno, mostra pouca coisa sobre como a Rockstar digitou os códigos, mas durante os lançamentos das versões mobile dos GTAs, fomos bombardeados por informações "vazadas", coisas que a gente pensa
"Como assim???", parece até que a War Drum Studios (quem portou o GTA III, VC e SA para mobile) está nos ajudando vazando as coisas propositalmente — se bem que eles até elogiam o nosso trabalho com o modding.
GTA III
Foi vazado o código fonte dos scripts (missões etc). Ou seja, o código fonte do main.scm!
Isso foi um passo gigante! Nós temos o código oficial das missões, submissões etc do GTA III, e podemos estudá-lo para entender com detalhes como a Rockstar fez tudo isso.
GTA VC
Foi vazado o compilador de GTA3script oficial da Rockstar.
Sério mesmo?? Isso quer dizer que nós podemos compilar os arquivos .sc (incluindo os main.sc) e fazer funcionar no jogo do mesmo modo que a Rockstar fez para criar o main.scm, além de criar os nossos próprios main.scm usando um compilador oficial da Rockstar! Nota: Somente para III e VC, mas com o LINK/2012 (com ajuda do Wesser e outros), podemos ter uma quase-réplica (bem diferente na prática, melhor! Mais moderna) deste compilador para GTA III, VC e SA, e você usará ele para criar seus scripts.
Nota: No Xbox também teve um debug.sc vazado.
GTA SA
Foi vazado a lista completa de todos os nomes dos comandos do GTA SA.
Você não têm noção.
Nós ficamos fucking 10 anos tentando entender e inventando nomes (contando só o SA!), e por fim, a lista completa de todos os nomes reais é vazada.
War Drum Studios, nós te amamos!
Se bem que a Rockstar até trocou de portadora depois disso! (possivelmente os vazamentos foi o motivo). Infelizmente assim não tivemos mais coisas vazadas, mas o resultado foi pior: Ao portar o GTA LCS para Mobile, a Lucid Games roubou texturas de mods para usar no port! Haha... Gente...
(preguiça de encontrar melhores fontes, uma aqui)
Depois desse bombardeamento de informações vazadas, nós evoluímos e estamos cada vez mais perto do "
Rockstar-like", criando os mods como a Rockstar criou o jogo! E neste tutorial, você aprenderá exatamente isso, a programar como a Rockstar North programou, a famosa linguagem de programação GTA3script.
Deseja ler mais sobre esse assunto de modo mais profundo e avançado?
Clique aqui.
GTA3script vs Sanny Builder vs MoonLoader
Como falei na seção acima, GTA3script é a programação de scripting criada pela Rockstar North para criar os scripts das missões (entre outras coisas, como ammu-nation, bar etc) dos jogos GTA da Era 3D (que tecnicamente são todos considerados "GTA 3").
Antes de nós termos todas as informações que temos hoje, nós chamávamos a programação usada pela Rockstar de "SCM", já que nem ao menos sabíamos o nome real da programação — só tínhamos uma dica, de que sabíamos que no GTA 2 é "GTA2script", e então pudemos confirmar ser "GTA3script" devido a vazamentos das versões mobile.
O termo "SCM" ainda continua sendo usado para falar do scripting destes GTAs, não importando a linguagem usada.
Se você antes deste tutorial já procurou aprender a criar mods cleos, já se deparou com códigos escritos dentro do
Sanny Builder criado pelo Seemann:
Já atualmente, o código acima pode ser escrito no estilo Rockstar, desta maneira:
Este foi escrito em GTA3script, o que você aprenderá.
Aproveitando, uma comparação com o novo
MoonLoader (Lua):
Perceba que, ao mesmo tempo que são muito diferentes, também são muito parecidas.
O legal é que: Você aprendendo um, aprenderá o outro.
Ou seja, você sabendo GTA3script, automaticamente terá facilidade em entender um código escrito no Sanny Builder, e até o momento, o que você mais vê pela internet ainda é do Sanny (espero que isso mude).
Veja também como as palavras usadas no código são diferentes. E quem é o mais correto nisso? O GTA3script! Já que o Sanny Builder é de uma época que nós nem ao menos sabíamos os nomes reais para usar nestes códigos, e assim inventamos tudo isso, e ficou muito impreciso (como eu já citei antes e enviei
este link que mostra na íntegra como foi). Até foi lançadas "DLCs" para o Sanny com os nomes corretos (de fato as versões recentes do Sanny Builder contém o modo "SCR" com estes nomes corrigidos), mas nada se compara com o verdadeiro GTA3script.
Nota: É claro que ambos os códigos acima podem ser escritos de maneiras diferentes, principalmente o do Sanny Builder, mas achei desnecessário tocar nisso. Inclusive preferi o uso de label ao invés de break.
Atualização:
Não muito tempo depois de eu ter escrito este tutorial chegou o
MoonLoader que possibilita criar mods usando a programação Lua.
Entenda: CLEO está para MoonLoader como GTA3script está para Lua.
Utilizar MoonLoader em vez de CLEO é ótimo, pois ele é muito mais poderoso, você pode querer aprender Lua utilizando MoonLoader após aprender GTA3script.
Por que depois?
Pois simplesmente não existe um bom tutorial de Lua para GTA, e acredite, após aprender GTA3script você já irá conseguir criar mods em Lua! Além do MoonLoader usar praticamente todos os mesmos nomes de comandos do GTA3script, nós estamos trabalhando no mesmo jogo, portanto as regras para fazer a maioria das coisas são iguais. Basta ver a comparação acima, os scripts são
muito parecidos, são os mesmos passos.
Outro motivo de aprender GTA3script é que você pode criar mods não só para GTA San Andreas, mas também para GTA III e GTA Vice City, diferente de Lua que no momento é só para GTA San Andreas. E de fato o MoonLoader não tem tanta boa compatibilidade como acontece na CLEO.
Por fim, GTA3script é perfeito para começar a aprender, principalmente com este tutorial, mas para mods mais complexos você vai preferir Lua, ou até mesmo C++ utilizando o
plugin-sdk — mas este último já é um outro nível absurdamente mais avançado! É sério, este é um projeto incomparável com CLEO e MoonLoader, é super poderoso.
O lado ruim do MoonLoader é que o projeto não passa segurança de estabilidade. Já foi lançado há anos e ainda é um beta sem boas documentações e várias incompatibilidades, diferente de CLEO e plugin-sdk, que são excelentes e extremamente estáveis. Eu particularmente pulei o MoonLoader, trabalho com CLEO (GTA3script) e plugin-sdk (C++).
Concluindo as diferenças:
Sanny Builder (CLEO) — perfeito para você que é um vovô que se apega às coisas antigas e vai morrer de câncer por fumar cigarro.
GTA3script (CLEO) — perfeito para mods simples, como cenas, ações e principalmente missões.
Lua (MoonLoader) — perfeito para mods que necessitam de ferramentas mais avançadas. Somente GTA San Andreas e em fase beta no momento.
C++ (ASI / plugin-sdk) — perfeito para quem é um programador hacker que mexe com magia negra.
GTA3script é fácil?
E para te deixar mais feliz ainda: GTA3script é uma linguagem de programação, muito, muito fácil...
Ela foi baseada na linguagem de programação chamada BASIC (Beginner's All-purpose Symbolic Instruction Code), onde até o nome já diz...
Podemos dizer que BASIC é uma linguagem... bem... Básica...
É uma linguagem bem old school, iniciada lá nos anos 80, como você pode ver
na Wikipedia.
É simples de digitar.
É simples de ler.
É simples de aprender.
E GTA3script é realmente bem parecida com ela.
Se você tem medo de programações pois olha pra uma e vê um monte de símbolos confusos (por exemplo
Python), vai gostar de aprender GTA3script! Praticamente nem há símbolos (e vários são até opcionais). Nem os famosos ";" no fim da linha existe, realmente nada, limpo. Letras e números!
English here
Quando você conseguir criar mods, você poderá publicar seus mods aqui mesmo no
Mod Showroom - Scripts para todo mundo baixar — e publicando o seu código fonte, podemos avaliar e lhe ajudar com a qualidade do seu script.
Eu não só recomendo a aprender para criar mods para GTA, mas também para iniciar alguma carreira com linguagens de programação.
Eu não sou um programador que sabe tudo, mas particularmente acho que aprender GTA3script é muito interessante para iniciantes em programação, ainda mais se tratando de que você irá modificar um jogo, o que é muito mais divertido do que ficar mostrando palavras e números em um console!
Gostou?
Tá, sem mais enrolação. Vamos começar.
Siga o índice com o link de todos os tutoriais aqui:
f15-tutoriais/t26-indice-de-tutoriais-c ... gta3script
Perceba que a cada parte do tutorial há um link "
Tópico antigo", pois este tutorial estava no
Fórum BMS e foi movido pra cá, portanto as mensagens antigas estão lá.
Próxima parte:
2. Preparações