Skocz do zawartości

Target w RPG


Lordis

Rekomendowane odpowiedzi

Witam!

 

Mam kilka pytań.

1.Jak zrobić efekt przy uderzeniu (krew) a przy pudle (dymek,chmórke)

2. Jak zrobic żeby liczbowe obrarzenia były na celua nie na bohaterze

 

obj_damage:

 

CREATE:

image_alpha=10;
value=0;
tekst=-1;
vspeed=-1;

DRAW:

draw_set_font(font_damage);
draw_set_color(c_red)
draw_text(x,y,string(value));
draw_set_font(-1);
image_alpha-=0.3;


if(image_alpha<0)
{
    instance_destroy();
}

 

 

Atak mojego bohatera

obj_HERO:

ALARM[0]:

var i;

if distance_to_object(atak_npc) <= 32
    {
        i=instance_create(x,y,obj_damage);
        i.value = damage
        i.tekst=font_damage
    }

 

i mam pytanko gdzie wpisać współrzędne celu(potworka) ?

 

3. Jak zrobić atak w którym nie bede walil ciągle po tyle samo np. mam global.player_atack = 2

i wale ciągle po dwa jak to zrobic żeby było że jak mam np. 50 ataku to wale od 0 do 70?

Odnośnik do komentarza
Udostępnij na innych stronach

ok prosciej:

 

GML
//jesli trafil

{

//kod trafienia itd jaki tam masz

instance_create(xx,yy,o_hit);

}

//jesli nie trafil

{

instance_create(xx,yy,o_miss);

}

animacje mozesz sobie wziasc z miniRPG ale lepiej zrob swoje jest to bardzo proste. Jak zrobic obiekty zajrzyj do ich kodu obiekty o_miss i o_hit. Sa tam poustawiane alarmy itd.

Odnośnik do komentarza
Udostępnij na innych stronach

OO dzieki bo właśnie rozkminiłem jak to zrobić ale nie wiedziałem jaka jest ta konemda (skrypt)

ja dawałem object_add(obj_hit) ale error mi wyskakiwał :) dzięki juz se chyba poradze :]

 

aa i jeszcze na te pytanie nikt nie odpowiedział ;p

 

3. Jak zrobić atak w którym nie bede walil ciągle po tyle samo np. mam global.player_atack = 2

i wale ciągle po dwa jak to zrobic żeby było że jak mam np. 50 ataku to wale od 0 do 70?

Odnośnik do komentarza
Udostępnij na innych stronach

to juz zalezy od ciebie, musisz sobie wymyslic jakas mechanike mozesz np dac cos takiego:

GML
obrazenia = round(random(atak.gracza)) + 20 - obrona.potworka

round(random()) sluzy do generowania losowej liczby. Mozesz dac tam jakas liczbe np. 20 albo jakas zmienna. Jesli atak gracza wynosi 50 to wylosuje liczbe on 0 do 50 doda 20 i odejmie obrone potworka.

 

Mozesz kombinowac do woli ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Znowu problem :(

 

już zrobiłem losowy atak ale coś jest on mało rozbudowany bo gry wale npca

to dostaje po 0 albo 4,80 albo 5,80 i nic wiecej a czemu nie dostaje np. 0,1,2,3,4,5,6 ?

napście mi przykładowy random atak

 

mój wygląda tak może mam cos źle:

if distance_to_object(atak_npc) <= 32
{
    damage = round(random(1));
    //--SIŁA_ATAKU_GRACZA--//
    if damage = 1
    {   
        damage = round(random(global.player_atack)) -(atak_npc.defens * 0.2) +5;
    }
    if (damage < 0)
    {
        damage = 0 
    }
     if (damage > -1) 
    {
         atak_npc.hp -= damage;
    }
}

 

gdzie global.player_atack to:

global.player_atack = 2 * (global.player_level * 0.35)

 

no a global.palyer_level to sie można domyślić ;) (poziom gracza)

Odnośnik do komentarza
Udostępnij na innych stronach

OK :D

 

ATAK GRACZA:

ALARM[0]:

 

//--ATAK--//
var atak;

if distance_to_object(atak_npc) <= 32
{
    damage = round(random(1));
    //--SIŁA_ATAKU_GRACZA--//
    if damage = 1
    {   
        damage = round(random(global.player_atack -(atak_npc.defens * 0.2) +2 ))
    }
    else
    {
        damage = round(random(global.player_atack -(atak_npc.defens * 0.2) +3 ))
    }
    if (damage < 0)
    {
       damage = round(random(global.player_atack -(atak_npc.defens * 0.2) +1))
    }
    //--OBRARZENIA_NPC--//
    if (damage > -1) 
    {
         atak_npc.hp -= damage;
         instance_create(atak_npc.x,atak_npc.y,obj_hit);
    }
}
//--DAMAGE--//
var i;

if distance_to_object(atak_npc) <= 32
    {
        i=instance_create(atak_npc.x,atak_npc.y,obj_damage);
        i.value = damage
        i.tekst=font_damage
    }
    

alarm[0] = room_speed*1; //atak co 1 sekunde

 

obj_damage:

CREATE:

image_alpha=10;
value=0;
tekst=-1;
vspeed=-1;

i DRAW:

draw_set_font(font_damage);
draw_set_color(c_red)
draw_text(x,y,string(value));
draw_set_font(-1);
image_alpha-=0.3;
if(image_alpha<0)
{
    instance_destroy();
}

 

ja próbowałem w obj_damage w DRAW zrobić cos takiego

 

if damage > 100

{

draw_set_color(c_orange)

}

 

ale nie dziala ;p

 

a i mam jeszcze jedno pytanko działa mi to że jak udeże npcka to jeci krew ale jak zrobić właśnie ze jak dostanie kritikala? bo block to wiem i zwykły tez a kritikal?

Odnośnik do komentarza
Udostępnij na innych stronach

to daj w DRAW obj_damage

GML
if value > 100

{

draw_set_color(c_yellow)

}

else

draw_set_color(c_red)

w o_damage nie masz czegos takiego jakz mienna damage, jest ona zamieniana na value;)

 

Krew powinna sie pokazac i przy krytyku, to narmalny cios jest, zmieniasz tylko kolorek napisu.

 

nie ma kolorku c_orange :P w helpie Gma masz jakie sa dostepne.

Odnośnik do komentarza
Udostępnij na innych stronach

mam znów problem :(

dla was jest pewnie banalny ale ja nie wiem jak sie to nazywa

a wiec tak w STEP pisze if (keyboard_check(....)) i właśnie tu

gdzie są kropki ma być litera "s" ale nie wiem jaki jest początek bo w takich jak szczałki albo spacja to vk_...

a przy literach? szukałem w helpie gma ale tam są tylko vk_... :(

Odnośnik do komentarza
Udostępnij na innych stronach

nie chodzi ;/

 

if (keyboard_check(ord'S'))
    {
    instance_create(x+500,y+350,obj_panel_skill);
    }

ale to może odrazu sie zapytam jak zrobić panel ze skillami (atak, def, armor, hp, mp, exp i takie tam)

żeby jak nacisne "S" to sie pojawia a jak już jest i nacisne "S" to znika?

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ę...