Сообщение: 79
Зарегистрирован: 10.07.07
Откуда: Россия, Новосибирск
Репутация:
0
Отправлено: 28.08.08 18:17. Заголовок: Как перенести инвентарь вниз?
Вопрос Максима на оф. форуме.
Ответ: Инвентарь - это то же окно. Поэтому нужно открыть его (файл interface\inventory.def) в утилите WindowEdit и изменить его координаты X и Y соответствующим образом (увеличить Y).
Отправлено: 29.08.08 11:15. Заголовок: Не все так просто ко..
Не все так просто когда я перенес его в низ увелив Y тоо получилось вот что наводишь курсор в низ инвентаря нет а новодишь в вверх он появляется внизу вот в чем моя проблема надо было чтоб наводишь вниз он открвается внизу как в играх от unknown identity
Сообщение: 80
Зарегистрирован: 10.07.07
Откуда: Россия, Новосибирск
Репутация:
0
Отправлено: 29.08.08 11:26. Заголовок: Да на самом деле всё..
Да на самом деле всё просто, нужно только желание разобраться. Т.е. ты делаешь проект на основе стандартной демы. А там в скрипте scripts\game_loop.script есть код, отвечающий за появление инвентаря. Во-первых, это строка
Сообщение: 81
Зарегистрирован: 10.07.07
Откуда: Россия, Новосибирск
Репутация:
0
Отправлено: 31.08.08 16:05. Заголовок: Как говорится, все т..
Как говорится, все телепаты в отпуске Чтобы я или кто-то ещё мог дать более или менее вразумительный ответ, нужно привести сюда текст ошибки и код скрипта.
Отправлено: 31.08.08 17:59. Заголовок: Линия 52 Varieble ..
Линия 52 Varieble 'InvWindow' is refenced but not difened
#include "scripts\base.inc"
// this script runs in an endless loop and does all the user-interface work // that needs to be periodically updated // such as the floating items captions display and positioning // and the sliding inventory window handling
global WinCaption; global WinMenu;
// infinite loop while(true){
// save the active object for later var ActObj = Game.ActiveObject;
// handle the standard foating caption if(Game.Interactive && ActObj!=null) { if (Game.SelectedItem==null) { WinCaption.X = Game.MouseX; WinCaption.Y = Game.MouseY + 20; WinCaption.TextAlign = TAL_LEFT; WinCaption.Text = ActObj.Caption;
// keep the caption on screen WinCaption.SizeToFit(); if(WinCaption.X + WinCaption.Width > Game.ScreenWidth) WinCaption.X = Game.ScreenWidth - WinCaption.Width; if(WinCaption.Y + WinCaption.Height > Game.ScreenHeight) WinCaption.Y = Game.ScreenHeight - WinCaption.Height; } // handle the caption when you want to use an object with another else { var Item = Game.SelectedItem;
// display the inventory window if(Game.Interactive && Game.MouseY < 45 && !Game.ResponsesVisible && !WinMenu.Visible) Game.InventoryVisible = true; else if(Game.MouseY > 100 || Game.ResponsesVisible || !Game.Interactive) Game.InventoryVisible = false; InvWindow.X=-70; // go to sleep for 20 miliseconds to allow the engine to perform other tasks // it is important for the "endless" scripts to call the Sleep command, otherwise the game will get stuck Sleep(20); }
Отправлено: 01.09.08 17:30. Заголовок: Тогда скажи мне объя..
Тогда скажи мне объясняю ситуацию произошло событие у главного героя он че то узнал как сделать так чтобы после этого события можно было поговорить об этом с кем ни будь
Отправлено: 03.09.08 00:13. Заголовок: Что значит "опис..
Что значит "описать событие"? Ты хочешь узнать как и где обрабатывать возникающие события или как их инициировать? Просто на каждую из этих тем можно много говорить. Если тебе нужна конкретная реализация твоего конкретного случая, опиши ситуацию, так как она у тебя возникает в игре, например шел персонаж по коридору, увидел картину, в диалогах появилась возможность говорить о картинах.
Можешь поступить примерно так. Сначала создаешь глобальную переменную dialogi, которая будет содержать флаги состояния различных диалоговых реплик (присутствует/отсутствует в диалоге). Если делаешь игру на основе шаблонов, то это файл base.inc (имя файла может быть любым, главное чтобы он был виден из всех скриптов, которые будут с нашей переменной работать, т.е. он должен быть приаттачен командой #include)
пишем global dialogi;
Хотя WME при создании новой переменной обнуляет ее, но я считаю правилом хорошего тона изначально присвоить всем используемым переменным какие-то значения. В самом главном файле (game.script) где-то вначале пришем примерно следующее
dialogi.o_kartinah = false;
Это будет означать, что пока мы о картинах не разговариваем.
Далее создаем картину. Это может быть объект или регион в SceneEditor'е или объект загружаемый во время игры, главное, чтобы к нему пыл прикреплен какой-то скрипт. Допустим у нас есть отрендеренный фон, на котором изображена комната с картиной на стене. В SceneEditor'е обводим эту картину регионом и прикрепляем к нему скрипт, допустим kartina.script
В этом скрипте мы устанавливаем значение нашей переменной в true. Вот текст скрипта
#include "scripts\base.inc"
on "LeftClick" { dialogi.o_kartinah = true; }
Далее, в скрипте, в котором ты создаешь дерево диалогов пишем
if (dialogi.o_kartinah) Game.AddResponse(x, "Поговорим о картинах");
здесь x заменяешь номером реплики. Конструкцию if (dialogi.o_kartinah) можно заменить более наглядной if (dialogi.o_kartinah == true)
Эта реплика будет добавляться в дерево диалогов только после того, как будет установлен в true флаг, разрешающий это делать
В том месте, где ты определяешь, какую реплику выбрал игрок и что с ней делать (вероятней всего это будет конструкция switch) пишешь case x: код обработки события; break;
Pipec Приглашаю тебя в свою команду для создания квеста Remind All подробности можешь найти здесь в раздел Игры а еше можно посмотреть в контакте в групах в поиске напишишб Remind All
Все даты в формате GMT
3 час. Хитов сегодня: 2
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет