IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
GloBByteCZ
Člen
Avatar
GloBByteCZ:13.4.2014 15:50

Chtěl by jsem se zeptat ohledně explozí,jestli je třeba vůbec možné, aby při výbuchu čím blíže hráč je, tím více utrpěl poškození

 
Odpovědět
13.4.2014 15:50
Avatar
DooM
Tvůrce
Avatar
DooM:13.4.2014 16:31

Napadl mě tento způsob, není zrovna nejsofistikova­nější, ale funguje :)

if(distance_to_ob­ject(nepritel) < 100)
health = -10;
else if(distance_to_ob­ject(nepritel) > 110 && distance_to_ob­ject(nepritel) < 120)
health = -20;
else if(distance_to_ob­ject(nepritel) > 120)
health = -30;

Nahoru Odpovědět
13.4.2014 16:31
Klient: Nefunguje mi internet co s tím uděláte? Operátor: a co vidíte na monitoru? Klient: No signal...
Avatar
Odpovídá na GloBByteCZ
Luboš Běhounek Satik:13.4.2014 17:24

Nejspíš stačí obyčejná lineární funkce (neznám přesnou syntaxi gamemakeru, tak to možná nebude správně zapsané):

damage = damageMax-distance;

damageMax tady je zároveň maximální dosah exploze a každý pixel dál je damage o 1 bod menší.

A musíš si ještě ohlídat, aby nebyl hráč od exploze dál, než je dosah exploze, pak by ti vyšlo damage záporné :) .

Nahoru Odpovědět
13.4.2014 17:24
https://www.facebook.com/peasantsandcastles/
Avatar
Odpovídá na Luboš Běhounek Satik
Zdeněk Pavlátka:13.4.2014 17:28

Trochu jsem to vylepšil GloBByteCZ :

zivot -= clamp(damageMax - point_distance(x, y, vybuch.x, vybuch.y), 0, damageMax);

EDIT: Pokud bys to nevěděl, tak ta funkce clamp ti ošetří ty záporné hodnoty.

Editováno 13.4.2014 17:32
Nahoru Odpovědět
13.4.2014 17:28
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
GloBByteCZ
Člen
Avatar
Odpovídá na Zdeněk Pavlátka
GloBByteCZ:2.5.2014 18:42

Jenže mě to na ten clamp hází error :( Mám snad vytvořit nijakou proměnnou?

 
Nahoru Odpovědět
2.5.2014 18:42
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:2.5.2014 18:45

jakej error?

Nahoru Odpovědět
2.5.2014 18:45
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
GloBByteCZ
Člen
Avatar
GloBByteCZ:2.5.2014 18:50

_____________­________________________­______
FATAL ERROR in
action number 5
of Create Event
for object obj_player:

COMPILATION ERROR in code action
Error in code at line 4:
hp -= clamp(damageMax - point_distance(x, y, obj_explosion.x, obj_explosion.y), 0, damageMax);
^
at position 8: Unknown function or script: clamp

 
Nahoru Odpovědět
2.5.2014 18:50
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:2.5.2014 18:54

Máš GM Studio, nebo GM8?

Nahoru Odpovědět
2.5.2014 18:54
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:2.5.2014 19:01

Je možné, že tu funkci přidali až v tom studiu. Takže bude asi nejlepší vytvořit si script s názvem clamp, napsal bych ho asi takhle:

if(argument0 > argument1){
        if(argument0 < argument2)
                return argument0;
        else
                return argument2;
}else
        return argument1;
Nahoru Odpovědět
2.5.2014 19:01
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
GloBByteCZ
Člen
Avatar
GloBByteCZ:2.5.2014 19:09

a jak a kam ho mám vložit?
s argumentama jsem zatím skoro nic nedělal

 
Nahoru Odpovědět
2.5.2014 19:09
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:2.5.2014 19:44

Dej prostě "přidat script", nahoře vyplň jméno clamp a vlož do něj tenhle kód. Pat můžeš to clamp v kódu používat.

Nahoru Odpovědět
2.5.2014 19:44
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
GloBByteCZ
Člen
Avatar
GloBByteCZ:2.5.2014 20:42

A ten kod přijde do stepu, creatu výbuchu nebo hráče (ani jedno nefunguje)? a jsi si jistý tím demageMax? Mě se to nijak nezdá :D

 
Nahoru Odpovědět
2.5.2014 20:42
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:2.5.2014 20:59

DamageMax je "poloměr: exploze. Místo toho názvu tam ten poloměr napíšeš (např. Pokud má výbuch dosah 128 pixelů, damageMax = 128). Kód dáš do create eventu exploze a trochu ho upravíš:

hrac.hp -= clamp(damageMax - point_distance(hrac.x, hrac.y, x, y), 0, damageMax);
Nahoru Odpovědět
2.5.2014 20:59
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Ghost4Man
Člen
Avatar
Odpovídá na GloBByteCZ
Ghost4Man:3.5.2014 10:00

Jestli myslíš ten kód skriptu, nedávej ho do žádného objektu, ale nahoře v menu klikni na Resources a potom na New Script a vlož ten kód tam. Do jména skriptu nahoře napiš "clamp"

Nahoru Odpovědět
3.5.2014 10:00
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
GloBByteCZ
Člen
Avatar
GloBByteCZ:3.5.2014 13:11

Omlouvám se, že to pořád nechápu ale ani takhle to nefunguje-

obj_player.health -= clamp(damageMax = 75 - point_distance(ob­j_player.x, obj_player.y, obj_explosion.x, obj_explosion.y), 0, damageMax=75);

 
Nahoru Odpovědět
3.5.2014 13:11
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:3.5.2014 13:25

Tohle je blbost.

  1. health je vestavěná globální proměnná, ta nemůže patřit do objektu
  2. damageMax máš tou hodnotou nahradit, ne do něj ve výrazu dosazovat
obj_player.hp -= clamp(75 - point_distance(obj_player.x, obj_player.y, x, y), 0, 75);

Tohle už by mělo fungovat.

Nahoru Odpovědět
3.5.2014 13:25
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Ghost4Man
Člen
Avatar
Ghost4Man:3.5.2014 13:25
obj_player.Health -= clamp(damageMax - point_distance(obj_player.x, obj_player.y, obj_explosion.x, obj_explosion.y), 0, damageMax);

Potom si teprve do Create eventu napiš:

damageMax = 75;
Editováno 3.5.2014 13:26
Nahoru Odpovědět
3.5.2014 13:25
Všechno na světě můžete chtít. Jenom nemůžete chtít, aby se vám chtělo.
Avatar
GloBByteCZ
Člen
Avatar
Odpovídá na Ghost4Man
GloBByteCZ:3.5.2014 14:12

Opět ani jedno nefunguje :(

 
Nahoru Odpovědět
3.5.2014 14:12
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:3.5.2014 14:27

JAK nefunguje?

Nahoru Odpovědět
3.5.2014 14:27
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
TomBen
Tvůrce
Avatar
Nahoru Odpovědět
3.5.2014 14:35
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
TomBen
Tvůrce
Avatar
Odpovídá na Zdeněk Pavlátka
TomBen:3.5.2014 14:36

Tak jsem sem z nostalgie kouknul a je to tu furt stejné. :D

Nahoru Odpovědět
3.5.2014 14:36
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
GloBByteCZ
Člen
Avatar
Odpovídá na TomBen
GloBByteCZ:3.5.2014 15:03

Díky moc! Funguje!

 
Nahoru Odpovědět
3.5.2014 15:03
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 23 zpráv z 23.