Duvida sobre call_scm_func

    Compartilhe
    avatar
    salathiel
    Mensagens Nível 1
    Mensagens Nível 1

    Mensagens : 24
    Reputação : 0
    Desde : 29/02/2016
    Link : salathielpp.blogspot.com.br

    Duvida sobre call_scm_func

    Mensagem por salathiel em Sex 11 Mar 2016, 13:58

    Queria saber se é possível passar uma string como parâmetro pelo 0AB1: call_scm_func.

    Tipo:
    Código:

    //...
    0AB1: call_scm_func @MostrarMensagem "Ola Mundo" 0@
    //....

    :MostrarMensagem
    0ACA: show_text_box 0@
    wait 0
    0051: return

    Esse código acima não funciona. Queria se é posivel fazer isso de outra forma que funcione. De uma maneira que dê para chamar a função em uma linha, sem usar uma variável pra string de preferencia.


    ____________________
    Mod Policia GTA PS2
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

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

    Re: Duvida sobre call_scm_func

    Mensagem por Junior_Djjr em Sex 11 Mar 2016, 14:32

    Sim (se não me engano, somente a partir da CLEO 4.3)
    O problema eh q vc esqueceu do parâmetro da call_scm_func

    Opcode search:
    Código:
    0AB1: call_scm_func @GetSQR 1 10 $result
    Lendo seria
    Código:
    0AB1: call_scm_func @Label Numparametros 1 Parametro1 10 Retorno $result
    Vc esquecei de dar o número de parâmetros

    Código:
    0AB1: call_scm_func @MostrarMensagem 2 "Ola Mundo" 0@

    E oq esse 0@ quer dizer? pokerface vc nem usou ele

    Código:
    0051: return
    Vc usou return aqui, return eh pra gosub e não pra call_scm_func
    Acho melhor vc reler o tutorial de scm func

    E praq esse wait?


    ____________________
    avatar
    salathiel
    Mensagens Nível 1
    Mensagens Nível 1

    Mensagens : 24
    Reputação : 0
    Desde : 29/02/2016
    Link : salathielpp.blogspot.com.br

    Re: Duvida sobre call_scm_func

    Mensagem por salathiel em Sex 11 Mar 2016, 20:20

    Realmente esqueci de colocar o numero de parâmetros, mas foi porque escrevi isso ai rápido ai não percebi.
    Tanto que o problema não é esse. Você testou ai? Aqui continua dando erro.

    Como eu disse escrevi rápido ao invés do return era pra tá 0AB2: ret 1 0
    O 0@ é a variável do retorno achei que era obrigatório. O wait 0, eu uso por usar msm, toda vez que o código vai pra outro lugar, antes eu coloco wait 0, acho q é trauma causado por bugs :)


    ____________________
    Mod Policia GTA PS2
    avatar
    salathiel
    Mensagens Nível 1
    Mensagens Nível 1

    Mensagens : 24
    Reputação : 0
    Desde : 29/02/2016
    Link : salathielpp.blogspot.com.br

    Re: Duvida sobre call_scm_func

    Mensagem por salathiel em Dom 13 Mar 2016, 18:09

    Up. Alguém pra ajudar?
    Só preciso de um exemplo que funcione.


    ____________________
    Mod Policia GTA PS2
    avatar
    salathiel
    Mensagens Nível 1
    Mensagens Nível 1

    Mensagens : 24
    Reputação : 0
    Desde : 29/02/2016
    Link : salathielpp.blogspot.com.br

    Re: Duvida sobre call_scm_func

    Mensagem por salathiel em Dom 13 Mar 2016, 18:28

    Desculpa pelo post triplo.
    Aqui ta o código completo (não funciona, imprime i):

    Código:
    {$CLEO .cs}
    thread "stringscm"    

    :INIT
    if
    056D:   actor $PLAYER_ACTOR defined
    jf @INIT
    wait 1000

    :LOOP

    if
    0AB0:   key_pressed 74
    then
        0AB1: call_scm_func @MostrarMensagem 1 "Ola Mundo" 0@
    end

    wait 0
    jump @LOOP  
    end_thread        


    :MostrarMensagem
    0ACA: show_text_box 0@v //neste caso ta imprimindo "i".se colocar 0@ crasha, se colocar 0@s e mudar pra a string pra 'ola mundo' o jogo imprime 048X
    wait 0
    0AB2: ret 1 0


    ____________________
    Mod Policia GTA PS2
    avatar
    Fabio
    Programador - Avançado
    Programador - Avançado

    Título : CEO da Fabio's Gambiarra Industries
    Mensagens : 18604
    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: Duvida sobre call_scm_func

    Mensagem por Fabio em Dom 13 Mar 2016, 18:33

    Use end_custom_thread, end_thread seria para os SCM (as versões da cleo nova podem mudar o opcode para funcionar normalmente na cleo, mas não sei, não garanto, melhor usar o padrão mesmo)

    Código:
    0ACA: show_text_box 0@v

    O problema princiipal está nesse v, está dizendo que é uma long string, deixe apenas a variável 0@

    Código:
    0ACA: show_text_box 0@

    Não precisa ter wait 0 na SCM func, não é obrigatório.

    Outra observação, thread name não é obrigatório e o suporte do jogo são 7 caracteres para o thread name, então ele vai cortar o nome ali

    Coloque um wait 0 por segurança depois da label :INIT

    Código:
     
    :INIT
    if
    056D:  actor $PLAYER_ACTOR defined
    jf @INIT


    ____________________

    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 : 21596
    Reputação : 631
    Desde : 03/05/2012
    Idade : 21
    Localização : Ibitinga - SP
    Link : www.MixMods.com.br

    Re: Duvida sobre call_scm_func

    Mensagem por Junior_Djjr em Dom 13 Mar 2016, 22:12

    Não se usa actor_defined, se usa player_defined (ou player.defined())

    E msm eu citando os erros e coisas desnecessárias vc voltou a enviar um script com as msms coisas, vc tah errando muito, acho melhor rever os tutoriais com mais atenção


    ____________________
    avatar
    salathiel
    Mensagens Nível 1
    Mensagens Nível 1

    Mensagens : 24
    Reputação : 0
    Desde : 29/02/2016
    Link : salathielpp.blogspot.com.br

    Re: Duvida sobre call_scm_func

    Mensagem por salathiel em Ter 15 Mar 2016, 10:29

    O erro não é em outra parte do código.
    Se eu trocar
    Código:
    0ACA: show_text_box 0@v
    Por
    Código:
    0ACA: show_text_box "Hello World"

    O código funciona de boa. O problema ta na passagem da string. Mesmo que tenha coisas desnecessárias ai, a unica parte que da erro é a linha 24.

    O problema principal está nesse v, está dizendo que é uma long string, deixe apenas a variável 0@

    Como eu coloquei no comentário, isso crasha o jogo.

    Se alguém puder mandar um script simples qualquer funcionando com a passagem da string por parâmetro eu agradeço muito :)


    ____________________
    Mod Policia GTA PS2
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

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

    Re: Duvida sobre call_scm_func

    Mensagem por Junior_Djjr em Ter 15 Mar 2016, 17:35

    Eu faria assim

    Código:
    {$cleo}
    0000:

    while true
        wait 0
        if 0AB0:   key_pressed 74
        then
            0AC6: 0@ = label @16Bytes offset
            0AD3: 0@ = format "Olar abigos"
            0AB1: call_scm_func @MostrarMensagem 1 0@
        end
    end


    :MostrarMensagem
    0ACA: show_text_box 0@
    0AB2: ret 0


    :16Bytes
    hex
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    end

    Tbm eh legal fazer assim pois vc pode manusear strings não soh de 16 bytes, mas de qualquer quantidade (não literalmente, enfim), bastando adicionar mais bytes ali na label 16bytes para criar mais espaço na memória

    Eu praticamente nunca uso @v, gosto de criar um espaço de memória na thread e ficar usando aquele msm espaço sempre q vou utilizar alguma string

    Perceba q o opcode 0AD3: (format) tbm aceita formatação
    Código:
    0AD3: 0@ = format "~r~%d + %d = %d" 1 1 2
    Vai mostrar 1 + 1 = 2 em vermelho

    Dica: Vc pode preferir o opcode 0ACD: ou 0AD1: (caso vc não use o opcode format mas precise usar formatação aqui) ao invés da text box, sei lah, eu prefiro muito mais

    Código:
    {$cleo}
    0000:

    while true
        wait 0
        if 0AB0:   key_pressed 74 //J
        then
            0AC6: 0@ = label @32Bytes offset
            0AD3: 0@ = format "~b~eu sou um texto azul"
            0AB1: call_scm_func @MostrarMensagem 1 0@
        end
        if 0AB0:   key_pressed 75 //K
        then
            0AC6: 0@ = label @32Bytes offset
            0AD3: 0@ = format "~r~eu sou um texto vermelho"
            0AB1: call_scm_func @MostrarMensagem 1 0@
        end
    end

    :MostrarMensagem
    0ACD: show_text_highpriority 0@ time 1000
    0AB2: ret 0

    :32Bytes
    hex
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    end
    Veja q precisei de 27 bytes + null terminator (ou seja, 28 bytes) por causa do segundo texto, daí preferi criar uma label com 32 bytes de espaço pra guardar a string lah


    ____________________
    avatar
    salathiel
    Mensagens Nível 1
    Mensagens Nível 1

    Mensagens : 24
    Reputação : 0
    Desde : 29/02/2016
    Link : salathielpp.blogspot.com.br

    Re: Duvida sobre call_scm_func

    Mensagem por salathiel em Qua 16 Mar 2016, 12:47

    Muito obrigado pela resposta :)
    Legal, acho que o único jeito de passar é usando variável mesmo.

    Eu não sou muito fan de criar um espaço na tread e tals, acho meio gambiarroso. Ao invés disso eu usava uma variável global tipo:
    Código:
    $PARAM = "Chega de hello world"
    0AB1: call_scm_func @MostrarMensagem 1 $PARAM

    Assim também funciona, sei que não é bom usar variável global e tals, mas você sabe dizer se isso é aceitável ou é melhor eu usar o hex ... end mesmo?


    ____________________
    Mod Policia GTA PS2
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

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

    Re: Duvida sobre call_scm_func

    Mensagem por Junior_Djjr em Qui 17 Mar 2016, 02:00

    Vc respondeu sua pergunta
    @salathiel escreveu:sei que não é bom usar variável global
    Além deq oq vc fez eh até PIOR
    Por exemplo, supondo q este $PARAM seja compilado na variável global $7 (a $7 eh a primeira livre), outro mod pode ter compilado alguma var global q tbm caiu na 7 e assim ficam incompatíveis
    Dae vem: oq vc fez usou 21 bytes, ou seja, 6 variáveis, se tivesse compilado na variável $7 iria sobrescrever a 8, 9, 10, 11 e 12, e adivinha qual o nome da $11? $PLAYER_GROUP, ou seja, o grupo do player, ou seja, o grupo de membros de gangue recrutados etc... Assim como a $12 eh a flag do basquete, ou seja, fodeu tbm o basquete do jogo
    Variável global fode tudo.....


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

    Mensagens : 601
    Reputação : 37
    Desde : 19/08/2015
    Idade : 14
    Localização : Em algum lugar do brasil
    Link : https://www.youtube.com/watch?v=lMB18XPgEWA

    Re: Duvida sobre call_scm_func

    Mensagem por AguiaX2 em Qui 17 Mar 2016, 09:20

    @Junior_Djjr escreveu:Vc respondeu sua pergunta
    @salathiel escreveu:sei que não é bom usar variável global
    Além deq oq vc fez eh até PIOR
    Por exemplo, supondo q este $PARAM seja compilado na variável global $7 (a $7 eh a primeira livre), outro mod pode ter compilado alguma var global q tbm caiu na 7 e assim ficam incompatíveis
    Dae vem: oq vc fez usou 21 bytes, ou seja, 6 variáveis, se tivesse compilado na variável $7 iria sobrescrever a 8, 9, 10, 11 e 12, e adivinha qual o nome da $11? $PLAYER_GROUP, ou seja, o grupo do player, ou seja, o grupo de membros de gangue recrutados etc... Assim como a $12 eh a flag do basquete, ou seja, fodeu tbm o basquete do jogo
    Variável global fode tudo.....
     Não sei porque esses cara usam variavel global mas pqp
    avatar
    salathiel
    Mensagens Nível 1
    Mensagens Nível 1

    Mensagens : 24
    Reputação : 0
    Desde : 29/02/2016
    Link : salathielpp.blogspot.com.br

    Re: Duvida sobre call_scm_func

    Mensagem por salathiel em Sex 18 Mar 2016, 10:31

    Valeu, pela resposta. Que loco, não sabia que ele sobrescrevia uma global já existente.

    Não sei porque esses cara usam variavel global mas pqp

    Porque eu achei que um novo espaço era criado pra variável global ¬¬
    Alem disso no próprio help do sanny builder tem ensinando como usa e não fala dos perigos de usar. Eu particularmente usava porque era possível dar nomes as variáveis. Então não sei qual o motivo dessa sua indignação, não é um erro 'bobo', visto que em praticamente qualquer linguagem é possível usar variáveis globais, apesar de não ser recomendado.


    ____________________
    Mod Policia GTA PS2
    avatar
    AguiaX2
    Scripter CLEO - Intermediário
    Scripter CLEO - Intermediário

    Mensagens : 601
    Reputação : 37
    Desde : 19/08/2015
    Idade : 14
    Localização : Em algum lugar do brasil
    Link : https://www.youtube.com/watch?v=lMB18XPgEWA

    Re: Duvida sobre call_scm_func

    Mensagem por AguiaX2 em Sex 18 Mar 2016, 10:54

    @salathiel escreveu:Valeu, pela resposta. Que loco, não sabia que ele sobrescrevia uma global já existente.

    Não sei porque esses cara usam variavel global mas pqp

    Porque eu achei que um novo espaço era criado pra variável global ¬¬
    Alem disso no próprio help do sanny builder tem ensinando como usa e não fala dos perigos de usar. Eu particularmente usava porque era possível dar nomes as variáveis. Então não sei qual o motivo dessa sua indignação, não é um erro 'bobo', visto que em praticamente qualquer linguagem é possível usar variáveis globais, apesar de não ser recomendado.
    Eu não estou indignado :) pra mim qualquer erro que faça crasha o jogo e grave :)
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

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

    Re: Duvida sobre call_scm_func

    Mensagem por Junior_Djjr em Sex 18 Mar 2016, 19:44

    @salathiel escreveu:Alem disso no próprio help do sanny builder tem ensinando como usa e não fala dos perigos de usar.
    Sanny Builder não foi feito exclusivamente pra cleo, ele foi feito focado mais em main.scm doq em cleo...
    Pode se ver q no próprio help dele logo no início (na verdade, todo o coding bible aparentemente) dele jah fala sobre main.scm e script.img e não de .cs

    Do msm modo q lah ele diz q usou global var como exemplo
    I use gobals so I can name them for easier understading. But when you'll be coding you should use locals, for many reasons they are better.
    Isso no tutorial do main.scm, ou seja, ele recomenda usar local até msm no main.scm/script.img, em cleo então eh obrigatório usar local, e caso seja necessário se comunicar com outros scripts eh recomendado manusear memória entre eles ou usar os opcodes das variáveis globais próprias pra cleo, ou seja, 0AB3: 0AB4:

    No SAxVCxLC um monte de pessoas não funcionava, NEM COMIGO FUNCIONAVA por causa dos cleos q usavam variáveis globais, e pra quem funcionava era impossibilitado de fazer missões, logo na segunda missão do jogo jah crashava ou o carro do Ryder sumia (pois devem ter usado a msm variável global q eh usada no carro do Ryder)
    Eu recriei todos os scripts e enviei pro cara, resultado? nunca mais vi pessoas com problemas nos scripts


    Eu particularmente usava porque era possível dar nomes as variáveis.
    Não sei se atualmente vc jah aprendeu, mas fica aí:
    http://brmodstudio.forumeiros.com/t249-8-constantes


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

    Mensagens : 601
    Reputação : 37
    Desde : 19/08/2015
    Idade : 14
    Localização : Em algum lugar do brasil
    Link : https://www.youtube.com/watch?v=lMB18XPgEWA

    Re: Duvida sobre call_scm_func

    Mensagem por AguiaX2 em Sex 18 Mar 2016, 20:02

    @Junior_Djjr escreveu:
    Eu particularmente usava porque era possível dar nomes as variáveis.
    Não sei se atualmente vc jah aprendeu, mas fica aí:
    http://brmodstudio.forumeiros.com/t249-8-constantes

    Adoro usar constantes não sei porque :)
    avatar
    Junior_Djjr
    Scripter CLEO - Avançado
    Scripter CLEO - Avançado

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

    Re: Duvida sobre call_scm_func

    Mensagem por Junior_Djjr em Sex 18 Mar 2016, 21:29

    @AguiaX2 escreveu:
    @Junior_Djjr escreveu:
    Eu particularmente usava porque era possível dar nomes as variáveis.
    Não sei se atualmente vc jah aprendeu, mas fica aí:
    http://brmodstudio.forumeiros.com/t249-8-constantes

    Adoro usar constantes não sei porque :)
    Eu não tenho essa paciência


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

    Título : CEO da Fabio's Gambiarra Industries
    Mensagens : 18604
    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: Duvida sobre call_scm_func

    Mensagem por Fabio em Sex 18 Mar 2016, 22:23

    @salathiel escreveu:Valeu, pela resposta. Que loco, não sabia que ele sobrescrevia uma global já existente.

    Não sei porque esses cara usam variavel global mas pqp

    Porque eu achei que um novo espaço era criado pra variável global ¬¬
    Alem disso no próprio help do sanny builder tem ensinando como usa e não fala dos perigos de usar. Eu particularmente usava porque era possível dar nomes as variáveis. Então não sei qual o motivo dessa sua indignação, não é um erro 'bobo', visto que em praticamente qualquer linguagem é possível usar variáveis globais, apesar de não ser recomendado.

    Elas ficam no topo do main.scm, tem um jump no inicio do main e em seguida tem o espaço para as variáveis, por isso as variáveis do jogo já começam no $2 e não no $0, pois $0 e $1 iriam escrever no jump inicial


    ____________________

    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'

    Conteúdo patrocinado

    Re: Duvida sobre call_scm_func

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Qui 22 Jun 2017, 09:01