Últimos assuntos
» CR - Concurso Relâmpago!!
por Willy Ter 18 Jul 2017, 17:11

» 3D:como rodar a camara em horizontal?
por Cambalinho Ter 18 Jul 2017, 15:09

» [Resolvido] pode explicar a d3d_set_projection()?
por Cambalinho Ter 18 Jul 2017, 11:28

» Escrever a resposta certa muda de room
por PedroX Seg 17 Jul 2017, 21:46

» Nota de esclarecimento - GMBR voltou!
por Mentos e Coca-cola Seg 17 Jul 2017, 17:05

» [CR] Campo Minado
por Katerp Dom 16 Jul 2017, 23:09

» [CR] The Bazooka Cat
por Tedi Ripper Dom 16 Jul 2017, 23:01

» Como melhorar um protótipo(Design)
por lolandoplayer Dom 16 Jul 2017, 22:56

» Diminuir velocidade ao arrastar objeto
por LwysF Dom 16 Jul 2017, 17:33

» Ajuda para mecanismo do jogo
por Willy Dom 16 Jul 2017, 15:54

Estatísticas
Temos 12700 usuários registrados
O último usuário registrado atende pelo nome de Eduardo Gomes

Os nossos membros postaram um total de 220918 mensagens em 30411 assuntos

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
avatar
chicoweb

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 0

Ver perfil do usuário

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
avatar
destrutor

Data de inscrição : 09/01/2014
Número de Mensagens : 16
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ver perfil do usuário

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

Ranking : Nota C
Notas recebidas : C
Data de inscrição : 30/07/2011
Número de Mensagens : 928
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 1

Ver perfil do usuário 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 "".
avatar
Gabreel

Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 2
   : 0

Ver perfil do usuário

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?
avatar
Gabreel

Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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?
avatar
JoaoVanBlizzard

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 2
   : 0

Ver perfil do usuário

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

Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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 ;)
avatar
Jiraya

Ranking : Nota A
Notas recebidas : A+A
Data de inscrição : 20/03/2010
Número de Mensagens : 1134
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 1

Ver perfil do usuário 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.
avatar
chicoweb

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 0
   : 0

Ver perfil do usuário

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

Data de inscrição : 02/10/2009
Número de Mensagens : 2227
Insígnias de JAM :

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 0
   : 0
   : 0

Ver perfil do usuário

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário

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?
avatar
JoaoVanBlizzard

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 2
   : 0

Ver perfil do usuário

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   :
   :
   :

Ver perfil do usuário

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

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

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Prêmios
   : 1
   : 2
   : 0

Ver perfil do usuário

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