Avatar
kubik-02
Člen
Avatar
kubik-02:

Ahoj, potřeboval by jsem pomoct. Jak můžete vidět níže na obrázcích můj panáček přehraje dead animaci a pořád se opakuje, ale animace se přehrává pouze, pokuď se pohybuju. Potom by jsem potřeboval pomoct s útokem. Tam zase můžu bojovat jen pokuď držím aspoň jedno tlačítko na ovládání. Pokuď se nehýbu tak panáček neútočí. Budu moc rád za každou radu :)

http://www.imagehosting.cz/images/1jtj.png
http://www.imagehosting.cz/images/2geg.png
http://www.imagehosting.cz/images/3aia.png

 
Odpovědět 26.3.2015 18:35
Avatar
Neaktivní uživatel:

Ahoj,

oPlayer, event AnimationEnd
Útok musíš mít špatně vyřešený od základu.

jestli chceš podrobnější info, nahraj sem "skripty" hráče :)

Hedně zdaru

Nahoru Odpovědět 26.3.2015 18:41
Neaktivní uživatelský účet
Avatar
kubik-02
Člen
Avatar
kubik-02:

Obj_player Step event: http://www.itnetwork.cz/dev-lighter/538
Animation End event:
{
if(sprite_index == stickman_play­er_attack) {
sprite_index = stickman_play­er_stand;
}
if sprite_index = stickman_play­er_dead then
{
game_end()
}
}

 
Nahoru Odpovědět 26.3.2015 18:44
Avatar
Lukáš Hornych
Redaktor
Avatar
Odpovídá na kubik-02
Lukáš Hornych:

Musíš nastavit zvlášť image_speed pro tu animaci a po dokončení animace (Other>Animation End) nastavit co se má stát (třeba že se objekt zničí). Jinak k tomu útoku by to možná chtělo poslat kód.

 
Nahoru Odpovědět 26.3.2015 18:45
Avatar
kubik-02
Člen
Avatar
kubik-02:

Jak zvlášť ? Mohl by si mi to prosím podrobněji vysvětlit ? A ten útok by měl Step eventu, pokuď ne tak přikládám Step Event z monster(enemy) objektu:

{
image_alpha = hp/2;
if(hp <= 0) instance_destroy();

if (instance_exis­ts(obj_player)) {
if(x <= obj_player.x) {
image_xscale = 1;
} else {
image_xscale = -1;
}

if(distance_to_po­int(obj_player­.x,obj_player­.y) <= 18) {
//Enemy Attack
if(alarm[0] <= 0) {
global.hp -= 1;
motion_set(po­int_direction(ob­j_player.x, obj_player.y, x, y),4);
alarm[0] = 30;
}

//Player attack
if(obj_player­.sprite_index == stickman_play­er_attack && floor(obj_pla­yer.image_index) == 1) {
if(obj_player­.image_xscale < 0 && x-obj_player.x <= 0) {
hp -= 1;
obj_player.ima­ge_index = 2;
} else if (obj_player.i­mage_xscale >0 && x-obj_player.x > 0) {
hp -= 1;
obj_player.ima­ge_index = 2;
}

}
}
}
}

 
Nahoru Odpovědět 26.3.2015 18:50
Avatar
Lukáš Hornych
Redaktor
Avatar
Odpovídá na kubik-02
Lukáš Hornych:

Zvlášť jako před tu část kódu kde nastavuješ změnu spritu. A hlavně pokud je hráč mrtví asi by se neměl pohybovat ne?

Editováno 26.3.2015 18:56
 
Nahoru Odpovědět 26.3.2015 18:53
Avatar
kubik-02
Člen
Avatar
kubik-02:

Asi teď budu vypadat jako retard, ale pořád jsem tě nepochopil, opravdu se omlouvám :(

 
Nahoru Odpovědět 26.3.2015 18:57
Avatar
Lukáš Hornych
Redaktor
Avatar
Odpovídá na kubik-02
Lukáš Hornych:

No někde ve step eventu by si měl mít kdy hráč umře (něco jako if hp < 0 sprite_index = spr_player_dead) no a před tím by si měl mít jakou rychlostí se ta animace má animovat (př.: image_speed = 0.2; if hp < 0 sprite_index = spr_player_dead;). :D Pokud to máš jinak tak přilož kód xD.

 
Nahoru Odpovědět 26.3.2015 19:05
Avatar
kubik-02
Člen
Avatar
kubik-02:

Pokuď si mě pochopil, potřebuji že pokuď bude mít hráč 0 životů, tak ať se přehraje ta dead animace a potom aby se hra vypla, popř. přešla do hlavního menu. Ještě že jak bude mít 0 životů, aby se hráč nemohl pohybovat.

 
Nahoru Odpovědět 26.3.2015 19:07
Avatar
kubik-02
Člen
Avatar
kubik-02:

Nevím jestli si viděl ten kód :D
Mám to takto:

if(global.hp <= 0) sprite_index = stickman_play­er_dead;

samozřejmě že to je jen část kódu. Takže ty myslíš že to má být takto ?

image_speed = 0.2;
if(global.hp <= 0) sprite_index = stickman_play­er_dead;

//Omlouvám se za double post.

Editováno 26.3.2015 19:09
 
Nahoru Odpovědět 26.3.2015 19:09
Avatar
Lukáš Hornych
Redaktor
Avatar
Odpovídá na kubik-02
Lukáš Hornych:

No však to se ti napsal :D V kódu máš if(global.hp <= 0) sprite_index = stickman_play­er_dead; no a před sprite_index = stickman_play­er_dead; dej ještě image_speed = (rychlost jakou chceš). A pokud chceš, aby se hráč nemohl hýmbat když je mrtví tak nastav, že se může hýbat jen když je jeho zdraví vyšší než 0.

if (global.hp > 0) {
if(keyboard_chec­k(vk_right) && place_free(x+3,y) && sprite_index != stickman_play­er_attack){
x+=3;
sprite_index = stickman_play­er_run;
image_speed = .2;
image_xscale = 1;
}
}

 
Nahoru Odpovědět 26.3.2015 19:12
Avatar
Lukáš Hornych
Redaktor
Avatar
Odpovídá na kubik-02
Lukáš Hornych:

A používej tlačítko ODPOVĚDĚT

 
Nahoru Odpovědět  +1 26.3.2015 19:17
Avatar
Neaktivní uživatel:

No co je tohle za syntax? Kdybych tohle napsal já, skočil bych z okna....

{
if(sprite_index == stickman_player_attack) {
sprite_index = stickman_player_stand;
}
if sprite_index = stickman_player_dead then
{
game_end()
}
}

Jedna větev C like, druhá se nejdřív tváří jako pascal a pak přejde na céčko..... lucky s tebou má pořádnou trpělivost.

Editováno 26.3.2015 19:24
Nahoru Odpovědět  +1 26.3.2015 19:24
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:

Kdyby přišel TomBen tak by ti vynadal za ty globální proměnné, mě až tak nevadí, ale nepoužívám je (až na 'potřebné' [rozuměj lenost psát objekt na transfer skrz místnosti] vyjímky v malých utilitách)

Nahoru Odpovědět 26.3.2015 19:26
Neaktivní uživatelský účet
Avatar
kubik-02
Člen
Avatar
kubik-02:

Teď se panáček dostane pod 0 životů, a dead animace se přehraje až když zmáčknu nějaké tlačítko (třeba šipku nahoru) jak udělat aby to bylo automaticky ? Díky.

 
Nahoru Odpovědět 26.3.2015 19:29
Avatar
Neaktivní uživatel:

such h4x0r, přečti si nějaké tutoriály, to ti pomůže nejvíc. Musíš pochopit co píšeš... uznávám, že přechod z D&D na GML je docela těžká věc, ale takhle to prostě nejde, začni od jednoduchých věcí a pak přejdi k těm o bit složitějším.

Nahoru Odpovědět 26.3.2015 19:34
Neaktivní uživatelský účet
Avatar
Lukáš Hornych
Redaktor
Avatar
Odpovídá na kubik-02
Lukáš Hornych:

Možná by bylo dobré kdyby si ten kód napsal znova a sám a přemýšlel nad tím jak to vlastně funguje. A POUŽÍVEJ TO TLAČÍTKO!!!

 
Nahoru Odpovědět 26.3.2015 19:35
Avatar
Neaktivní uživatel:

Btw. pro kód je tu tlačítko taky. ;)

Nahoru Odpovědět 26.3.2015 19:37
Neaktivní uživatelský účet
Avatar
Neaktivní uživatel:

Dáš sem tu hru? Jsem nažhavený si to zahrát. :)

Nahoru Odpovědět 26.3.2015 19:39
Neaktivní uživatelský účet
Avatar
kubik-02
Člen
Avatar
Odpovídá na Neaktivní uživatel
kubik-02:

Díky vám oběma za vaši pomoc a kritiku :D Hra už mi jede tak jak má. Přikládám odkaz na stažení: http://uloz.to/…tory-0-8-exe

 
Nahoru Odpovědět  +1 26.3.2015 20:01
Avatar
Lukáš Hornych
Redaktor
Avatar
Odpovídá na kubik-02
Lukáš Hornych:

Při sebrání prvního coinu zprava hra spadne.

 
Nahoru Odpovědět 26.3.2015 20:12
Avatar
kubik-02
Člen
Avatar
kubik-02:

Díky za upozornění, bohužel už teď nemám čas. Zítra se na to dám.

 
Nahoru Odpovědět 26.3.2015 21:01
Avatar
Neaktivní uživatel:

Tohle jsem s tím udělal za půl hodiny:
http://uloz.to/…itgame-2-zip

Charitativní účely jsou na další měsíc vyčerpány.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
Nahoru Odpovědět 26.3.2015 21:22
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 24 zpráv z 24.