Script com argumento não forncecido

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

Script com argumento não forncecido

Mensagem por chicoweb em Dom 12 Jan 2014, 18:43

Galera lá dentro do script eu sei que devemos tratar os argumentos que chegam pelo argument0, argument1 ...
Como que eu faço pra detectar se o argumento não foi fornecido, mas tratar para que o script não gere erro.

eXEMPLO, eu sei que o NULL nao e tratado assim mas era tipo isso ai que eu pretendia, se e que da pra entender

Script atxt:

Código:
i = 0
t = ""
while  argument[i] != NULL  
{
    t += string(argument[i]) + " - ";
    i += 1;
}
return t

Chamada:

Código:
draw_text(x,y,atxt("CEBOLA", 456, "ALHO", 0, "PIMENTÃO", 44)

Teria que retornar:

Código:
CEBOLA - 456 - ALHO - 0 - PIMENTÃO - 44

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 com argumento não forncecido

Mensagem por destrutor em Dom 12 Jan 2014, 19:46

Código:
i = 0
t = ""
while  argument[i] != -1
{
    t += string(argument[i]) + " - ";
    i += 1;
}
return t

destrutor

Número de Mensagens : 16
Data de inscrição : 09/01/2014
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Script com argumento não forncecido

Mensagem por luiz_eldorado em Dom 12 Jan 2014, 20:50

destrutor escreveu:
Código:
i = 0
t = ""
while  argument[i] != -1
{
    t += string(argument[i]) + " - ";
    i += 1;
}
return t

Na verdade, quando não tem argumento, ele retorna 0, não -1 (ao menos no GM8.0).
Então seria:
Código:
while  argument[i] != 0
Só que daria problema caso o argumento seja 0 mesmo... então você pode tentar colocar todos os números como strings mesmo, "0". Ou ao menos quando for 0. Aí você usa a função real() pra virar número.

luiz_eldorado

Ranking : Nota C
Número de Mensagens : 928
Idade : 17
Data de inscrição : 30/07/2011
Notas recebidas : C
Reputação : 47
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 0
   : 0
   : 1

http://luizpontes.tk/

Voltar ao Topo Ir em baixo

Re: Script com argumento não forncecido

Mensagem por Gabreel em Dom 12 Jan 2014, 21:10

Caso nenhum dos casos resolva, NULL pode ser interpretado como "".

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
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 com argumento não forncecido

Mensagem por JoaoVanBlizzard em Dom 12 Jan 2014, 21:23

eu fiz diferente chico:

No seu script eu deixei assim:
Código:

slot=6 //quantos numeros e produtos foram adicionados
i = 0
t = ""
for (i=0 i< slot  i+=1)
{
    t += string(argument[i]) + " - ";
}
return t

funcionou, mas no meu ficou assim:


CEBOLA - 456 - ALHO - 0 - PIMENTÃO - 44 -

com um ultimo traço na cena, deve ter um jeito de aperfeiçoar esse código, até eu teria o interesse em saber, pode me ser útil para algo mais.

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Script com argumento não forncecido

Mensagem por Gabreel em Dom 12 Jan 2014, 21:36

JoaoVanBlizzard escreveu:
funcionou, mas no meu ficou assim:


CEBOLA - 456 - ALHO - 0 - PIMENTÃO - 44 -

com um ultimo traço na cena, deve ter um jeito de aperfeiçoar esse código, até eu teria o interesse em saber, pode me ser útil para algo mais.

Código:

slot=6 //quantos numeros e produtos foram adicionados
i = 0
t = ""
for (i=0 i< slot  i+=1)
{
    t += string(argument[i]);
if i<slot { t+=" - "; }
}
return t

Isso?

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
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 com argumento não forncecido

Mensagem por JoaoVanBlizzard em Dom 12 Jan 2014, 21:55

Sim, mas ainda estava acontecendo a mesma coisa, então eu adicionei um -1 junto ao slot e ficou assim:
Código:

i = 0
t = ""


slot=6 //quantos numeros e produtos foram adicionados
i = 0
t = ""
for (i=0 i< slot  i+=1)
{
    t += string(argument[i]);
if i<slot-1 { t+=" - "; }
}
return t

comigo deu certo , agora cabe saber se era algo assim que o chicoweb procurava, não entendi o lance do Null que ele adicionava, o que significa exatamente aquilo e como funciona?

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Script com argumento não forncecido

Mensagem por Gabreel em Dom 12 Jan 2014, 22:07

Também não entendi direito, até porque não faz sentido chamar o script sem nenhum conteúdo.

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
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 com argumento não forncecido

Mensagem por Jiraya em Dom 12 Jan 2014, 23:16

se vc estiver usando GMS
basta usar argument_length

caso contrario vc pode criar uma constante que represente NULL na ide do game maker

adicione uma constante tipo

NULL=971938269;


e no script


var t,i,slots;
slots=6;
t="";
for(i=0;argument[i]!=NULL && i<100;i++)
{
t+=string(argument[i]);
if(argument[i+1]!=NULL)t+="-";
}
return t;

uso.

atxt("chiclete",10,"pamonha",20,NULL);
nota se que o NULL indica o fim dos parametros, qualquer argumento usado depois dele sera ignorado.

Se vc estiver usando o gms me avisa pq ai da p otimizar o script dispensqndo o NULL.

n sei se era isso q queria. mas esta ai p referencia ;)

Jiraya

Ranking : Nota A
Número de Mensagens : 1134
Data de inscrição : 20/03/2010
Notas recebidas : A+A
Reputação : 108
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 0
   : 1

https://www.facebook.com/seito.washiro.7

Voltar ao Topo Ir em baixo

Re: Script com argumento não forncecido

Mensagem por chicoweb em Seg 13 Jan 2014, 08:32

Brigado ae galera pela ajuda de todos, mas o problema ainda continua, o lance é o que o luiz detectou:

luiz_eldorado escreveu:      
Código:
i = 0
t = ""
        while  argument[i] != -1
        {
            t += string(argument[i]) + " - ";
            i += 1;
        }
        return t


Na verdade, quando não tem argumento, ele retorna 0, não -1 (ao menos no GM8.0).
Então seria:

Código:
Código:
    while  argument[i] != 0

Só que daria problema caso o argumento seja 0 mesmo... então você pode tentar colocar todos os números como strings mesmo, "0". Ou ao menos quando for 0. Aí você usa a função real() pra virar número.

Ai e que tá o problema, o argumentX retorna 0 quando não é passado, ai por exemplo se eu passar assim:

atxt("gato", 988, 0, "rato")
Vai retornar ("gato - 988")  erradamente, pois tem o zero que foi passado e o rato aida para adicionar.

São 16 argumentos no maximo, eu queria que ele parasse de acrescentar argumento quando não tivesse mais, no exemplo ai em cima, ele tinha que detectar que o terceiro argumento (zero) foi passado, e o quinto não foi.

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 com argumento não forncecido

Mensagem por Gabreel em Seg 13 Jan 2014, 20:39

Ao invés do zero, verifique por "" (nada) então.

Gabreel

Número de Mensagens : 2227
Idade : 20
Data de inscrição : 02/10/2009
Reputação : 52
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 com argumento não forncecido

Mensagem por PedroX em Seg 13 Jan 2014, 20:57

Código:
i = 0
t = ""
        while  argument[i] != 'Fim'
        {
            t += string(argument[i]) + " - ";
            i += 1;
        }
        return t;

atxt("gato", 988, 0, "rato", 'Fim')


PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Script com argumento não forncecido

Mensagem por JoaoVanBlizzard em Seg 13 Jan 2014, 21:15

usando esse código sempre me da o seguinte erro:
Código:

ERROR in
action number 1
of Draw Event
for object object0:

In script atxt:
Error in code at line 3:
          while  argument[i] != 'Fim'
                                ^
at position 32: Cannot compare arguments.


por que isso acontece?

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Script com argumento não forncecido

Mensagem por PedroX em Seg 13 Jan 2014, 21:24

Hm. Porque alguns anteriores são números e não é possível compará-los com strings.

Então:

Código:
while  (string(argument[i]) != 'Fim')

PedroX

Ranking : Nota C
Número de Mensagens : 6034
Idade : 21
Data de inscrição : 26/07/2008
Notas recebidas : C+B
Reputação : 286
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   :
   :
   :

Voltar ao Topo Ir em baixo

Re: Script com argumento não forncecido

Mensagem por JoaoVanBlizzard em Seg 13 Jan 2014, 21:34

Vivendo e aprendendo, eu que eu vou passar o resto da vida tentando entender as funções do game maker e nunca vou terminar um jogo por causa disso, hehehe, tem vezes que o game maker vem com gambiarras que só de eu ver saio correndo, heheheeh, seria legal se existisse um editor de códigos tipo o dreamweaver, que você digita e coloca o que quer e ele te fornece o script para você.

mas deu certo, só ficou o tracinho atras do ultimo nome de objeto, mas pelo menos isso eu acho que sei como resolver.

JoaoVanBlizzard

Ranking : Nota B
Número de Mensagens : 1925
Idade : 38
Data de inscrição : 04/03/2012
Notas recebidas : B+B
Reputação : 144
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 1
   : 2
   : 0

Voltar ao Topo Ir em baixo

Re: Script com argumento não forncecido

Mensagem por Conteúdo patrocinado Hoje à(s) 14:21


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