Форум » » Как это сделать? » Ответить

Как это сделать?

denis: Только начал программить на QSP. Вопрос: как сделать так, чтобы после выполнения одного действия, в этой же локации становились видны другие, до этого не видимые? Хелп читал - не нашёл ответа. И ещё - можно ли с помощью оператора DYNAMIC создавать новые действия и предметы?

Ответов - 201, стр: 1 2 3 4 5 6 7 8 9 10 11 All

Сидан Рейдан: Что же, не смею спорить с общественностью. Но всё ещё (если общественность, разумеется, соизволит (говорю без сарказма)) надеюсь на пояснения по вопросам. От системы "заполнения" рюкзака в плане веса, похоже, откажусь. Всем спасибо, ей-богу, не думал, что вы так серьёзно отнесётесь к новичку) Ждём-с, не сочтите за наглость....

Ajenta: Тааак. Во первых, если всё-таки не хочешь отказываться от мешка и килограмов :) Создаёшь массив типа $вещи[1] = 'нож' , вещи['нож'] = 10 первое это название вещи, второе - это сколько она весит У тебя есть количество, когда вещьмешок переполнен или недополнен, допустим туда влезает 100 кг. В самой первой локации пишешь $ONOBJADD = '!objadd' создаёшь локацию '!objadd' заводишь некую переменную, которая будет отвечать за текущую сумму в вещмешке, ну допустим тягание_тяжестей, а дальше на этой локации '!objadd' пишешь if $ARGS ='нож': тягание_тяжестей = тягание_тяжестей + вещи['нож'] if тягание_тяжестей>вес_мешка: msg 'вы не можете взять эту вещь, слишком мало места' del obj 'нож' else тягание_тяжестей = тягание_тяжестей - вещи['нож'] end end В общем примерно так, пробуй, дерзай или программера найди, если сам никак. Второй вопрос. Та же фигня На самой первой локации пишешь, в коде, конечно $ONOBJSEL = '!objsel' а на локации '!objsel' пишешь if $selobj = 'шкаф': p 'Это обычный шкаф, ничего интересного' unsel end И выведется тебе это в дополнительное описание. Так же можно выводить сколько денег в кармане у героя или склянок в его мешке. Вот. Надеюсь что-то из этого понятно. А вообще справку читай, там всё написано. Ну и примеры на сайте есть, рабочие, наука ещё не изобрела ничего проще копипаста. :)

Byte: Правильный код для локации "!objadd": тягание_тяжестей = тягание_тяжестей + вещи[$ARGS] if тягание_тяжестей>вес_мешка: msg 'вы не можете взять эту вещь, слишком мало места' del obj $ARGS тягание_тяжестей = тягание_тяжестей - вещи[$ARGS] end


Byte: Массив с $вещи[1] = 'нож' - не нужен в данном случае. Достаточно заполнять вещи['нож']=10

Ajenta: Да, спасибо

MasterSet: 2 Сидан Не слушай тех кто обрезает крылья твоей фантазии. Хочешь делать хардкорный реализм - делай. Я лично куда больше уважаю именно такие игры. Так что мысленно с тобой - удачи. Ну а технологию тебе уже разъяснили. Не так уж сложно.

Hertz: Просто любое ограничение (то бишь приближение к реализму в данном случае) должно на чём-то основываться, в то смысле, что это должно быть необходимо в игре (например для головоломок). Если же автору просто захотелось, чтобы больше четырех предметов нельзя было брать просто потому что потому, то это явно лишнее.

Ajenta: Hertz Ну ты авторов совсем какими-то ... выставляешь. :)))) Они всегда делают для того, что нужно игре. :) Даже если только они так думают. :)

Nex: MasterSet я лично уважаю игры, которые доходят до релиза. А чрезмерные усложнения сильно уменьшают шансы.

Сидан Рейдан: Тут такая дискуссия развернулась... Отвечаю по всем пунктам. Nex, согласен..... Потому и стараюсь втихаря, вылажу "в свет" исключительно за помощью. Дабы, в случае чего, не нести особых моральных потерь) Ajenta - огромное спасибо за пресловутую помощь, вы меня, можно сказать, вновь вдохновили на подвиги и свершения)) MasterSet - аналогично))) Hertz - разумеется, доля скепсиса всегда полезна опьяневшему от перспектив автору) Отдельное спасибо. Byte - спасибо за поправки в коде, буду разбираться) Начну, так сказать, упомянутое мною выше "переваривание"... Коли будут какие вопросы по данному вопросу (простите за тавтологию), обращусь, не обессудьте) И ещё раз выскажу свою главную мысль - не ожидал, что вокруг никому не нужного новичка будут так хлопотать... О_о На такую помощь и поддержку даже не рассчитывал. Всем искреннейшая благодарность. Ни на каких форумах ещё не встречал такой отдачи, однако...

Сидан Рейдан: Итак, вопрос номер... какой он там? Вот ведь бестолочь. Так вот. Плейер грешит на данную строку: $вещи[1] = 'нож' , вещи [нож] = 50 - обидными словами про "ошибку синтаксиса". Господа знающие, я по причине принадлежности к классу "незнающих" тут ничего не нашёл. Подскажите, что не так? Вопрос 2. Многоуважаемая Adjenta писала: ...заводишь некую переменную, которая будет отвечать за текущую сумму в вещмешке, ну допустим тягание_тяжестей, а дальше... Внимание, вопрос. Есть какая-то разница от размещения этой переменной по локациям? Сидит она, вроде бы, на самой первой. Если то, что я написал, вообще является переменной...

Ajenta: Да, Байт поправил же вещи ['нож'] = 50 - вот так не будет ругаться то есть надо писать $вещи[1] = 'нож' вещи ['нож'] = 50 А по второму вопросу: "Заводишь" - это слово означает определяешь. Её, эту переменную, можно нигде не прописывать кроме как в коде, потому что она по умолчанию нулём инициализируется, то есть просто сразу используешь и всё. А к новичкам здесь всегда отношение доброжелательное, если они сходу не начинают делать мега-супер-пупер-рпг :)))

MasterSet: ОФФТОП 2 Nex Есть мнение, что до релиза игры не доводятся отнюдь не по причине сложности задумки, а исключительно по раздолбайству авторов. Забить можно даже на самую простую игру. Вот человеку видишь сложно. Но он не забил, а упорно полез советоваться. Надо его морально поддержать, а не говорить ему, что он со сложным не справится и вообще делает всякую ненужную фигню. Так мы новых игр не дождемся. А те которых дождемся будут скучными и шаблонными.

Byte: вещи ['нож'] = 50 -- пробел между "и" и "[" нужно убрать. $вещи[1] = 'нож' -- строчка не нужна. http://qsp.borda.ru/?1-0-0-00000138-000-180-0#122

Nex: MasterSet твоя точка зрения мне понятна, потом как-нибудь отдельно обсудим ;)

Byte: Сидан Рейдан вот работающий пример - http://pastebin.ru/310411 Тег "<?php" добавил сервис, его нужно убрать)

Hertz: Нужна помощь с кодом Допустим, у меня есть переменная a, которая принимает значение либо 0, либо 1. От этого значения зависит как будет выведен список - это будут просто названия или названия ссылки. Т.е. код примерно такой будет: if a=0: 'название1' if a=1: '<a href=''exec:...''>название1</a>'' if a=0: 'название2' if a=1: '<a href=''exec:...''>название2</a>'' ... Т.к. названия для двух случаев будут одинаковыми (разница лишь в том, будут ли они ссылками или нет) можно ли как-то это более изящно сделать? Пока писал возникла идея <a href=''exec:if a=1: ... ''>название1</a> но тогда получится, что при a=0 это всё равно будет ссылка, просто при нажатии ничего происходить не будет... к тому же я не уверен, что в href="exec: ... " нормально многострочный if и ещё несколько действий войдут... И тут же ещё одна if a=1:'<a href=''''>' 'название1' if a=1:'</a>' но это тоже дрянь, потом что если а=1, то перед и после название1 пустые строки Мне уже даже подумалось о CSS

Byte: [pre2] usehtml=1 a=0 ! заполняем списки - названия + код $names[]='название1' & $execs[]='code1' $names[]='название2' & $execs[]='code2' $names[]='название3' & $execs[]='code3' ! этот цикл лучше вынести в отдельную локацию i=0 :loop if i < arrsize('names'): if a=0: $names[ i ] else '<a href="exec:<<$execs[ i ]>>"><<$names[ i ]>></a>' end i=i+1 jump 'loop' end[/pre2]

Hertz: Byte Спасибо Вот что значит программистское мышление - у меня полчаса в голове рождалось, рождалось и не родилось, а ты через 10 минут готовый код выложил. И, кстати, ты невольно угадал. Я сами названия собирался описать в массив изначально, а список выводить через gosub из отдельной локации.

Ajenta: Не дрянь, кстати, просто вот так if a=1: *p '<a href=''''>' end *p 'название1' if a=1: *p '</a>' end тогда пустых строк не будет



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