- salathielMensagens Nível 1
- Mensagens : 23
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Queria saber se é possível passar uma string como parâmetro pelo 0AB1: call_scm_func.
Tipo:
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.
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.
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:
E oq esse 0@ quer dizer?
vc nem usou ele
Acho melhor vc reler o tutorial de scm func
E praq esse wait?
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
- Código:
0AB1: call_scm_func @Label Numparametros 1 Parametro1 10 Retorno $result
- Código:
0AB1: call_scm_func @MostrarMensagem 2 "Ola Mundo" 0@
E oq esse 0@ quer dizer?

- Código:
0051: return
Acho melhor vc reler o tutorial de scm func
E praq esse wait?
- salathielMensagens Nível 1
- Mensagens : 23
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
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
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

- salathielMensagens Nível 1
- Mensagens : 23
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Up. Alguém pra ajudar?
Só preciso de um exemplo que funcione.
Só preciso de um exemplo que funcione.
- salathielMensagens Nível 1
- Mensagens : 23
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Desculpa pelo post triplo.
Aqui ta o código completo (não funciona, imprime i):
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
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)
O problema princiipal está nesse v, está dizendo que é uma long string, deixe apenas a variável 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:
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'
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
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
- salathielMensagens Nível 1
- Mensagens : 23
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
O erro não é em outra parte do código.
Se eu trocar
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.
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 :)
Se eu trocar
- Código:
0ACA: show_text_box 0@v
- 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 :)
Eu faria assim
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
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
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
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
- salathielMensagens Nível 1
- Mensagens : 23
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
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:
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?
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?
Vc respondeu sua pergunta
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.....
Além deq oq vc fez eh até PIOR@salathiel escreveu:sei que não é bom usar variável global
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.....
- AguiaX2Scripter CLEO - Intermediário
- Mensagens : 653
Reputação : 38
Desde : 19/08/2015
Idade : 18
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Não sei porque esses cara usam variavel global@Junior_Djjr escreveu:Vc respondeu sua perguntaAlém deq oq vc fez eh até PIOR@salathiel escreveu:sei que não é bom usar variável global
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.....

- salathielMensagens Nível 1
- Mensagens : 23
Reputação : 0
Desde : 29/02/2016
Link : salathielpp.blogspot.com.br
Valeu, pela resposta. Que loco, não sabia que ele sobrescrevia uma global já existente.
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.
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.
- AguiaX2Scripter CLEO - Intermediário
- Mensagens : 653
Reputação : 38
Desde : 19/08/2015
Idade : 18
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
Eu não estou indignado@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.


Sanny Builder não foi feito exclusivamente pra cleo, ele foi feito focado mais em main.scm doq em cleo...@salathiel escreveu:Alem disso no próprio help do sanny builder tem ensinando como usa e não fala dos perigos de usar.
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
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: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.
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
Não sei se atualmente vc jah aprendeu, mas fica aí:Eu particularmente usava porque era possível dar nomes as variáveis.
https://brmodstudio.forumeiros.com/t249-8-constantes
- AguiaX2Scripter CLEO - Intermediário
- Mensagens : 653
Reputação : 38
Desde : 19/08/2015
Idade : 18
Localização : Em algum lugar do brasil
Link : https://www.youtube.com/watch?v=lMB18XPgEWA
@Junior_Djjr escreveu:
Não sei se atualmente vc jah aprendeu, mas fica aí:Eu particularmente usava porque era possível dar nomes as variáveis.
https://brmodstudio.forumeiros.com/t249-8-constantes
Adoro usar constantes não sei porque

Eu não tenho essa paciência@AguiaX2 escreveu:@Junior_Djjr escreveu:
Não sei se atualmente vc jah aprendeu, mas fica aí:Eu particularmente usava porque era possível dar nomes as variáveis.
https://brmodstudio.forumeiros.com/t249-8-constantes
Adoro usar constantes não sei porque
@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'
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum
|
|