Форум » » Инвентарь » Ответить

Инвентарь

Хломидоманад: Можно один глупый вопрос? Есть ли способ в URQ_DOS отключить вылезание инвентаря и списка использования на клавиши I и U и назначить переход на эти процедуры вручную программируемым кнопкам? Типа, чтобы btn use, Использовать вызывал ту же реакцию, какую вызвало бы нажатие на U?

Ответов - 30, стр: 1 2 All

Евгений: Такого способа пока нет. К сожалению :) Тоже хотел убрать их нафиг и сделать собственную локу инвентаря.

Хломидоманад: Жалко

Дженни: Спросите у Goraph'a или Korwin'a как работать с инвентарем, по моему они там доки и что-то такое разрабатывали. Т.к. последний сейчас в командировке, могу предположить, что ответит после новогодних праздников. А зачем, собственно, отключать I и U? Мешают текстовому вводу, что-ли?


Хломидоманад: Дженни Ну блин, пытаюсь сделать игру, предназначенную в т.ч. и для публики, с URQ не знакомой. Действия фактически унифицированы (т.е. для каждой локации действует единственный набор "идти-думать-атаковать-взять-осмотреть-использовать", типа старых хентайных квестов). Странно как-то, если все действия набора выбираются из списка вариантов, а "использовать" - вылетает на U. И потом, есть места, где инвентарь и использование просто не в тему (меню, например, или битва).

AlSid: Хломидоманад Тогда уж точно надо обращаться к Горафу. У него есть квест, сделанный по такой же системе (единственный набор действий).

Goraph: Так, Хламидомонад, объясни толком чего тебе надо? Если отключить U и I, то это можно в досурке, там можно перехватить нажатие клаиши, но надо полностью переписывать весь интерфейс (батоны)... вобщем лучше не надо так делать. :) Если надо просто инвентарь свой... ну добавь в common btn inventory, Инвентарь Ну условиями по флагам проверять выводить его или нет. Это правда в досурке отстойно будет выглядеть, потому что все время первый выбор активен. Поэтому лучше так не делать :) Лучше в конце локи делать не end, а goto end_lok, где твой батон на инвентарь. А когда у тебя меню или битва обычный end Это имхо лучший вариант на сегодняшний день. Вообще на сегодняшний день я обычно не делаю в урке end, а делаю #%e$ где e это то, что мне может захотецца, а для начала instr e=end :) А еще можешь посмотреть как я делал в капитане Блуде, если у тебя конечно крепкие нервы. :))

Хломидоманад: Goraph Спасибо. C end_lock, наверное, и сделаю. Но ведь кнопки юза и инвентаря все равно будут действовать(?). Можно для идиота объяснить, как перехватить нажатие I и U?

Goraph: Перехватить нормально нельзя, тока через... Вика. :) Можно банально, с помощью readkey, а дальше по коду полученой кнопы ты выполняешь действия. Т.е. ты больше не пользуешся оператором btn, а создаешь массив батонов, перерисовываешь его, обрабатываешь нажатие клавиш вверх/вниз и рисуешь свой интерфейс, а по ентеру выполняешь гото. Так кстати и xbtn можно реализовать. :)) Это достаточно просто на самом деле реализовать, хотя и звучит дико. Могу набростать пример такого кода, если непонятно и есть потребность. :) Еще такой вариант могу предложить - я пользуюсь для русификации программой keyrus под чистым досом, и успел заметить что после этого досурка более не реагирует ни на "b", ни на "r", ни на "i" с "u". :) Но лучше оставь как есть ага. :)

ifn00b: Гор, а твой вариант с кейрусом под виндами выживет? ;) или опять "эксклюзивная" игра получится? :)

Хломидоманад: Goraph У меня под окнами вариант с кейрус не работал. Если не очень трудно, набросай, плз, как можно использовать readkey. Приеду через неделю - буду разбираться. P.S. Тогда заодно и кнопки можно будет горизонтально расположить:) P.P.S. Спасибо.

Дженни: Хломидомонад, та игра которую ты тогда делал, закончена или нет?

Хломидоманад: Дженни Ты про "300,000 евро"? Или игру с альтернативным управлением (для которой я и спрашивал то, что спрашивал)? "Евро" (2 и 1/3 части) пока недоступны для дописания, потому как лежат на винчестере, который мне некуда подключать... если кому-нибудь будет интересно, когда разживусь шлейфом, могу закончить. Альтернативных интерфейса (переписанных кнопок) для досурки я написал уже два. Первый тоже недоступен, потому что на том винте - но он окончательно заброшен, тк. мне не нравится. Второй пока даже не закончен (то есть игру по нему писать проблематично) и выглядеть будет примерно так.

GreyBear: Всем привет. Я новичок, и у меня есть одна проблемка. Хотел сделать следующие - На одной из первых локаций в инвентарь добавляется устройство на котором находятся все ваши данные типа деньги, здоровье и тому подобное. Хотел сделать так, что бы можно было это устройство использовать из инвентаря, при этом экран бы очищался ( ну cls в помощь, это ясно) и были кнопка возврата в ту локацию, в который был использован предмет из инвентаря. Фух,,,как то так. Может кто нибудь помочь? Был бы очень признателен. Если это важно, то пользуюсь URQEdit и FireURQ.

GreyBear: Я надеюсь этот форум еще жив,,, Потому что найти еще какие либо полезные ресурсы не удалось. В данный момент этот отрезок у меня выглядит так: :Use_inv_Tik cls pln "Состояние здоровья - #Здоровье$" pln "Биощит - #Биощит$" pln "Сытость - #Сытость$" if Деньги=0 then pln "Денег на счете нет" if Деньги>0 then pln "У вас на счете #Деньги$ кридиток" end

Saint: Хворум жив. Жди. Спецы уже на подходе.

GreyBear: Спасибо, жду)

Saint: Для начала посмотри документацию по FireURQ - там есть информация. http://ifwiki.ru/%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%94%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F_FireURQ А потом уже и с конкретными примерами подскажут.

Серый Волк: GreyBear, а вопрос-то в чём? :)

GreyBear: Спасибо за документацию, сейчас гляну. Вопрос в том, как реализовать возврат в локацию, где был использован предмет.

Saint: GreyBear пишет: и были кнопка возврата в ту локацию, в который был использован предмет из инвентаря Ну вроде как работа с инвентарем происходит в той локации в которой находится игрок...

frodo: [pre2]:Use_inv_Tik cls pln "Состояние здоровья - #Здоровье$" pln "Биощит - #Биощит$" pln "Сытость - #Сытость$" if Деньги=0 then pln "Денег на счете нет" if Деньги>0 then pln "У вас на счете #Деньги$ кридиток" btn #%current_loc$, Дальше. end [/pre2] Только осторожно! current_loc изменяется только если был переход по кнопкам (т.е. goto на нее не влияет), также если локация не статическая (меняются значения переменных, текст формируется динамически) - возможны побочные эффекты. Особенно если локация задумывалась для единственного посещения. Например: [pre2] :моя_локация inv+ Предмет pln Вы нашли предмет. btn, дальше, Дальше. end[/pre2] Каждый раз, вызывая Tik, мы будем увеличивать количество предметов - а это, скорее всего, не то, что ожидалось. Вариантов решения несколько: 1. Если предмет существует в единственном экземпляре, пишем всегда так: [pre2]if not inv_Предмет then inv+ Предмет[/pre2] 2. Если мы никогда не перейдем на локацию по goto, а только по btn: [pre2]:моя_локация if not count_моя_локация then inv+ Предмет[/pre2] 3. Универсальный вариант - собственный флаг для локации: [pre2]:моя_локация if not моя_локация_посетил then inv+ Предмет & моя_локация_посетил=1[/pre2] Или, пользуясь бритвой Оккама, если нам не нужен счетчик "count_<...>": [pre2]if not count_моя_локация then inv+ Предмет & count_моя_локация=1[/pre2]

frodo: UPD: Возможно, хорошим решением будет всего лишь заменить cls на clst. Тогда текст локации сотрется, но кнопки останутся на месте.

GreyBear: И сразу еще один вопрос. Допустим есть текст - "Он находится в левом углу комнаты" Так сделать часть текста "в левом углу", допустим, желтого цвета, а начало и конец текста другого? Что бы ,таким образом, выделить для игрока важную информацию.

GreyBear: Не совсем так. Как бы это объяснить. Если я в локации прописываю inv+ устройство, оно добавляется в инвентарь. Теперь нужно сделать так, что бы в любой другой локации можно было его использовать прямо из инвентаря. Как я понял, при этом нужно писать что то типа: :Use_inv_предмет ( устройство в данном случае) Это уже идет как новая локация. В ней выводится всякая информация. Но как вернуться из этой локации в ту, откуда был переход в эту, я не понимаю.

GreyBear: Спасибо, Frodo,это действительно помогло)

Серый Волк: GreyBear пишет: И сразу еще один вопрос. Допустим есть текст - "Он находится в левом углу комнаты" Так сделать часть текста "в левом углу", допустим, желтого цвета, а начало и конец текста другого? Что бы ,таким образом, выделить для игрока важную информацию. Я бы сделал так: :локация p Он находится Style_DOS_TextColor=14 p в левом углу Style_DOS_TextColor=7 p комнаты end То есть, для вывода текста используем не "pln", а "p". А перед каждым участком текста, где нужно сменить цвет, прописываем нужный оператор. Значение 14 - жёлтый, значение 7 - цвет по умолчанию. Если мы используем какие-то другие цвета, то принцип будет тот же: прописывать оператор нужного цвета перед тем текстом, который окрашиваем. Например, если основной цвет у нас зелёный (значение 10): :локация Style_DOS_TextColor=10 p Он находится Style_DOS_TextColor=14 p в левом углу Style_DOS_TextColor=10 p комнаты end

Saint: GreyBear пишет: :Use_inv_предмет ( устройство в данном случае) Это уже идет как новая локация. В ней выводится всякая информация. Но как вернуться из этой локации в ту, откуда был переход в эту, я не понимаю. Гризли. Это не локация, а просто пункт в меню вида: Барабан=>осмотреть =>постучать :use_Барабан_осмотреть pln Желтый барабан end :use_Барабан_постучать pln Вы ударили в натянутую кожу барабана - раздался глухой, тягучий звук... end А вот если ты хочешь чтобы действие с этим предметом появилось только в одной локации, то тебе надо будет посмотреть использование hide

GreyBear: Оу, я думал это локация. Спасибо, теперь буду знать) За ответ про цвет текста тоже огромное спасибо, то что нужно)

Saint: По поводу hide таки задумайся - судя по тому что ты выдаешь в задачах - он тебе пригодится. http://ifwiki.ru/FireURQ:%D0%9E%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8_URQL#.D0.98.D0.BD.D0.B2.D0.B5.D0.BD.D1.82.D0.B0.D1.80.D1.8C - пункт меню "Инвентарь" http://urq.plut.info/node/913 игра с реализованной функцией hide

GreyBear: Хорошо, я прочитаю об этом) Спасибо) Да, действительно полезная штука.



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