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

#. Criação de carros, pedestres, objetos (uso de modelos)

em Ter 31 Jan 2017, 07:09


Este é o primeiro (e mais importante?) tutorial "opcional" da seção "Como fazer?", e acredito eu, todas as pessoas vão querer ler isso. Portanto, vou aproveitar e dar uma introduçãozinha:

"Como fazer?"
Nada adianta aprender a escrever um código, sem saber como fazer alguma coisa de útil, né? Por exemplo, não será apenas aprendendo a usar comandos que você automaticamente aprenderá a criar um carro no jogo, pois há muita coisa por trás.

Por este motivo, este tutorial tem vários "sub-tutoriais" na seção "Como fazer?" ensinando a fazer cada coisinha. É uma seção quase infinita que sempre pode ter coisa nova, mas começaremos com os básicos.

Importante: Só leia estes tutoriais de "Como fazer?" após já entender o básico de como escrever scripts! Pelo menos leia até a parte "Comandos" do "Essenciais", conseguindo já manobrar seus scripts, pois não será aqui que ensinarei isso — possivelmente as vezes, de leve.

Concluindo este tutorial você vai:
Conseguir criar veículos (CAR), peds (CHAR), objetos (OBJECT) e ter uma introdução sobre o carregamento e descarregamento de coisas, assim também auxiliando no uso de animações (IFP) e armas (WEAPONS) por exemplo.



Peça, pois você não tem!


A criação de carros, objetos e pessoas são praticamente as mesmas coisas (eu poderia resumir o título deste tutorial para "criação de entidades (entity/entities)". Como exemplo, vou ensinando a criar uma pessoa/ped/pedestre/ator/actor/char:
Código:
CREATE_CHAR
Okay, já começamos com o óbvio.

Um exemplo do comando com os argumentos, indicando a criação de um FAM1 no meio da Grove Street:
Código:
CREATE_CHAR PEDTYPE_GANG2 FAM1 2491.1077 -1667.8535 13.3437 my_char


Mas não é só isso que precisamos!

O ponto deste tutorial é: Antes de criarmos uma coisa, nós precisamos carregar o modelo dela. Sem o modelo carregado, não podemos criar, ou dará crash.

Mas isso é mais interessante do que você possa ter imaginado:

Marcar modelo como necessário / não mais necessário


Nós não usamos comandos para "carregar" e "descarregar" o modelo literalmente por comandos, pois isso seria ruim!
Pois o jogo funciona de modo diferente:

Código:
REQUEST_MODEL
MARK_MODEL_AS_NO_LONGER_NEEDED

Nós na verdade falamos para o jogo: "Ei, eu preciso deste modelo" e depois de você usar "Opa, não preciso mais dele", e quem irá cuidar do "carregar e descarregar" será o próprio jogo: "Legal, nenhum script está precisando deste modelo mais, então vou descarregar ele para liberar memória RAM".


Esperar carregar ou carregar agora?


Também, quando você diz ao jogo que você precisa de um modelo, ele não carrega instantaneamente, portanto você tem que esperar até que o jogo carregue:

Ou seja: Eu pedi (requisitei, "REQUEST") o modelo "FAM1", e em seguida, enquanto (WHILE) não (NOT) está carregado (HAS_MODEL_LOADED), fique rodando o WAIT 0 somente processando o jogo até que carregue. Quando carregar, o script sairá do WHILE e continuará seu caminho abaixo do ENDWHILE.

Mas também há este outro método que você pode gostar mais:

"Sério? Só isso?"
Sim! Você deve pensar "Mas então por que diabos há o outro método?"

É que é assim:

Imagine que você é um patrão e está pedindo para seu funcionário trazer umas caixas. E você tem duas opções:
1. Esperar até que ele traga. E você espera sossegado na sua cadeira tomando seu café.
2. Obrigar ele a trazer imediatamente. E você fica parado esperando até ele chegar.

Esperar até que ele traga é bom pois você não sobrecarrega, você deixará o jogo rodando livremente e quando ele estiver preparado, ele trará o modelo (a caixa) para você.

O segundo método você estaria obrigando o jogo a te dar o modelo (a caixa!...) no mesmo instante: Pode causar um pequeno freeze / lag spike caso o modelo seja pesado (alá carro BR); o disco do jogador seja lento (HD lento); você está carregando muitos modelos ao mesmo tempo; o jogador está já com muitos modelos sendo carregados e você está obrigando o jogo a carregar mais ainda assim causando freeze; etc...

Eu recomendo você usar o método 1 para evitar os problemas que eu disse acima.
O método 2 pode ser usado para poucos modelos, ou coisas pequenas (leves para carregar). Ou então você por exemplo está iniciando uma missão: A tela do seu jogo está preta (em fade), portanto não há problemas o jogo ter travadinhas por carregar muitos modelos pesados, então carregue à vontade! Irá carregar muito mais rápido do que pedir os modelos e esperar o jogo carregar. Agora, se o jogador está durante o gameplay, para evitar que ele tenha "lag spikes" (travadinhas), prefira o primeiro método, na qual não sobrecarrega o jogo da pessoa, mas o tempo de carregamento do modelo pode variar muito (ser instantâneo, ou demorar até uns 5 segundos caso seja muitos modelos pesados em um PC ruim).

Nota: E se o modelo que você pediu já está carregado? Já vai estar carregado! Oras...
O jogo cuida muito bem disso, se o modelo já está carregado, ele não carrega de novo, ele só vai passar e você já vai poder usar instantaneamente.

Nota 2: Mas se você por exemplo pedir o modelo 2 vezes e marcar como não mais necessário 1 vez, vai ser um problema! Pois o modelo ficará na memória RAM do jogo da pessoa enquanto ela joga, gastando memória atoa: O chamado memory leak (vazamento de memória). O facebook tinha este problema antigamente e a página tinha que ser recarregada, pois acumulava e seu navegador comia toda a memória RAM do seu PC!

Nota 3: O LOAD_ALL_MODELS_NOW é global! Ou seja, influencia todos os scripts na qual já deram algum REQUEST_MODELS. Em outras palavras, quando você usar o LOAD_ALL_MODELS_NOW, forçará o carregamento de todos os modelos já pedidos, mesmo não sendo do seu script mas sim também de outros scripts.
Um detalhe também é que este comando nunca foi usado no GTA (muito possivelmente porque foi feito com foco no PS2, onde tem carregamento muito lento). Mas atualmente com nossos HDs fica tudo mais rápido e abriu essa possibilidade de usarmos.


Quando usar?

O REQUEST_MODEL não há muito o que dizer: Carregue antes de tudo, mas prefira carregar todo o necessário ao mesmo tempo, ao invés de, por exemplo, carregar um modelo, criar um ped, carregar outro, criar outro etc na qual deixa tudo muito lento, ou deixaria o uso exagerado do LOAD_ALL_MODELS_NOW, podendo influenciar outros mods além do seu, como falei acima.

O MARK_MODEL_AS_NO_LONGER_NEEDED as pessoas causam muita confusão!
Quero deixar claro para vocês não errarem: Se você não vai mais usar o modelo, então use este comando!!!
É muito comum as pessoas errarem usando ele somente no "release total" do mod: Uma parte do mod onde descarrega tudo, apaga as coisas etc. Não precisa!!! Você pode usar até mesmo embaixo do comando de CREATE!
Leve o nome "MARCAR MODELO COMO NÃO MAIS NECESSÁRIO" ao pé da letra que você não irá errar!

Alguns exemplos:

Exemplo 1:


Exemplo 2:


Exemplo 3:

Atenção ao WHILE OR E NÃO WHILE AND!!! Acredito que muitas pessoas também farão esta confusão, o certo neste caso é OR! Se não entendeu o porque, leia devagar o código tentando entender o que acontecerá caso usasse "WHILE AND": Quebraria o WHILE (daria falso) caso algum dos modelos seja carregado, e não ambos. Dê uma olhada, entenda, e não erre!

Exemplo 4:


Por favor note que estes exemplos são misturas de possibilidades. Você pode escolher qual mais te agrada, mas lembre-se que fiz misturas de posições dos comandos só como demonstração e não precisa ser obrigatoriamente deste exato mesmo jeito.


O que você aprendeu aqui?

Não, você não aprendeu a carregar modelos de peds/skins/atores, você aprendeu a carregar modelos!
Isso serve para qualquer modelo!!! Seja arma, seja objeto, seja tudo!!! Serve até mesmo para animações (.ifp)!

Você pode ter ficado de saco cheio de ler tudo isso, mas foi um passo gigante, e não só um modelo de pedestre sendo carregado.



Vou ser bonzinho e te dar um script totalmente pronto para você poder facilmente editá-lo para testar alterações ensinadas aqui:
Código:
SCRIPT_START
{
LVAR_INT scplayer
LVAR_INT my_char

GET_PLAYER_CHAR 0 scplayer

main_loop:

// Enquanto o CJ ainda não chegou na Grove
WHILE NOT LOCATE_CHAR_ANY_MEANS_3D scplayer 2491.1077 -1667.8535 13.3437 100.0 100.0 100.0 FALSE
    WAIT 0
ENDWHILE

// O CJ chegou. Hora de requisitar o necessário
REQUEST_MODEL FAM1
LOAD_ALL_MODELS_NOW

// Carregado. Hora de criar
CREATE_CHAR PEDTYPE_GANG2 FAM1 2491.1077 -1667.8535 13.3437 my_char

// Tudo feito. Hora de marcar como não mais necessário.
MARK_MODEL_AS_NO_LONGER_NEEDED FAM1

// Enquanto o CJ está na Grove, espere.
WHILE LOCATE_CHAR_ANY_MEANS_3D scplayer 2491.1077 -1667.8535 13.3437 100.0 100.0 100.0 FALSE
    WAIT 0
ENDWHILE

// O CJ saiu da Grove. Hora do "release", onde iremos remover as coisas que criamos.
REMOVE_CHAR_ELEGANTLY my_char

GOTO main_loop // Volta pro início, para checar novamente se o CJ está na Grove.
}
SCRIPT_END



Se aprofundando individualmente

Agora vamos entender detalhes sobre criação de cada coisa.

Antes note que, como eu fiz no script pronto acima, é importante que você só crie coisas caso você já esteja no local!!! Por exemplo, você está na praia de Santa Maria criando coisas na Grove, em vários casos, isso não vai dar certo! O ped irá cair no submundo etc, pois não há colisão na Grove enquanto você está longe dela (uns 150.0 ou mais).
Perceba que no script pronto acima eu usei o comando "LOCATE_CHAR_ANY_MEANS_3D" na qual é um comando muito importante e útil que checa se o CHAR está numa coordenada num raio ("radius") de tantos metros (no caso, num raio de 100.0 pro X, Y e Z (os três "100.0" ali), na qual é um número bom).
O "FALSE" no fim é a criação aquelas marcas vermelhas de missões, na qual eu disse "falso" para não criar ela. Use "TRUE" para criá-la, e assim ela terá o tamanho do "radius" (onde usei 100.0, obviamente, neste caso você usaria coisa do tipo 1.0 ou 2.0 para a marca vermelha ter 1 ou 2 metros, ou mais. Viu? Este comando é útil para várias coisas e é assim que os objetivos de missões (as marcas vermelhas) são criadas)
Você pode ter outras variações deste tipo de comando digitando "LOCATE" no VSCode.



Como criar um pedestre / Ped / Actor / Ator / CHAR / Pessoa / Personagem / Skin / Boneco


1 bilhão de nomes (e o pior deles é o "Boneco") para a mesma coisa:
Código:
CREATE_CHAR PEDTYPE_GANG2 FAM1 2491.1077 -1667.8535 13.3437 my_char
Como já mostrei, esta linha de comando cria um FAM1 (membro da Grove) no meio da Grove Street.

Você também tem outras opções como "CREATE_CHAR_INSIDE_CAR", "CREATE_CHAR_AS_PASSENGER" etc. Dê uma olhada no seu VSCode.

PEDTYPE_GANG2 — É o "ped type", que é o tipo de pessoa. Ao digitar alguma coisa ou apertar CTRL+Espaço o Visual Studio já te dará a lista de ped types para você escolher.
Isso define o relacionamento desta pessoa com as outras, ou seja, o "PEDTYPE_GANG2" faz dizer que ele é da gangue 2 (que é a Grove St. Families) na qual ele te tratará com respeito, pode atirar nos Ballas etc. Geralmente você irá querer escolher PEDTYPE_CIVMALE para homens normais e PEDTYPE_CIVFEMALE para mulheres. É tudo muito auto-explicativo ("PEDTYPE_COP" para policiais etc.). Você pode ver melhores descrições aqui.

FAM1 — É o modelo. Note que está digitado o nome. Necessário? NÃO! Você pode usar o ID do modelo, na qual pode ser qualquer um do jogo (desde que seja um pedestre, né. Procure na net ou no data\peds.ide). E mesmo adicionados sem substituir, sem problemas. Neste caso em específico, "FAM1" é o ID "105", ou seja, eu poderia ter usado o número "105" ao invés de digitar "FAM1". O "FAM1" é uma constante padrão — lembra?
Nota: Você não precisa carregar o "MALE01"! Este ped é sempre carregado por padrão no jogo.

2491.1077 -1667.8535 13.3437 — Coordenadas 3D (X Y Z). Ou seja, a posição. Para ter a coordenada do mapa há vários modos, há até mesmo programinhas criados para pegar a coordenada, você mesmo pode pegar a coordenada e salvar num arquivo (por exemplo .ini), pode usar editores de mapa ou seja lá o que quiser. Há vários modos para você ter alguma coordenada do mapa para criar as coisas.

Nota interessante: Se você usar "-100.0" no Z (no último número, o 13.3437) o jogo irá usar a coordenada correta do chão do local! E isso não vale só para criação de peds, carros etc, mas sim para muitos comandos! Por exemplo comandos de teletransportar um CHAR (SET_CHAR_COORDINATES), entre vários outros. É uma dica muito legal que você pode querer usar em certas ocasiões (na maioria das vezes? Eu poderia ter usado neste exemplo).

my_char — Variável de retorno na qual ficará armazenado o nosso CHAR.

Quando você não quiser mais usar o nosso CHAR, marque ele como não mais necessário, ou apague-o:

MARK_CHAR_AS_NO_LONGER_NEEDED — Marca o CHAR (o nosso ped) como não mais necessário, fazendo assim ele se agir como um pedestre aleatório andando na calçada, e quando você sair de perto, ele sumirá como de costume.

DELETE_CHAR — Deleta o CHAR do jogo imediatamente, fazendo-o sumir no mesmo instante.

REMOVE_CHAR_ELEGANTLY — Deleta o CHAR do jogo com um "fade out", ou seja, ele irá desaparecer suavemente ao invés de instantaneamente. Use este comando para remover CHARs que possivelmente estejam visíveis na câmera.



Como criar um carro / veículo / CAR


Código:
CREATE_CAR ELEGY 2491.1077 -1667.8535 13.3437 my_car
Este exemplo cria um carro do modelo "ELEGY" também no centro da Grove St (note as mesmas coordenadas do exemplo acima) e guarda numa variável com nome "my_car".

É exatamente a mesma coisa do exemplo acima, portanto não preciso repetir.

Quando você não quiser mais usar o carro, marque ele como não mais necessário, ou apague-o:

MARK_CAR_AS_NO_LONGER_NEEDED — Marca o carro como não mais necessário, fazendo assim ele sumir caso você se distancie dele etc, como carros aleatórios criados na rua.

DELETE_CAR — Deleta o carro do jogo imediatamente, fazendo-o sumir no mesmo instante (se o CJ estiver dentro do carro, crash, mas outros peds não há problemas).



Como criar um objeto / OBJECT


Código:
CREATE_OBJECT 737 2491.1077 -1667.8535 12.2 my_object
Este exemplo cria um objeto de modelo de ID 737, na qual é uma árvore ...também no meio da Grove St...

Eu recomendo altamente o site dev.prineside.com/gtasa_samp_model_id para encontrar IDs para os modelos. Só fique atento e veja antes se o modelo é ou não do SAMP (pois estão misturados, há como filtrar na pesquisa).

Nós também temos esta opção:
Código:
CREATE_OBJECT_NO_OFFSET 737 2491.1077 -1667.8535 12.7 my_object
Na qual é a mesma coisa, mas a diferença é que este não adiciona um offset (uma distância extra na altura, para "encaixar" no ambiente). Inclusive, perceba que eu tive que aumentar a coordenada Z (12.7) que é a altura, pois "12.2" deixou a árvore afundada quando usei este comando.

Eu prefiro o uso do CREATE_OBJECT_NO_OFFSET ao invés do CREATE_OBJECT.

Uma nota interessante é que ao criar um objeto você NÃO precisa carregar o modelo!
Sim, no caso do objeto, você não é obrigado a carregar o modelo. O jogo irá carregar para você quando puder, e quando criar, dará um "fade in" (um aparecimento suave) no mapa.
Se o modelo já estiver carregado (por exemplo você fez carregar), irá aparecer instantaneamente (sem fade in).

Importante: Objetos criados por script ficam presos no save game!!!!!!!!!!
Tenha isso em mente! Não se esqueça! Eu até tive que criar um mod para deletar objetos presos no save game por causa disso.

Quando você não quiser mais usar o objeto marque ele como não mais necessário, ou apague-o:

MARK_OBJECT_AS_NO_LONGER_NEEDED — Marca o objeto como não mais necessário, fazendo assim ele ser apagado pelo jogo quando ir longe dele etc.

DELETE_OBJECT — Deleta o objeto instantaneamente.

REMOVE_OBJECT_ELEGANTLY — Remove o objeto com "fade out", como já explicado acima no "REMOVE_CHAR_ELEGANTLY".



Como usar animações / IFP


REQUEST_ANIMATION — Carrega um arquivo .IFP (de animações) para ser usado em comandos onde faz o CHAR ou OBJECT fazer alguma animação (digite "TASK_PLAY_ANIM" e veja as possibilidades).
Você não precisa digitar ".IFP" no nome, basta usar por exemplo: "REQUEST_ANIMATION GANGS"
Nota importante: Você não precisa carregar o "PED.IFP"! Este arquivo é sempre carregado por padrão no jogo.

HAS_ANIMATION_LOADED — Checa se o .IFP foi carregado, assim como você já aprendeu no "HAS_MODEL_LOADED". Nota interessante: O "LOAD_ALL_MODELS_NOW" funciona também para .IFP! Mesmo que não seja um modelo, o comando também faz carregar as animações (IFP).

REMOVE_ANIMATION — Remove o .IFP da memória. Note que este aqui funciona diferente do "MARK_MODEL_AS_NO_LONGER_NEEDED", pois quando marcar, e seu último script for o último que estava necessitando usar este IFP, o jogo não esperará, irá realmente descarregar o IFP! Assim se você estiver usando uma animação num ped ou objeto, ele irá parar de fazer a animação instantaneamente. Portanto, diferente do que eu disse antes, prefira usar este comando só quando realmente não estiver mais usando animações (quando ninguém mais estiver fazendo tais animações)



Outros


Armas
Sempre que você for usar alguma arma, carregue os modelos necessários antes.
Por exemplo:
Código:
REQUEST_MODEL AK47
LOAD_ALL_MODELS_NOW
GIVE_WEAPON_TO_CHAR scplayer WEAPONTYPE_AK47 999

Modelos especiais para CHARs
As missões do jogo carregam modelos especiais para usar nos personagens. São modelos que não tem ID.
Código:
LOAD_SPECIAL_CHARACTER 1 SWEET
LOAD_ALL_MODELS_NOW
CREATE_CHAR PEDTYPE_MISSION1 SPECIAL01 0.0 0.0 0.0 char
UNLOAD_SPECIAL_CHARACTER 1
Neste caso, nós carregamos o "sweet.dff/.txd" (note que "SWEET" é uma string que diz o nome do .dff e .txd para ser carregado). Se você adicionar uma nova skin com algum nome personalizado, como "mychar.dff/.txd", é só carregar o "MYCHAR"! (limite de 7 letras!). Muito dinâmico! É só ter o .dff e .txd instalado que irá carregar.
Como se pode ver, ao carregar um personagem especial, damos um número int (neste caso "1"), na qual ficará, neste caso específico, no "SPECIAL01" — se fosse "2", ficaria no "SPECIAL02".
"SPECIAL01" é um modelo (ID 290), e vai até o SPECIAL10 — ou seja, você pode usar até "10" no LOAD_SPECIAL_CHARACTER.
Note que você pode querer carregar o char em outro número menos pensado, por exemplo, 7... Assim usar SPECIAL07 ao invés do SPECIAL01, para evitar incompatibilidade entre mods e missões — ué, por quê? — pois se você carregar como "1" e uma missão ou mod também carregar como "1", irá sobrescrever e assim aparecerá outra pessoa lá.

Carros estacionados / Parked cars / car generator
Leia o tutorial de como criar geradores de carros. (na qual não tem a ver com carregamento de modelos)


(... há mais coisas do tipo para colocar aqui? ...)




Bote a mão na massa!
Não será só lendo que você aprenderá. Faça, e tente fazer coisas com estes peds, carros etc.

Que tal dar uma arma para este ped? GIVE_WEAPON_TO_CHAR
Que tal fazer este ped seguir você? TASK_FOLLOW_FOOTSTEPS
Que tal melhorar a habilidade de arma do ped? SET_CHAR_WEAPON_SKILL
Quer saber se ele ainda está vivo? IS_CHAR_DEAD
Criar um ped dentro do carro? E fazer o carro andar? CAR_GOTO_COORDINATES (caso não tiver motorista, o carro fica fantasma), ou TASK_CAR_DRIVE_TO_COORD (funciona por motorista), entre várias outras opções diferentes.

Há muita coisa legal que se pode fazer, com certeza. Eu inclusive recomendo as pessoas de tentarem fazer pequenas submissões ou cenas para treinar criação de scripts, coisas simples do tipo criar algum objetivo, como matar alguém etc.
GTA3script, como eu já disse, foi a programação criada pela Rockstar para fazer as missões e outros scripts do jogo, é uma programação feita para criação de missões, cenas, tarefas de pessoas, criação de coisas etc, portanto é ideal começar a praticar desta maneira. Você pode agora querer ler o tutorial de criar tarefas.
(a CLEO é só uma introdução de novas possibilidades. Manipulações de pessoas, carros e todas estas coisas básicas são do jogo e não da CLEO.)


Última edição por Junior_Djjr em Seg 19 Jun 2017, 08:27, editado 3 vez(es)

______________________________

Mestre3224 voltou, ainda há esperanças no Youtube.
avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 453
Reputação : 30
Desde : 11/01/2016
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Ter 31 Jan 2017, 09:49
ai sim meu patrao
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Bicho Piruleta
Mensagens : 671
Reputação : 111
Desde : 22/09/2015
Idade : 19
Localização : Salvador - BA
Ver perfil do usuário
  • Reputação da mensagem: 100% (3 votos)

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Ter 31 Jan 2017, 10:56
Fiz um script simples que talvez ajude nesse tutorial :

Segurando 'X' e apertando '1', as coordenadas serão copiadas.
Segurando 'X' e apertando '2', o ângulo será copiado.

Depois é só colar no seu script e ser feliz.



Download
Source:

Código:
SCRIPT_START
{
LVAR_INT scplayer, lib, proc, lpCmdLine
LVAR_FLOAT x, y, z, angle

GET_PLAYER_CHAR 0 scplayer

LOAD_DYNAMIC_LIBRARY "kernel32.dll" (lib)
GET_DYNAMIC_LIBRARY_PROCEDURE "WinExec" lib (proc)

GET_LABEL_POINTER Buffer (lpCmdLine)

main_loop:
WAIT 0

IF IS_KEY_PRESSED VK_KEY_X
    IF IS_KEY_PRESSED VK_KEY_1
        GET_CHAR_COORDINATES scplayer (x, y, z)
        STRING_FORMAT lpCmdLine "cmd /c echo|set /p=%f %f %f|clip" x y z
        CALL_FUNCTION proc 2 0 0 lpCmdLine

        PRINT_STRING_NOW "~g~Coordenadas copiadas." 2000
    ENDIF
    IF IS_KEY_PRESSED VK_KEY_2
        GET_CHAR_HEADING scplayer (angle)
        STRING_FORMAT lpCmdLine "cmd /c echo|set /p=%f|clip" angle
        CALL_FUNCTION proc 2 0 0 lpCmdLine

        PRINT_STRING_NOW "~g~Angulo copiado." 2000
    ENDIF

    WHILE IS_KEY_PRESSED VK_KEY_1
    OR IS_KEY_PRESSED VK_KEY_2
        WAIT 0
    ENDWHILE
ENDIF

GOTO main_loop
}
SCRIPT_END

Buffer:
DUMP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ENDDUMP

______________________________
" Everyone gonna remember my name ! "
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 1022
Reputação : 82
Desde : 04/03/2013
Idade : 17
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Ter 31 Jan 2017, 13:11
↑ Elementar, likeasir
avatar
Mensagens Nível 3
Mensagens Nível 3
Mensagens : 112
Reputação : 2
Desde : 01/11/2012
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Ter 31 Jan 2017, 15:34
Eu criei um mod simples, depois de assistir um vídeo de kerbal Space planet: um mod que verificava a altura do ped, e mudava o horário pra noite, ai quando ele subia MUITO alto, dava um efeito de estar saindo "para o universo", com vários if, pra checar várias alturas e fazer uma mudança simples.
Meu, nunca fiquei tão feliz na vida HSUAHSUAHSUAHD
Aprendi a mudar o horário usando o GTAG, lá tem os comandos por categoria, bem organizados, é uma boa recomendação cita-lo novamente. :P
É meio difícil algumas questões, porque certos comandos, requerem outros, como é o caso de pegar a posição do ped (que exige uma variável, e um comando pra inserir o valor nessa variável e etc) pra quem tá aprendendo é meio complicado mesmo, mas tá valendo a pena, tô agradecendo muito por ter esperado o seu tutorial de gta3script, e não ter iniciado os estudos no sanny builder, pq eu não não conseguia se quer, entender o código, no sanny '-'

______________________________
Minha maquina de calor:
Intel Core i5-3230M.
6GB Ram.
Intel® HD Graphics 4000.
Windows 10 LTSB.
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 56
Reputação : 0
Desde : 19/01/2017
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Ter 31 Jan 2017, 19:57
muito bom
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21852
Reputação : 666
Desde : 03/05/2012
Idade : 21
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Ter 31 Jan 2017, 19:59
@israel escreveu:Fiz um script simples que talvez ajude nesse tutorial :

Segurando 'X' e apertando '1', as coordenadas serão copiadas.
Segurando 'X' e apertando '2', o ângulo será copiado.

Depois é só colar no seu script e ser feliz.



Download
Source:

Código:
SCRIPT_START
{
LVAR_INT scplayer, lib, proc, lpCmdLine
LVAR_FLOAT x, y, z, angle

GET_PLAYER_CHAR 0 scplayer

LOAD_DYNAMIC_LIBRARY "kernel32.dll" (lib)
GET_DYNAMIC_LIBRARY_PROCEDURE "WinExec" lib (proc)

GET_LABEL_POINTER Buffer (lpCmdLine)

main_loop:
WAIT 0

IF IS_KEY_PRESSED VK_KEY_X
    IF IS_KEY_PRESSED VK_KEY_1
        GET_CHAR_COORDINATES scplayer (x, y, z)
        STRING_FORMAT lpCmdLine "cmd /c echo|set /p=%f %f %f|clip" x y z
        CALL_FUNCTION proc 2 0 0 lpCmdLine

        PRINT_STRING_NOW "~g~Coordenadas copiadas." 2000
    ENDIF
    IF IS_KEY_PRESSED VK_KEY_2
        GET_CHAR_HEADING scplayer (angle)
        STRING_FORMAT lpCmdLine "cmd /c echo|set /p=%f|clip" angle
        CALL_FUNCTION proc 2 0 0 lpCmdLine

        PRINT_STRING_NOW "~g~Angulo copiado." 2000
    ENDIF

    WHILE IS_KEY_PRESSED VK_KEY_1
    OR IS_KEY_PRESSED VK_KEY_2
        WAIT 0
    ENDWHILE
ENDIF

GOTO main_loop
}
SCRIPT_END

Buffer:
DUMP
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
ENDDUMP
Teria sido muito mais fácil com o ClipboardCommands.cleo mas ficou dahora esse método :v:

______________________________

Mestre3224 voltou, ainda há esperanças no Youtube.
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Bicho Piruleta
Mensagens : 671
Reputação : 111
Desde : 22/09/2015
Idade : 19
Localização : Salvador - BA
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Ter 31 Jan 2017, 22:58
@Junior_Djjr escreveu:Teria sido muito mais fácil com o ClipboardCommands.cleo mas ficou dahora esse método :v:
Sei lá, acho desnecessário usar algo externo pra um script simples assim, sem contar que basicamente a função usada no ClipboardCommands.cleo dá pra fazer em cleo, até fiz uma vez em scm, quando ficava tentando fazer tudo. ;-;

______________________________
" Everyone gonna remember my name ! "
avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 453
Reputação : 30
Desde : 11/01/2016
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 00:03
Código:
SCRIPT_START
{
NOP


LVAR_INT jogador van policia object
LVAR_FLOAT x y z

GET_PLAYER_CHAR 0 jogador
loop1:
WAIT 0
    IF IS_KEY_PRESSED VK_KEY_N
    AND IS_KEY_PRESSED VK_KEY_M
    IF NOT IS_CHAR_SITTING_IN_ANY_CAR jogador
    GET_CHAR_COORDINATES jogador x y z
// REQUEST_MODEL cellphone
// LOAD_ALL_MODELS_NOW
// CREATE_OBJECT_NO_OFFSET cellphone (0.0 0.0 0.0) object
// MARK_MODEL_AS_NO_LONGER_NEEDED object
// TASK_PICK_UP_OBJECT jogador object (0.0 0.0 0.0) 6 16 NULL NULL 0
    TASK_PLAY_ANIM jogador phone_in ped 4.0 0 0 0 0 -1
    TASK_PLAY_ANIM jogador phone_talk ped 4.0 0 0 0 0 -1
    TASK_PLAY_ANIM jogador phone_out ped 4.0 0 0 0 0 -1
// DELETE_OBJECT object
    ENDIF
    WHILE IS_KEY_PRESSED VK_KEY_N
    AND IS_KEY_PRESSED VK_KEY_M
    WAIT 0
    ENDWHILE
ENDIF
goto loop1
}
SCRIPT_END


Eu fiz esse script para o CJ fazer uma ligação no telefone, só a animação e o objeto na mão dele, mas tá muito fail, tipo, ele não faz todas as animaçoes seguida, de pegar o telefone, falar e desligar, e o negócio do objeto aparecer na mão tá zuado também, as vezes aparece e as vezes não(tá como comentário, tem que tirar o //) alguém sabe me ajudar?
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 612
Reputação : 37
Desde : 19/08/2015
Idade : 14
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 00:17
Acho que é porque você usou todas as anims de uma vez só ;-;

______________________________


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

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 00:17
Cara...
Código:
TASK_USE_MOBILE_PHONE
TRUE para atender e FALSE para desligar. Se carregar o modelo antes, vai aparecer o modelo na mão.

E sim, o que você fez você setou todas as animações de uma só vez, ele não consegue fazer todas as animações de uma vez só.

______________________________

Mestre3224 voltou, ainda há esperanças no Youtube.
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 481
Reputação : 30
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 00:42
Cara, não gostei do início falando pra carregar e usar modelos,  pois acho que foi muito texto para algo até simples. Pode usar, para esse e futuros tutoriais, tabelas, tópicos e esquemas. Vc faz isso, mas em algunalguns pontos q poderia fazer tbm vc prefere por um texto e tals.  Só opinião. Depois até que ficou mais direto, achei melhor.

Sobre o DELETE_CAR, se o player tiver no csrro, não haverá crash, só o player que morre hahaahahah


Última edição por Deadstroke em Qui 02 Fev 2017, 00:47, editado 1 vez(es)
avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 453
Reputação : 30
Desde : 11/01/2016
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 00:45
@Junior_Djjr escreveu:Cara...
Código:
TASK_USE_MOBILE_PHONE
TRUE para atender e FALSE para desligar. Se carregar o modelo antes, vai aparecer o modelo na mão.

E sim, o que você fez você setou todas as animações de uma só vez, ele não consegue fazer todas as animações de uma vez só.
Essa função faz ele fazer a animação e o objeto aparecer direto na mão? hehe
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21852
Reputação : 666
Desde : 03/05/2012
Idade : 21
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 02:28
@Und escreveu:
@Junior_Djjr escreveu:Cara...
Código:
TASK_USE_MOBILE_PHONE
TRUE para atender e FALSE para desligar. Se carregar o modelo antes, vai aparecer o modelo na mão.

E sim, o que você fez você setou todas as animações de uma só vez, ele não consegue fazer todas as animações de uma vez só.
Essa função faz ele fazer a animação e o objeto aparecer direto na mão? hehe
Sim.

@Deadstroke escreveu:Cara, não gostei do início falando pra carregar e usar modelos,  pois acho que foi muito texto para algo até simples. Pode usar, para esse e futuros tutoriais, tabelas, tópicos e esquemas. Vc faz isso, mas em algunalguns pontos q poderia fazer tbm vc prefere por um texto e tals.  Só opinião. Depois até que ficou mais direto, achei melhor.

Sobre o DELETE_CAR, se o player tiver no csrro, não haverá crash, só o player que morre hahaahahah
A parte "É que é assim:" até as "Notas"? Pois "o início" está generalizando, tirando essa parte "É que é assim:" até antes das Notas, são tudo muito importante.

______________________________

Mestre3224 voltou, ainda há esperanças no Youtube.
avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 453
Reputação : 30
Desde : 11/01/2016
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 13:07
Código:
SCRIPT_START
{
NOP


LVAR_INT jogador van policia object
LVAR_FLOAT x y z

GET_PLAYER_CHAR 0 jogador
loop1:
WAIT 0
    IF IS_KEY_PRESSED VK_KEY_N
    AND IS_KEY_PRESSED VK_KEY_M
    IF NOT IS_CHAR_SITTING_IN_ANY_CAR jogador
    GET_CHAR_COORDINATES jogador x y z
    REQUEST_MODEL cellphone
    LOAD_ALL_MODELS_NOW
    CREATE_OBJECT_NO_OFFSET cellphone (0.0 0.0 0.0) object
    MARK_MODEL_AS_NO_LONGER_NEEDED object
    TASK_PICK_UP_OBJECT jogador object (0.0 0.0 0.0) 6 16 NULL NULL 0
    TASK_USE_MOBILE_PHONE jogador TRUE
    WAIT 1000
    TASK_USE_MOBILE_PHONE jogador FALSE
    WAIT 900
    DELETE_OBJECT object
    ENDIF
    WHILE IS_KEY_PRESSED VK_KEY_N
    AND IS_KEY_PRESSED VK_KEY_M
    WAIT 0
    ENDWHILE
ENDIF
goto loop1
}
SCRIPT_END
Deu certinho, pô, valeu velho, consegui fazer o CJ deletar o objeto na hora exata que ele enfia a mão no bolso, ficou dahora até, agora vou prosseguir com o resto do script
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 612
Reputação : 37
Desde : 19/08/2015
Idade : 14
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 13:20
Acho que não precisa criar um objeto já que esta usando esse opcode TASK_USE_MOBILE_PHONE

______________________________


avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 453
Reputação : 30
Desde : 11/01/2016
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 13:31
@AguiaX2 escreveu:Acho que não precisa criar um objeto já que esta usando esse opcode TASK_USE_MOBILE_PHONE
Na verdade precisa, eu testei antes.

-
Alguém sabe se tem como eu checar se tem algum carro de policia perto?
Eu tentei GET_CAR_MODEL 523 policia no começo e depois

IF IS_CAR_MODEL 523 523
PRINT_FORMATTED_NOW "NÃO VAI DAR" 1000, 0
ENDIF

esse PRINT FORMATTED NOW é só pra saber se deu certo, mas nem compila
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 1022
Reputação : 82
Desde : 04/03/2013
Idade : 17
Ver perfil do usuário
  • Reputação da mensagem: 100% (1 votos)

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 15:01
@Und escreveu:
@AguiaX2 escreveu:Acho que não precisa criar um objeto já que esta usando esse opcode TASK_USE_MOBILE_PHONE
Na verdade precisa, eu testei antes.
Já usei esse opcode e não lembro de ter precisado criar o modelo  philosoraptor

@Und escreveu:Alguém sabe se tem como eu checar se tem algum carro de policia perto?
Código:
SCRIPT_START
{
    NOP

    LVAR_INT scplayer car
    LVAR_FLOAT pos[3]

    GET_PLAYER_CHAR 0 scplayer

    main:
    WAIT 0

    GET_CHAR_COORDINATES scplayer pos[0] pos[1] pos[2]

    WHILE GET_RANDOM_CAR_IN_SPHERE_NO_SAVE_RECURSIVE pos[0] pos[1] pos[2] 10.0 1 0 car
        IF DOES_VEHICLE_EXIST car
            IF IS_CAR_MODEL car COPBIKE
                PRINT_STRING_NOW "HPV-1000 NEAR" 1000
            ENDIF
        ENDIF
    ENDWHILE

    GOTO main
}
SCRIPT_END
avatar
Mensagens Nível 4
Mensagens Nível 4
Mensagens : 453
Reputação : 30
Desde : 11/01/2016
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 17:01
Eu testei antes, sério, precisou, eu também achei que não iria ser necessario, mas esse codigo só serve pra ele fazer a animação de por a mão na orelha e ficar lá até você usar o script pra ele parar.

Caramba cara, você criou o script, muito obrigado, sério. Vou usar, muito obrigado.
avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 1022
Reputação : 82
Desde : 04/03/2013
Idade : 17
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 17:12
@Und escreveu:Caramba cara, você criou o script, muito obrigado, sério. Vou usar, muito obrigado.
De nada, só configurar o raio pra distancia que você quiser...
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 612
Reputação : 37
Desde : 19/08/2015
Idade : 14
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 19:39
Buguei agora no meu não preciso de criar objeto '-'

Spoiler:

SCRIPT_START
{
LVAR_INT scplayer

GET_PLAYER_CHAR 0 scplayer

main:
WAIT 0
IF IS_PLAYER_PLAYING 0
AND IS_KEY_PRESSED VK_KEY_X
REQUEST_MODEL 330 // #CELLPHONE
LOAD_ALL_MODELS_NOW

TASK_USE_MOBILE_PHONE scplayer 1
wait 1000
TASK_USE_MOBILE_PHONE scplayer 0
MARK_MODEL_AS_NO_LONGER_NEEDED 330
ENDIF
GOTO main
}
SCRIPT_END


______________________________


avatar
Scripter CLEO - Básico
Scripter CLEO - Básico
Mensagens : 1022
Reputação : 82
Desde : 04/03/2013
Idade : 17
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 20:00
@AguiaX2 escreveu:Buguei agora no meu não preciso de criar objeto '-'

Spoiler:

SCRIPT_START
{
LVAR_INT scplayer

GET_PLAYER_CHAR 0 scplayer

main:
WAIT 0
IF IS_PLAYER_PLAYING 0
AND IS_KEY_PRESSED VK_KEY_X
   REQUEST_MODEL 330   // #CELLPHONE
   LOAD_ALL_MODELS_NOW

   TASK_USE_MOBILE_PHONE scplayer 1
   wait 1000
   TASK_USE_MOBILE_PHONE scplayer 0
   MARK_MODEL_AS_NO_LONGER_NEEDED 330
ENDIF
GOTO main    
}
SCRIPT_END

De fato não precisa, é só o modelo estar carregado quando usar o opcode.

OBS: tu poderia ter usado CELLPHONE invés do ID, se quiser dar uma olhada lá nas constantes:
https://github.com/thelink2012/gta3sc/blob/master/config/gtasa/default.xml
avatar
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 612
Reputação : 37
Desde : 19/08/2015
Idade : 14
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Ver perfil do usuário

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Qui 02 Fev 2017, 20:31
Agora entendi porque não estava compilando eu estava usando #CELLPHONE ;-; eu pensava que precisava ;- ;

______________________________


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

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Seg 20 Fev 2017, 16:28
E não consegui carregar o Zero, quando eu uso "REQUEST_MODEL ZERO" ele não completa automaticamente e se eu colocar a ID do modelo dele, e depois tentar aparecer alguém com a skin dele dá crash.
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21852
Reputação : 666
Desde : 03/05/2012
Idade : 21
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

em Ter 28 Fev 2017, 08:34
ATUALIZADO

Atualizei a seção "Outros" adicionando explicação de como carregar modelos especiais para usar nos CHARs, assim carregando pelo nome do .dff/.txd os modelos que não têm IDs.

______________________________

Mestre3224 voltou, ainda há esperanças no Youtube.
Conteúdo patrocinado

Re: #. Criação de carros, pedestres, objetos (uso de modelos)

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