Разработка и ромхакинг > Разработка игр
Game Maker обсуждение и хелп
<< < (9/22) > >>
ALEX_230_VOLT:
подскажите пожалуста как делать эффекты приближения/отдаления отдельных мест комнаты и спрайтов? Иными словами как в играх sega 32x (например Knukles Chatix) и на SNES с её Mode 7
Kostey D.:
У спрайтов легко - image_xscale и image_yscale, если равно 1 то ориганальный размер, 2 - в два раза больше, 0.5 - в два раза меньше. Для прикольных эффектов, можешь потихонбку прибавлять/убавлять значение, скажем на 0.01.

С бэкграундом тоже есть подобные функции.

Если хочешь увеличить уменьшить кусок спрайта или бэкграунда, самый верный вариант использовать функцию
draw_sprite_general(sprite,subimg,left,top,width,height,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha)
draw_background_general(back,left,top,width,height,x,y,xscale,yscale,rot,c1,c2,c3,c4,alpha)
для бэкграундов иногда полезно использовать функции тайлов.
ALEX_230_VOLT:
Kostey D., спасибо, со српайтами проканало  :wow:
а вот с задниками чую сложнее будет. щас буду пытатся

Добавлено позже:
не, что то про бэкграунды не понял. может пример какой покажешь или распишешь что значат параметры? особенно непонятны с1-с4
Segaman:
c1-c4 - это кажется цвета с таким порядком:
c1  c2
c4  c3
Kostey D.:
Извиняюсь за опоздание, просто вчера у меня инет вырубило, как раз когда я писал экзамплы.


--- Цитата: ALEX_230_VOLT ---особенно непонятны с1-с4
--- Конец цитаты ---
Это окраска градиентом с каждой стороны. Многие функции имеют параметр color, просто здесь их целых четыре. Ставь c_white если не хочешь чтобы твой бэкграунд перекрашивался.

Сделал два быстрых экзампла для седьмой версии, надеюсь поможет. Файл прикреплён к сообщению.
Segaman:
Кто знает, как регить новые форматы файлов и как получать командную строку запуска программы?
и ещё что ваапще можно сделать при помощи реестра?
Kostey D.:
GM8.0 вышел. Я уже успел зарегить Про версию, т.к. купил седьмую в июле 2009. Надо будет разобраться что такое этот триггер эвент. Да я и так давно отстал от прогресса, всё это время шестую юзал, жаль что без нета не активируется кажись.
MASTERMAX:
Нужна помощь или совет, по такой программе:
хочу сделать так - чтоб при вводе строки на английском заменялись буквы соответственно этой кодировке:

--- Код: ---A - `
B - a
C - b
D - c
E - d
F - e
G - f
H - g
I - h
J - i
K - j
L - k
M - l
N - m
O - n
P - o
Q - p
R - q
S - r
T - s
U - t
V - u
W - v
X - w
Y - x
Z - y
--- Конец кода ---

есть предложения как такое осуществить?
r57shell:
Не game maker но на С++ Фдрух поможет

--- Код: ---if(c=='A')
   c='`'
else
   c=c-'B'+'a';

--- Конец кода ---
cдесь c - код символа, 'A' - код символа A...

забейте вы на game maker
MASTERMAX:
r57shell, на С++ я может и напишу, да вот только пока кроме консольных прожек ничего не напишу :'( а хочется "visual"
r57shell:

--- Цитата: MASTERMAX от 07 Февраль 2010, 18:23:59 ---r57shell, на С++ я может и напишу, да вот только пока кроме консольных прожек ничего не напишу :'( а хочется "visual"

--- Конец цитаты ---
Берёшь создаёшь проект Win32 Application->Hello World и его правишь.
Да! именно так всё просто. )

А если хочешь OpenGL то берёшь пример минимальной OpenGL программы копируешь весь исходник (он один). Создаешь Win32 Application->empty и в него добавляешь *.cpp (где * - любое больше всего понравившееся имя, обычно у меня это main.cpp) и вставляешь туда, компилируешь и готово.

А вот с DirectХ там чуть посложнее но суть такая же.
MASTERMAX:
r57shell, когда знаеш как это делать все просто :) постараюсь написать на С++. Но если кто подскажет с ГМ то тоже не откажусь от помощи;)
Kostey D.:
кинь этот код в креэйт.


--- Код: ---var str1,str2,count,cr;
str1=""
str2=""
count=0

str1=get_string("enter string using UPPER CASE","")
if str1=""
exit

count=string_length(str1)
for (c=1;c<count+1;c+=1)
{
ch=ord(string_char_at(str1,c))
ch=ch+31
str2=str2+chr(ch)
}

get_string("your new string",str2)

--- Конец кода ---
MASTERMAX:
Kostey D., спасиба. А можешь объяснить как ты это сделал?
Kostey D.:

--- Цитата: MASTERMAX ---Kostey D., спасиба. А можешь объяснить как ты это сделал?
--- Конец цитаты ---

var str1,str2,count,cr;
//создаём временные переменные, которые после выполнения кода исчезают. Здесь я сделал опечатку, должно быть ch, а не cr, но это никак не влияет на алгоритм. Единственный эффект этой опечатки заключается в том, что переменная ch останется в памяти вместе с объектом.


str1=""
str2=""
count=0
//задаём вид переменных. Только для наглядности, сам я обычно этого не делаю. str1 и str2 - стринги, count - флоатинг намбер.



str1=get_string("enter string using UPPER CASE","")
//получаем исходный стринг. Пустоту в кавычках можно заменить на что-нибудь дефолтное, например "PLAYER".


if str1=""
exit
//если стринг пуст, прекращаем выполнение кода.


count=string_length(str1)
//сколько букв в стринге.


for (c=1;c<count+1;c+=1)
//начало лупа. с - счётчик/номер буквы. c<count+1 - чтобы последняя буква считалась.


ch=ord(string_char_at(str1,c))
//функция, аргументом которой является другая функция. string_char_at(str1,c) получает букву из исходного стринга, ord изменяет букву в число аски кода, поэтому переменная ch - число.


ch=ch+31
//поскольку все буквы твоей кодировки смещенны на 31 символ, мы смещаем переменную ch на 31.


str2=str2+chr(ch)
//str2 - твой новый перекодированный стринг. это выражение добавляет букву в конец стринга. Функция chr() превращает число из аски кода в букву.


get_string("your new string",str2)
//показать пользователю перекодированный текст с возможностью скопировать его.



На самом деле этот код очень прост и создаётся с нуля за минуту.
ALEX_230_VOLT:
я тут глядя на все эти sega cd интерактивные фильмы подумал "а чем я хуже?" Короче пока вот хочу реализовать систему типа как в Ground Zero Taxes, т.к. что есть статичный фон и переодически вместо него начинает проигрыватся видео с разными действиями (например выбегающим человеком). Так вот как лучше это осуществить? Попробовал делать в виде анимации, но сохраняется анимация из 60 кадров разрешения 640 на 480 (хоть и в jpg) жутко долго, ну и естественно нагрузка на комп большая. Короче как это лучше огранизовать? Может есть возможность простое видео проигрывать, но чтобы не на всё окно программы, а в заданной области (т.к. надо же ещё hud сделать).

Короче: как это организовать самым рациональным способом?

Добавлено позже:
неужели это так сложно оргнанизовать?  o_0 почему sega смогла 20 лет тому назад, а сейчас это вызывает проблемы?
Segaman:
Я эту проблему решил с помощью длл-ки, проигрывающей видео-ролики прямо в окне игрули. Немогу щас сказать, как называется, так как не за компом.
Глянь сюда в раздел с длл-ками
ALEX_230_VOLT:
я уже придумал другой способ - делать всё это в виде спрайтов, но только не всего экрана, а только движущейся части. То есть если там анимация как человек выходит из двери то я разделя это всё по кадрам, обрежу весь фон комнаты и оставлю только активную часть. Заодно решу проблему с тем как определять попал игрок или нет :)

Добавлено позже:
ах да, и подгружать эти спрайты из папки с игрой, а не из самой игры
Kostey D.:

--- Цитата: ALEX_230_VOLT ---ах да, и подгружать эти спрайты из папки с игрой, а не из самой игры
--- Конец цитаты ---
Пользуй команды sprite_replace() и незабывай удалять лишние спрайты из памяти, командой sprite_delete() (функциии возможно по-другому называются, смотри в хелпе).

Добавлено позже:
Лучше, конечно, через dll. А с видео и ГМ не так много функций (одна всего кажись) и я уверен, что более 99.99% ГМ игр видео не используют ибо незачем.
Timmy!:
Помогите плиз с сочетанием клавиш!
Можно-ли в Game Maker задать действие определенной последовательностью клавиш?
Мне нужно сделать супер приемы в игре и коды. Спасибо.  :)

Добавлено позже:
Если что, я использую Game Maker 8

...и еще вот вопрос, я хотел сделать ремейк Bare knuckle 3,
поставил таблицу бойцов под нумерацию (0,1,2,3...)
Связал их с "управляемыми бойцами" командой if, то есть,
если я выбираю иконку 0, должен играть за одного бойца, если выбираю 2, за другого,
но почему-то при переходе на другую room, все вариации исчезают и вылетает ошибка(
Что-нибудь можно с этим сделать? Или по-другому слепить таблицу игроков?  :? Спасибо еще раз, друзья!
Навигация
Главная страница сообщений
Следующая страница
Предыдущая страница

Перейти к полной версии