Compartilhe
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 24
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Ver perfil do usuário

Duvida sobre call_scm_func

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

Re: Duvida sobre call_scm_func

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
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 24
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Ver perfil do usuário

Re: Duvida sobre call_scm_func

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
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 24
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Ver perfil do usuário

Re: Duvida sobre call_scm_func

em Dom 13 Mar 2016, 18:09
Up. Alguém pra ajudar?
Só preciso de um exemplo que funcione.

______________________________
Mod Policia GTA PS2
avatar
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 24
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Ver perfil do usuário

Re: Duvida sobre call_scm_func

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

Re: Duvida sobre call_scm_func

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

Re: Duvida sobre call_scm_func

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
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 24
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Ver perfil do usuário

Re: Duvida sobre call_scm_func

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

Re: Duvida sobre call_scm_func

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
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 24
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Ver perfil do usuário

Re: Duvida sobre call_scm_func

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

Re: Duvida sobre call_scm_func

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 630
Reputação : 38
Desde : 19/08/2015
Idade : 14
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Ver perfil do usuário

Re: Duvida sobre call_scm_func

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
Mensagens Nível 1
Mensagens Nível 1
Mensagens : 24
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Ver perfil do usuário

Re: Duvida sobre call_scm_func

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 630
Reputação : 38
Desde : 19/08/2015
Idade : 14
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Ver perfil do usuário

Re: Duvida sobre call_scm_func

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

Re: Duvida sobre call_scm_func

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
Scripter CLEO - Intermediário
Scripter CLEO - Intermediário
Mensagens : 630
Reputação : 38
Desde : 19/08/2015
Idade : 14
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Ver perfil do usuário

Re: Duvida sobre call_scm_func

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

Re: Duvida sobre call_scm_func

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

Re: Duvida sobre call_scm_func

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

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