GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21


Comandos

+2
un00brn
Kapoty
6 participantes

Ir para baixo

Comandos Empty Comandos

Mensagem por Kapoty Ter 18 Set 2012, 12:16

Bom, como eu faço isso :

Digamos que eu criei uma text_box e lá tudo que eu escrevo e envio apertando enter é reconhecido como um comando, digamos assim que eu enviei o seguinte comando :

Código:
adicionar_ponto[x,y]

Quero que quando eu envie isto eu possa :

- Pegar o valor de x
- Pegar o valor de y
- Reconhecer se adicionar_ponto está escrito corretamente

Bem, é isto.

ps : eu consegui pegar o valor de x e y mas o problema é que se eu colocar no x "20" eu só estou conseguindo pegar o "2".


Última edição por kapoty em Ter 18 Set 2012, 12:35, editado 1 vez(es)
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por un00brn Ter 18 Set 2012, 12:30

un00brn
un00brn

Data de inscrição : 18/06/2012
Reputação : 7
Número de Mensagens : 117
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.djurielrn.blogspot.com

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por Kapoty Ter 18 Set 2012, 12:33

un00brn escreveu:Talvez esse tutorial sirva para alguma coisa

https://gmbr.forumeiros.com/t6975-tutorial-fazendo-combinacoes-de-comandos

Não serve... você leu oque eu disse?
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por Ferna49 Ter 18 Set 2012, 12:58

Vai se acustumando o povo daqui é assim mesmo, simplismente chega e manda você ler um tutorial.


Outros chegam floodando nos tópicos...
Leia as regras!
Ferna49
Ferna49

Data de inscrição : 19/07/2012
Reputação : 0
Número de Mensagens : 54
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por saim Ter 18 Set 2012, 14:09

Eu usaria comandos de strings. Limitadores.
Tipo, pegaria o comando inteiro e jogaria numa string. Daí, procuraria por caracteres como "[", ",", ";", "."... tem mais, mas depende de você querer enumerar todos ou não.
Depois disso, eu separaria a string em substrings e separadores. Daí pra frente, a coisa seria complicada. Por exemplo, se eu encontrasse um "[", isso significa que a string anterior é o nome de uma array. Se encontrar um "(", a string anterior é um script ou função.
Se temos uma array, o valor depois do "[" TEM QUE SER um número inteiro. Então, se não der pra transformar em um número inteiro diretamente, provavelmente (mas não certamente) trata-se de uma variável ou função. Nesse caso, começa-se tudo de novo.
A vírgula serve pra separar argumentos numa função ou índices numa array.

Caramba, a cada possibilidade levantada, me parece mais e mais que você está reinventando o game maker (por estar criando um interpretador de códigos, tal). Posso perguntar qual o objetivo do programa?
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Comandos Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por Kapoty Ter 18 Set 2012, 14:44

saim escreveu:
Caramba, a cada possibilidade levantada, me parece mais e mais que você está reinventando o game maker (por estar criando um interpretador de códigos, tal). Posso perguntar qual o objetivo do programa?

Sim, ontem anoite eu estava sem nada para fazer e comecei a "brincar" com o draw do game maker, enquanto eu brincava tive uma ideia interessante que era fazer um modelador de imagens usando linhas convencionais dai pra frente não parei mais de ter novas ideias e ai me veio a cabeça que já que vou colocar muitas funções por que não fazer um "interpretador de códigos" ?

Se quiser ver uma minima parte do programa clique aqui.

Como eu disse é uma parte minima do programa, comecei ontem a noite e a vai a lista de funções com o mouse :

Código:
- Mecha os quadrados azuis para mudar a posição de uma determinada linhas
- Mecha a bolinha vermelha para trocar todos os pontos de posição
- Clique com o botão direito do mouse para adicionar um ponto no lugar onde o mouse está
- Clique com o botão do scroll do mouse para deletar um ponto no lugar onde o mouse está
- Aperte espaço para ver apenas as linhas e vice-versa
- Aperte enter para fechar as linhas
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por un00brn Ter 18 Set 2012, 17:19

kapoty escreveu:
un00brn escreveu:Talvez esse tutorial sirva para alguma coisa

https://gmbr.forumeiros.com/t6975-tutorial-fazendo-combinacoes-de-comandos

Não serve... você leu oque eu disse?

Li sim man'.. Pensava que poderia ser assim.
Mas, descobri outra forma que pode ser também.
Usando o "string_pos".
E voce vai montando um por um, ou voce pode montar um mini script ou mandar por variáveis. Voce que escolhe.
Como quem me passou o codigo foi o Vinians, eu não sei de quase nada sobre ele, é só voce se informar.
Mas, vai aí um exemplo.
Código:

Frase = "se eu fosse o pelé, jogaria sem cueca!";
if (string_pos("pelé", Frase) > 0)
{
    // Se existir o nome pelé na minha variavel, fazer algo
}
if (string_pos("se eu", Frase) > 0)
{
    // Se existir o nome se seu na minha variavel, fazer algo
}
Daqui, voce já tem meio caminho andado ( ou não )
Valeu, e desculpa ae não saber usar o comando, mas, vai que voce o entenda, e tinha se esquecido dele! =) Boa sorte com o projeto!
un00brn
un00brn

Data de inscrição : 18/06/2012
Reputação : 7
Número de Mensagens : 117
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

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

http://www.djurielrn.blogspot.com

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por Kapoty Ter 18 Set 2012, 17:23

un00brn escreveu:
kapoty escreveu:
un00brn escreveu:Talvez esse tutorial sirva para alguma coisa

https://gmbr.forumeiros.com/t6975-tutorial-fazendo-combinacoes-de-comandos

Não serve... você leu oque eu disse?

Li sim man'.. Pensava que poderia ser assim.
Mas, descobri outra forma que pode ser também.
Usando o "string_pos".
E voce vai montando um por um, ou voce pode montar um mini script ou mandar por variáveis. Voce que escolhe.
Como quem me passou o codigo foi o Vinians, eu não sei de quase nada sobre ele, é só voce se informar.
Mas, vai aí um exemplo.
Código:

Frase = "se eu fosse o pelé, jogaria sem cueca!";
if (string_pos("pelé", Frase) > 0)
{
    // Se existir o nome pelé na minha variavel, fazer algo
}
if (string_pos("se eu", Frase) > 0)
{
    // Se existir o nome se seu na minha variavel, fazer algo
}
Daqui, voce já tem meio caminho andado ( ou não )
Valeu, e desculpa ae não saber usar o comando, mas, vai que voce o entenda, e tinha se esquecido dele! =) Boa sorte com o projeto!

Bem, obrigado pela ajuda mas string_pos não vai servir, pois não quero sabe se existe e sim pegar estes valores.

Já tenho meio caminho andado, já consigo pegar o valor mas só se o valor só tiver um algarismo.
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por luiz_eldorado Ter 18 Set 2012, 21:53

Uma vez eu tentei fazer isso, mas é realmente complicado, não pelas funções de strings (tem que ficar checando posições, copiando, deletando, etc), mas por, nos códigos, achar funções dentro de funções. Por exemplo:
Código:
funcao1("dorgas!",funcao2(2314314,"!!!!!!!"),'xDDD');
Nesse caso, se eu procurar o "(" e depois o ")" e tudo aquilo dentro serão argumentos estará errado, pois ele vai achar o primeiro ")" que achar, ou seja, o da "funcao2" e não da "funcao1". Além de que o usuário pode criar um código com erros.
Então ví que a linguagem teria de ser de outro modo. Eu pensei no seguinte:
object_add obj
var xx,42,real
var yy,666,real
instance_create ,xx,yy,obj
var str,Texto!,string
draw_text ,xx,yy,str

Primeiro o nome da função, depois um espaço, depois os argumentos separados por vírgula. Normalmente, o primeiro argumento é onde o retorno desta funções será armazenado. É impossível colocar valores diretamente nas funções, é preciso colocar

já consigo pegar o valor mas só se o valor só tiver um algarismo.
Tente assim:
Código:
str="adicionar_ponto[x,y]";
pos1=string_pos("[",str);
pos2=string_pos(",",str);
xx=string_copy(str,pos1+1,pos2-pos1);
É algo assim
luiz_eldorado
luiz_eldorado

Games Ranking : Nota C

Notas recebidas : C
Data de inscrição : 30/07/2011
Reputação : 47
Número de Mensagens : 928
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 1

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

http://luizpontes.tk/

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por Kapoty Ter 18 Set 2012, 21:59

@luiz_eldorado

Errr... você está seguindo a mesma logica que eu, também pensei neste mesmo modo mas ai eu percebi que seria limitado a "2" argumentos, agora eu só preciso mesmo é fazer com que possa ter mais de 2 argumentos.

Por enquanto estou usando este código mas já estou precisando do outro.

Se quiserem ver como está ficando o projeto é só falarem.
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por saim Qua 19 Set 2012, 10:14

Eu estava numa preguiça danada de testar cada posição pra gerar o script (esses "+1" e "-1" me matam!), mas como o luiz_eldorado já fez a parte chata, fica viável adaptar pra qualquer número de argumentos:

Código:
var str, pos, posFinal, strArgumentos, nArgs, argumento, i;

str = "adicionar_ponto[x,y,z,...]"; // dá pra substituir por "argument0",  ou "get_string", pra usar como script
pos[0] = string_pos("[",str) + 1;
posFinal = string_pos("]",str);
strArgumentos = string_copy(str, pos[0], posFinal - pos[0]); // uma cópia da str, só com os argumentos
show_message("strArgumentos=" + strArgumentos); // debug
nArgs = string_count(",", strArgumentos); // total de vírgulas. (um a menos que o total de argumentos)
show_message("nArgs=" + string(nArgs)); // debug
// num loop, transforma os argumentos em strings, colocando-os na array "argumento"
for(i = 1; i <= nArgs; i += 1){
   pos[i] = pos[i - 1] + string_pos(",", strArgumentos);
   argumento[i - 1] = string_copy(str, pos[i - 1], pos[i] - pos [i - 1] - 1);
   show_message("argumento[" + string(i - 1) + "]=" + argumento[i - 1]); // debug
   strArgumentos = string_copy(str, pos[i], posFinal - pos[i]); // uma cópia da str, só com os argumentos restantes
   }
// falta o último argumento
argumento[nArgs] = strArgumentos; // já que só sobrou o último argumento
show_message("argumento[" + string(nArgs) + "]=" + argumento[nArgs]); // debug

Ainda não resolve o problema de ter uma função dentro da outra, mas já melhora o problema. Resolver é possível, mas chato demais. Se for um programa menos experimental, talvez valha a pena, mas parece que é mais um lance de curiosidade, então acho melhor NÃO usar uma função dentro da outra...
saim
saim

Games Ranking : Nota B

Notas recebidas : C-D-A-B
Data de inscrição : 14/01/2011
Reputação : 136
Número de Mensagens : 3033
Prêmios : Comandos Empty

Medalhas x 1 Tutoriais x 6 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 3

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

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por vinians Qua 19 Set 2012, 11:55

saim escreveu:Eu estava numa preguiça danada de testar cada posição pra gerar o script (esses "+1" e "-1" me matam!), mas como o luiz_eldorado já fez a parte chata, fica viável adaptar pra qualquer número de argumentos:

Código:
var str, pos, posFinal, strArgumentos, nArgs, argumento, i;

str = "adicionar_ponto[x,y,z,...]"; // dá pra substituir por "argument0",  ou "get_string", pra usar como script
pos[0] = string_pos("[",str) + 1;
posFinal = string_pos("]",str);
strArgumentos = string_copy(str, pos[0], posFinal - pos[0]); // uma cópia da str, só com os argumentos
show_message("strArgumentos=" + strArgumentos); // debug
nArgs = string_count(",", strArgumentos); // total de vírgulas. (um a menos que o total de argumentos)
show_message("nArgs=" + string(nArgs)); // debug
// num loop, transforma os argumentos em strings, colocando-os na array "argumento"
for(i = 1; i <= nArgs; i += 1){
   pos[i] = pos[i - 1] + string_pos(",", strArgumentos);
   argumento[i - 1] = string_copy(str, pos[i - 1], pos[i] - pos [i - 1] - 1);
   show_message("argumento[" + string(i - 1) + "]=" + argumento[i - 1]); // debug
   strArgumentos = string_copy(str, pos[i], posFinal - pos[i]); // uma cópia da str, só com os argumentos restantes
   }
// falta o último argumento
argumento[nArgs] = strArgumentos; // já que só sobrou o último argumento
show_message("argumento[" + string(nArgs) + "]=" + argumento[nArgs]); // debug

Ainda não resolve o problema de ter uma função dentro da outra, mas já melhora o problema. Resolver é possível, mas chato demais. Se for um programa menos experimental, talvez valha a pena, mas parece que é mais um lance de curiosidade, então acho melhor NÃO usar uma função dentro da outra...
Otima solução Saim, para resolver o problema de uma função dentro da outra é relativamente simples.
* Quando pegar o "argumento", procure em uma lista se ele existe como nome de alguma função.
* se ele NÃO existir ele é uma string comum de argumento
* se ele EXISTIR basta chamar o próprio script recursivamente. Isso faz com que o problema se auto-solucione

Flws!
vinians
vinians

Games Ranking : Nota B

Notas recebidas : B-C-A-C
Data de inscrição : 18/09/2008
Reputação : 90
Número de Mensagens : 2715
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 2 Bronze x 1

Insignia 1 x 0 Insignia 2 x 1 Insignia 3 x 0
Plataformas :
  • Game Maker 8.0 ou 8.1
  • Game Maker Studio 1.4
  • Game Maker Studio 2.0
  • Construct 2
  • Java
  • C#
  • Javascript
  • C ou C++
  • Outros


https://vinians.itch.io

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por Kapoty Qua 19 Set 2012, 12:24

saim escreveu:Eu estava numa preguiça danada de testar cada posição pra gerar o script (esses "+1" e "-1" me matam!), mas como o luiz_eldorado já fez a parte chata, fica viável adaptar pra qualquer número de argumentos:

Código:
var str, pos, posFinal, strArgumentos, nArgs, argumento, i;

str = "adicionar_ponto[x,y,z,...]"; // dá pra substituir por "argument0",  ou "get_string", pra usar como script
pos[0] = string_pos("[",str) + 1;
posFinal = string_pos("]",str);
strArgumentos = string_copy(str, pos[0], posFinal - pos[0]); // uma cópia da str, só com os argumentos
show_message("strArgumentos=" + strArgumentos); // debug
nArgs = string_count(",", strArgumentos); // total de vírgulas. (um a menos que o total de argumentos)
show_message("nArgs=" + string(nArgs)); // debug
// num loop, transforma os argumentos em strings, colocando-os na array "argumento"
for(i = 1; i <= nArgs; i += 1){
   pos[i] = pos[i - 1] + string_pos(",", strArgumentos);
   argumento[i - 1] = string_copy(str, pos[i - 1], pos[i] - pos [i - 1] - 1);
   show_message("argumento[" + string(i - 1) + "]=" + argumento[i - 1]); // debug
   strArgumentos = string_copy(str, pos[i], posFinal - pos[i]); // uma cópia da str, só com os argumentos restantes
   }
// falta o último argumento
argumento[nArgs] = strArgumentos; // já que só sobrou o último argumento
show_message("argumento[" + string(nArgs) + "]=" + argumento[nArgs]); // debug

É saim este código resolve meu problema obrigado.

saim escreveu:Ainda não resolve o problema de ter uma função dentro da outra, mas já melhora o problema. Resolver é possível, mas chato demais. Se for um programa menos experimental, talvez valha a pena, mas parece que é mais um lance de curiosidade, então acho melhor NÃO usar uma função dentro da outra...

É eu to levando fé no meu programa, aqui vai uma versão um pouco mais atualizada com algumas funções mas sem o seu script por enquanto :

Código:
line_width[id,width]
circle_add[x,y] // não coloquei para checar mais de um algarismo ainda
line_add[x,y] // não coloquei para checar mais de um algarismo ainda
circle_dimension[id,dimension]
point_add[id]

Não vou precisar de usar uma função dentro da outra não.
Kapoty
Kapoty

Games Ranking : Nota B

Notas recebidas : E + D + C + B + D +B + A
Data de inscrição : 05/11/2011
Reputação : 22
Número de Mensagens : 635
Prêmios : Comandos Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

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

Ir para o topo Ir para baixo

Comandos Empty Re: Comandos

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo

- Tópicos semelhantes

 
Permissões neste sub-fórum
Não podes responder a tópicos