Форум » » Вопросы новичка » Ответить

Вопросы новичка

WhiteWizard: Здравствуйте, уважаемое qsp сообщество. Есть несколько вопросов: Почему в конструкции вида [pre]if no говорил_дома: говорил_дома=1 ... else ... end[/pre] может не отрабатывать else ветка? Специально окружил if следующим образом: [pre]говорил_дома if no говорил_дома: говорил_дома=1 говорил_дома ...[/pre] И всё работает так, как ожидалось: при первой прогонке 0, 1; при второй 1, 1 Но код в ветке else упорно не хочет выполняться. Взываю к вашему опыту, знатоки. Второй вопрос не по коду, а, скорее, по "платформе" Как известно, при создании qsp файла qgen предлагает назначить пароль. И если пароль оставить пустым, то при последующем открытии файла пароля не спросят. Внимание, вопрос: можно ли избавить qsp файл от уже назначенного пароля? И ещё вопрос на общее понимание языка: Все объявленные переменные — глобальны, а к параметрам функции (локации) можно обратиться только по индексу, верно? Заранее благодарю за ответы.

Ответов - 16

WladySpb: WhiteWizard пишет: Как известно, при создании qsp файла qgen предлагает назначить пароль. И если пароль оставить пустым, то при последующем открытии файла пароля не спросят. Внимание, вопрос: можно ли избавить qsp файл от уже назначенного пароля? Просто выбрать в меню "сохранить как", он сохранит файл как новый, и заново спросит про пароль. WhiteWizard пишет: Все объявленные переменные — глобальны, а к параметрам функции (локации) можно обратиться только по индексу, верно? Переменные - глобальны, что ты имеешь в виду под обращением к параметрам? Можно передать в локацию параметры, при её вызове, это выглядит примерно так: gt 'локация2',1,'int' При этом в локацию передаются аргументы: ARGS[0]=1 и $ARGS[1]='int' соответственно, сам код локации может выполнятся в зависимости от переданных аргументов. Насчёт первого примера если я правильно понял - проверка неадекватна. Если НЕ говорил дома тогда: Правильнее было бы Если не говорил дома=1 тогда: if no говорил_дома=1: говорил_дома=1 ...... else ....... end А ещё проще: if говорил_дома!1: знак "!" является отрицанием, "если не равно"

WhiteWizard: Спасибо ещё раз за ответы. Про аргументы я всё правильно понял. Спасибо, что подтвердили мои предположения. Вопрос был к тому, можно ли добавить мнемоники в наименование параметров (аргументов) функции. Т.е. как в PHP, например: function($name, $textColor). Оказалось, что только по индексам. А про if: думал, раз работает if var, то будет работать и if no var. По аналогии с C++ if (boolVar)/ if (!boolVar). Оказалось - не все переносы калек одинаково полезны. Что ж, будем дальше привыкать к языку.

WladySpb: WhiteWizard : if war тоже будет криво работать, переведи в логичный язык - ты в коде пишешь - "Если переменная вар, то..." Тебе не кажется, что звучит криво? Если ты проверяешь переменную, нужно проверять её на что-то, то есть "Если переменная вар=1, то..." аргументы по сути являются массивом, числовым или строковым по желанию. Что в них передавать и как это обрабатывать - выбор за тобой.


WhiteWizard: Хорошо, что поставил вопрос. Появился повод МакКоннелла полистать. За своё время программирования я привык пользоваться булевыми переменными. И проверки вида if (done) вместо if (done==true) меня лаконичностью не смущают. Радует, что вышеуказанный автор также отмечает полезность булевых переменных. Другое дело, что бэйсик с подобными конструкциями, видимо, не очень дружит. Не берусь утверждать наверняка, ибо последний бэйсикообразный язык, на котором довелось программить, был qbasic. И было это лет 9 назад. А вот за qsp реализацию можно поручиться - мы в этом наглядно убедились на приведённом мной примере. Думаю, имеет смысл подправить chm help. Раздел ЧаВо, подраздел "Как проверить, был ли герой на какой-либо локации?". Грохнуть оттуда пример кода [pre]if был_здесь:[операторы][/pre], дабы не смущало умы qsp-подованов. Но это так, на правах предложения.

WladySpb: WhiteWizard Хм.. Не знаю, актуально ли это. Возможно, по умолчанию проверка и идёт на "=1", я редко использую переменные как "истинно" и "ложно", обычно работаю с большим списком значений, так что всегда чётко указываю, что подразумевается под условием. В хелпе вообще много неточностей на данный момент, так что стоит спорные вопросы спрашивать либо тут, либо на канале IRC.

Byte: WhiteWizard, no -1 это 0 no 0 это -1 То есть, при использовании "NO" в качестве булевой "ИСТИНЫ" нужно использовать -1, а не 1. Однако, QSP считает "ИСТИНОЙ" любые значения, отличные от 0. "ЛОЖЬ" - 0. Также это касается всех Basic'ов, если в них работать без типа Boolean.

Клиган: всем доброго времени суток, я здесь новенький:)но с куспом уже знаком...был:) раскажите вкратце, какие преимущества у последней версии плеера и движка, и есть ли смысл писать на 3.0.0?

Byte: На 3.0 смысла писать нет. У 5.x преимуществ - масса. Начиная от улучшений в языке и заканчивая улучшенными мультимедиа-возможностями.

Клиган: ну да, потестил немного:)правда:)а хелп новый? у меня все детали движка времен 3.0.0. и еще: где можно найти примеры системы боя на куспе, и не просто удар-блок, а довольно разветвленный бой...? спасибо,если кто поможет!

Byte: Кто-то не сильно давно писал D&D-модуль... Где-то на форуме было сообщение =)

Nex: Клиган к чёрту системы, напиши-ка лучше игру!

WladySpb: Клиган У меня валяется пример, но я уже сам забил его делать... Там даже сейчас голову сломать можно, а ведь ещё не всё доделано) Если принципиально нужна боёвка - проще написать самому, на мой взгляд, полезно для изучения языка) Но лучше попроще что-нибудь, а то кодить замучаешься...

Клиган: Игра-то пишется:)просто с системой боя у меня траблы,хочется что-нибудь по настоящему классно-тактическое, на данный момент это моя основная проблема

Элвис: 2Клиган: по ДиД я пишу, у меня система боя простая - игрок и моб кидают на инициативу 20гранный кубик плюс модификатор ловкости, результаты сравниваются и видно, кто ходит первым потом тот, кто первый, кидает опять д20 плюс бонус атаки, сравнивается результат с защитой цели - и если больше, то кидается урон (опять какой-нибудь кубик) после ходит другой противник и так по кругу можно писать фразы типа "вы увернулись", "противник попал по вашему доспеху, и вы остались невредимы" и т.д. или можно сделать как в браузерных мморпг: выбираешь какую часть тела блокируешь, потом опп бьёт тебя рэндомайзом и сравнивается, угадал или нет не угадал - получил по "части тела" соответственно можно ввести навыки типа "выбрать два варианта блока", "уворотливость", "отразить удар" и т.п.

WladySpb: Элвис БэКа-шные системы не стоит юзать, на мой взгляд. Слишком они приелись... Классический AD&D плох тем, что его замучаешься еализовывать, всё не включишь, а вот где остановиться - вопрос. скилы, шмот, окружение - по идее всё должно оказывать влияние на бой, и всё должно качаться, развиваться, меняться... Очень тяжело всё это закодить, вопрос - что оставить, а чем пожертвовать.

Mioirel: Оставить как можно больше. Мы ведь не скованы шейдерными цепями графики. Нам ненужно ничего месяцами моделировать, анимировать и разрисовывать. Все это с лихвой компенсируется воображением. Но для фантазии нужна плодородная почва. Это не значит, что надо пахать сразу все тысячи тысяч акров намеченного поля. Действительно хорошие игры создаются годами... Да, это тяжело, но результат того стоит. И когда-нибудь на поле все взойдет удивительным лесом фантазии!



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