Генерация карты
|
| maximus1986 | Дата: Четверг, 06.05.2010, 14:59 | Сообщение # 1 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| Здравствуйте. Подскажите плиз, как можно сделать так, чтобы при каждой загрузке игры создавались каждый раз разные комнаты (случайным образом)? Это надо со скриптами работать?
| |
|
| URGI | Дата: Четверг, 06.05.2010, 16:04 | Сообщение # 2 |
Ведущии СевКав ТВ.
Группа: Модераторы
Сообщений: 500
Репутация: 28
Статус: Offline
| попробуй воспользоваться командой choose(room1,room2,room3) итд
Если мутишь, мути тихо.
| |
|
| maximus1986 | Дата: Четверг, 06.05.2010, 16:38 | Сообщение # 3 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| Это ведь выбор среди уже готовых комнат? Наверно я немного не так выразился. У меня есть определенный алгоритм для создания комнаты (случайным образом). Меня вот интересует, есть ли функции, рисующие стены, например? Т.е. чтобы не я сам перетаскивал эти блоки в комнату еще при создании игры, а чтобы согласно тому алгоритму эти стены рисовались сами собой при запуске игры:)
| |
|
| URGI | Дата: Четверг, 06.05.2010, 17:56 | Сообщение # 4 |
Ведущии СевКав ТВ.
Группа: Модераторы
Сообщений: 500
Репутация: 28
Статус: Offline
| Можно сделать, но они будут рисоваться полностью рандомно.
Если мутишь, мути тихо.
| |
|
| maximus1986 | Дата: Четверг, 06.05.2010, 19:21 | Сообщение # 5 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| draw_sprite(sprite,subimg,x,y) - эта функция подойдет? И еще вопрос, GM видимо работает только с 1- и 2-мерными массивами. Есть ли какие-нибудь дополнения, которые позволяют работать с массивами бОльших размерностей?
| |
|
| Фил | Дата: Четверг, 06.05.2010, 21:48 | Сообщение # 6 |
Группа: Модераторы
Сообщений: 55
Репутация: 4
Статус: Offline
| Quote (maximus1986) Есть ли какие-нибудь дополнения, которые позволяют работать с массивами бОльших размерностей? зачем дополнения? ручками все, ручками) Quote (maximus1986) draw_sprite(sprite,subimg,x,y) это ты просто нарисуешь картинки стен и все. Нужно либо через массив либо через объекты. Quote (URGI) Можно сделать, но они будут рисоваться полностью рандомно. не факт. Можно написать алгоритм который генерит хорошие лабиринты.
| |
|
| URGI | Дата: Четверг, 06.05.2010, 23:50 | Сообщение # 7 |
Ведущии СевКав ТВ.
Группа: Модераторы
Сообщений: 500
Репутация: 28
Статус: Offline
| Полностью рандомно нужно писать так draw_sprite(sprite,subimg,random,random) -что-то вроде этого, я просто в 2d не силен.
Если мутишь, мути тихо.
| |
|
| fedenkovadik | Дата: Пятница, 07.05.2010, 00:36 | Сообщение # 8 |
Группа: Друзья
Сообщений: 236
Репутация: 22
Статус: Offline
| Ну раз на то пошло, то писать надо draw_sprite(sprite,subimg,random(room_width),random(room_height)) но или как то так ...
| |
|
| maximus1986 | Дата: Пятница, 07.05.2010, 01:12 | Сообщение # 9 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| Quote (Фил) не факт. Можно написать алгоритм который генерит хорошие лабиринты. Вот-вот. Я когда-то на Бэйсике написал прогу, которая генерит лабиринты. Хочу теперь этот алгоритм переделать на GM. Только там используются как раз 3- и 4- размерные матрицы. Как их можно реализовать в GM? Или чем их заменить? Добавлено (07.05.2010, 01:12) --------------------------------------------- PS: как тут правильно цитаты вставлять?:)
| |
|
| fedenkovadik | Дата: Пятница, 07.05.2010, 09:11 | Сообщение # 10 |
Группа: Друзья
Сообщений: 236
Репутация: 22
Статус: Offline
| жми на кнопчку, "цитата"
| |
|
| maximus1986 | Дата: Пятница, 07.05.2010, 12:58 | Сообщение # 11 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| Quote (fedenkovadik) жми на кнопчку, "цитата" Я вроде так и делаю: выделяю текст, нажимаю "цитата", оно всё вставляется между quote, но вот результат. С браузером что ли проблемы? Добавлено (07.05.2010, 12:58) --------------------------------------------- Да, и еще. Вот, например, в Visual Basic можно было одну функцию вызывать из другой по имени. Можно ли что-нибудь подобное сделать в GM? Незнаю у меня всё норм ) цитаты исправил...
| |
|
| fedenkovadik | Дата: Пятница, 07.05.2010, 15:09 | Сообщение # 12 |
Группа: Друзья
Сообщений: 236
Репутация: 22
Статус: Offline
| Quote (maximus1986) жми на кнопчку, "цитата" Ну и что трудного?? Это наверное у тебя что то, ты на опере, попробуй через мазилу зайти
| |
|
| maximus1986 | Дата: Пятница, 07.05.2010, 15:51 | Сообщение # 13 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| Quote (fedenkovadik) Ну и что трудного?? Это наверное у тебя что то, ты на опере, попробуй через мазилу зайти Добавлено (07.05.2010, 15:51) --------------------------------------------- Ну вот опять. Это уже через мозилу. Но ладно. Хрен с ними с цитатами. У меня еще вопрос до кучи:) Есть где-то пример игры на GM, где реализован 3D шутер от первого лица. Но там поворот камеры осуществляется с помощью стрелок. А можно ли поворот камеры осуществить мышью?
| |
|
| fedenkovadik | Дата: Суббота, 08.05.2010, 00:28 | Сообщение # 14 |
Группа: Друзья
Сообщений: 236
Репутация: 22
Статус: Offline
| конечно. http://www.box.net/shared/gdnu1qy6o8 вот хороший шутер! Исходник, на нем научился делать 3Д игры ... или вот тоже крутой пример скачать http://www.yoyogames.com/games/show/42763# или http://host-a.net/Jesper/Final_Editable.zip
| |
|
| maximus1986 | Дата: Суббота, 08.05.2010, 12:00 | Сообщение # 15 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| О, спасибо большое за ссылки :) Только вот по первой ссылке игра из GM на запускается, вот что пишет: COMPILATION ERROR in Script: load_resources Error in code at line 12: ds_list_add(global.bac,background_add("Backgrounds/"+cfile,true,false,true)); ^ at position 79: Wrong number of arguments to function or script. Подскажите плиз, как исправить. У меня GM8. PS: да и спасибо, что цитаты подправили. Я уж боюсь их вставлять:)
| |
|
| fedenkovadik | Дата: Суббота, 08.05.2010, 15:05 | Сообщение # 16 |
Группа: Друзья
Сообщений: 236
Репутация: 22
Статус: Offline
| не, нужен ГМ7 .. но ща, может чото исправлю ... Добавлено (08.05.2010, 15:05) --------------------------------------------- исправил, открой скрипты папка misc октрой load_resources удали оттуда весь текст, и впиши Code { var cfile,i,model_var; loaded = false; // wether the external files are loaded screen_redraw(); // redraws the screen so it says loading global.bac = ds_list_create(); // ds_list for loaded backgrounds global.bac_name = ds_list_create(); // ds_list for names of loaded backgrounds cfile = file_find_first("Backgrounds/*.*",0); while (cfile != "") { if (string_count("transp",cfile)) { ds_list_add(global.bac,background_add("Backgrounds/"+cfile,true,0)); } else { ds_list_add(global.bac,background_add("Backgrounds/"+cfile,false,0)); } ds_list_add(global.bac_name,cfile); cfile = file_find_next(); } file_find_close(); global.snd = ds_list_create(); // ds_list for loaded sounds global.snd_name = ds_list_create(); // ds_list for names of loaded sounds cfile = file_find_first("Sounds/*.*",0); while (cfile != "") { ds_list_add(global.snd,sound_add("Sounds/"+cfile,0,true)); ds_list_add(global.snd_name,cfile); cfile = file_find_next(); } file_find_close(); global.model_name = ds_list_create(); cfile = file_find_first("Models/*.d3d*",0); while (cfile != "") { model_var = string_replace(cfile,".d3d",""); variable_global_set(model_var,d3d_model_create()); // creates model named same as file ds_list_add(global.model_name,model_var); d3d_model_load(variable_global_get(model_var),"Models/"+cfile); // loads model file to previously created model cfile = file_find_next(); } file_close(); loaded = true; }
| |
|
| maximus1986 | Дата: Суббота, 08.05.2010, 18:16 | Сообщение # 17 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| Спасибо:) Все работает. Буду теперь разбираться что к чему)
| |
|
| Фил | Дата: Воскресенье, 09.05.2010, 19:53 | Сообщение # 18 |
Группа: Модераторы
Сообщений: 55
Репутация: 4
Статус: Offline
| про генерацию карты: вот мой пример генерирования карты (все генерится от балды, никакого алгоритма.)
| |
|
| maximus1986 | Дата: Воскресенье, 09.05.2010, 22:00 | Сообщение # 19 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| Спасибо. Код с коментами даже:) И все-таки, как быть с 3- и более размерными матрицами? Если изгаляться над 1- и 2-мерными, то это слишком большой код получается:(
| |
|
| Фил | Дата: Понедельник, 10.05.2010, 12:11 | Сообщение # 20 |
Группа: Модераторы
Сообщений: 55
Репутация: 4
Статус: Offline
| maximus1986, надо найти в интернете алгоритм создания этих массивов, и попробовать перенести на гм Добавлено (10.05.2010, 12:11) --------------------------------------------- maximus1986, сейчас попробовал 3х мерный массив замутить) Code Error in code at line 7: mass[_x,_y,_z]=0; ^ at position 28: Only 1- and 2-dimensional arrays are supported. мол, поддерживаются только одномерные и двух мерные массивы) можно конечно сделать два двухмерных массива и объединить их в трехмерный, но это извращение)
| |
|
| maximus1986 | Дата: Понедельник, 10.05.2010, 22:27 | Сообщение # 21 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| Плохо( Скажите плиз, а индексы в массивах изменять можно? Например, массив q[]={2,4,12,6}, т.е. q[0]=2, q[1]=4, q[2]=12, q[3]=6. А можно сделать, например, так: q[3]=2, q[5]=4, q[8]=12, q[13]=6 ?
| |
|
| FIXMAX | Дата: Понедельник, 10.05.2010, 23:44 | Сообщение # 22 |
Группа: Проверенные
Сообщений: 45
Репутация: 0
Статус: Offline
| maximus1986, можешь попробовать записать массив 2*2*3 так: 1-2 3-4 ---//условный разделитель 5-6 7-8 ---//условный разделитель 9-10 11-12 Можно написать функцию перевода из 2-х мерного массива в данные псевдо 3-х мерного. Из написанного выше, массив m[1,1,2]=m[1,3]=5 m[2,1,3]=m[2,5]=10 Надеюсь смысл понятен. ПС. Это один из вариантов, на самом деле все массивы одномерны (написаны в одну строку)
| |
|
| maximus1986 | Дата: Вторник, 11.05.2010, 09:26 | Сообщение # 23 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| FIXMAX, хорошая идея) А в условном разделителе можно, например, в качестве первого элемента ставить номер блока, чтоб удобней работать с массивом было) Спасибо, попробую так.
| |
|
| FIXMAX | Дата: Вторник, 11.05.2010, 12:52 | Сообщение # 24 |
Группа: Проверенные
Сообщений: 45
Репутация: 0
Статус: Offline
| maximus1986, я же написал что это один из вариантов. Можно было бы использовать и одномерные массивы, но ограничение в 32000 как-то не очень воодушевляет. Когда то создавал мобов на карте, и заносил их в массив, и нащелся один игрок, который убил их 32000 и вылетела ошибка=) так что тут нужно аккуратно.
| |
|
| maximus1986 | Дата: Суббота, 15.05.2010, 16:17 | Сообщение # 25 |
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
| У меня еще вопрос возник: как сделать так, чтобы объекты комнаты рисовались программно? Про draw_sprite(sprite,subimg,x,y) писалось выше: Quote (Фил) это ты просто нарисуешь картинки стен и все. Нужно либо через массив либо через объекты. Но как это сделать через массив (или через объекты)?
| |
|
|
|
Школа Ultimate3D 2009-2010 год |
| |
|