Página 1 de 1

[SA] Weapon Bail 1.2

Enviado: 08 Mar 2021, 18:57
por Neon
Adiciona a função do GTA:VCS de recuperar suas armas por $2.000 quando morto/preso. Diferente de outros mods, esse funciona como no jogo original, através de um pickup temporário, além de não criar o pickup caso o jogador não perca as armas quando morto e também não criar caso você spawne na casa da Katie. Os textos e modelo foram convertidos do jogo original, e adaptados ao estilo do SA. O pickup é adicionado sem substituir de forma dinâmica, então funciona com todos os hospitais/delegacias e até mesmo adicionados, como no SAxVCxLC Connected.

Imagem
 
Necessário CLEO+

DOWNLOD NA MIXMODS

Agradecimentos ao Junior_Djjr pelas melhorias e correções

Código: Selecionar tudo

SCRIPT_START
{
    LVAR_INT scplayer hPickup iWeaponType[12] ammo[12] i
    LVAR_FLOAT x y f x2 y2
    GET_PLAYER_CHAR 0 scplayer

    SET_SCRIPT_EVENT_SAVE_CONFIRMATION ON delete_pickup i

    WHILE TRUE
        WAIT 0
        IF HAS_CHAR_BEEN_ARRESTED scplayer
        OR IS_CHAR_DEAD scplayer
            IF HAS_CHAR_BEEN_ARRESTED scplayer
                READ_MEMORY 0x8A5E49 1 FALSE i // check if player can lose weapons when arrested, thanks Junior_Djjr for the memory address
            ELSE
                READ_MEMORY 0x8A5E48 1 FALSE i // when dead
            ENDIF
            IF i = TRUE
                GET_CHAR_WEAPON_IN_SLOT scplayer 1 iWeaponType[0] ammo[0] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 2 iWeaponType[1] ammo[1] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 3 iWeaponType[2] ammo[2] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 4 iWeaponType[3] ammo[3] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 5 iWeaponType[4] ammo[4] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 6 iWeaponType[5] ammo[5] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 7 iWeaponType[6] ammo[6] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 8 iWeaponType[7] ammo[7] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 9 iWeaponType[8] ammo[8] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 10 iWeaponType[9] ammo[9] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 11 iWeaponType[10] ammo[10] i
                GET_CHAR_WEAPON_IN_SLOT scplayer 12 iWeaponType[11] ammo[11] i
                WAIT 1000
                WHILE IS_CHAR_DEAD scplayer
                OR HAS_CHAR_BEEN_ARRESTED scplayer
                    WAIT 0
                ENDWHILE
                WAIT 500
                GOSUB coord_weapon_check
            ENDIF
        ENDIF
    ENDWHILE

    coord_weapon_check:
    GET_CHAR_COORDINATES scplayer x y f
    GET_CHAR_HEADING scplayer f
    f += 45.0
    GET_COORD_FROM_ANGLED_DISTANCE x y f (3.0) x2 y2
    IF LOCATE_CHAR_ANY_MEANS_2D scplayer x y (110.0 110.0) FALSE
    AND NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -2570.51 1139.58 55.86 (5.0 5.0 5.0) FALSE //check if you have spawned at katie's house
    AND NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -1403.5135 2643.4602 55.4317 (15.0 15.0 10.0) FALSE //check if you have spawned at barbara's house
        GOSUB create_pickup
    ELSE
        RETURN
    ENDIF
    RETURN

    create_pickup:
    REQUEST_MODEL 794
    WHILE NOT HAS_MODEL_LOADED 794
        WAIT 0
    ENDWHILE
    GET_CHAR_COORDINATES scplayer x y f
    IF GET_PICKUP_THIS_COORD x2 y2 f TRUE hPickup
        REMOVE_PICKUP hPickup
    ENDIF
    CREATE_PICKUP 794 PICKUP_ON_STREET x2 y2 f hPickup
    WHILE LOCATE_CHAR_ANY_MEANS_2D scplayer x2 y2 (110.0 110.0) FALSE
        WAIT 0
        IF HAS_PICKUP_BEEN_COLLECTED hPickup
            IF IS_SCORE_GREATER 0 1999
                SET_PLAYER_CONTROL_PAD 0 OFF
                WHILE TRUE
                    WAIT 0
                    PRINT_HELP_FOREVER RE_WEP
                    IF IS_BUTTON_JUST_PRESSED PAD1 DPADLEFT // N
                        BREAK
                    ENDIF
                    IF IS_BUTTON_JUST_PRESSED PAD1 DPADRIGHT // Y
                        IF IS_SCORE_GREATER 0 1999
                            i = 2
                            f = 0.0
                            REPEAT 10 i
                                IF iWeaponType[i] > 0
                                AND ammo[i] > 0
                                    GET_WEAPONINFO iWeaponType[i] 1 (timera)
                                    GET_WEAPONINFO_MODELS timera (timera timerb)
                                    IF timera > 0
                                        REQUEST_MODEL timera
                                    ENDIF
                                    IF timerb > 0
                                        REQUEST_MODEL timerb
                                    ENDIF
                                    LOAD_ALL_MODELS_NOW
                                    GIVE_WEAPON_TO_CHAR scplayer iWeaponType[i] ammo
[i]                                    IF timera > 0
                                        MARK_MODEL_AS_NO_LONGER_NEEDED timera
                                    ENDIF
                                    IF timerb > 0
                                        MARK_MODEL_AS_NO_LONGER_NEEDED timerb
                                    ENDIF
                                ELSE
                                    f += 1.0 // number of times the slot was empty
                                ENDIF
                            ENDREPEAT
                            IF f = 10.0
                                PRINT_HELP RE_WEPE
                            ELSE
                                CHANGE_PLAYER_MONEY 0 CHANGE_MONEY_REMOVE 2000
                            ENDIF
                            BREAK
                        ELSE
                            PRINT_HELP RE_WEPN
                            BREAK
                        ENDIF
                    ENDIF
                ENDWHILE
                BREAK
            ELSE
                PRINT_HELP RE_WEPN
                BREAK
            ENDIF
        ENDIF
    ENDWHILE
    IF IS_THIS_HELP_MESSAGE_BEING_DISPLAYED RE_WEP
        CLEAR_HELP
    ENDIF
    SET_PLAYER_CONTROL_PAD 0 ON
    REMOVE_PICKUP hPickup
    MARK_MODEL_AS_NO_LONGER_NEEDED 794
    RETURN

    delete_pickup:
    IF DOES_PICKUP_EXIST hPickup
        REMOVE_PICKUP hPickup
    ENDIF
    RETURN_SCRIPT_EVENT
}
SCRIPT_END[/i][/i][/i][/i][/i]

Re: [SA] Weapon Bail

Enviado: 01 Mai 2021, 06:12
por Junior_Djjr
As armas ficavam invisíveis pois você não carregou o modelo antes de dar pro CJ.

Código: Selecionar tudo

                                    GET_WEAPONINFO iWeaponType[/*forumbug*/i] 1 (timera)
                                    GET_WEAPONINFO_MODELS timera (timera timerb)
                                    IF timera > 0
                                        REQUEST_MODEL timera
                                    ENDIF
                                    IF timerb > 0
                                        REQUEST_MODEL timerb
                                    ENDIF
                                    LOAD_ALL_MODELS_NOW
                                    GIVE_WEAPON_TO_CHAR scplayer iWeaponType[/*forumbug*/i] ammo[/*forumbug*/i]
                                    IF timera > 0
                                        MARK_MODEL_AS_NO_LONGER_NEEDED timera
                                    ENDIF
                                    IF timerb > 0
                                        MARK_MODEL_AS_NO_LONGER_NEEDED timerb
                                    ENDIF
Outra, a checagem de que você perde as armas está errada, aquilo é só para checar se perde armas ao ser preso, não morto.
Assim:

Código: Selecionar tudo

            IF HAS_CHAR_BEEN_ARRESTED scplayer
                READ_MEMORY 0x8A5E49 1 FALSE i // check if player can lose weapons when arrested, thanks Junior_Djjr for the memory address
            ELSE
                READ_MEMORY 0x8A5E48 1 FALSE i // when dead
            ENDIF
            IF i = TRUE
Também esqueceu da Barbara (não sei a posição exata então botei um raio de 15 metros, nada demais.

Código: Selecionar tudo

    IF LOCATE_CHAR_ANY_MEANS_2D scplayer x y (110.0 110.0) FALSE
    AND NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -2570.51 1139.58 55.86 (5.0 5.0 5.0) FALSE //check if you have spawned at katie's house
    AND NOT LOCATE_CHAR_ANY_MEANS_3D scplayer -1403.5135 2643.4602 55.4317 (15.0 15.0 10.0) FALSE //check if you have spawned at barbara's house
        GOSUB create_pickup
    ELSE
        RETURN
    ENDIF
E você usou GET_COORD_FROM_ANGLED_DISTANCE para pegar a coordenada do CJ num offset, sendo que existe GET_OFFSET_FROM_CHAR_IN_WORLD_COORDS.

Re: [SA] Weapon Bail 1.2

Enviado: 02 Out 2021, 18:31
por Junior_Djjr
A checagem de que morreu ou foi preso é muito falha, fazia aparecer o ícone até mesmo quando você reinicia o jogo em new game, e relataram que aparece no local que morre quando se mata, mas não consegui reproduzir.
Eu fiz pequenas alterações pra tentar corrigir, acho que agora tá certo.

Re: [SA] Weapon Bail 1.2

Enviado: 04 Out 2021, 12:32
por Neon
Junior_Djjr escreveu:
02 Out 2021, 18:31
A checagem de que morreu ou foi preso é muito falha, fazia aparecer o ícone até mesmo quando você reinicia o jogo em new game, e relataram que aparece no local que morre quando se mata, mas não consegui reproduzir.
Eu fiz pequenas alterações pra tentar corrigir, acho que agora tá certo.
Você já alterou o source no tópico? E o que você alterou? Eu não lembro como era o script

Re: [SA] Weapon Bail 1.2

Enviado: 17 Out 2021, 08:44
por Junior_Djjr
Neon escreveu:
04 Out 2021, 12:32
Junior_Djjr escreveu:
02 Out 2021, 18:31
A checagem de que morreu ou foi preso é muito falha, fazia aparecer o ícone até mesmo quando você reinicia o jogo em new game, e relataram que aparece no local que morre quando se mata, mas não consegui reproduzir.
Eu fiz pequenas alterações pra tentar corrigir, acho que agora tá certo.
Você já alterou o source no tópico? E o que você alterou? Eu não lembro como era o script
Sim, é só ver a data de edição embaixo, também mostra meu nome.