С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Потом не интересно будет) Давайте оставим это как запасной вариант. Если уж не разберемся - тогда скину.
Ага. Пропал. Только теперь я видать что-то напутала в скрипте:
func UseObject_1008( idx )
{
if(ObjGet(idx,O_ID)==3013)
{
Message1(5,4, "ВЫ...");
MessagePop();
InventorySub(idx);
idx = ObjFind(1008);
ObjSet(idx,O_CLASS,0);
idx = ObjFind(2009);
ObjSet(idx,O_DISABLE,0);
}
else
{
DropObject(idx);
}
}
Не слышали говорящих попугаев? Тыкайте сюда!
рисуешь сундук-блок с draw=0 делаешь место применения предмета. пишешь скрипт, что бы при приминении сундука-предмета предмет пропадал, а сундук-блок делаешь draw=3
---------- Post added at 23:19 ---------- Previous post was at 23:16 ----------
idx = BrushFind(2009); // если это сундук-блок
BrushSet(idx,B_DRAW,3);
Уговорили) Скинула
---------- Post added at 23:25 ---------- Previous post was at 23:22 ----------
osa, сундук - 3013
---------- Post added at 23:26 ---------- Previous post was at 23:25 ----------
Да, еще такой вопросик: за что отвечает №23 (в данных предмета) colider?
Не слышали говорящих попугаев? Тыкайте сюда!
нужен сундук-предмет и сундук блокили на сундуке предмете сделать свойство hard collision
---------- Post added at 23:29 ---------- Previous post was at 23:27 ----------
и вот оно свойство colision![]()
Не слышали говорящих попугаев? Тыкайте сюда!
Daisy, посмотрел твой скрипт про мост.
Во-первых, ты применяешь функцию ObjFind и к статическим, и к динамическим кистям, хотя эта функция ТОЛЬКО для динамических кистей, а для статических свои функции и свои названия свойств, хотя и похожие. Мост у тебя статическиой кистью нарисован. Для статических эта функция называется BrushFind(id).
Попробуй исправить) Сегодня же в главе описано новой было на русском.
---------- Post added at 00:30 ---------- Previous post was at 00:03 ----------
Это свойство описано в главе про игрока. Пока только на английском)
HandlerCollision()
This is the collision handler that is called by the engine when the player collides with a dynamic brush that has the O_COLLIDER property set to call handler. It can detect if this is the first time when the collision happened, if the collision is still going on, or if it has just ended. By default, it also deals with hurt or kill class objects.
CollideObject_ID_MODE()
This latent callback is requested from the collision handler, when the player collides with a collider object (set to call handler), that has the same brush id, as specified in the callback's name (ID). If the MODE number, from the callback's name, is 0, then the callback is called when the player and the object exit from collision. If MODE is 2, the callback is called during the collsion, and if it's 1, the callback is called when the player enters in collsion with the object for the first time.HandlerCollision()
Этот хендлер обработки столкновений вызывается движком, когда игрок соприкасается с динамической кистью, у которой в свойстве O_COLLIDER установлено call handler. Он способен определять только ли началось соприкосновение, идет ли оно, или только что закончилось. Так же этот хендлер используется при обработки столкновений с объектами, у которых установлен класс hurt или kill.
CollideObject_ID_MODE()
Этот фоновой колбек вызывается из хендлера столкновений (collision handler), когда игрок соприкасается с объектом, id-номер которого прописан в поле ID имени функции. Если поле MODE в имени функции равно 0, то, колбек вызывается, когда игрок и объект прекращают соприкасаться. Если это поле равно 2, то колбек вызывается всегда, когда имеется в наличие соприкосновение. И, наконец, если поле MODE равно 1, то колбек вызывается в момент первого соприкосновения с объектом.
The second kind of dynamic collision, is with objects that have the collider property set to hard collision. This is usual to platforms, elevators, bridges or other similar things that must move.
The collision is not too precise, but it will try to rise the player on top of these objects. No handlers are called, it's all part of the player's movement system.Второй тип реакции на соприкосновение с объектом - это соприкосновение с твердым объектом. Для этого у объекта должно быть установлено свойство collider = hard collision (твердое соприкосновение). Обычно это используется в платформах, лифтах, мостах и тому подобных перемещающихся объектах.
Данный тип соприкосновения не очень точный, но но зато позволяет автоматически поднимать игрока на вершину объекта. Никаих хендлеров при этом не вызывается, эта функциональность заложена в движок.
---------- Post added at 00:32 ---------- Previous post was at 00:30 ----------
И еще, ты легкомысленно относишься к маске спрайтов. Нужно ее использовать, чтобы было красиво)
Заменила
idx = ObjFind(2009);
ObjSet(idx,O_DISABLE,0)
на
idx = BrushFind(2009);
BrushSet(idx,B_DRAW,3);
Мост появляется, но он воздушный(
Я только вчера прочитала про активные объекты. Немножко не понятно вот это: что такое ObjGet( idx, property ) и ObjSet( idx, property, value ). Там написано, а я не понимаю. Врое не блондинка
Я еще ничего больше не рисовала после того, как усышала про маски. Только у меня все-равно их нет.
Не слышали говорящих попугаев? Тыкайте сюда!
Это потому, что:
Опять же все это написано в той главе, надо внимательно читать. И в примерах показано.После изменения свойств одной или нескольких статических кистей, вносящих изменения в карту материалов, необходимо обязательно вызвать функцию обновления карты материалов. Если этого не сделать, карта материалов данного экрана останется прежней, пока вы не войдете заново в данную комнату.
Поэтому просто добавь после изменений строчку
GameCommand(CMD_REFRESH);
и все будет в шоколаде.
---------- Post added at 10:17 ---------- Previous post was at 10:11 ----------
Эти две функции равносильны следующему:
a = ObjGet(idx, property) ->
a = значение параметра property объекта idx.
т.е.
a = ObjGet(idx,O_FLIP); ->
а = свойство O_FLIP обьекта с индексом idx
а индекс получаем функцией ObjFind()
таким образом:
idx = ObjFind(1000);
a = ObjGet(idx, O_FLIP); ->
a = свойство O_FLIP обьекта с ID = 1000
А функция ObjSet делает все наоборот, присваивает свойству какое-то значение.
idx = ObjFind(1000);
ObjSet(idx, O_FLIP, 1); ->
(свойство O_FLIP обьекта с ID = 1000) = 1
---------- Post added at 10:19 ---------- Previous post was at 10:17 ----------
Попроси набор графики с маской у Yuriy. У него они самые лучшие)
---------- Post added at 10:46 ---------- Previous post was at 10:19 ----------
Несколько замечаний для начинающих DizzyAGE писателей:
- Начинайте делать игру на большой карте, заведомо шире, чем предполагаемая игра. Размер карты не влияет на размер игры. На размер игры влияет количество нарисованной графики на этой карте. И рисовать игру начинайте из центра карты, чтобы не столкнуться с нехваткой поля деятельности.
- Активно используйте слои 0-7. Я рекомендую распределять слои так:
Слой 0 - слой неба. На этом слое должно отображаться небо. Оно может быть не задействовано в игре и быть черным. Может быть одноцветным, голубым. Может быть одноцветным, меняющимся в зависимости от времени дня. Может быть многоцветным, меняющимся, как, например, в игре Fantastic Dizzy на Amig'e.
Слой 1 - слой дальних обьектов на фоне неба. Это может быть луна, солнце, какие-то летящие по небу объекты, например, кометы, звезды. Так же это может быть пейзаж заднего фона, например, лес вдалеке, город и т.д.
Слой 2 - слой персонажей дальнего плана. Летающие ЗА деревьями птицы, плавающие ЗА водорослями и кораблями рыбы и т.д.
Слой 3 - слой ладшафта заднего плана. Это лес, земля, обстановка домов. Словом, практически весь основной ландшафт.
Слой 4 - слой персонажей ближнего плана. Персонажи игры, а так же движущиеся на переднем плане птички, рыбки и т.д.
Так же на этом плане предпочтительно сделать игрока (его слой задается в файле gamedef.gs в свойстве PLAYER_LAYER). Так же это может быть слоем предметов, которые берет и кладет игрок.
Слой 5 - слой подводного пейзажа ближнего плана. Здесь находится все, что загораживает игрока, но должно находиться под водой. Например мачты, водоросли и т.д.
Слой 6 - слой воды. Вода это не только спрайт анимированного контура воды, но еще и полупрозрачный спрайт толщи воды, который накладываясь на весь подводный пейзаж, делает его подводного цвета.
Слой 7 - слой пейзажа ближнего плана. Это все, что загораживает игрока. Это могут быть столбы, деревья, мебель и т.д. Так же в этом слое можно размещать рельеф подводного мира, который не загораживается слоем воды. В частности это дно и бока водоемов.
Так же это слой триггеров, которые желательно делать полупрозрачными фиолетовыми квадратиками. Можно варировать цвет триггеров, в зависимости от их функционала.
- Старайтесь использовать графику только с маской. Это и красиво, и поможет избежать проблем, когда вы вдруг захотите в вашей игре сделать другой фон или пейзаж заднего плана. Чтобы сразу представить, как будет выглядеть ваша графика на фоне чего-либо, начинайте рисовать карту на фоне голубого неба. Сделайте план 0 огромным голубым небом, и уже поверх него рисуйте спрайтами с маской. Это небо всегда можно убрать или запретить к рисованию поставив ему draw = 0.
- Рисуйте ландшафт так, чтобы в перспективе он мог бы свободно скроллироваться. Возможно, вы захотите потом или сразу сделать игру именно со скроллирующимся ландшафтом. Так же отдельно для красоты могут скроллироваться фоны заднего плана.
- Избегайте использования в игре монотонного земляного ландшафта наподобие игр Dizzy 5. Игра при этом выглядит просто унылым лабиринтом.
- По возможности рисуйте свои спрайты предметов и игроков. Повторение в играх одних и тех же персонажей и предметов делает игры мене интересными.
Последний раз редактировалось Titus; 03.10.2012 в 10:57.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)