GTA3script: Migração Sanny Builder e Auxílios

    Compartilhe
    avatar
    israel
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Mensagens : 657
    Reputação : 111
    Desde : 22/09/2015
    Idade : 19
    Localização : Salvador - BA

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por israel em Seg 02 Jan 2017, 13:37

    @Fabio escreveu:
    Código:
    CLEO_CALL get_global_var 0 802 _100_Percent_Complete
    0?
    Código:
    CLEO_RETURN 0 var
    0?
    Em gta3script o número de parâmetros é detectado automaticamente, por isso deve sempre deixar '0' ai :
    CLEO_CALL get_random_coords 0 (player_x player_y player_z 50.0) (player_x player_y player_z)
    //                                                       ^ This parameter should always be 0.
    //                                                          This was previously the amount of input variables, but now we employ
    //                                                          automatic detection of this value, much like progress counters in multifiles.
    CLEO_RETURN 0 x y z   // and those are going to be the outputs of the procedure.
    //                        ^ should always be 0, for the same reason as explained in CLEO_CALL.
    http://gtaforums.com/topic/876461-learn-gta3script-in-y-minutes/


    Última edição por israel em Seg 02 Jan 2017, 14:22, editado 1 vez(es)


    ____________________
    " Everyone gonna remember my name ! "
    avatar
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Deadstroke em Seg 02 Jan 2017, 13:45

    @israel escreveu:
    @Deadstroke escreveu:Essa função também falhou miseravelmente, infelizmente...
    Como assim "falhou" ? Você tentou do jeito que está ai e não apareceu a mensagem na tela ? ou usou outro código seguindo o exemplo e não funcionou ? Mostre o código. :v:

    Usei sua função e uma com $on_mission , e em todas apareceu 0 nos valores das vars. Usei isso aqui:

    Código:
    SCRIPT_START
    {
    NOP
    main_loop: 
    WAIT 0
    LVAR_INT on_mission
    CLEO_CALL get_global_var 0 (409) (on_mission)
    PRINT_FORMATTED_NOW "On_Mission = %i" 200 on_mission
    GOTO main_loop
    }
    SCRIPT_END

    {
    get_global_var:
      LVAR_INT var
      var *= 0x4
      var += 0xA49960
      READ_MEMORY var 4 0 var
      CLEO_RETURN 0 var
    }
    avatar
    israel
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Mensagens : 657
    Reputação : 111
    Desde : 22/09/2015
    Idade : 19
    Localização : Salvador - BA

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por israel em Seg 02 Jan 2017, 13:50

    ↑↑↑ Copiei exatamente essa sua função do OnMission, e imediatamente ao iniciar uma missão, apareceu "On Mission = 1". pokerface



    ____________________
    " Everyone gonna remember my name ! "
    avatar
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Deadstroke em Seg 02 Jan 2017, 14:05

    Mano, o código funcionou quando desabilitei o Fastman'92 Limit Adjuster. Ai fica foda, com certeza ele "realocou" o endereço de memória das variáveis globais, e logo não detecto usando esse código. Logo esse método funciona, mas não é garantido.
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21616
    Reputação : 635
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Junior_Djjr em Seg 02 Jan 2017, 14:49

    É este o problema dos limit adjusters, você tem que deixar os códigos compatíveis com eles.
    O Tuning Mod também, tive que fazer uma função para ler o endereço do handling dinamicamente.


    ____________________
    avatar
    Fabio
    Programador - Avançado
    Programador - Avançado

    Título : CEO da Fabio's Gambiarra Industries
    Mensagens : 18627
    Reputação : 338
    Desde : 04/05/2012
    Idade : 20
    Localização : Reserva, Paraná, Brasil, América Latina, America do Sul, América, Planeta Terra, Sistema Solar, Via láctea, Universo
    Link : gtamodvicio.blogspot.com

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Fabio em Seg 02 Jan 2017, 14:54

    @Junior_Djjr escreveu:Fabio ainda não conhece GTA3script :v:

    Nem li todo o conteúdo da página lá, preguiça :v:

    Tentem assim:
    Código:

    {
    get_global_var:
      LVAR_INT var addr
      READ_MEMORY 0x00468D5E 4 0 addr
      var *= 0x4
      var += addr
      READ_MEMORY var 4 0 var
      CLEO_RETURN 0 var
    }


    ____________________

    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
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Deadstroke em Seg 02 Jan 2017, 19:58

    @Fabio escreveu:
    @Junior_Djjr escreveu:Fabio ainda não conhece GTA3script :v:

    Nem li todo o conteúdo da página lá, preguiça :v:

    Tentem assim:
    Código:

    {
    ...
    }

    Deu certo, vlw! Estava tentando criar algumas funções pra usar com isso, porém estou com um problema escroto pra cassete (Imagem: https://drive.google.com/file/d/0B37TrXDep9JwdkFfMlZJdm5STWM/view?usp=sharing ). "Too few return arguments"? também tinha "Too much return arguments". O que realmente siginifca? No SCM fazia isso e não havia esses problemas...
    avatar
    Fabio
    Programador - Avançado
    Programador - Avançado

    Título : CEO da Fabio's Gambiarra Industries
    Mensagens : 18627
    Reputação : 338
    Desde : 04/05/2012
    Idade : 20
    Localização : Reserva, Paraná, Brasil, América Latina, America do Sul, América, Planeta Terra, Sistema Solar, Via láctea, Universo
    Link : gtamodvicio.blogspot.com

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Fabio em Seg 02 Jan 2017, 20:07

    @Deadstroke escreveu:
    @Fabio escreveu:
    @Junior_Djjr escreveu:Fabio ainda não conhece GTA3script :v:

    Nem li todo o conteúdo da página lá, preguiça :v:

    Tentem assim:
    Código:

    {
    ...
    }

    Deu certo, vlw! Estava tentando criar algumas funções pra usar com isso, porém estou com um problema escroto pra cassete (Imagem: https://drive.google.com/file/d/0B37TrXDep9JwdkFfMlZJdm5STWM/view?usp=sharing ). "Too few return arguments"? também tinha "Too much return arguments". O que realmente siginifca? No SCM fazia isso e não havia esses problemas...

    Deve ser bug do compilador, tentou -1 ao invés de 0? Ou tentou só CLEO_RETURN?

    Ou talvez o compilador queira que você sempre use o mesmo número de retornos, pode usar CLEO_RETURN 0 0 philosoraptor

    ou então:

    Código:

    DUMP
        B2 0A 04 00 00
    ENDDUMP


    ____________________

    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
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21616
    Reputação : 635
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Junior_Djjr em Seg 02 Jan 2017, 20:19

    Eu testei muitíssimo bem e o compilador não tá com problemas não. Só notei problema ao misturar variáveis INT com FLOAT dentro e fora, daí ele embola tudo. Não sei se o LINK corrigiu já (tem que ficar de olho no lançamento do compilador dele em busca de atualizações)

    O problema é que a retorno SEMPRE tem que ter o mesmo número de retornos. O que o Sanny Builder fazia era errado.
    A solução é isso mesmo, CLEO_RETURN 0 0


    ____________________
    avatar
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Deadstroke em Seg 02 Jan 2017, 20:25

    Cara, o que acho que fica estranho nas funções CLEO_CALL e CLEO_RETURN é justamente as variáveis que ganham novos valores: na entrada do CLEO_CALL, preciso definir na ordem quais são as vars para que entrem na função e com o tipo já definido (int, float...). Se coloco unm float não posso fazera variável ser int, ou vice-versa.
    E se eu colocar CLEO_RETURN 0 0, não vai retornar 0 para uma das vars que foram inseridas no CLEO_CALL, mesmo que tenham sido inputs (de entrada na outra função)? Isso embola um pouco as coisas kkkk,

    Edit.:

    @Fabio escreveu:Ou talvez o compilador queira que você sempre use o mesmo número de retornos, pode usar CLEO_RETURN 0 0 philosoraptor

    Se for isso mesmo f****, pq queria justamente que numa parte tivesse retorno e em outra não.
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21616
    Reputação : 635
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Junior_Djjr em Seg 02 Jan 2017, 20:48

    @Deadstroke escreveu:Cara, o que acho que fica estranho nas funções CLEO_CALL e CLEO_RETURN é justamente as variáveis que ganham novos valores: na entrada do CLEO_CALL, preciso definir na ordem quais são as vars para que entrem na função e com o tipo já definido (int, float...). Se coloco unm float não posso fazera variável ser int, ou vice-versa.
    Ué, você pode. O único problema nesse assunto é que você não pode economizar variáveis reutilizando vars int e floats, mas este problema é mesmo no limite (pois o certo é nem existir limite de vars, né? O que ainda será feito em algum dia, assim nem precisaria reutilizar para economizá-las)

    @Deadstroke escreveu:E se eu colocar CLEO_RETURN 0 0, não vai retornar 0 para uma das vars que foram inseridas no CLEO_CALL, mesmo que tenham sido inputs (de entrada na outra função)? Isso embola um pouco as coisas kkkk,
    Sim, vai retornar 0 para a variável que você deu o retorno. Qual o problema de retornar 0 nela?


    @Deadstroke escreveu:
    @Fabio escreveu:Ou talvez o compilador queira que você sempre use o mesmo número de retornos, pode usar CLEO_RETURN 0 0 philosoraptor

    Se for isso mesmo f****, pq queria justamente que numa parte tivesse retorno e em outra não.
    Não entendi o motivo de você não querer que retorne algum número...
    avatar
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Deadstroke em Seg 02 Jan 2017, 21:33

    @Junior_djjr escreveu:Não entendi o motivo de você não querer que retorne algum número...
    Você acabou de falar do limite de variáveis que têm no jogo. Imagina eu com uma var que tem um valor, e ai por eu ter que retornar um valor, ela ter que mudar de valor e tals...

    Tentei refazer o mod No 100% advantages, mas realmente ainda não dá para fazer isso pelo GTA3script com as funções atuais, talvez com algumas mais avançadas.

    Script:
    Código:
    SCRIPT_START

    {   
        NOP
        LVAR_INT parked_rhino parked_hydra tempvar1
        LVAR_FLOAT tempvar2
       
        no_100_advantages:
        IF  CLEO_CALL func_global_vars_int 0 (2 0 802 -1 1) tempvar1      //$_100_Percent_Complete = 1
            //Edit car parked generators to zero
                CLEO_CALL func_global_vars_int 0 (0 -1 2777 -1 -1) parked_rhino    //$parked_rhino
                CLEO_CALL func_global_vars_int 0 (0 -1 673 -1 -1) parked_hydra    //$parked_hydra
                SWITCH_CAR_GENERATOR parked_rhino 0
                SWITCH_CAR_GENERATOR parked_hydra 0
                CLEO_CALL func_global_vars_int 0 (1 -1 2777 -1 parked_rhino) tempvar1    //$parked_rhino
                CLEO_CALL func_global_vars_int 0 (1 -1 673 -1 parked_hydra) tempvar1    //$parked_hydra
            //Losing 100% complete game
                SET_PROGRESS_TOTAL 0
                CLEO_CALL func_global_vars_int 0 (1 -1 802 -1 0) tempvar1    //$_100_Percent_Complete = 0
                CLEO_CALL func_global_vars_float 0 (1 -1 815 -1 99.9) tempvar2    //$STAT_Percentage_Completed = 99.0
        ENDIF
        WAIT 2000
        GOTO no_100_advantages
    }
    SCRIPT_END

    // CLEO_CALL func_global_vars_int 0 (type_mod type_condition var_number array_n var_input) var_output 
    {
    func_global_vars_int: 
        //Local vars
            LVAR_INT type_mod type_condition var_number array_n var_value addr

        //Check if it's an array
            IF array_n >= 0
                var_number += array_n
            ENDIF 
       
        //Get global var address
            READ_MEMORY 0x00468D5E 4 0 addr
            var_number *= 0x4
            var_number += addr

        //Check what type of condition will bee used
            SWITCH type_mod
                CASE 2  // Check
                    READ_MEMORY var_number 4 0 var_number
                    GOSUB check_global_var_int
                    BREAK
                CASE 1  // Write
                    WRITE_MEMORY var_number 4 var_value 0               
                    BREAK
                DEFAULT // Read
                    READ_MEMORY var_number 4 0 var_number
                    BREAK
            ENDSWITCH
        IF NOT type_mod = 1
        AND NOT type_mod = 2
            CLEO_RETURN 0 var_number
        ELSE
            CLEO_RETURN 0 0
        ENDIF

        //End Sub Function

        check_global_var_int:  //Check what type of condition will be used
            SWITCH type_condition
                CASE 1  // <> (diferent)
                    IF NOT  var_number = var_value
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false   
                    ENDIF
                    BREAK
                CASE 2  // >
                    IF  var_number > var_value
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false   
                    ENDIF
                    BREAK
                CASE 3  // <
                    IF  var_number < var_value
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
                CASE 4  // >=
                    IF  var_number >= var_value
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
                CASE 5  // <=
                    IF  var_number <= var_value
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK                           
                DEFAULT // =
                    IF  var_number = var_value
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
            ENDSWITCH
        RETURN
    }


    {
    func_global_vars_float: 
        //Local vars
            LVAR_INT type_mod type_condition var_number1 array_n
            LVAR_FLOAT var_value_float var_number2
            LVAR_INT addr

        //Check if it's an array
            IF array_n >= 0
                var_number1 += array_n
            ENDIF 
       
        //Get global var address
            READ_MEMORY 0x00468D5E 4 0 addr
            var_number1 *= 0x4
            var_number1 += addr

        //Check what type of condition will bee used
            SWITCH type_mod
                CASE 2  // Check
                    READ_MEMORY var_number1 4 0 var_number2
                    GOSUB check_global_var_float
                    BREAK
                CASE 1  // Write
                    WRITE_MEMORY var_number1 4 var_value_float 0                                 
                    BREAK
                DEFAULT // Read
                    READ_MEMORY var_number1 4 0 var_number2
                    BREAK
            ENDSWITCH
        IF NOT type_mod = 1
        AND NOT type_mod = 2
            CLEO_RETURN 0 var_number2
        ELSE
            CLEO_RETURN 0 0.0
        ENDIF
       
        //End Sub Function

        check_global_var_float:  //Check what type of condition will be used
            READ_MEMORY var_number1 4 0 var_number2
            SWITCH type_condition
                CASE 1  // <> (diferent)
                    IF NOT  var_number2 = var_value_float
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false   
                    ENDIF
                    BREAK
                CASE 2  // >
                    IF  var_number2 > var_value_float
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false   
                    ENDIF
                    BREAK
                CASE 3  // <
                    IF  var_number2 < var_value_float
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
                CASE 4  // >=
                    IF  var_number2 >= var_value_float
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
                CASE 5  // <=
                    IF  var_number2 <= var_value_float
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK                           
                DEFAULT // =
                    IF  var_number2 = var_value_float
                        IS_PC_VERSION  //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
            ENDSWITCH
        RETURN
    }

    Esse código não deve compilar por causa das vars parked_... que "não são car generators". O compilador não reconhece ou talvez eu mesmo tenha feito do jeito errado, mas o que complica é a falta de flexibilidade de se usar ele. Acho muito bom isso, principalmente pra quem está começando (meio que todos no caso), mas como o jogo tem muitas limitações, ainda preferiria algo como o SCM bem mais flexivel e exigente mesmo sendo ariscado.
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21616
    Reputação : 635
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Junior_Djjr em Seg 02 Jan 2017, 21:51

    @Deadstroke escreveu:
    @Junior_djjr escreveu:Não entendi o motivo de você não querer que retorne algum número...
    Você acabou de falar do limite de variáveis que têm no jogo. Imagina eu com uma var que tem um valor, e ai por eu ter que retornar um valor, ela ter que mudar de valor e tals...
    ?? Mas você não esperaria que o valor fosse retornado caso fosse verdadeiro etc?

    TIpo, você mandou pegar um valor num CLEO_CALL, e retornar numa variável. Se dar tudo bem, irá retornar o valor naquela variável, e se não der bem, não vai retornar nada. Isso que você quer fazer né?
    Mas qual o motivo de "não retornar nada"? Qual o motivo disso ser necessário? Você botou aquela variável esperando retornar um valor já imaginando "ok, pode ser que retorne um valor nela", então qual o motivo de não querer retornar um "0" ou "-1" etc? Isso não faz sentido, não tem nada de "limite de variáveis", se você mandou aquela variável retornar um valor, é porque você sabe que pode retornar um valor nela,seja um valor útil, ou inútil.


    @Deadstroke escreveu:Tentei refazer o mod No 100% advantages, mas realmente ainda não dá para fazer isso pelo GTA3script com as funções atuais, talvez com algumas mais avançadas.

    Script:

    Código:
    SCRIPT_START

    {    
        NOP
        LVAR_INT parked_rhino parked_hydra tempvar1
        LVAR_FLOAT tempvar2
        
        no_100_advantages:
        IF  CLEO_CALL func_global_vars_int 0 (2 0 802 -1 1) tempvar1       //$_100_Percent_Complete = 1
            //Edit car parked generators to zero
                CLEO_CALL func_global_vars_int 0 (0 -1 2777 -1 -1) parked_rhino    //$parked_rhino
                CLEO_CALL func_global_vars_int 0 (0 -1 673 -1 -1) parked_hydra     //$parked_hydra
                SWITCH_CAR_GENERATOR parked_rhino 0
                SWITCH_CAR_GENERATOR parked_hydra 0
                CLEO_CALL func_global_vars_int 0 (1 -1 2777 -1 parked_rhino) tempvar1    //$parked_rhino
                CLEO_CALL func_global_vars_int 0 (1 -1 673 -1 parked_hydra) tempvar1     //$parked_hydra
            //Losing 100% complete game
                SET_PROGRESS_TOTAL 0
                CLEO_CALL func_global_vars_int 0 (1 -1 802 -1 0) tempvar1    //$_100_Percent_Complete = 0
                CLEO_CALL func_global_vars_float 0 (1 -1 815 -1 99.9) tempvar2     //$STAT_Percentage_Completed = 99.0
        ENDIF
        WAIT 2000
        GOTO no_100_advantages
    }
    SCRIPT_END

    // CLEO_CALL func_global_vars_int 0 (type_mod type_condition var_number array_n var_input) var_output  
    {
    func_global_vars_int:  
        //Local vars
            LVAR_INT type_mod type_condition var_number array_n var_value addr

        //Check if it's an array
            IF array_n >= 0
                var_number += array_n
            ENDIF  
        
        //Get global var address
            READ_MEMORY 0x00468D5E 4 0 addr
            var_number *= 0x4
            var_number += addr

        //Check what type of condition will bee used
            SWITCH type_mod
                CASE 2  // Check
                    READ_MEMORY var_number 4 0 var_number
                    GOSUB check_global_var_int
                    BREAK
                CASE 1  // Write
                    WRITE_MEMORY var_number 4 var_value 0                
                    BREAK
                DEFAULT // Read
                    READ_MEMORY var_number 4 0 var_number
                    BREAK
            ENDSWITCH
        IF NOT type_mod = 1
        AND NOT type_mod = 2
            CLEO_RETURN 0 var_number
        ELSE
            CLEO_RETURN 0 0
        ENDIF

        //End Sub Function

        check_global_var_int:   //Check what type of condition will be used
            SWITCH type_condition
                CASE 1  // <> (diferent)
                    IF NOT   var_number = var_value
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false    
                    ENDIF
                    BREAK
                CASE 2  // >
                    IF   var_number > var_value
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false    
                    ENDIF
                    BREAK
                CASE 3  // <
                    IF   var_number < var_value
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
                CASE 4  // >=
                    IF   var_number >= var_value
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
                CASE 5  // <=
                    IF   var_number <= var_value
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK                            
                DEFAULT // =
                    IF   var_number = var_value
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
            ENDSWITCH
        RETURN
    }


    {
    func_global_vars_float:  
        //Local vars
            LVAR_INT type_mod type_condition var_number1 array_n
            LVAR_FLOAT var_value_float var_number2
            LVAR_INT addr

        //Check if it's an array
            IF array_n >= 0
                var_number1 += array_n
            ENDIF  
        
        //Get global var address
            READ_MEMORY 0x00468D5E 4 0 addr
            var_number1 *= 0x4
            var_number1 += addr

        //Check what type of condition will bee used
            SWITCH type_mod
                CASE 2  // Check
                    READ_MEMORY var_number1 4 0 var_number2
                    GOSUB check_global_var_float
                    BREAK
                CASE 1  // Write
                    WRITE_MEMORY var_number1 4 var_value_float 0                                  
                    BREAK
                DEFAULT // Read
                    READ_MEMORY var_number1 4 0 var_number2
                    BREAK
            ENDSWITCH
        IF NOT type_mod = 1
        AND NOT type_mod = 2
            CLEO_RETURN 0 var_number2
        ELSE
            CLEO_RETURN 0 0.0
        ENDIF
        
        //End Sub Function

        check_global_var_float:   //Check what type of condition will be used
            READ_MEMORY var_number1 4 0 var_number2
            SWITCH type_condition
                CASE 1  // <> (diferent)
                    IF NOT   var_number2 = var_value_float
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false    
                    ENDIF
                    BREAK
                CASE 2  // >
                    IF   var_number2 > var_value_float
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false    
                    ENDIF
                    BREAK
                CASE 3  // <
                    IF   var_number2 < var_value_float
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
                CASE 4  // >=
                    IF   var_number2 >= var_value_float
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
                CASE 5  // <=
                    IF   var_number2 <= var_value_float
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK                            
                DEFAULT // =
                    IF   var_number2 = var_value_float
                        IS_PC_VERSION   //return_true
                    ELSE
                        IS_AUSTRALIAN_GAME  //return_false
                    ENDIF
                    BREAK
            ENDSWITCH
        RETURN
    }

    Esse código não deve compilar por causa das vars parked_... que "não são car generators". O compilador não reconhece ou talvez eu mesmo tenha feito do jeito errado, mas o que complica é a falta de flexibilidade de se usar ele. Acho muito bom isso, principalmente pra quem está começando (meio que todos no caso), mas como o jogo tem muitas limitações, ainda preferiria algo como o SCM bem mais flexivel e exigente mesmo sendo ariscado.
    Nossa, sério, você fez um script de 200 linhas pois não aguentou esperar o LINK/2012 implementar o uso de variáveis globais? Como eu disse, espere ele colocar.
    avatar
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Deadstroke em Seg 02 Jan 2017, 21:55

    @Junior_Djjr escreveu:
    Código:
    Nossa, sério, você fez um script de 200 linhas pois não aguentou esperar o LINK/2012 implementar o uso de variáveis globais? Como eu disse, espere ele colocar.
    Hahahahahaha, parece bem melhor mesmo, pq desse jeito fica bem difícil... Apesar que eu queria trabalhar com isso.
    avatar
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Deadstroke em Seg 02 Jan 2017, 22:39

    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21616
    Reputação : 635
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Junior_Djjr em Seg 02 Jan 2017, 22:43

    Você inverteu a ordem :v:
    Código:
    REPEAT 5 i
        PRINT_WITH_NUMBER (NUMBER) i 1000 TRUE
        WAIT 1000
    ENDREPEAT
    Você fez REPEAT i 5


    Última edição por Junior_Djjr em Ter 03 Jan 2017, 00:10, editado 1 vez(es)
    avatar
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Deadstroke em Ter 03 Jan 2017, 00:08

    Nossa, que errinho hein...
    Normalmente vejo primeiro a variável e depois o número, nem prestei atenção...
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21616
    Reputação : 635
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Junior_Djjr em Ter 03 Jan 2017, 00:10

    Não, dahora é que eu inverti também ao falar do seu erro.
    (corrigi agora)


    ____________________
    avatar
    Fabio
    Programador - Avançado
    Programador - Avançado

    Título : CEO da Fabio's Gambiarra Industries
    Mensagens : 18627
    Reputação : 338
    Desde : 04/05/2012
    Idade : 20
    Localização : Reserva, Paraná, Brasil, América Latina, America do Sul, América, Planeta Terra, Sistema Solar, Via láctea, Universo
    Link : gtamodvicio.blogspot.com

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Fabio em Ter 03 Jan 2017, 04:47

    @Junior_Djjr escreveu:
    @Deadstroke escreveu:Cara, o que acho que fica estranho nas funções CLEO_CALL e CLEO_RETURN é justamente as variáveis que ganham novos valores: na entrada do CLEO_CALL, preciso definir na ordem quais são as vars para que entrem na função e com o tipo já definido (int, float...). Se coloco unm float não posso fazera variável ser int, ou vice-versa.
    Ué, você pode. O único problema nesse assunto é que você não pode economizar variáveis reutilizando vars int e floats, mas este problema é mesmo no limite (pois o certo é nem existir limite de vars, né? O que ainda será feito em algum dia, assim nem precisaria reutilizar para economizá-las)

    Usa escopos.


    ____________________

    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
    Deadstroke
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 481
    Reputação : 30
    Desde : 08/02/2016
    Localização : São Paulo

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Deadstroke em Ter 03 Jan 2017, 09:31

    @Fabio escreveu:Usa escopos.

    Não entendi...

    E como eu posso fazer o compilador entender que uma var é um ped ou um carro lendo de um endereço de memória ou de alguma função que usei? Link: https://drive.google.com/open?id=0B37TrXDep9JwQ1VqbXphQVBaQW8
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21616
    Reputação : 635
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Junior_Djjr em Ter 03 Jan 2017, 12:36

    @Fabio escreveu:
    @Junior_Djjr escreveu:
    @Deadstroke escreveu:Cara, o que acho que fica estranho nas funções CLEO_CALL e CLEO_RETURN é justamente as variáveis que ganham novos valores: na entrada do CLEO_CALL, preciso definir na ordem quais são as vars para que entrem na função e com o tipo já definido (int, float...). Se coloco unm float não posso fazera variável ser int, ou vice-versa.
    Ué, você pode. O único problema nesse assunto é que você não pode economizar variáveis reutilizando vars int e floats, mas este problema é mesmo no limite (pois o certo é nem existir limite de vars, né? O que ainda será feito em algum dia, assim nem precisaria reutilizar para economizá-las)

    Usa escopos.
    É que imaginei em códigos complexos onde você tá no limite já e você começa a reutilizar as mesmas tentando encaixar. Só se colocar um monte de escopo abrindo e fechando no meio desse código.

    @Deadstroke escreveu:
    @Fabio escreveu:Usa escopos.

    Não entendi...

    E como eu posso fazer o compilador entender que uma var é um ped ou um carro lendo de um endereço de memória ou de alguma função que usei? Link: https://drive.google.com/open?id=0B37TrXDep9JwQ1VqbXphQVBaQW8
    Abrindo o main.scm você vai ter como a Rockstar fez isso:

    Ou seja, um comando no topo numa posição que nunca será lida, assim engana o compilador dizendo que aquela variável é de tal tipo.
    Basicamente, se você usou tal variável num tal comando, o compilador já imagina "ah, essa variável é um char", mesmo que o comando não seja lido dentro do jogo.

    Você pode querer desativar isso do compilador (não lembro como desativa). Eu não desativei pois prefiro continuar seguindo o estilo da Rockstar mesmo. Eu coloco no topo do código um GOTO label .... label: deixando tais comandos lá.
    avatar
    Fabio
    Programador - Avançado
    Programador - Avançado

    Título : CEO da Fabio's Gambiarra Industries
    Mensagens : 18627
    Reputação : 338
    Desde : 04/05/2012
    Idade : 20
    Localização : Reserva, Paraná, Brasil, América Latina, America do Sul, América, Planeta Terra, Sistema Solar, Via láctea, Universo
    Link : gtamodvicio.blogspot.com

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Fabio em Ter 03 Jan 2017, 12:42

    @Deadstroke escreveu:
    @Fabio escreveu:Usa escopos.

    Não entendi...

    No Learn GTA3script in Y minutes fala sobre escopos.

    Código:

    // To declare local variables you use LVAR_ instead of VAR_
    // Local variables must be declared inside scopes
    {
        LVAR_INT my_local  
    }

    // Naturally, you may use the same name between scopes
    {
        LVAR_FLOAT my_local
    }

    @Deadstroke escreveu:
    E como eu posso fazer o compilador entender que uma var é um ped ou um carro lendo de um endereço de memória ou de alguma função que usei? Link: https://drive.google.com/open?id=0B37TrXDep9JwQ1VqbXphQVBaQW8

    Não sei, tenta com essa gambiarra:

    Código:

    GOTO gambiarra
    CREATE_CAR (CHEETAH) 0.0 0.0 0.0 car
    gambiarra:

    Fuch That Guy Fuch That Guy

    Vou perguntar ao LINK.

    @Edit, Júnior postou antes pokerface
    E usaram a gambiarra mesmo Raisins Face

    @Junior_Djjr escreveu:
    É que imaginei em códigos complexos onde você tá no limite já e você começa a reutilizar as mesmas tentando encaixar. Só se colocar um monte de escopo abrindo e fechando no meio desse código.

    Exatamente.


    ____________________

    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
    israel
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Mensagens : 657
    Reputação : 111
    Desde : 22/09/2015
    Idade : 19
    Localização : Salvador - BA

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por israel em Ter 03 Jan 2017, 12:44

    A Rockstar é uma gambiarra. denilson gostoso


    ____________________
    " Everyone gonna remember my name ! "
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

    Título : Não quero acreditar, quero saber.
    Mensagens : 21616
    Reputação : 635
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Junior_Djjr em Ter 03 Jan 2017, 13:08

    Não gostei muito da explicação sobre escopos lá, deve ser porque tô com Sanny na cabeça.

    Código:
    {
    LVAR_INT iTempVar1 //0@
    LVAR_INT iTempVar2 //1@
    LVAR_FLOAT fTempVar1 //2@
    LVAR_INT iCounter //3@
    }

    {
    LVAR_FLOAT fTempVar1 //0@
    LVAR_INT iScore //1@
    }
    Pra quem usa Sanny, acho que essa é a explicação mais simples de todas.


    ____________________
    avatar
    Rodrigo294
    Mensagens Nível 2
    Mensagens Nível 2

    Mensagens : 50
    Reputação : 2
    Desde : 14/03/2015

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Rodrigo294 em Ter 03 Jan 2017, 13:28

    ⬆ Realmente isso explica muito melhor :v:

    Conteúdo patrocinado

    Re: GTA3script: Migração Sanny Builder e Auxílios

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Ter 27 Jun 2017, 12:50