Compartilhe
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 23
Localização : São Paulo - SP
Ver perfil do usuário

Pay 'n' Spray realista

em Ter 19 Jan 2016, 16:01
Olá galera, gostaria de pedir ajuda num script simples que estou fazendo, muito interessante, mas imperfeito.
Trata-se de tornar inativo o pay 'n' spray quando procurado e quando tiver um policial por perto.

A princípio, consegui realizar isso, mas ainda tem bugs, que, por exemplo, se você entrar num pay 'n' spray e um policial se aproximar, o jogo vai travar (não sei a respeito de crash, acredito que não tenha pelo que fiz).
Tem algum jeito de verificar se o player está dentro do pay 'n' spray e está a ter o veículo reformado e repintado?

Agradeço a ajuda.

Código:
{$CLEO}
0000:

while true
    wait 500
    if and
    0256:   player $PLAYER_CHAR defined
    010F:   player $PLAYER_CHAR wanted_level > 0
    then
        0A8D: 29@ = read_memory 0xB74490 size 4 virtual_protect 0
        000A: 29@ += 0x4
        0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
        for 30@ = 0 to 35584 step 0x100
            0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
            000A: 29@ += 0x1
            if and
            0029:  31@ >= 0x00
            001B:  0x80 > 31@
            then
                005A: 31@ += 30@
                089F: get_actor 31@ pedtype_to 0@
                if  0039:   0@ == 6
                then
                    if  0104:   actor 31@ near_actor $PLAYER_ACTOR radius 15.0 15.0 15.0 sphere 0
                    then
                        0A14: disable_respray_garages 1
                        while true
                            wait 500
                            if or
                            8256:   not   player $PLAYER_CHAR defined
                            8104:   not actor 31@ near_actor $PLAYER_ACTOR radius 15.0 15.0 15.0 sphere 0
                            810F:   not player $PLAYER_CHAR wanted_level > 0
                            then
                                0A14: disable_respray_garages 0
                                break
                            end
                        end
                    end
                end
            end        
        end
    end
end
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 23
Localização : São Paulo - SP
Ver perfil do usuário

Re: Pay 'n' Spray realista

em Qui 21 Jan 2016, 23:39
Olá galera, estou tentando fazer um pay'n spray onde não ative caso a polícia esteja por perto.

Código:
{$CLEO}
thread "PayNSpr"
0000:

//Loop principal do mod
while true
    wait 0
    if 0256:   player $PLAYER_CHAR defined
    then
        0AB1: call_scm_func @LOOKINGFOR 0 retorna 0@
        if  0039:   0@ == 1
        then
            if  010F:   player $PLAYER_CHAR wanted_level > 0
            then
                0A8D: 29@ = read_memory 0xB74490 size 4 virtual_protect 0
                000A: 29@ += 0x4
                0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
                for 30@ = 0 to 35584 step 0x100
                    0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
                    000A: 29@ += 0x1
                    if and
                        0029:  31@ >= 0x00
                        001B:  0x80 > 31@
                    then
                        005A: 31@ += 30@
                        089F: get_actor 31@ pedtype_to 1@
                        if and
                            //Verificando se tem polcial por perto da área
                            0039:   1@ == 6
                            0104:   actor 31@ near_actor $PLAYER_ACTOR radius 25.0 25.0 25.0 sphere 0
                        then
                            0A14: disable_respray_garages 1
                            while true
                                wait 0
                                0ACD: show_text_highpriority "~r~I THINK NOBODY IS SO STUPID TO DO IT..." time 100
                                0AB1: call_scm_func @LOOKINGFOR 0 retorna 0@
                                if or
                                    8256:   not player $PLAYER_CHAR defined
                                    810F:   not player $PLAYER_CHAR wanted_level > 0
                                    0039:   0@ == 0
                                then
                                    0A14: disable_respray_garages 0
                                    01C2: remove_references_to_actor 31@ // Like turning an actor into a random pedestrian
                                    break
                                end
                            end
                        end
                    end
                end
                while true
                    wait 0
                    0AB1: call_scm_func @LOOKINGFOR 0 retorna 0@
                    if or
                        0039:   0@ == 0
                        8256:   not player $PLAYER_CHAR defined
                    then    break
                    end
                end
            else
                while true
                    wait 0
                    0AB1: call_scm_func @LOOKINGFOR 0 retorna 0@
                    if or
                        0039:   0@ == 0
                        8256:   not player $PLAYER_CHAR defined
                    then    break
                    end
                end                    
            end
        end
    end
end

//Função para verificar se o player está na área de algum Pay'n Spray segundo o .ini
//Possui função de verificar se o .ini está bem definido
//Retorna 0 se não estiver em Pay'n spray nenhum. Caso contrário, retorna 1.
:LOOKINGFOR

//Verificando se o .ini existe
if 8AAB:   not file_exists "cleo\Paynspray.ini"
then
    0ACD: show_text_highpriority "Unable to load1 ~b~'CLEO/Paynspray.ini'" time 5000
    0A93: end_custom_thread
end

//Pegando o valor de ativação do mod
if  8AF0: 0@ = get_int_from_ini_file "cleo\Paynspray.ini" section "Settings" key "Amount"
then 0@ = -1
end
if  not 0@ > 0
then
    0ACD: show_text_highpriority "Unable to load2 ~b~'CLEO/Paynspray.ini'" time 5000
    0A93: end_custom_thread
end

For 1@ = 1 to 0@
    0093: 1@ = integer 1@ to_float
    0087: 5@ = 1@ // (float)
    0AED: 1@v = float 1@ to_string_format "%.15g"
    
    //Coord X
    if  8AF2: 2@ = get_float_from_ini_file "cleo\Paynspray.ini" section 1@v key "CX"
    then
        0ACD: show_text_highpriority "Unable to load3 ~b~'CLEO/Paynspray.ini'" time 5000
        0A93: end_custom_thread
    end
    
    //Coord Y
    if  8AF2: 3@ = get_float_from_ini_file "cleo\Paynspray.ini" section 1@v key "CY"
    then
        0ACD: show_text_highpriority "Unable to load3 ~b~'CLEO/Paynspray.ini'" time 5000
        0A93: end_custom_thread
    end
    
    //Coord Z
    if  8AF2: 4@ = get_float_from_ini_file "cleo\Paynspray.ini" section 1@v key "CZ"
    then
        0ACD: show_text_highpriority "Unable to load3 ~b~'CLEO/Paynspray.ini'" time 5000
        0A93: end_custom_thread
    end
    
    //Verificando se está no espaço datado
    if  0100:   actor $PLAYER_ACTOR in_sphere 2@ 3@ 4@ radius 8.0 8.0 8.0 sphere 0 in_car
    then
        0AB2: ret 1 1
    end
    0092: 1@ = float 5@ to_integer      
end

0AB2: ret 1 0
O mod é baseado por .ini, que seria esse abaixo:

Paynspray.ini:
[Settings]
Amount = 10

;LOS SANTOS
;Idlewood
[1]
CX = 2065.24  
CY = -1831.46
CZ = 13.55
;Temple
[2]
CX = 1025.01
CY = -1024.72
CZ = 32.10
; Saint Maria Beach
[3]
CX = 487.39
CY = -1740.02
CZ = 11.13

;COUNTY
;Dillimore
[4]
CX = 719.86
CY = -457.80
CZ = 16.34

;SANFIERRO
;Doherty
[5]
CX = -1904.86
CY = 284.15
CZ = 41.05
;Juniper Hollow
[6]
CX = -2425.38
CY = 1021.54
CZ = 50.40
;Michelle's garage
[7]
CX = -1787.283
CY = 1216.9333
CZ = 25.15

;DESERT
;El Quebrados
[8]
CX = -1420.37
CY = 2584.43
CZ = 55.84
;Fort Carson
[9]
CX = -100.11
CY = 1117.90
CZ = 19.74

;LAS VENTURAS
;Redsands West
[10]
CX = 1974.62
CY = 2162.76
CZ = 11.07

A ideia do .ini é o mod funcionar com outros tipos de totais conversões, só colocar a coordenada central dos pay'n spray's e estará funcionado.

Está funcionando basicamente, mas alguns bugs aparentes que encontrei:
- A polícia continua ignorando se você está dentro de uma dessas garagens;
- Queria fazer um texto central como é no pay'n spray em outros casos de recusa, não sei qual o opcode certo;
- Talvez um jeito de não precisar desse .ini talvez dê certo inclusive.

Devo ter esquecido de algum detalhe. Qualquer coisa, falo novamente. vlw
avatar
Veterano
Veterano
Mensagens : 2920
Reputação : 81
Desde : 31/07/2013
Ver perfil do usuário

Re: Pay 'n' Spray realista

em Qui 21 Jan 2016, 23:58
Legal a ideia :D
Só não testei, pra tu ter ideia, testei acho que ontem o seu MOD Real Area 69. pokerface

______________________________
I̜mpe͢r͚at̲ivoͯ, ͘no̅ mụnd̶o͋ ̺sl͟o͗w
́Co͔m͢ó ̼a ̒p̎eçͦa̲ ̖MC͝s ̚só͊ ͡faz̀em̈́ ̛s̸p͆ee͌df̡l̡owͭ
̟Pͭra ̌que̲ ä́ p̐r͜es̋s͉aͤ?
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: Pay 'n' Spray realista

em Sex 22 Jan 2016, 00:35
(Só vi o tópico hoje)

Teste ai :
Código:
0A8D: 0@ = read_memory 0x96BFE4 size 1 virtual_protect 0
if 0@ == true
then
    // Tá num pay 'n' spray            
end
Se não funcionar, diga ;-;

______________________________
" Everyone gonna remember my name ! "
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 23
Localização : São Paulo - SP
Ver perfil do usuário

Re: Pay 'n' Spray realista

em Sex 22 Jan 2016, 01:32
Vlw @Israel , diminuiu um .ini e metade das linhas do script

Código:
{$CLEO}
thread "PayNSpr"
0000:
while true
    wait 100
    0A8D: 0@ = read_memory 0x96BFE4 size 1 virtual_protect 0    //Veificador se está num pay 'n spray
    if and
    0256:   player $PLAYER_CHAR defined
    010F:   player $PLAYER_CHAR wanted_level > 0
    0039:   0@ == true
    then
        //Caso seja definido, procurado e que esteja num pay'n spray, verificar se não há policial por perto
        0A8D: 29@ = read_memory 0xB74490 size 4 virtual_protect 0
        000A: 29@ += 0x4
        0A8D: 29@ = read_memory 29@ size 4 virtual_protect 0
        for 30@ = 0 to 35584 step 0x100
            0A8D: 31@ = read_memory 29@ size 1 virtual_protect 0
            000A: 29@ += 0x1
            if and
                0029:  31@ >= 0x00
                001B:  0x80 > 31@
            then
                005A: 31@ += 30@
                089F: get_actor 31@ pedtype_to 1@
                if and
                    //Verificando se tem polcial por perto da área
                    0039:   1@ == 6
                    0104:   actor 31@ near_actor $PLAYER_ACTOR radius 25.0 25.0 25.0 sphere 0
                then
                    //Se tiver, o pay'n spray não funcionará!
                    0A14: disable_respray_garages 1
                    while true
                        wait 10
                        0ACD: show_text_highpriority "~r~I THINK NOBODY IS SO STUPID TO DO IT..." time 100
                        0A8D: 0@ = read_memory 0x96BFE4 size 1 virtual_protect 0
                        if or
                            8256:   not player $PLAYER_CHAR defined
                            810F:   not player $PLAYER_CHAR wanted_level > 0
                            0039:   0@ == false
                        then
                            0A14: disable_respray_garages 0
                            break
                        end
                    end
                end
            end
        end
        //Caso esteja num pay'n spray, estive sendo procurado e não tiver policial por perto, é para evitar do pay'n spray travar
        while true
            wait 10
            0A8D: 0@ = read_memory 0x96BFE4 size 1 virtual_protect 0
            if or
                0039:   0@ == false
                8256:   not player $PLAYER_CHAR defined
            then    break
            end                
        end
    end
end

Apesar disso, ainda não resolveu nenhum dos problemas de scripts anteriores...

Deixa eu perguntar:
- Como faço pra ver as memórias do jogo como essa (li o tutorial de memória e arrays, mas não sei como procurar os bancos de memória e ver a que quero)?;
- Tem como saber qual memória é num script descompilado (muda o número da memória);
- Essa memória pega quando você está numa garagem, certo?
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: Pay 'n' Spray realista

em Sex 22 Jan 2016, 01:46
- Como faço pra ver as memórias do jogo como essa (li o tutorial de memória e arrays, mas não sei como procurar os bancos de memória e ver a que quero)?;
Tem várias formas. O Jr fez um tutorial básico ensinando a achar endereços usando disasm. Veja aqui.
- Tem como saber qual memória é num script descompilado (muda o número da memória);
Quando você compila o script, o endereço é convertido para decimal. Dê um CTRL + H nele.
- Essa memória pega quando você está numa garagem, certo?
Parece que sim. Só testei no pay 'n' spray, não percebi que é pra qualquer garagem ;-;
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 23
Localização : São Paulo - SP
Ver perfil do usuário

Re: Pay 'n' Spray realista

em Sex 22 Jan 2016, 01:59
Parece que sim. Só testei no pay 'n' spray, não percebi que é pra qualquer garagem ;-;
Não sei também, só testei na garagem da Transfender e acionou também, foi só uma suposição...
avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18775
Reputação : 342
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

Re: Pay 'n' Spray realista

em Sex 22 Jan 2016, 03:15
Acho que você poderá tirar algum proveito desse mod: http://brmodstudio.forumeiros.com/t4227-selecionar-cor-no-pay-n-spray



Não to muito legal para ajudar com um script hoje, quem sabe mais tarde.

______________________________

Modifico quase qualquer coisa.   :)
------------------>>>http://gtamodvicio.blogspot.com/<<<------------------

Meu PC:
Spoiler:

Configurações PC:
*Processador: Intel Core i7 4790K 4.00GHz LGA1150
*Placa Mãe: GIGABYTE GA-H97M-D3H Intel (LGA1150)
*HD: 1TB Seagate Barracuda 64MB Sata III 7200RPM (2x - RAID 0)
*HD²: SAMSUNG M3 Externo USB 5400RPM 1TB
*Placa de vídeo: Nvidia GTX660 2GB DDR5 192bit EVGA
*RAM: 8GB DDR3 1600MHZ Kingston HYPER X BEAST (2x4GB)
*Fonte: Corsair 600W Reais CX600M Modular - CP-9020060-WW (80 Plus Bronze)
*Gabinete: Gabinete Raidmax Super Hurricane Branco - 248WB
*Monitor: LG 23MP55HQ Full HD HDMI 23'
avatar
Veterano
Veterano
Título : "I have no ammo to treat the patient!"
Mensagens : 983
Reputação : 51
Desde : 16/02/2015
Idade : 20
Localização : Mato Grosso
Link : Ednaldo Pereira
Ver perfil do usuário

Re: Pay 'n' Spray realista

em Sex 22 Jan 2016, 08:14
Ia se legal se desse pra escolher a cor dentro das cores setadas pro carro,  igual esse mod do fabia, soq só com as cores setadas no carcols, e nao todas do jogo, tipo como aparece no GGMM

(No caso sao as cores do sentinel)

______________________________

Workshop e PC:
Minha Workshop
Abrir carros do 3DS Max no ZModeler
Converter Modelos do Mafia III
Armas do Mafia 3 .sds
HD 300GB e 1TB
Processador AMD FX-6300 3.5Ghz
Placa de video XFX Radeon R7 260x 1 GB
8 Gb Ram(2x4) Kingston 1333Mhz DDR3
Placa Mae Gigabite GA-78LMT-USB3 Rev 5.0 AM3+
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 23
Localização : São Paulo - SP
Ver perfil do usuário

Re: Pay 'n' Spray realista

em Sex 22 Jan 2016, 11:58
Puts, pra fazer isso precisaria entender um pouco mais de programação (principalmente .asi que nunca vi especificamente).
E também queria focar em fazê-la não funcionar pra polícia como no GTA IV por exemplo. Seria bom se eu conseguisse fazê-los não me ignorar quando eu estiver dentro de uma como acontece...
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% (1 votos)

Re: Pay 'n' Spray realista

em Sex 22 Jan 2016, 19:30
@RafaQN escreveu:- Queria fazer um texto central como é no pay'n spray em outros casos de recusa, não sei qual o opcode certo;
Código:
0ACB: show_styled_text "~r~I THINK NOBODY IS SO STUPID TO DO IT..." time 2000 style 5

______________________________
" Everyone gonna remember my name ! "
avatar
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 97
Reputação : 12
Desde : 18/10/2015
Idade : 23
Localização : São Paulo - SP
Ver perfil do usuário

Re: Pay 'n' Spray realista

em Sab 23 Jan 2016, 01:22
Vlw de novo @Israel .
@Fabbio, já que você mostrou esse mod, descobri que eles são bem imcompatíveis, pois quando você entra no pay'n spray, acaba aparecendo a tela de escolha de cor mas não haverá respray. Ai buga tudo né...
Conteúdo patrocinado

Re: Pay 'n' Spray realista

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