Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 13:05
Tipo, estou criando um script que fará o player cair e ser jogado pra frente ao apertar a tecla K, eu estou usando SET_CHAR_VELOCITY, porém se eu aumentar a velocidade Y ele só vai seguir as cordenadas com base no mapa, e não com base no angulo/direção do player.
Alguém explica com faz pra ser com base no player?

Código:
SCRIPT_START
{
LVAR_INT cj
LVAR_FLOAT x y z

GET_PLAYER_CHAR 0 cj

main_loop:
WAIT 0

IF IS_KEY_PRESSED VK_KEY_K
TASK_FALL_AND_GET_UP cj, 0, 3000 //cair
SET_CHAR_VELOCITY cj 0.0 0.0 20.0

WHILE IS_KEY_PRESSED VK_KEY_H


WAIT 0

ENDWHILE
ENDIF

GOTO main_loop
}
SCRIPT_END


Última edição por Saga em Seg 28 Ago 2017, 15:13, editado 1 vez(es)
Kevin Prestes
Kevin Prestes
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Dom 27 Ago 2017, 14:13
Você colocou o script só em um Spoiler, da próxima vez usa o Code dentro de um Spoiler.

Uma coisa que não entendi no seu script é que está setando a velocidade Z para 20.0, isso fará jogar o player para cima. Mas OK, você pode usar isso:

Spoiler:
Código:
LVAR_FLOAT velX velY angZ

GET_CHAR_HEADING cj (angZ)
SIN angZ (velX)
COS angZ (velY)

velX *= -10.0  /* multiplicador da velocidade, no X usa um valor negativo */
velY *=  10.0

SET_CHAR_VELOCITY cj velX velY 0.0
Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 17:54
É que eu quis jogar um pouquinho pra cima tbm :)
Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 18:22
@Kevin Prestes escreveu:Você colocou o script só em um Spoiler, da próxima vez usa o Code dentro de um Spoiler.

Uma coisa que não entendi no seu script é que está setando a velocidade Z para 20.0, isso fará jogar o player para cima. Mas OK, você pode usar isso:

Spoiler:

Código:
LVAR_FLOAT velX velY angZ

GET_CHAR_HEADING cj (angZ)
SIN angZ (velX)
COS angZ (velY)

velX *= -10.0  /* multiplicador da velocidade, no X usa um valor negativo */
velY *=  10.0

SET_CHAR_VELOCITY cj velX velY 0.0

continua indo pra uma só direção sem ser com base no player, porém ao invés de ir pra esquerda (com base em um paralelismo ao muro em que começa o jogo) agora vai pra frente, tenho que aplicar isso em todas as direções pra dar certo?
Kevin Prestes
Kevin Prestes
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Dom 27 Ago 2017, 19:03
↑ Mas você não queria que o player fosse jogado para frente (velocidade Y)? Não entendi o que você quer então, explique melhor e mostre o código.


Última edição por Kevin Prestes em Dom 27 Ago 2017, 19:08, editado 1 vez(es)
Um Geek
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
https://gta-geek.blogspot.com.br/
Dom 27 Ago 2017, 19:06
Usa isto
Código:

LVAR_FLOAT X Y Z
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS (ped)(0.0 5.0 0.0)(X Y Z)
Com getoffsetfroncharinword você vai ter as coordenadas particular do ped, no caso onde esta 5.0 é onde você defini o que quer e pega nas variáveis X Y Z

______________________________

.::
Os mods que crio serão colocados no meu workshop link
Kevin Prestes
Kevin Prestes
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Dom 27 Ago 2017, 19:11
↑ ??? Isso não serve. Ele quer jogar o player usando o SET_CHAR_VELOCITY.
Um Geek
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
https://gta-geek.blogspot.com.br/
Dom 27 Ago 2017, 19:20
Mas fora que ali em

Código:

IF IS_KEY_PRESSED VK_KEY_K
...
WHILE IS_KEY_PRESSED VK_KEY_H
...
não parece ter nada de errado no script dele

Editado:
_____________

É só usar um valor negativo em Y que ele é jogado para traz, acho que entendi o problema dele

Código:

SCRIPT_START
{
LVAR_INT cj

GET_PLAYER_CHAR 0 cj

main_loop:
    WAIT 0
    IF IS_KEY_PRESSED VK_KEY_H
        TASK_FALL_AND_GET_UP cj, 0, 3000 //cair
        SET_CHAR_VELOCITY cj 0.0 -20.2 1.0
        WHILE IS_KEY_PRESSED VK_KEY_H
            WAIT 0
        ENDWHILE
    ENDIF
GOTO main_loop
}
SCRIPT_END

______________________________

.::
Os mods que crio serão colocados no meu workshop link
Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 19:32
@Um Geek escreveu:Usa isto
Código:

LVAR_FLOAT X Y Z
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS (ped)(0.0 5.0 0.0)(X Y Z)
Com getoffsetfroncharinword você vai ter as coordenadas particular do ped, no caso onde esta 5.0 é onde você defini o que quer e pega nas variáveis X Y Z

eu usei isso, até que deu certo mas parece que as vezes está mandando o cj pra direções aleatórias
Kevin Prestes
Kevin Prestes
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Dom 27 Ago 2017, 19:38
Mas Um Geek, com isso o player é jogado pelo eixo Y do mapa e não pelo angulo do CJ.

Não estou entendendo o que ele quer, olha o título do tópico, olha o que ele escreveu:

@Saga escreveu:Tipo, estou criando um script que fará o player cair e ser jogado pra frente ao apertar a tecla K, eu estou usando SET_CHAR_VELOCITY, porém se eu aumentar a velocidade Y ele só vai seguir as cordenadas com base no mapa, e não com base no angulo/direção do player.
Alguém explica com faz pra ser com base no player?

Eu passei o script pra ser jogado por base do angulo e ele me fala que não é isso?! :v:

Mostre o script e explique bem o que você quer.
Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 19:50
@Kevin Prestes escreveu:Mas Um Geek, com isso o player é jogado pelo eixo Y do mapa e não pelo angulo do CJ.

Não estou entendendo o que ele quer, olha o título do tópico, olha o que ele escreveu:

@Saga escreveu:Tipo, estou criando um script que fará o player cair e ser jogado pra frente ao apertar a tecla K, eu estou usando SET_CHAR_VELOCITY, porém se eu aumentar a velocidade Y ele só vai seguir as cordenadas com base no mapa, e não com base no angulo/direção do player.
Alguém explica com faz pra ser com base no player?

Eu passei o script pra ser jogado por base do angulo e ele me fala que não é isso?! :v:

Mostre o script e explique bem o que você quer.

Vou tentar explicar de uma forma mais facil

Código:
SCRIPT_START
{
LVAR_INT cj
LVAR_FLOAT x y z

GET_PLAYER_CHAR 0 cj

main_loop:
WAIT 0

IF IS_KEY_PRESSED VK_KEY_K
GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS cj (0.0 5.0 0.0) (x y z) //Script do Um Geek
TASK_FALL_AND_GET_UP cj, 0, 3000 //cair
SET_CHAR_VELOCITY cj x y z //Aqui no "Y" será a direção que eu quero jogar, no caso, pra frente, só que nesse comando, ele é aplicado com base no Y global de todo o mapa de San Andreas, e não só o "char" do CJ


WHILE IS_KEY_PRESSED VK_KEY_K


WAIT 0

ENDWHILE
ENDIF

GOTO main_loop
}
SCRIPT_END

pensem na ideia de que eu quero fazer o personagem dar um Dash pra frente, ou melhor, um pulo!
Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 19:56
@Kevin Prestes escreveu:Mas Um Geek, com isso o player é jogado pelo eixo Y do mapa e não pelo angulo do CJ.

Não estou entendendo o que ele quer, olha o título do tópico, olha o que ele escreveu:

@Saga escreveu:Tipo, estou criando um script que fará o player cair e ser jogado pra frente ao apertar a tecla K, eu estou usando SET_CHAR_VELOCITY, porém se eu aumentar a velocidade Y ele só vai seguir as cordenadas com base no mapa, e não com base no angulo/direção do player.
Alguém explica com faz pra ser com base no player?

Eu passei o script pra ser jogado por base do angulo e ele me fala que não é isso?! :v:

Mostre o script e explique bem o que você quer.

eu usei o seu script, mas continuou a ser lançado pra mesma direção, independentemente da direção em que o player está virado, ou seja

>CJ virado pra frente
>uso o comando
>CJ é jogado pra frente
;--------------------------------------------------------
>CJ virado pro lado
>uso o comando
>CJ é jogado pra frente (eu queria que fosse pro lado que ele está virado)
;----------------------------------------------------------
>CJ virado pra trás
>uso o comando
>CJ é jogado pra frente (eu queria que ele fosse pro lado que ele está virando²)
;--------------------------------------------------------------------

Entenderam? Eu quero que ele seja jogado 20 metros pra direção em que ele está virado
Um Geek
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
https://gta-geek.blogspot.com.br/
Dom 27 Ago 2017, 19:59
@Kevin Prestes escreveu:
Mas Um Geek, com isso o player é jogado pelo eixo Y do mapa e não pelo angulo do CJ.

No caso pensei em fazer uso disto para saber para que lado jogar o CJ porque parece que dependendo de para que lado o CJ esta virado ele é jogado de lado ou de frente etc... Se por o valor do Y direto ali vai dar uns arremessos meio insanos nele.

______________________________

.::
Os mods que crio serão colocados no meu workshop link
Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 20:01
Desculpem a confusão em não conseguir ser claro no objetivo do meu script, então o título deve ter ficado meio confuso, não consegui pensar em nenhum outro jeito de explicar meu objetivo, e essa ideia de converter coordenadas 3D globais pra coordenadas 3D pessoais com base na direção em que o jogador está virado acabou me deixando confuso denilson gostoso
Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 20:03
@Um Geek escreveu:
@Kevin Prestes escreveu:
Mas Um Geek, com isso o player é jogado pelo eixo Y do mapa e não pelo angulo do CJ.

No caso pensei em fazer uso disto para saber para que lado jogar o CJ porque parece que dependendo de para que lado o CJ esta virado ele é jogado de lado ou de frente etc... Se por o valor do Y direto ali vai dar uns arremessos meio insanos nele.
foi isso que aconteceu com o seu script, eu apertei o comando e o cj voou alto pra krl pra uma direção totalmente aleatória
Kevin Prestes
Kevin Prestes
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Dom 27 Ago 2017, 20:04
E o script que te passei mano? kidding

Tu tá pegando a coordenada do player em GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS com offset Y de 5.0 e usando isso tudo como a velocidade?

Eu te passei o script para jogar o player para frente com base no angulo:

Spoiler:

Código:
SCRIPT_START
{
LVAR_INT cj
LVAR_FLOAT angZ velX velY

GET_PLAYER_CHAR 0 (cj)

main_loop:
WAIT 0

IF IS_KEY_PRESSED VK_KEY_K
    GET_CHAR_HEADING cj (angZ)
    SIN angZ (velX)
    COS angZ (velY)
    
    velX *= -10.0
    velY *= 10.0
    TASK_FALL_AND_GET_UP cj 0 3000
    SET_CHAR_VELOCITY cj velX velY 0.0
    
    WHILE IS_KEY_PRESSED VK_KEY_K
        WAIT 0
    ENDWHILE
ENDIF

GOTO main_loop
}
SCRIPT_END

Edit: E leia as regras do fórum, deixa o double-post.


Última edição por Kevin Prestes em Dom 27 Ago 2017, 20:13, editado 1 vez(es)
Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 20:13
@Kevin Prestes escreveu:E o script que te passei mano? kidding

Tu tá pegando a coordenada do player em GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS com offset Y de 5.0 e usando isso tudo como a velocidade?

Eu te passei o script para jogar o player para frente com base no angulo:

Spoiler:

Código:
SCRIPT_START
{
LVAR_INT cj
LVAR_FLOAT angZ velX velY

GET_PLAYER_CHAR 0 (cj)

main_loop:
WAIT 0

IF IS_KEY_PRESSED VK_KEY_K
    GET_CHAR_HEADING cj (angZ)
    SIN angZ (velX)
    COS angZ (velY)
    
    velX *= -10.0
    velY *= 10.0
    TASK_FALL_AND_GET_UP cj 0 3000
    SET_CHAR_VELOCITY cj velX velY 0.0
    
    WHILE IS_KEY_PRESSED VK_KEY_K
        WAIT 0
    ENDWHILE
ENDIF

GOTO main_loop
}
SCRIPT_END

Edit: E leia as regras do fórum, deixa o double-post.

vou testar
Um Geek
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
https://gta-geek.blogspot.com.br/
Dom 27 Ago 2017, 20:25
Isto ai deve resolver, ele meio que estava sendo jogado de forma reta então mudei um detalhe.

Adicionando eixo Z :

Código:

SCRIPT_START
{
LVAR_INT cj i
LVAR_FLOAT angZ velX velY velZ

GET_PLAYER_CHAR 0 (cj)

main_loop:
WAIT 0

IF IS_KEY_PRESSED VK_KEY_K
    GET_CHAR_HEADING cj (angZ)
    SIN angZ (velX)
    COS angZ (velY)
       
    velX *= -10.0
    velY *= 10.0

    TASK_FALL_AND_GET_UP cj 0 3000
    velZ = 0.0
    REPEAT 20 i   
        velZ += 1.0
        SET_CHAR_VELOCITY cj velX velY velZ
        WAIT 1
    ENDREPEAT

    WHILE IS_KEY_PRESSED VK_KEY_K
        WAIT 0
    ENDWHILE
ENDIF

GOTO main_loop
}
SCRIPT_END

______________________________

.::
Os mods que crio serão colocados no meu workshop link
Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 20:28
@Kevin Prestes escreveu:E o script que te passei mano? kidding

Tu tá pegando a coordenada do player em GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS com offset Y de 5.0 e usando isso tudo como a velocidade?

Eu te passei o script para jogar o player para frente com base no angulo:

Spoiler:

Código:
SCRIPT_START
{
LVAR_INT cj
LVAR_FLOAT angZ velX velY

GET_PLAYER_CHAR 0 (cj)

main_loop:
WAIT 0

IF IS_KEY_PRESSED VK_KEY_K
    GET_CHAR_HEADING cj (angZ)
    SIN angZ (velX)
    COS angZ (velY)
    
    velX *= -10.0
    velY *= 10.0
    TASK_FALL_AND_GET_UP cj 0 3000
    SET_CHAR_VELOCITY cj velX velY 0.0
    
    WHILE IS_KEY_PRESSED VK_KEY_K
        WAIT 0
    ENDWHILE
ENDIF

GOTO main_loop
}
SCRIPT_END

Edit: E leia as regras do fórum, deixa o double-post.

Funcionou men, muito obrigado a vocês dois! Tipo, tava dando errado o script que tu me mando pq eu fui burro o bastante de colocar o comando de pegar a angulação antes do comando de apertar a tecla, daí já setava a angulação assim que o jogo iniciasse  denilson gostoso  denilson gostoso  denilson gostoso  , mas agora eu vi o que tava dando errado e ajeitei. Muito obrigado mesmo, o mod já esá praticamente pronto, caso eu for postar devo deixar créditos a vocês por me ajudar?

OPS: Desculpa sobre os double post, eu li as regras só dando uma foleada e acabei esquecendo essa parte :(
Kevin Prestes
Kevin Prestes
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Dom 27 Ago 2017, 20:41
@Um Geek escreveu:Isto ai deve resolver, ele meio que estava sendo jogado de forma reta então mudei um detalhe.
Eu só "dei a base", o resto é com ele.

E não precisa setar isso em loop... é velocidade, seta uma vez e pronto.

@Saga escreveu:caso eu for postar devo deixar créditos a vocês por me ajudar?
Mas tu vai publicar com o script que eu passei. (XD)

Não faço questão, mas se me desse créditos agradeceria claro.


Última edição por Kevin Prestes em Dom 27 Ago 2017, 20:50, editado 1 vez(es)
Saga
Saga
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 32
Reputação : 0
Desde : 26/08/2017
Dom 27 Ago 2017, 20:44
@Kevin Prestes escreveu:
@Um Geek escreveu:Isto ai deve resolver, ele meio que estava sendo jogado de forma reta então mudei um detalhe.
Eu só "dei a base", o resto é com ele.

E não precisa setar isso em loop... é velocidade, seta uma vez e pronto.

@Saga escreveu:caso eu for postar devo deixar créditos a vocês por me ajudar?
Mas tu vai publicar com o script que eu passei. (XD)

Não faço obrigação, mas se me desse créditos agradeceria claro.

com o loop agora tu pode apertar repetidas vezes pra sair voando mais alto, ficou bem legal
Um Geek
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
https://gta-geek.blogspot.com.br/
Dom 27 Ago 2017, 20:48
sobre o loop eu coloquei, para o impulso subir a cada grau e da uma parábola mais aberta, mas não testei sem loop para ver como ficava isto, não deve mudar tanto com ou sem.

Agradeça o Kevin Prestes, quanto a mim se eu ajudar algum momento não precisa dar créditos no mod, a final mesmo pedindo ajuda não deixa de ter sido um trabalho seu.  (WINK)

______________________________

.::
Os mods que crio serão colocados no meu workshop link
Kevin Prestes
Kevin Prestes
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 1955
Reputação : 26
Desde : 30/05/2013
Localização : Estância Velha - RS
Dom 27 Ago 2017, 20:55
↑ Na verdade o efeito não chega a ser visível e fica a mesma coisa.

@Saga na verdade eu estava me referindo ao loop que o Um Geek colocou para aumentar a velocidade Z.
Um Geek
Um Geek
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Título : Carinha que mora logo ali
Mensagens : 761
Reputação : 160
Desde : 07/03/2017
Localização : BH - MG
Link : https://gta-geek.blogspot.com.br/
https://gta-geek.blogspot.com.br/
Dom 27 Ago 2017, 21:16
não muda mesmo muito, só reduz um pouco a distancia onde ira parar e fica um pouco em forma de cone o trajeto sem. mas é bom deixar um loop de pelo menos em 2, assim com um único toque na tecla ele vai para cima e para frente. notei que sem com um toque ele só sobe ai com outro ele vai para frente.

______________________________

.::
Os mods que crio serão colocados no meu workshop link
Conteúdo patrocinado
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum