Script sem argumento

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Script sem argumento

Mensagem por chicoweb 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()

chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Script sem argumento

Mensagem por Markituh 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)

___________

"Não deixe para amanhã o que se pode fazer hoje"

Links úteis:
Índice de Tutoriais
Manual online do GMS

Markituh

Ranking : Sem avaliações
Número de Mensagens : 2183
Data de inscrição : 11/10/2009
Reputação : 106
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Script sem argumento

Mensagem por chicoweb 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!!

chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Script sem argumento

Mensagem por chicoweb 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:


chicoweb

Ranking : Nota C
Número de Mensagens : 666
Idade : 40
Data de inscrição : 15/05/2012
Notas recebidas : B+C
Reputação : 49
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 0

Voltar ao Topo Ir em baixo

Re: Script sem argumento

Mensagem por GabrielXavier 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
}

GabrielXavier

Ranking : Nota A
Número de Mensagens : 359
Data de inscrição : 25/02/2012
Notas recebidas : A
Reputação : 15
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 1
   : 1

Voltar ao Topo Ir em baixo

Re: Script sem argumento

Mensagem por Conteúdo patrocinado Hoje à(s) 04:56


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

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