GMC Bulgaria

Здравейте ( Вход | Регистрация )

 
Reply to this topicStart new topic
Изброяване?, Има ли начин?
martinmarks
коментар 01:00:21, 25-August-2010, Wednesday
Коментар #1


Редовен потребител
***

Група: Потребител
Коментари: 216
Регистриран: 13.06.07
Град: българия
Потребител № 627



Разработвам едно AI enemy в играта си, и трябва да му задам да ходи на obj_wall например, получи се! Ето и част от скрипта gravity=(!place_meeting(x,y+1,obj_wall)) Обаче има и други обекти по които трябва да стъпва например като obj_grass и се чудих дали може да направя така, че да изброявам по кое може, добавих и едно and ето: gravity=(!place_meeting(x,y+1,obj_wall and obj_grass)) После пуснах и не стана заседва и на двата обекта! И незнам как да направя така, че да изброя повече от един обект по който може да върви като AI? Ако може малко помощ?

Направо ето ви целия скрипт:
Код
if(random(50)<1 && dir<1) dir+=1;
if(random(50)<1 && dir>-1) dir-=1;
if(place_meeting(x+movspeed*dir,y,obj_wall)) dir=0;
x+=movspeed*dir;
if(dir!=0) image_xscale=dir;
gravity=(!place_meeting(x,y+1,obj_wall))*grav;
if(dir==0) {
    if(gravity==0) {
        sprite_index=spr_enemy1_stand;
    } else {
        sprite_index=spr_enemy1_still;
    }
} else {
    if(gravity==0) {
        sprite_index=spr_enemy1_walk;
    } else {
        sprite_index=spr_enemy1_moving;
    }
}
if(vspeed>10) vspeed=10;
if(collision_rectangle(x+dir*16,y+16,x+dir*movspeed*20,y-maxjump,obj_wall,true,true)>0 && gravity==0) {
    if(random(4)<1&&!place_meeting(x,y-24,obj_wall) && dir!=0) {
        
        ok=0;
        vx=x;
        vy=y;
        x-=999999;
        y-=999999;
        with(obj_wall) {
            if(collision_rectangle(other.vx+other.dir*16,other.vy+16,other.vx+other.dir*other.movspeed*20,other
.vy-other.maxjump,id,true,false)) {
                if(!place_meeting(x-(other.vx<x)+(other.vx>=x),y-1,obj_wall) && collision_line(x,y,other.vx,other.vy,obj_wall,true,true)<0) {
                    other.ok=other.vy-y+16;
                }
            }
        }
        x=vx;
        y=vy;
        if(ok>0) vspeed=-floor(sqrt(2*(ok+64/grav)))*(grav);;
    }
}


--------------------
Подписа бе съкратен от модератор.
I am a according to the gml n00b test!


The Stone Of Death
DEMO: 15% ◄▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬► 100%
Go to the top of the page
 
+Quote Post
яверт
коментар 07:14:31, 25-August-2010, Wednesday
Коментар #2


Засмян тъпоъгълник :D
Икона на група

Група: Администратор
Коментари: 1790
Регистриран: 21.07.08
Град: Това е място, населено с много хора. FPS: 60
Потребител № 1116



Пробвай gravity=(!place_meeting(x,y+1,obj_wall)&&!place_meeting(x,y+1,obj_grass))
Логически операции в третият аргумент несъмнено ще предизвикат грешка, защото там трябва да напишеш само име(индекс) на обект и нищо друго.


--------------------
Цитат
Пешо:
4:53:46
Я недейти са карайти тука че да ни ва зашливйъ
Go to the top of the page
 
+Quote Post
TALANTO
коментар 08:13:01, 25-August-2010, Wednesday
Коментар #3


BEST ENTRY award - зад.1/2008
Икона на група

Група: VIP
Коментари: 597
Регистриран: 19.04.07
Град: Kюстендил
Потребител № 539



Щом е станало с obj_wall пробвай в другия обкет дане би единия да е солиден, а другия не.
Защо не си направиш нов обкет, който да е родител (parent) на другите по които трябва да се ходи и след това само правиш проверка на родителя. Може и obj_wall да е родител, но по-добре празен обект.

Мисля, че с родител ще е най-добре.

едит:
Сега като се загледам това and нз дали е позволено.
Цитат
place_meeting(x,y+1,obj_wall and obj_grass))

Мисля, че така не може пробвай на 2 реда или с цикъл с масив от имената на обектите. Но задължително пробвай с родител, ще е най-добре.

едит 2:
Това дето си го писал не може да се прави:
Направих два обекта apple и bomb. След това в дебъгара написах instance_position(mouse_x,mouse_y,apple and bomb) това битрябвало да ми покаже id-то на обекта който соча с мишката и какво да видя рабои само за apple.
Значи това което си го написал е неправилно.

едит 3:
И сега като гледам яверт го е обяснил...


--------------------
"Последно: 18:05:07, 21.09.12" След две години мълчание пак проговори...
ИГРИ И ПРИМЕРИ НА САЙТА МИ!.
Go to the top of the page
 
+Quote Post
Hella_from_Hell
коментар 09:34:26, 25-August-2010, Wednesday
Коментар #4


Редовен бъбривко
Икона на група

Група: Администратор
Коментари: 782
Регистриран: 31.12.07
Град: Шумен
Потребител № 824



Това "and" още щом го видите и трябва да знаете, че няма да работи. То изобщо дори не е част от GML. Ако беше писано на Pascal тогава можеше и да мине номера. biggrin.gif


--------------------
Download my games (click an image for more information and downloading):

website: rbglifestyle.hit.bg
Go to the top of the page
 
+Quote Post
яверт
коментар 09:55:09, 25-August-2010, Wednesday
Коментар #5


Засмян тъпоъгълник :D
Икона на група

Група: Администратор
Коментари: 1790
Регистриран: 21.07.08
Град: Това е място, населено с много хора. FPS: 60
Потребител № 1116



Цитат(Hella_from_Hell @ 10:34:26, 25-August-2010, Wednesday) *
Това "and" още щом го видите и трябва да знаете, че няма да работи. То изобщо дори не е част от GML. Ако беше писано на Pascal тогава можеше и да мине номера. biggrin.gif

Доколкото зная ГМ приема синтаксис от паскал като наследство от античните версии.


--------------------
Цитат
Пешо:
4:53:46
Я недейти са карайти тука че да ни ва зашливйъ
Go to the top of the page
 
+Quote Post
TALANTO
коментар 10:01:03, 25-August-2010, Wednesday
Коментар #6


BEST ENTRY award - зад.1/2008
Икона на група

Група: VIP
Коментари: 597
Регистриран: 19.04.07
Град: Kюстендил
Потребител № 539



Не виждам разлика между and и &&. Ако има кажете каква е.


--------------------
"Последно: 18:05:07, 21.09.12" След две години мълчание пак проговори...
ИГРИ И ПРИМЕРИ НА САЙТА МИ!.
Go to the top of the page
 
+Quote Post
martinmarks
коментар 10:05:17, 25-August-2010, Wednesday
Коментар #7


Редовен потребител
***

Група: Потребител
Коментари: 216
Регистриран: 13.06.07
Град: българия
Потребител № 627



Ами аз като сложих and се оцвети в син цвят и тогава помислих, че ще се получи нещо. Пробвах на Яверт начина, оказа се много по труден, започнаха да възникват грешки и се отказах, за това мисля да пробвам начина на таланто да има в обекти само един wall, а на tiles ще сложа трева и тн... Ами попринцип and и & в англииския са едно и също. O_o


--------------------
Подписа бе съкратен от модератор.
I am a according to the gml n00b test!


The Stone Of Death
DEMO: 15% ◄▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬► 100%
Go to the top of the page
 
+Quote Post
яверт
коментар 10:13:53, 25-August-2010, Wednesday
Коментар #8


Засмян тъпоъгълник :D
Икона на група

Група: Администратор
Коментари: 1790
Регистриран: 21.07.08
Град: Това е място, населено с много хора. FPS: 60
Потребител № 1116



Цитат(martinmarks @ 11:05:17, 25-August-2010, Wednesday) *
Ами попринцип and и & в англииския са едно и също. O_o

И какво от това? По твоята логика ако се замени == със is equal to също ще работи.


--------------------
Цитат
Пешо:
4:53:46
Я недейти са карайти тука че да ни ва зашливйъ
Go to the top of the page
 
+Quote Post
TALANTO
коментар 10:22:10, 25-August-2010, Wednesday
Коментар #9


BEST ENTRY award - зад.1/2008
Икона на група

Група: VIP
Коментари: 597
Регистриран: 19.04.07
Град: Kюстендил
Потребител № 539



Цитат(martinmarks @ 11:05:17, 25-August-2010, Wednesday) *
за това мисля да пробвам начина на таланто да има в обекти само един wall, а на tiles ще сложа трева и тн...

Това за което говориш е добра идея, но нямах него предвид, ето ти пример:
Ето каква е идеята имаш два обекта wall и grass и още един обект, който да им е родител.
Какво означава родител - всичко което го има родителя се наследява от децата (wall и grass). Демек ако имаш в create instance_destroy() то и grass и wall ще го имат.
Това долу може да не го четеш, защото ще те обърка.
Код
Ако обаче в grass направиш друг create това означава, че този от родителя няма да работи. Ако искаш и двата да се изпалнят трябва да сложиш event_inherited()

По просто казано правиш това на снимката и за двата обекта (wall и grass).

След като си го направил в героя player не е нужно да пишеш едно и също за wall и grass а направо за обекта родител (parent).

Ето и примера (не успях да направя точно това със заставането върху обекта, но все пак примера не е за гравитация, а да разбереш родителите).
Прикачен файл  parent.gm6 ( 7.69k ) Брой сваляния: 5

Виж в обекта player има само един collision event с парент именно това е идеята - да пишеш за един обект, а да се изпълнява за много.

Надявам се, че ме разбра. В твоя случай трябва да е:
Цитат
gravity=(!place_meeting(x,y+1,parent))


--------------------
"Последно: 18:05:07, 21.09.12" След две години мълчание пак проговори...
ИГРИ И ПРИМЕРИ НА САЙТА МИ!.
Go to the top of the page
 
+Quote Post
martinmarks
коментар 10:52:23, 25-August-2010, Wednesday
Коментар #10


Редовен потребител
***

Група: Потребител
Коментари: 216
Регистриран: 13.06.07
Град: българия
Потребител № 627



Аха, ами аз направих един ivisible wall и после а тайлс сложих тревата и земята и invisible wall отгоре им аправих го като клеткаи през него виждам и tiles и пак става! На ако твоят начин е друг дай пример да го видя може и да е по - добре! Аз като го направих по моя също спестих лагове защото слагах по малко wall ето виж снимка в едитора по моя начин:


--------------------
Подписа бе съкратен от модератор.
I am a according to the gml n00b test!


The Stone Of Death
DEMO: 15% ◄▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬► 100%
Go to the top of the page
 
+Quote Post
TALANTO
коментар 10:57:23, 25-August-2010, Wednesday
Коментар #11


BEST ENTRY award - зад.1/2008
Икона на група

Група: VIP
Коментари: 597
Регистриран: 19.04.07
Град: Kюстендил
Потребител № 539



Вече редактирах горния коментар примера е в него. И двата варианта ще работят, с моя е по-добре в случай, че после искаш да има нещо допълнително. Например ако искаш като вървиш по тревата да ходиш по-бавно когато разполагаш с един обект и tiles ще е по-трудно да се направи разлика върху кое си, но смоя вариант имаш два индивидуални обекта и ще е много по-лесно.


--------------------
"Последно: 18:05:07, 21.09.12" След две години мълчание пак проговори...
ИГРИ И ПРИМЕРИ НА САЙТА МИ!.
Go to the top of the page
 
+Quote Post
martinmarks
коментар 11:34:04, 25-August-2010, Wednesday
Коментар #12


Редовен потребител
***

Група: Потребител
Коментари: 216
Регистриран: 13.06.07
Град: българия
Потребител № 627



Таланто много ти благодаря, и товя начи се получи с парънт, направих обект invisible wall да е parent на obj_grass. Като се замисля и моя начин е полезен, защото като слагам много обекти и в левъла и започва да лагва. За това ще използвам и моя и твоя начин и всичко е 6! smile.gif Пак благодаря за примера.


--------------------
Подписа бе съкратен от модератор.
I am a according to the gml n00b test!


The Stone Of Death
DEMO: 15% ◄▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬► 100%
Go to the top of the page
 
+Quote Post
Hella_from_Hell
коментар 07:25:11, 26-August-2010, Thursday
Коментар #13


Редовен бъбривко
Икона на група

Група: Администратор
Коментари: 782
Регистриран: 31.12.07
Град: Шумен
Потребител № 824



Цитат(яверт @ 10:55:09, 25-August-2010, Wednesday) *
Доколкото зная ГМ приема синтаксис от паскал като наследство от античните версии.

Това не го знаех. Никога дори и не ми е хрумвало да го пробвам, а и може да е добавено след някоя от последните версии.


--------------------
Download my games (click an image for more information and downloading):

website: rbglifestyle.hit.bg
Go to the top of the page
 
+Quote Post
TALANTO
коментар 09:29:07, 26-August-2010, Thursday
Коментар #14


BEST ENTRY award - зад.1/2008
Икона на група

Група: VIP
Коментари: 597
Регистриран: 19.04.07
Град: Kюстендил
Потребител № 539



Цитат(Hella_from_Hell @ 08:25:11, 26-August-2010, Thursday) *
Никога дори и не ми е хрумвало да го пробвам, а и може да е добавено след някоя от последните версии.

Не разбирам как може да го пробеваш?


--------------------
"Последно: 18:05:07, 21.09.12" След две години мълчание пак проговори...
ИГРИ И ПРИМЕРИ НА САЙТА МИ!.
Go to the top of the page
 
+Quote Post
яверт
коментар 09:35:17, 26-August-2010, Thursday
Коментар #15


Засмян тъпоъгълник :D
Икона на група

Група: Администратор
Коментари: 1790
Регистриран: 21.07.08
Град: Това е място, населено с много хора. FPS: 60
Потребител № 1116



Цитат(Hella_from_Hell @ 08:25:11, 26-August-2010, Thursday) *
Това не го знаех. Никога дори и не ми е хрумвало да го пробвам, а и може да е добавено след някоя от последните версии.

Едва ли защото първите са използвали паскал, а последните - подобие на С.


--------------------
Цитат
Пешо:
4:53:46
Я недейти са карайти тука че да ни ва зашливйъ
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 потребител(и) четат тази тема (1 гости и 0 скрити)
0 Потребител(и):

 



Олекотена версия Час: 02:42:08, 19.05.24