Diskuze: Smrt a útok

Ostatní jazyky GameMaker GameMaker Smrt a útok

Aktivity (1)
Avatar
kubik-02
Člen
Avatar
kubik-02:26.3.2015 18:35

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:26.3.2015 18:41

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:26.3.2015 18:44

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:26.3.2015 18:45

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:26.3.2015 18:50

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:26.3.2015 18:53

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:26.3.2015 18:57

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:26.3.2015 19:05

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:26.3.2015 19:07

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:26.3.2015 19:09

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:26.3.2015 19:12

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:26.3.2015 19:17

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

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

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:26.3.2015 19:26

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:26.3.2015 19:29

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:26.3.2015 19:34

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:26.3.2015 19:35

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:26.3.2015 19:37

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:26.3.2015 19:39

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:26.3.2015 20:01

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:26.3.2015 20:12

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:26.3.2015 21:01

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:26.3.2015 21:22

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.