Conectar-se
Quem está conectado
14 usuários online :: Nenhum usuário registrado, Nenhum Invisível e 14 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 com argumento não forncecido

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
avatar
Data de inscrição : 09/01/2014
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1x 0 Insignia 2x 0 Insignia 3x 0
Reputação : 0
Ver perfil do usuário

Re: Script com argumento não forncecido

em Dom 12 Jan 2014, 19:46
Código:
i = 0
t = ""
while  argument[i] != -1
{
    t += string(argument[i]) + " - ";
    i += 1;
}
return t
avatar
Ranking : Nota C
Notas recebidas : C
Data de inscrição : 30/07/2011
Número de Mensagens : 928
Insígnias de JAM :

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

Prêmios
   : 0
   : 0
   : 1
Ver perfil do usuáriohttp://luizpontes.tk/

Re: Script com argumento não forncecido

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.
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

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

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

Re: Script com argumento não forncecido

em Dom 12 Jan 2014, 21:10
Reputação da mensagem: 100% (1 votos)
Caso nenhum dos casos resolva, NULL pode ser interpretado como "".
avatar
Ranking : Nota B
Notas recebidas : B+B
Data de inscrição : 04/03/2012
Número de Mensagens : 1925
Insígnias de JAM :

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

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

Re: Script com argumento não forncecido

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.
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

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

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

Re: Script com argumento não forncecido

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?
avatar
Ranking : Nota B
Notas recebidas : B+B
Data de inscrição : 04/03/2012
Número de Mensagens : 1925
Insígnias de JAM :

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

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

Re: Script com argumento não forncecido

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?
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

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

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

Re: Script com argumento não forncecido

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.
avatar
Ranking : Nota A
Notas recebidas : A+A
Data de inscrição : 20/03/2010
Número de Mensagens : 1134
Insígnias de JAM :

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

Prêmios
   : 1
   : 0
   : 1
Ver perfil do usuáriohttps://www.facebook.com/seito.washiro.7

Re: Script com argumento não forncecido

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

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.
avatar
Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

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

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

Re: Script com argumento não forncecido

em Seg 13 Jan 2014, 20:39
Ao invés do zero, verifique por "" (nada) então.
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

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

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

Re: Script com argumento não forncecido

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')

avatar
Ranking : Nota B
Notas recebidas : B+B
Data de inscrição : 04/03/2012
Número de Mensagens : 1925
Insígnias de JAM :

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

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

Re: Script com argumento não forncecido

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?
Ranking : Nota C
Notas recebidas : C+B
Data de inscrição : 26/07/2008
Número de Mensagens : 6037
Insígnias de JAM :

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

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

Re: Script com argumento não forncecido

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')
avatar
Ranking : Nota B
Notas recebidas : B+B
Data de inscrição : 04/03/2012
Número de Mensagens : 1925
Insígnias de JAM :

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

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

Re: Script com argumento não forncecido

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.
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