Executar som adicionando caractere pelo código
Enviado: Sáb Jun 18, 2016 2:37 pm
Bom, essa duvida é um pouco difícil de explicar, ela usa o Game Maker 8.0 Pro. No projeto que estou fazendo há um script chamado hit que simplifica o processo de deixar efeitos gerados quando os obj_disparo atingem alguma coisa. Ele é adaptado pra incluir efeitos especiais no disparo, explosões, vínculo aos times e o assunto da minha dúvida: os sons. Vou colocar o script aqui:
Para descomplicar, ele gera um código assim:
O script não tem usos para o argument de som porque a função dele depende da distância do obj_char. Se o obj_char estiver muito próximo o som executado será o arquivo "(argument9)a". Se estiver a meia distância será o arquivo "(argument9)b" e se estiver muito longe do obj_char será o arquivo "(argument9)c". Mas é aí que está o problema: como fazer o script executar o nome dado ao argument e acrescentar uma letra ou caractere a mais como "a". No meu jogo o hit pode ser uma explosão, um disparo comum ou granada, e cada um tem um som diferente.
Há os arquivos snd_exp1a, snd_exp1b e snd_exp1c. E também há os snd_ric1a, snd_ric1b e snd_ric1c. Ou seja, preciso colocar o snd_exp1 como argument no script hit e ele executar o snd_exp1a como som.
Espero que o esclarecimento da dúvida tenha ficado claro.
Código: Selecionar todos
var xx, yy, escala_x, escala_y, imagem, variabilidade, tipo_angular, fumaca, efeito, som, time, poder, poder_de_impacto, objeto_de_impacto;
xx = argument0;
yy = argument1;
escala_x = argument2;
escala_y = argument3;
imagem = argument4;
variabilidade = argument5;
tipo_angular = argument6;
fumaca = argument7;
efeito = argument8;
som = argument9;
time = argument10;
poder = argument11;
poder_de_impacto = argument12;
if time=1
objeto_de_impacto = instance_create(xx,yy,obj_hit1)
if time=2
objeto_de_impacto = instance_create(xx,yy,obj_hit2)
objeto_de_impacto.image_xscale=escala_x
objeto_de_impacto.image_yscale=escala_y
objeto_de_impacto.sprite_index=imagem
objeto_de_impacto.mask_index=imagem
if !variabilidade=0
{
objeto_de_impacto.x+=random_range(-variabilidade,variabilidade)
objeto_de_impacto.y+=random_range(-variabilidade,variabilidade)
}
if tipo_angular=0
{
objeto_de_impacto.image_angle=irandom(360)
}
else
{
objeto_de_impacto.image_angle=tipo_angular
}
objeto_de_impacto.smk=fumaca
objeto_de_impacto.eff=efeito
objeto_de_impacto.damage=poder
Código: Selecionar todos
hit(x,y,image_xscale,image_yscale,sprite_index,offset,angle_type,smoke_type,effect,sound,team,damage,power)
Há os arquivos snd_exp1a, snd_exp1b e snd_exp1c. E também há os snd_ric1a, snd_ric1b e snd_ric1c. Ou seja, preciso colocar o snd_exp1 como argument no script hit e ele executar o snd_exp1a como som.
Espero que o esclarecimento da dúvida tenha ficado claro.