Skocz do zawartości

Problem ze skryptem..


Paqoo

Rekomendowane odpowiedzi

Problem dziwny, skrypty przekopiowałem z przykładu systemwalkiwrpg.gm6.

Wszystko działa sprawnie. Oczywiście musiałem zrobić kilka zmian, podmienić nazwy itp. Wydaje mi się, że rozumiem to, co autor przykładu miał na myśli. Ale jest problem.. Przeciwnik stoi zamiast za mną chodzić! Co może być nie tak?

 

Oto kod z STEP obiektu przeciwnika - o_spider:

if hlt <= 0
{
instance_destroy();
exit;
}

if atak && o_gracz.atak_npc != id
atak = false;

var gracz;
gracz=instance_nearest(x,y,o_gracz);

if ( distance_to_object(gracz)<dyst )
{
podazaj=true;
}
else
{
podazaj=false;
}


if (podazaj==true)
{

    if (o_gracz.y>y+32)
    {
     if (place_free(x,y+32))
     k=dol;
     else
     {
        if (o_gracz.x>x)
        k=prawo;
        else
        k=lewo;
     }
    }
    if (o_gracz.y<y-32)
    {
     if (place_free(x,y-32))
     k=gora;
     else
     {
        if (o_gracz.x>x)
        k=prawo;
        else
        k=lewo;
     }
    }
    if (o_gracz.x>x+32)
    {
     if (place_free(x+32,y))
     k=prawo;
     else
     {
        if (o_gracz.y>y)
        k=dol;
        else
        k=gora;
     }
    }
    if (o_gracz.x<x-32)
    {
     if (place_free(x-32,y))
     k=lewo;
     else
     {
        if (o_gracz.y>y)
        k=dol;
        else
        k=gora;
     }
    }
}

switch (k)
{
    case gora:
    if entered 
    {
        yy -= 32;
        entered = false;
        sprite_index=s_spdr_up;
        image_single=-1;
        image_speed=0.3;
        k=stoj;
    }
    break;
    
    case dol:
    if entered 
    {
        yy += 32;
        entered = false;
        sprite_index=s_spdr_down;
        image_single=-1;
        image_speed=0.3;
        k=stoj;
    }
    break;
    
    case lewo:
    if entered 
    {
        xx -= 32;
        entered = false;
        sprite_index=s_spdr_left;
        image_single=-1;
        image_speed=0.3;
        k=stoj;
    }
    break;
    
    case prawo:
    if entered 
    {
        xx += 32;
        entered = false;
        sprite_index=s_spdr_right;
        image_single=-1;
        image_speed=0.3;
        k=stoj;
    }
    break;

}

if place_free(xx,yy)
{
    if mp_linear_step(xx,yy,move_speed,false)
    {
        entered = true;
        if (k=stoj)
        {
            image_single=0;
            image_speed=0;
        }
    }
}
else
{
    xx=x;
    yy=y;
}

Oto jego CREATE EVENT:

xx = x;
yy = y;
entered = true;
move_speed = 2;
image_single=0;
image_speed=0;

exp = 20; // ile expa ma dodawac po zabiciu
max_hlt = 50; // maximum zycia
hlt = 50; // zycie ustawione na maximum
imie = 'Spider'; // imie potwora
atak = false; // czy atakujemy (pozostaw false!)
podazaj = false;  // czy ma podążać za graczem czy nie
k=stoj;         // kierunek w ktorym ma isc (jesli stoj - no to stoi nie xD)
dyst=32*7;        // dystans przy jakim NPC zaczyna gonić gracza

alarm[0] = room_speed*2;
alarm[1] = room_speed*random(2);

A to Alarmy:

 

Alarm1:

var k;
k=choose(lewo, prawo, gora, dol);
if !podazaj
switch (k)
{  
case gora:
krok_gora()
break;
case dol:
krok_dol()
break;
case lewo:
krok_lewo()
case prawo:
krok_prawo()
}
alarm[1] = room_speed*random(3);

Alarm 0:

var obj, atak;

obj = o_gracz;

if distance_to_object(obj) <= 32
{
    atak = round(random(1));
    if atak = 1
    {
        obj.hlt-=round(random(5));
        
    }
    else
    {
        
    }
}

alarm[0] = room_speed*2; //atak co 2 sekundy

 

W draw i press button nie było nic ciekawego..

 

POMOCY!!!! :crying:

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...