Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mensajes - pippermint

1
Cita de: Johann en Julio 03, 2019, 01:14:16 AM
No creo que puedas usar cadenas de texto como nombre de recursos.
La variable mosaico va a tener como contenido un texto que no puedes usar en la función tile_add para agregar un tile, debes usar el nombre de un recurso de Game Maker, sin usar comillas
Tienes razón, he cambiado la variable amb que era numerica, por otra coincidente con los nombres de los diferentes backgrounds y funcionó !
2
Quiero cambiar el tileset dependiendo de algunas condiciones, pero game maker se comporta raro...

mosaico = "tileset"+string(amb);

la variable "amb" es numerica, y la variable mosaico iría aqui :


if terreno = 0 {

for(var i = 0; i < room_height/32; i++)
{
for(var ii = 0; ii <room_width/32; ii++)
{
tile_add(mosaico, 256, 0, 32, 32, ii*32, i*32, 5000);
}
}
}


El problema es que no funciona ( al cambiar la variable amb sigue igual), incluso cuando cambio completamente la variable mosaico, me sigue apareciendo el tileset que he usado antes... es una falla grafica que se arregla borrando caché o el codigo está mal o ambas ?
Gracias  :) :)
3
Hola, tengo este codigo, de la orientación de un enemigo, que en teoria detecta si ha cambiado de posición y lo cambia por su imagen correspondiente.

if (x == xprevious && y == yprevious)
{
    image_speed = 0;
}

if xprevious < x  {
if (image_index <= 9 || image_index >= 12)
        {
            image_index = 9;

}
if xprevious > x  {
if (image_index <= 6 || image_index >=9 )
        {
            image_index = 6;
}
if yprevious < y 
{
if (image_index <= 3 || image_index >= 6)
        {
            image_index = 3;
}
if yprevious > y 
{
if (image_index <= 0 || image_index >= 3)
        {
            image_index = 0;
}
}}}}

el tema es que no detecta que haya un cambio en la x ni en la y, ( y si, se está moviendo ).

Este es el codigo en create
hp = 30;
speed = choose ( 0.5,1,1.5)
direccion = choose (0,90,180 )
direction = direccion
image_speed = 0.3 * speed

Step

depth = -y
if (place_meeting(x,y,obj_bala))
{
    var magiaprop
    magiaprop = instance_nearest(x,y,obj_bala);
   
    hp -= global.damage; // **

{
}}

if ( hp < 0 )
{
instance_destroy(){
}}
//pared
if( place_meeting(x,y+ 12,obj_room))  {direction = 90} //arriba
if( place_meeting(x,y - 12,obj_room)) {direction = 270} //abajo
if( place_meeting(x - 12,y,obj_room)) {direction = 0} //izquierda
if( place_meeting(12+x,y,obj_room)) {direction = 180} //derechaa
//pared enemigos
if( place_meeting(x,y+ 12,par_enemy))  {direction = 90} //arriba
if( place_meeting(x,y - 12,par_enemy)) {direction = 270} //abajo
if( place_meeting(x - 12,y,par_enemy)) {direction = 0} //izquierda
if( place_meeting(12+x,y,par_enemy)) {direction = 180} //derechaa

//orientacion


if (x == xprevious && y == yprevious)
{
    image_speed = 0;
}

if xprevious < x  {
if (image_index <= 9 || image_index >= 12)
        {
            image_index = 9;

}
if xprevious > x  {
if (image_index <= 6 || image_index >=9 )
        {
            image_index = 6;
}
if yprevious < y 
{
if (image_index <= 3 || image_index >= 6)
        {
            image_index = 3;
}
if yprevious > y 
{
if (image_index <= 0 || image_index >= 3)
        {
            image_index = 0;
}
}}}}


Muchas gracias !
4
Preguntas y respuestas / Re:Problema en autotile
Febrero 27, 2018, 08:59:08 PM
Bueno, ya he solucionado el problema, el problema es muy tonto y después de una siesta lo he solucionado a los 5 segundos.
if( place_meeting(x + 60,y,obj_room)) {der = 1 } //derecha
// binario ( sin uso)
bin = de + (iz*2) + (ab*4) + (ar*8)

//Tile 0
if( ar = 0) & (ab= 1) & (iz= 0) & (de= 0) & !(place_meeting (x,y,obj_room ))
{

El problema residía, en que si había un objeto a la derecha der = 1, pero a la hora de hacer la comprobación, lo comprobaba en de ...  me había dejado de escribir la R... Problema solucionado
5
Preguntas y respuestas / Re:Problema en autotile
Febrero 27, 2018, 07:50:39 PM
Cita de: 3dgeminis en Febrero 27, 2018, 06:36:16 PM
Yo he hecho algo de autotile y me llama un poco la atencion de que uses 11 imagenes ademas de que repitas el uso de una imagen, pero sin ver las imagenes que usas talves este equivocado.
Lo que use para mi autotile fue algo parecido a esta parte de tu codigo [gml]bin = de + (iz*2) + (ab*4) + (ar*8)[/gml]
es mas simple y menos codigo para usar.
En esta parte [gml]if( place_meeting(x + 60,y,obj_room)) {der = 1 } //derecha[/gml] porque usas 60 en lugar de 48?
si, uso solo 11 porque omito muchas cosas como los bordes externos cuando hacen esquina y todas esas cosas, creo que si no las omitiera, tendría que dibujar 47 ( si no me equivoco )

puse 60 para probar si era que la imagen no estaba centrada y no me la reconocía, pero se me olvido ponerlo bien otra vez. probaré a hacerlo en binario... a ver si el problema sigue....
6
Preguntas y respuestas / Problema en autotile
Febrero 26, 2018, 10:23:13 PM
 :GMS:
Cuanto tiempo sin pasar por aquí ! Ahora que tengo mas tiempo he decidido darle mas horas al juego que estoy creando, bueno, al lío :
Estoy haciendo un script que crea las tiles ( que en realidad son frames de un objeto ) dependiendo de la posición que este el obj_room, el caso es que funciona perfecto excepto algunos bordes de la derecha.


este es el codigo.
image_speed = 0
//Autotile
if( relax = false ) // esto hace que el step pare de buscar los objetos de las cercanias.
{
// da valor de 1 si hay un objeto al lado.
if( place_meeting(x,y+ 48,obj_room))  {ar = 1} //arriba
if( place_meeting(x,y - 48,obj_room)) { ab = 1} //abajo
if( place_meeting(x - 48,y,obj_room)) { iz = 1} //izquierda
if( place_meeting(x + 60,y,obj_room)) {der = 1 } //derecha
// binario ( sin uso)
bin = de + (iz*2) + (ab*4) + (ar*8)

//Tile 0
if( ar = 0) & (ab= 1) & (iz= 0) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 6
}
//Tile 1
if( ar = 0) & (ab= 0) & (iz= 1) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 1
}
//Tile 2
if( ar = 0) & (ab= 0) & (iz= 0) & (de= 1) & !(place_meeting (x,y,obj_room ))
{
image_index = 2
}
//Tile 3
if( ar = 0) & (ab= 1) & (iz= 0) & (de= 1) & !(place_meeting (x,y,obj_room ))
{
image_index = 3
}
//Tile 4
if( ar = 0) & (ab= 1) & (iz= 1) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 7
}
//Tile 5
if( ar = 1) & (ab= 0) & (iz= 0) & (de= 1) & !(place_meeting (x,y,obj_room ))
{
image_index = 5
}
//Tile 6
if( ar = 1) & (ab= 0) & (iz= 0) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 0
}
//Tile 7
if( ar = 1) & (ab= 0) & (iz= 1) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 4
}
//Tile 8
if( ar = 0) & (ab= 0) & (iz= 0) & (de= 0) & !(place_meeting (x,y,obj_room ))
{
image_index = 8
}
//Tile 9
if(place_meeting (x,y,obj_room ))
{
image_index = 9
}
//Tile 10
if( ar = 0) & (ab= 0) & (iz= 0) & (de= 0) & (place_meeting (x,y,obj_room ))
{
image_index = 10
//Tile
if( ar = 1) & (ab= 1) & (iz= 1) & (de= 0) & (place_meeting (x,y,obj_room ))
{
image_index = 8
}}}