GMC Bulgaria

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

 
Reply to this topicStart new topic
Код за автоматично регулиране на нива, Има ли ?
term1nat0r
коментар 10:31:44, 13-April-2010, Tuesday
Коментар #1


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

Група: Потребител
Коментари: 102
Регистриран: 23.08.09
Град: Силистра.
Потребител № 1490



Значи има ли код, който прави автоматично нивата на определен размер на роома . Имам 15 тилес да слага автоматично кадето си ще (само да е достъпно да може да се мине) и върху тилес да слага инвизибъл wall . ???
И като се мине нивото да прави друго автоматично . Да стане нещо като на Пешо Супер Мариото . http://gmc.pi-dev.com/index.php?showtopic=1953


--------------------
Влезте в новият ми сайт : http://term1nat0r.netne.net/
Go to the top of the page
 
+Quote Post
яверт
коментар 10:47:37, 13-April-2010, Tuesday
Коментар #2


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

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



Това което си написал, е прекалено общо. Дай малко повече информация - дали да е в реално време, какви са тайловете, само един обект ли да се слага, т.н. Иначе ще ти дам код, от когото играта ти ще заприлича на ротун двайс biggrin.gif


--------------------
Цитат
Пешо:
4:53:46
Я недейти са карайти тука че да ни ва зашливйъ
Go to the top of the page
 
+Quote Post
term1nat0r
коментар 11:04:06, 13-April-2010, Tuesday
Коментар #3


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

Група: Потребител
Коментари: 102
Регистриран: 23.08.09
Град: Силистра.
Потребител № 1490



Ами имам tiles :

И тези тилес да се разпределят на разни места, като те са покрити с инвизибъл платформ .
Също така ще може ли да се създават басейни и вътре да има риби автоматично имам всичко нужно .


--------------------
Влезте в новият ми сайт : http://term1nat0r.netne.net/
Go to the top of the page
 
+Quote Post
яверт
коментар 11:27:03, 13-April-2010, Tuesday
Коментар #4


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

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



Първо, това не са тайлове, а отделни бекграунди. Виж и научи какво са тайлове.

Ако дадеш няколко примерни нива на шотове, може и да успея да направя нещо, но не давам гаранция нито за качество, нито за скорост на създаването.



--------------------
Цитат
Пешо:
4:53:46
Я недейти са карайти тука че да ни ва зашливйъ
Go to the top of the page
 
+Quote Post
term1nat0r
коментар 11:48:36, 13-April-2010, Tuesday
Коментар #5


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

Група: Потребител
Коментари: 102
Регистриран: 23.08.09
Град: Силистра.
Потребител № 1490



Нещо такова :


--------------------
Влезте в новият ми сайт : http://term1nat0r.netne.net/
Go to the top of the page
 
+Quote Post
яверт
коментар 11:51:00, 13-April-2010, Tuesday
Коментар #6


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

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



Само възвишения ли искаш? Прекалено лесно. Я направо дай ехе с дълго примерно ниво, ама вечерта ще мога да го погледна.


--------------------
Цитат
Пешо:
4:53:46
Я недейти са карайти тука че да ни ва зашливйъ
Go to the top of the page
 
+Quote Post
term1nat0r
коментар 12:26:16, 13-April-2010, Tuesday
Коментар #7


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

Група: Потребител
Коментари: 102
Регистриран: 23.08.09
Град: Силистра.
Потребител № 1490



ETO


--------------------
Влезте в новият ми сайт : http://term1nat0r.netne.net/
Go to the top of the page
 
+Quote Post
яверт
коментар 19:22:24, 13-April-2010, Tuesday
Коментар #8


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

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



Точно сто реда, най-много час работа:
Код
//махни отметката precise collision checking от спрайта да диаманта, за да не запецва при ъглите
//тайловете са доста объркващи, не се подразбира кой какво прави
//create event
var k,s,v,gr,zona,dosega;k=ширината на блока;s=броя на блокчетата надлъжно;v=броя на блокчетата на височина;
var skokx,skoky;skokx=максимално възможно разстояние, което може да се скочи по х;skoky=максимална височина на скока;
for(i=0;i<s;i+=1)for(j=0;j<v;j+=1)zemq[i,j]=0;//инициализация
/*стойности на земя:
0 - нищо
1 - нормална земя
2 - вода
3 - асансьор
4 - бодли*/
gr=round(3+random(10));//границата м/у началото и краят на нивото и началото и краят на стаята
//началото и краят на нивото са обградени със стени
for(i=0;i<gr;i+=1)for(j=0;j<v;j+=1)zemq[i,j]=1;
for(i=s;i>s-gr;i-=1)for(j=0;j<v;j+=1)zemq[i,j]=1;
dosega=gr;//докъде сме стигнали с направата на нивото
var vis,stp,vis2,n4,ss;//временни променливи

//начало на създаването

do
{
zona=10+round(random(30));//каква част от нивото ще запълваме
//променяй 10 и 30, докато не получиш желания разултат
switch(choose(1,2,3))//1 - твърда земя;2 - платформи, 3 - аквариум
   {
   case 1://твърда земя
        vis=round(random(skoky-1))+1;//нивото на земята - винаги може да бъде скокнато, но и винаги се вижда
        for(i=dosega;i<=dosega+zona;i+=1)for(j=v-vis;j<v;j+=1)zemq[i,j]=1;//запълваме пода
        repeat(choose(0,1,2,3))//0,1,2 или 3 хълма ще направим
           {
           stp=choose(1,1,2,2,3,3,4,5);//стъпка на изкачване и понижаване
           vis2=choose(2,3,4);//височина на хълмовете
           n4=dosega+round(random(zona));//началото на хълма
           //(стъпка)*(сегашна височина)*2 stp*j*2
           for(j=vis+vis2;j>vis;j-=1)for(i=0;i<stp*vis2;i+=1) {zemq[min(n4+i,dosega+zona),v-j]=1;zemq[max(n4-i,dosega),v-j]=1;}//запълване на хълма
           }
        n4=dosega+round(random(zona));//началото на бодлите
        for(i=0;i<round(random(max(skokx-1,0)));i+=1)//произволен брой бодли
           {
           for(j=0;j<v-1;j+=1){if zm[min(n4+i,dosega+zona),j+1]==1 zm[min(n4+i,dosega+zona),j]=4;break;}
           }
   break;//готови сме с генерацията на твърдата земя
   case 2://платформи
        n4=dosega+round(random(5));//прескачаме малко разстояние
        vis=10;//височината на предишната платформа
        do
          {
          stp=5+round(random(20));//дължина на платформата+дължина на скока
          ss=round(random(stp/2))+2;//дължина на платформата
          vis2=round(random(v-10));//височина на платформата
          if vis2-vis>skoky //ако не може да бъде скокната, правим асансьор
             for(j=v-vis2;j<v;j+=1)zemq[n4-1,j]=3;
          for(j=v-vis2;j<v;j+=1)for(i=0;i<ss;i+=1)zemq[i+n4,j]=1;//запълваме платформата
          vis=vis2;n4+=stp;
          }
        until(n4+stp>=dosega+zona)//правим платформи до края на този район
   break;
   case 3://аквариум
        vis=round(random(skoky/3-1))+1;//нивото на земята - винаги може да бъде скокнато, но и винаги се вижда
        for(i=dosega;i<=dosega+zona;i+=1)for(j=v-vis;j<v;j+=1)zemq[i,j]=1;//запълваме пода
        vis2=max(round(random(skoky))-vis,3);//височина на стените на аквариума
        stp=choose(1,2,3);//широчина на стените
        for(i=dosega;i<dosega+stp;i+=1)for(j=v-vis2-vis;j<v-vis;j+=1)zemq[i,j]=1;
        for(i=dosega+zona-stp;i<dosega+zona;i+=1)for(j=v-vis2-vis;j<v-vis;j+=1)zemq[i,j]=1;//запълване на стените
        for(i=dosega+stp;i<dosega+zona-stp;i+=1)for(j=v-vis2-vis+1;j<v-vis;j+=1)zemq[i,j]=2;//запълване с вода
   break;
   }
dosega=min(dosega+zona,s-gr);//продължаваме напред
}until(dosega>=s-gr)//продължаваме, докато не стигнем до края на стаята

//създали сме нивото, остава да създадем обектите

/*
стойности на земя:
0 - нищо
1 - нормална земя
2 - вода
3 - асансьор
4 - бодли
*/
for(i=0;i<s;i+=1)for(j=0;j<v;j+=1)
switch(zemq[i,j])
   {
   case 1:
   instance_create(i*k,j*k,обект за земя);
   if zemq[i,max(j-1,0)]==0
                            {
                            if zemq[max(i-1,0),j]==0 tile_add(бекграунд с тайовете,позицията на тайла за горен ляв ъгъл,k,k,i*k,j*k,10000);
                            else if zemq[min(i+1,s),j]==0 tile_add(бекграунд с тайовете,позицията на тайла за горен десен ъгък,k,k,i*k,j*k,10000);
                            else tile_add(бекграунд с тайовете,позицията на тайла за горна част,k,k,i*k,j*k,10000);
                            }
   else
                tile_add(бекграунд с тайовете,позицията на тайла за земя,k,k,i*k,j*k,10000);
   break;
   case 2:instance_create(i*k,j*k,обект за вода);if random(100)<1 instance_create(i*k,j*k,обект за риба); break;
   case 3:instance_create(i*k,j*k,обект за асансьор);break;
   case 4:instance_create(i*k,j*k,обект за шип);break;
   }

Домързя ме да го тествам. Искам да видя резултата - даже ако не я звършиш ми прати по ЛС това, което си направил.


--------------------
Цитат
Пешо:
4:53:46
Я недейти са карайти тука че да ни ва зашливйъ
Go to the top of the page
 
+Quote Post
term1nat0r
коментар 22:41:28, 13-April-2010, Tuesday
Коментар #9


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

Група: Потребител
Коментари: 102
Регистриран: 23.08.09
Град: Силистра.
Потребител № 1490



Този код е страшен нищо немога да разбера . Опитах се, но не успях . wacko.gif . Да ти пратя ли проекта ми по ЛС, ако искаш ти да опиташ .


--------------------
Влезте в новият ми сайт : http://term1nat0r.netne.net/
Go to the top of the page
 
+Quote Post
яверт
коментар 10:39:44, 14-April-2010, Wednesday
Коментар #10


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

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



Целия този код го слагаш в криейт евента на нов обект, а този обект го слагаш в стаята.
Единственото, което трябва да разбереш:

var k,s,v,gr,zona,dosega;k=ширината на блока;s=броя на блокчетата надлъжно;v=броя на блокчетата на височина;
var skokx,skoky;skokx=максимално възможно разстояние, което може да се скочи по х;skoky=максимална височина на скока;
. . .
{
case 1:
instance_create(i*k,j*k,обект за земя);
if zemq[i,max(j-1,0)]==0
{
if zemq[max(i-1,0),j]==0 tile_add(бекграунд с тайовете,позицията на тайла за горен ляв ъгъл,k,k,i*k,j*k,10000);
else if zemq[min(i+1,s),j]==0 tile_add(бекграунд с тайовете,позицията на тайла за горен десен ъгък,k,k,i*k,j*k,10000);
else tile_add(бекграунд с тайовете,позицията на тайла за горна част,k,k,i*k,j*k,10000);
}
else
tile_add(бекграунд с тайовете,позицията на тайла за земя,k,k,i*k,j*k,10000);
break;
case 2:instance_create(i*k,j*k,обект за вода);if random(100)<1 instance_create(i*k,j*k,обект за риба); break;
case 3:instance_create(i*k,j*k,обект за асансьор);break;
case 4:instance_create(i*k,j*k,обект за шип);break;
}
Само трябва да заместиш написаното на кирилица.


--------------------
Цитат
Пешо:
4:53:46
Я недейти са карайти тука че да ни ва зашливйъ
Go to the top of the page
 
+Quote Post
term1nat0r
коментар 11:28:19, 14-April-2010, Wednesday
Коментар #11


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

Група: Потребител
Коментари: 102
Регистриран: 23.08.09
Град: Силистра.
Потребител № 1490



for(i=0;i<s;i+=1)for(j=0;j<v;j+=1)Obj_Platform[i,j]=0;//инициализация
На този код ми дава грешка на позиция 48 .


--------------------
Влезте в новият ми сайт : http://term1nat0r.netne.net/
Go to the top of the page
 
+Quote Post
яверт
коментар 17:10:37, 14-April-2010, Wednesday
Коментар #12


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

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



Цитат
Само трябва да заместиш написаното на кирилица.


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

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

 



Олекотена версия Час: 01:53:31, 19.05.24