Página 1 de 1

[SA] Improved Change Gear Anim v1.0

Enviado: 13 Jul 2020, 04:37
por FilipeS
O Improved Change Gear Anim adiciona animações mais condizentes com a troca de marchas nos veículos do jogo, com cada marcha tendo sua própria animação.
 

Além do player, é aplicável a todos os outros motoristas aleatórios (não controlados por algum script).
 
Imagem

Com cada um alternando seu estilo, segurando câmbio só quando necessário de forma correta, ou segurando após a troca de marcha, por mania mesmo.
 
 Imagem
 
O mod contém um .ini onde é possível configurar a velocidade da animação e o tempo que segura no câmbio.
 


Por causa da animação se sobrepor as animações dentro do carro, ao trocar de marchas virando o veículo, não aparecerá a animação de estar virando o volante.

Por enquanto o mod só faz isso, mas pretendo no futuro adicionar mais animações para outras ações dentro do carro.

 
Download
Necessário CLEO+
 

Source do mod (200+ lines)
SpoilerAbrir
 

Código: Selecionar tudo

SCRIPT_START
{
NOP


LVAR_INT flag scplayer userInt
LVAR_FLOAT userFloat
// -----

LVAR_INT i car gear last_gear
LVAR_FLOAT timing xfloat  x y z

CONST_INT MOTORISTA 1
CONST_INT TOTALVARS 3
CONST_INT GEARUSER 1

LVAR_TEXT_LABEL16 anim

IF NOT READ_INT_FROM_INI_FILE "cleo/Improved Change Gear Anim.ini" "Config" "time" i
AND NOT READ_FLOAT_FROM_INI_FILE "cleo/Improved Change Gear Anim.ini" "Config" "AnimSpeed" xfloat
    PRINT_STRING_NOW "~w~Improved Change Gear Anim: ~r~I cannot read my ini file, please verify." 4000
    TERMINATE_THIS_CUSTOM_SCRIPT
ELSE
    READ_INT_FROM_INI_FILE "cleo/Improved Change Gear Anim.ini" "Config" "time" userInt
    READ_FLOAT_FROM_INI_FILE "cleo/Improved Change Gear Anim.ini" "Config" "AnimSpeed" userFloat
    IF NOT userFloat = -1.0
        userFloat *= 4.0
    ELSE
        userFloat = 4.0
    ENDIF
ENDIF

SWITCH flag
    CASE 0
        STREAM_CUSTOM_SCRIPT "Improved Change Gear Anim (FilipeS).cs" 1
        BREAK
    CASE 1
        GET_PLAYER_CHAR 0 scplayer
        CLEO_CALL ChangeGearAnimsForAllVehicles 0 scplayer
        BREAK
    CASE 2
        CLEO_CALL MakeCarUseGears 0 scplayer userInt userFloat
        TERMINATE_THIS_CUSTOM_SCRIPT
        BREAK
ENDSWITCH

GET_PLAYER_CHAR 0 scplayer

WHILE TRUE
    WAIT 0

    IF IS_CHAR_IN_ANY_CAR scplayer
        GET_CAR_CHAR_IS_USING scplayer car
        GET_VEHICLE_SUBCLASS car i
        IF i = VEHICLE_SUBCLASS_AUTOMOBILE
        OR i = VEHICLE_SUBCLASS_MTRUCK
            REQUEST_ANIMATION GEARS
            WHILE NOT HAS_ANIMATION_LOADED GEARS
                WAIT 0
            ENDWHILE

            WHILE IS_CHAR_IN_CAR scplayer car
                WAIT 0

                GET_CAR_CURRENT_GEAR car gear
                IF NOT gear = 0
                    STRING_FORMAT anim "gear%i" gear
                ELSE
                    anim = "gear6"
                ENDIF

                last_gear = gear
                TASK_PLAY_ANIM_NON_INTERRUPTABLE scplayer $anim GEARS userFloat 0 0 0 1 userInt
                WHILE last_gear = gear
                AND IS_CHAR_IN_CAR scplayer car
                    WAIT 0
                    GET_CAR_CURRENT_GEAR car gear
                ENDWHILE

            ENDWHILE
            IF IS_CHAR_PLAYING_ANIM scplayer "gear"
                TASK_PLAY_ANIM scplayer null NULL 4.0 0 0 0 0 1
            ENDIF
            REMOVE_ANIMATION GEARS
        ENDIF
    ENDIF

ENDWHILE


}

{
ChangeGearAnimsForAllVehicles:
    LVAR_INT player
    // -----


    LVAR_INT car driver i cont
    LVAR_FLOAT x y z

    WAIT 5000

    WHILE TRUE
        WAIT 0

        GET_ACTIVE_CAMERA_COORDINATES x y z

        IF GET_RANDOM_CAR_IN_SPHERE_NO_SAVE_RECURSIVE x y z 50.0 TRUE FALSE car
            IF DOES_VEHICLE_EXIST car
            AND NOT IS_CAR_DEAD car
                IF NOT IS_CAR_SCRIPT_CONTROLLED car
                    GET_VEHICLE_SUBCLASS car i
                    IF i = VEHICLE_SUBCLASS_AUTOMOBILE
                        GET_DRIVER_OF_CAR car driver
                        IF DOES_CHAR_EXIST driver
                        AND NOT IS_CHAR_DEAD driver
                        AND NOT driver = player
                            IF NOT IS_CHAR_SCRIPT_CONTROLLED driver
                                GET_EXTENDED_CHAR_VAR driver MOTORISTA GEARUSER i
                                IF NOT i = TRUE
                                    STREAM_CUSTOM_SCRIPT "Improved Change Gear Anim (FilipeS).cs" 2 driver
                                    WAIT 100
                                ENDIF
                            ENDIF
                        ENDIF
                    ENDIF
                ENDIF
            ENDIF
        ENDIF

    ENDWHILE

CLEO_RETURN 0
}

{
MakeCarUseGears:
    LVAR_INT driver userInt
    LVAR_FLOAT userFloat
    // ---

    LVAR_INT car i r changed
    LVAR_INT gear last_gear

    LVAR_TEXT_LABEL16 anim

    IF DOES_CHAR_EXIST driver
    AND NOT IS_CHAR_DEAD driver
        REQUEST_ANIMATION GEARS
        WHILE NOT HAS_ANIMATION_LOADED GEARS
            WAIT 0
        ENDWHILE

        INIT_EXTENDED_CHAR_VARS driver MOTORISTA TOTALVARS
        SET_EXTENDED_CHAR_VAR driver MOTORISTA GEARUSER TRUE

        GET_CAR_CHAR_IS_USING driver car

        GENERATE_RANDOM_INT_IN_RANGE 0 2 r
        IF r = 0
            userInt = 99999999
            userFloat = 4.0
        ENDIF

        WHILE DOES_CHAR_EXIST driver
        AND NOT IS_CHAR_DEAD driver
            WAIT 0

            IF DOES_VEHICLE_EXIST car
            AND NOT IS_CAR_DEAD car
                IF IS_CHAR_IN_CAR driver car

                    GET_CAR_CURRENT_GEAR car gear
                    IF NOT gear = 0
                        STRING_FORMAT anim "gear%i" gear
                    ELSE
                        anim = "gear6"
                    ENDIF

                    last_gear = gear
                    TASK_PLAY_ANIM driver $anim GEARS userFloat 0 0 0 1 userInt
                    timera = 0
                    changed = 0
                    WHILE last_gear = gear
                        WAIT 0

                        IF DOES_CHAR_EXIST driver
                        AND NOT IS_CHAR_DEAD driver
                            IF DOES_VEHICLE_EXIST car
                            AND NOT IS_CAR_DEAD car
                                IF IS_CHAR_IN_CAR driver car

                                    IF timera > userInt
                                    AND changed = 0
                                        CLEAR_CHAR_TASKS driver
                                        changed = 1
                                    ENDIF


                                    GET_CAR_CURRENT_GEAR car gear
                                ELSE
                                    BREAK
                                ENDIF
                            ELSE
                                BREAK
                            ENDIF
                        ELSE
                            BREAK
                        ENDIF

                    ENDWHILE

                ELSE
                    BREAK
                ENDIF
            ELSE
                BREAK
            ENDIF

        ENDWHILE

        IF DOES_CHAR_EXIST driver
            SET_EXTENDED_CHAR_VAR driver MOTORISTA GEARUSER FALSE
        ENDIF

    ENDIF


CLEO_RETURN 0
}

SCRIPT_END

Re: [SA] Improved Change Gear Anim v1.0

Enviado: 14 Jul 2020, 01:00
por AguiaX2
Esse mod ficou interessante, me pareceu bem natural a troca de marchas, parabens.
FilipeS escreveu:
13 Jul 2020, 04:37
Por enquanto o mod só faz isso, mas pretendo no futuro adicionar mais animações para outras ações dentro do carro.
eu não sei se isso foge do objetivo do mod mas como disse que iria criar animações para outras ações, eu tenho uma sugestão
que acho que séria um detalhe interessante, criar algumas animações "idles" pra os veiculos como quando o CJ está parado por um periodo de tempo
e aí ele começa fazer alguma animação aleatoria
ou mesmo apenas adaptar esses idles de quando ele está parado sem estar dirigindo para quando ele estiver.

 

Re: [SA] Improved Change Gear Anim v1.0

Enviado: 14 Jul 2020, 04:33
por kkjj
This mod is really good, but it messes with mission 999 We Tip.
This same bug is also present in Junior's version.

Re: [SA] Improved Change Gear Anim v1.0

Enviado: 15 Jul 2020, 00:06
por FilipeS
AguiaX2 escreveu:
14 Jul 2020, 01:00
Esse mod ficou interessante, me pareceu bem natural a troca de marchas, parabens.
FilipeS escreveu:
13 Jul 2020, 04:37
Por enquanto o mod só faz isso, mas pretendo no futuro adicionar mais animações para outras ações dentro do carro.
eu não sei se isso foge do objetivo do mod mas como disse que iria criar animações para outras ações, eu tenho uma sugestão
que acho que séria um detalhe interessante, criar algumas animações "idles" pra os veiculos como quando o CJ está parado por um periodo de tempo
e aí ele começa fazer alguma animação aleatoria
ou mesmo apenas adaptar esses idles de quando ele está parado sem estar dirigindo para quando ele estiver.

  

Valeu mano, não foge da ideia do mod, apesar do nome, eu pretendo sim colocar outras animações em idle.

Adicionado após 4 minutos 13 segundos:
kkjj escreveu:
14 Jul 2020, 04:33
This mod is really good, but it messes with mission 999 We Tip.
This same bug is also present in Junior's version.

Thank you, i'll fix this soon

Re: [SA] Improved Change Gear Anim v1.0

Enviado: 17 Jul 2020, 16:34
por GTA_GamerZ
kkjj escreveu:
14 Jul 2020, 04:33
This mod is really good, but it messes with mission 999 We Tip.
This same bug is also present in Junior's version.
What is this bug please?

Added after 19 seconds:
FilipeS escreveu:
15 Jul 2020, 00:06
AguiaX2 escreveu:
14 Jul 2020, 01:00
Esse mod ficou interessante, me pareceu bem natural a troca de marchas, parabens.
FilipeS escreveu:
13 Jul 2020, 04:37
Por enquanto o mod só faz isso, mas pretendo no futuro adicionar mais animações para outras ações dentro do carro.
eu não sei se isso foge do objetivo do mod mas como disse que iria criar animações para outras ações, eu tenho uma sugestão
que acho que séria um detalhe interessante, criar algumas animações "idles" pra os veiculos como quando o CJ está parado por um periodo de tempo
e aí ele começa fazer alguma animação aleatoria
ou mesmo apenas adaptar esses idles de quando ele está parado sem estar dirigindo para quando ele estiver. 

Valeu mano, não foge da ideia do mod, apesar do nome, eu pretendo sim colocar outras animações em idle.

Adicionado após 4 minutos 13 segundos:
kkjj escreveu:
14 Jul 2020, 04:33
This mod is really good, but it messes with mission 999 We Tip.
This same bug is also present in Junior's version.

Thank you, i'll fix this soon 
Mark ready on your post

Re: [SA] Improved Change Gear Anim v1.0

Enviado: 17 Jul 2020, 17:26
por GTA_GamerZ
[font][font]OK good mod but there is a little bug, when policemen get out of their car they don't move and still performing the gear holding animation.[/font][/font]

Re: [SA] Improved Change Gear Anim v1.0

Enviado: 21 Ago 2020, 20:59
por Ytalo S
Esse mod está usável, ou ainda estás em desenvolvimento?

Re: [SA] Improved Change Gear Anim v1.0

Enviado: 24 Out 2022, 22:59
por hoklifter
Erro no mod: Impossivel de passar missão 555 we tip, só é possivel depois que remove os cleos que dão a animação para os peds

Re: [SA] Improved Change Gear Anim v1.0

Enviado: 16 Nov 2022, 22:34
por South
FilipeS escreveu:
13 Jul 2020, 04:37
Por enquanto o mod só faz isso, mas pretendo no futuro adicionar mais animações para outras ações dentro do carro.
Testei o mod, tive dois crashes diferentes que segundo o SCRLog são causados pelo script deste mod. Talvez conflito com outro mod? Vou postar o log caso você queira ver isso algum dia. O primeiro crash foi no Rancher e o segundo no Stratum, no Perennial não aconteceu (pode ser coincidência)

Log 1
SpoilerAbrir

Código: Selecionar tudo

script Improve
 Local variables dump:
 5122 1500 1082130432 6657 0 1 1 1 1 1918985575 49 0 0 0 0 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 6152 7333
********************************************

00001382&1: [00D6] IF 1
00001386&1: [056E] DOES_VEHICLE_EXIST 6657    // TRUE
00001391&1: [8119] NOT IS_CAR_DEAD 6657    // TRUE
00001396&1: [004D] GOTO_IF_FALSE -1735
00001403&1: [00D6] IF 0
00001407&0: [00DB] IS_CHAR_IN_CAR 5122 6657

*********************************

Log 2
SpoilerAbrir

Código: Selecionar tudo

script Improve
 Local variables dump:
 0 1 1500 1082130432 0 2818 1 1 0 1065353216 0 0 0 1918985575 49 0
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 103944 103944
********************************************

00000825&1: [0AB8] GET_CAR_CURRENT_GEAR 2818

*********************************