Compartilhe
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 714
Reputação : 115
Desde : 22/09/2015
Ver perfil do usuário

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

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 511
Reputação : 34
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

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

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
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 714
Reputação : 115
Desde : 22/09/2015
Ver perfil do usuário

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

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 511
Reputação : 34
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

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

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
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

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

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
Programador - Avançado
Programador - Avançado
Mensagens : 18912
Reputação : 346
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

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

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 511
Reputação : 34
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

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

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
Programador - Avançado
Programador - Avançado
Mensagens : 18912
Reputação : 346
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

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

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
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

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

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 511
Reputação : 34
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

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

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
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

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

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 511
Reputação : 34
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

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

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
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

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

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 511
Reputação : 34
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

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

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 511
Reputação : 34
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

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

em Seg 02 Jan 2017, 22:39
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

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

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 511
Reputação : 34
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

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

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
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

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

em Ter 03 Jan 2017, 00:10
Não, dahora é que eu inverti também ao falar do seu erro.
(corrigi agora)

______________________________

avatar
Programador - Avançado
Programador - Avançado
Mensagens : 18912
Reputação : 346
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

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

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 511
Reputação : 34
Desde : 08/02/2016
Localização : São Paulo
Ver perfil do usuário

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

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
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

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

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
Programador - Avançado
Programador - Avançado
Mensagens : 18912
Reputação : 346
Desde : 04/05/2012
Idade : 20
Link : gtamodvicio.blogspot.com
Ver perfil do usuáriohttp://gtamodvicio.blogspot.com

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

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
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Mensagens : 714
Reputação : 115
Desde : 22/09/2015
Ver perfil do usuário

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

em Ter 03 Jan 2017, 12:44
A Rockstar é uma gambiarra. denilson gostoso

______________________________
" Everyone gonna remember my name ! "
avatar
Scripter CLEO - Avançado
Scripter CLEO - Avançado
Título : Não quero acreditar, quero saber.
Mensagens : 21905
Reputação : 678
Desde : 03/05/2012
Idade : 22
Localização : Ibitinga - SP
Link : www.MixMods.com.br
Ver perfil do usuáriohttp://MixMods.com.br

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

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
Mensagens Nível 2
Mensagens Nível 2
Mensagens : 50
Reputação : 2
Desde : 14/03/2015
Ver perfil do usuário

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

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

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