Conectar-se
Quem está conectado
18 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 18 Visitantes

Nenhum

Ver toda a lista


Compartilhe
Ver o tópico anteriorIr em baixoVer o tópico seguinte
avatar
Ranking : Nota C
Notas recebidas : B+C
Data de inscrição : 15/05/2012
Número de Mensagens : 666
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 49

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Script sem argumento

em Qui 28 Maio 2015, 22:48
Boa Noite,

Galera, no GMS como que eu uso um script que pode ou não vim com argumento?

Exemplo:
Nome do script: fase_sair

Quando o player morre eu chamo assim: fase_sair("morto")
E quando ele sai da fase por qualquer outro motivo, eu chamo sem argumento, assim: fase_sair().

Já dentro dele eu quero usar ou não o argument[0], só que quando ele vem vazio dá erro, quando vem com qualquer texto dá certo.

E antes que alguem mande eu chamar o script sempre com um argumento nem que seja uma string vazia, eu não quero fazer isso porque não quero localizar todas as chamadas dele no meu codigo-fonte, tem muitos já chamando sem argumento e seria inviavel procurar na mão, já que o gms não possui uma ferramenta de busca descente.

Obrigado pela atenção.

Aí o erro ó:
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Step Eventobj_jogador
for object obj_portal:

illegal access of argument, argument is not provided to script
at gml_Script_fase_sair (line 3) - if argument[0] != undefined {
############################################################################################
--------------------------------------------------------------------------------------------
stack frame is
gml_Script_fase_sair (line 3)
called from - gml_Object_obj_portal_CollisionEvent_15_1 (line 10) - fase_sair()
avatar
Ranking : Sem avaliações
Data de inscrição : 11/10/2009
Número de Mensagens : 2184
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 106

Prêmios
   : 0
   : 0
   : 0
Ver perfil do usuário

Re: Script sem argumento

em Qui 28 Maio 2015, 23:38
Isso não vai dar muito certo já que agora o GMS está mais esperto, e não declara simplesmente todas os argumentos como 0 (uma estética horrível das versões antigas).

Você vai usar argument_count, como em qualquer outra linguagem de programação. Como o próprio nome diz, ela vai te informar quantos argumentos foram passados para o script.

Código:
if argument_count > 0 // ou == 1
{
// bla bla bla
}

Daí é só colocar o código específico desse argumento, e deixar o "código genérico" do script fora do if, que no caso é sair da fase.


Última edição por Markituh em Sex 29 Maio 2015, 17:46, editado 1 vez(es)
avatar
Ranking : Nota C
Notas recebidas : B+C
Data de inscrição : 15/05/2012
Número de Mensagens : 666
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 49

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Script sem argumento

em Sex 29 Maio 2015, 11:40
Vlw Markituh isso já serve sim,
á noite eu testo quando for programar e posto o resultado aqui.

Muito Obrigado!!
avatar
Ranking : Nota C
Notas recebidas : B+C
Data de inscrição : 15/05/2012
Número de Mensagens : 666
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 49

Prêmios
   : 1
   : 0
   : 0
Ver perfil do usuário

Re: Script sem argumento

em Qua 03 Jun 2015, 02:24
Até funcionou mas no final das contas não serviu, isso porque eu acabei tendo que definir mesmo o argumento para todas as chamadas do script.

Mas eu achei uma solução que ajudou muito, é o seguinte:

- Agente chama o script sen argumento:

fase_sair()

- Ai lá dentro do script se agente tentar usar o argumento, ele acusa erro na hora da COMPILAÇÃO e mostra onde o script foi chamado.

É o maior adianto aí agente clica na linha vermelha ele vai direto pro scrip mau chamado.

Eis a imagem:

avatar
Ranking : Nota A
Notas recebidas : A
Data de inscrição : 25/02/2012
Número de Mensagens : 359
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 15

Prêmios
   : 0
   : 1
   : 1
Ver perfil do usuário

Re: Script sem argumento

em Seg 15 Jun 2015, 01:44
Cara creio que seria interessante você passar um agumento como 0 ou 1, você pode usar o 0 para quando o player morrer e o 1 para quando o player sair sem qualquer motivo.

Por exemplo:

fase_sair(0);

Lá no script:

if (argument0==0){
//Player morreu
}
else{
//Player saiu por qualquer motivo
}
Conteúdo patrocinado

Re: Script sem argumento

Ver o tópico anteriorVoltar ao TopoVer o tópico seguinte
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum