Avatar
GloBByteCZ
Člen
Avatar
GloBByteCZ:

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
Dominik Hošic
Redaktor
Avatar
Dominik Hošic:

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  -2 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):

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  +1 13.4.2014 17:24
:)
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na Luboš Běhounek (Satik)
Zdeněk Pavlátka:

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  +1 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:

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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 2.5.2014 18:45
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
GloBByteCZ
Člen
Avatar
GloBByteCZ:

_____________­________________________­______
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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 2.5.2014 18:54
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:

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:

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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:

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:

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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:

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  +1 2.5.2014 20:59
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
Odpovídá na GloBByteCZ
Daniel Kosík (Ghost4Man):

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:

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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Odpovídá na GloBByteCZ
Zdeněk Pavlátka:

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
Daniel Kosík (Ghost4Man):
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
Zdeněk Pavlátka
Tým ITnetwork
Avatar
Nahoru Odpovědět 3.5.2014 14:27
Kolik jazyků umíš, tolikrát jsi programátor.
Avatar
TomBen
Redaktor
Avatar
Nahoru Odpovědět  +1 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
Redaktor
Avatar
Odpovídá na Zdeněk Pavlátka
TomBen:

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
 
Nahoru Odpovědět  +1 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.