Форум » Общие вопросы по WME » Как перенести инвентарь вниз? » Ответить

Как перенести инвентарь вниз?

Dionysius: Вопрос Максима на оф. форуме. Ответ: Инвентарь - это то же окно. Поэтому нужно открыть его (файл interface\inventory.def) в утилите WindowEdit и изменить его координаты X и Y соответствующим образом (увеличить Y).

Ответов - 20

Maxim: Не все так просто когда я перенес его в низ увелив Y тоо получилось вот что наводишь курсор в низ инвентаря нет а новодишь в вверх он появляется внизу вот в чем моя проблема надо было чтоб наводишь вниз он открвается внизу как в играх от unknown identity

Dionysius: Да на самом деле всё просто, нужно только желание разобраться. Т.е. ты делаешь проект на основе стандартной демы. А там в скрипте scripts\game_loop.script есть код, отвечающий за появление инвентаря. Во-первых, это строка [pre]InvWindow.Y = -70;[/pre] Во-вторых, код, который начинается со строки [pre]// display the inventory window[/pre] Соответственно, нужно изменить координаты и там.

Maxim: спасибо за помошь


Maxim: тока он ваше исчез походу че за

Maxim: ошибка там в скрипте Dionysius помоги

Dionysius: Как говорится, все телепаты в отпуске Чтобы я или кто-то ещё мог дать более или менее вразумительный ответ, нужно привести сюда текст ошибки и код скрипта.

Maxim: Линия 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; WinCaption.X = 0; WinCaption.Y = 580; WinCaption.Width = Game.ScreenWidth; WinCaption.TextAlign = TAL_CENTER; WinCaption.Text = "Use " + Item.Caption + " with " + ActObj.Caption; } WinCaption.Visible = true; WinCaption.Focus(); } else WinCaption.Visible = false; // 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); }

Maxim: Блин все разобрался Dionysius лучше зарегся в Контакте надо еше кое че спросить я короче Макс Зубок Бэкер так и напиши

Dionysius: Персональных консультаций не даём Спрашивай на этом форуме. И потом, тут тебе ещё кто-нибудь может ответить.

Maxim: Так то мне ответили на вопрос иконочного диалога

Dionysius: Я с этим не сталкивался, поэтому дать ответ не могу.

Maxim: Тогда скажи мне объясняю ситуацию произошло событие у главного героя он че то узнал как сделать так чтобы после этого события можно было поговорить об этом с кем ни будь

Dionysius: В скрипте <имя персонажа>.script: [pre] on "<название события>" { actor.Talk("Случилось <название события>"); // и так далее } [/pre]

Dionysius: Хотя не обязательно в скрипте персонажа. Можно и в скрипте сцены scene_init.script

Maxim: Как описать событие ?

Pipec: Что значит "описать событие"? Ты хочешь узнать как и где обрабатывать возникающие события или как их инициировать? Просто на каждую из этих тем можно много говорить. Если тебе нужна конкретная реализация твоего конкретного случая, опиши ситуацию, так как она у тебя возникает в игре, например шел персонаж по коридору, увидел картину, в диалогах появилась возможность говорить о картинах.

Maxim: да имено так

Pipec: Можешь поступить примерно так. Сначала создаешь глобальную переменную 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; вместо х пишешь нужный номер

Maxim: Pipec Приглашаю тебя в свою команду для создания квеста Remind All подробности можешь найти здесь в раздел Игры а еше можно посмотреть в контакте в групах в поиске напишишб Remind All

Din: О мне тоже помогла тема.



полная версия страницы