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

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

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

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

Byte: Вариант - в поле кода локации пишем условие: [pre2] if был_здесь: act 'Действие 1': ! код действия end act 'Действие 2': ! код действия end act 'Действие 3': ! код действия end end [/pre2] Затем, в коде обработки выбора нужного действия пишем: [pre2]был_здесь=1 & gt $curloc[/pre2] С помощью оператора DYNAMIC - можно, но добавлять новые действия и предметы всё равно придётся через ACT и ADDOBJ: [pre2]ADDOBJ $имя_предмета[/pre2]

denis: Спасибо. Я здесь буду ешё вопросы выкладывать, если возникнут, хорошо?

Byte: Конечно


denis: А как скрыть действие? Т.е. if был_здесь: ... ?

Byte: Можно через оператор DELACT: [pre2]delact 'Название действия'[/pre2]

denis: Как вывести текст в окно дополнительной информации?

Nex: P 'текст'

denis: спс

denis: как сделать сохранение игры? Плз, с примером. Пытался сделать по хелпу через SAVEGAME и OPENGAME - ни фига не получается :(

Byte: [pre2] SAVEGAME 'имя файла' - сохранение в указанный файл SAVEGAME '' - сохранение, игрок сам выбирает имя файла[/pre2]

denis: Это-то понятно, но вот у меня в меню есть пункт 'продолжить' При нажатии на него появляется список открытых глав. Вот код обработки KILLALL & CLS & CLOSE ALL OPENGAME 'Другое_зрение.sav' После этого вылетает "нельзя открыть файл", хотя он есть и называется точно так же! И даже лежит в той же папке, потому что создаётся автоматом при посещении опред. локации! Что здесь не правильно?

Byte: [pre2] #Начало ACT '1': 'test!' END ACT 'save': savegame 'другой.sav' END ACT 'load': opengame 'другой.sav' END ---------------------------[/pre2] работает... может, название не совсем такое, как при сохранении? попробуй скопировать название из savegame..

Byte: denis, проблема решена? opengame заработал?

denis: Нет. Потом разберусь. У меня там сейчас и без него забот полон рот :) Иду на победу! Вопрос такой: как узнать, сколько времени прошло с момента входа в локацию? Без waita! ;)

Byte: Переменная MSECSCOUNT. При посещении локации сохраняем текущее время в какой-либо переменной, затем, когда нужно, вычитаем из текущего времени сохраненное значение.

denis: Всё, спасибо, вопросов больше нет!

denis: Итак, игра разрослась до таких размеров, что писать дальше без возможности начать с нужного места просто невозможно! И это радует :) Не радует отсутствие сохранок. Если не трудно, кинь пример, как должно выглядеть сохранение в файл с названием a_b.sav и загрузка из него. У меня всё выглядит так. При входе в определённую локацию выполняется SAVEGAME 'Другое_зрение.sav' Затем я перезапускаю игру ('Начать заново' в плеере), в меню выбираю пункт Главы->Другое зрение, выполняется код OPENGAME 'Другое_зрение.sav' И всё. Пустой экран. Не глючит, ошибок не выдаёт.

Byte: Вот этот код работает?

denis: Да, спасибо, работает. Ребята, извините, кина не будет, по крайней мере на этом конкурсе. Файл, в котором тестил загрузку/сохранение, я случайно сохранил в файл игры. Пока настроения что-либо делать нет. Извините.

denis: Правка: кино будет, но в меньше объёме. Вопросов больше нет.

denis: Как я понял, при выполнении кода USEHTML=1 '<img src=фон.jpg>' '<AREA HREF="где-то" SHAPE="RECT" COORDS="0, 0, 1000, 1000" >' на рисунке должна появиться квадратная область, при щелчке на которую должен быть переход в локацию "где-то". Почему это может не происходить? Не отображается даже курсор с пальцем - он остаётся обычным.

Nex: Файл, в котором тестил загрузку/сохранение, я случайно сохранил в файл игры. denis O_O А как же бэкап?

Byte: [pre2] usehtml=1 '<IMG src="pic.jpg" USEMAP="#map">' '<MAP NAME="map"><AREA shape="rect" coords="0,0,100,100" href="exec:''asddasd''"></MAP>'[/pre2] Для всего изображения ссылку задать проще: [pre2] usehtml=1 '<A HREF="exec:''asddasd''"><IMG src="pic.jpg"></A>'[/pre2]

olendorf: чего?на куспе работают такие вещи?ссылки с рисунков на локацию?где можно подробней узнать?

Byte: Из справки: Если в качестве ссылки для "A HREF" указано число, то при клике по ссылке будет произведена обработка действия с данным индексом. Индексация действий ведётся с 1. Если в качестве ссылки для "A HREF" указана строка вида "EXEC:строка_кода", то при клике по ссылке будет выполнена указанная строка кода.

denis: > denis O_O > А как же бэкап? В смысле? Я сохранил тестовый файл с таким же именем, как и файл игры, и он заменил его! А восстановление системы в Windows файлы не затрагивает, как я помню.

Nex: denis я не про восстановление, я про обычное "резервное копирование". Когда занимаешься чем-то более-менее серьёзным, создавай запасные копии и сохраняй промежуточные версии, это общепринятая практика. Ну это на будущее. Понятно, что игру уже не вернёшь.

fireton: Более того, удобнее всего поставить себе локально репозитарий, WinCVS, например. И заливать изменения каждый раз после работы. Тогда не только наработки не потеряются, но и всегда можно будет вернуться назад и посмотреть "как там было раньше"... Или отвести ветку от основной работы. Рекомендую.

denis: fireton, Nex, спасибо. Я обычно в таких случаях пользуюсь "жёсткими ссылками" - через командную строку создаётся ссылка напрямую на память, которую занимает файл на жёстком, и пока ты её не удалишь, очистить там память невозможно. Оч удобная вещь, особенно когда нужно предохранить крупный файл. Но здесь я вроде как только начал, а получилось, что за неделю сделал довольно много... Но я решил закончить в первоначальном объёме. :) Трепещите, конкуренты! :D

Byte: denis пишет: Но я решил закончить в первоначальном объёме. Отлично!

Korwin: Корвин хотел предложить denis'у участвовать в КРИЛ, но посмотрел на Чебурашку с топором и скромно промолчал.

Nex: Korwin Только до 30 ноября совсем мало времени осталось - вряд ли успеет.

denis: Байт, а возможно записывать состояние игры в одной локации, а загружать её - в другой? Что-то не получается. Насчёт КРИЛ: как я понял, выставлять недоделку - дурной тон, даже если она лишена багов и смотрится интересно. Всё равно сюжет должен быть логически закончен. А у меня такой проект, что дай бог к весне закончить! :)

Byte: Только через $ONGLOAD: На данной локации пишем [pre2]gt $после_загрузки[/pre2] далее, в нужные моменты устанавливаем значение $после_загрузки: [pre2]$после_загрузки = 'моя локация'[/pre2]

denis: Как я понял. Вот я начинаю игру заново, захожу в локацию 'главы', нахожу там название последней главы, попадаю на $ONGLOAD, затем выполняется gt $после_загрузки... А если у меня были какие-то параметры? Например, уровень страха? Или репутация? Они потеряются?

Byte: denis, видимо, ты не понял как это работает. Все данные, которые имеются, сохраняются, но после загрузки будет переход на нужную локацию: [pre2] #1 $ongload='load' $go_load='4' 'Теперь можно сохранять игру, после загрузки всё восстановится, но будет произведён переход на локацию "4".' ---------------------------------- #load gt $go_load ---------------------------------- #4 'После загрузки!' ----------------------------------[/pre2]

denis: спасибо, сейчас проверю.

denis: Работает только если явно прописывать в локации-постзагрузчике gt 'улица-1'. Если прописывать переменной, то она обнулсяется.

Byte: Не может она обнуляться. Сохранение идёт после присвоения переменной значения?

denis: Спасибо, разобрался. У меня там KILLALL было после этого :) Авось успею на КРИЛ с первым законченным эпизодом.

Ajenta: Подскажите плизз, как можно узнать название не текущей, а предыдущей локации. Можно как-то это сделать средствами языка, а не добавлением переменных?

HIman: ну так понадобится всего 1 переменная. На предыдущей локации пишешь $loc=$CURLOC А на текущей можешь проверить IF $loc <> 'подвал': и т.д.

Byte: Можно сделать такое для всей игры сразу, автоматически - на $ONNEWLOC добавляем код [pre2]$prevloc=$curloc[/pre2] Теперь при обработке кода новой локации (при переходах) в $prevloc будет имя предыдущей локации.

Ajenta: О, спасибо :)

Ajenta: Byte пишет: Можно сделать такое для всей игры сразу, автоматически - на $ONNEWLOC добавляем код $prevloc=$curloc Теперь при обработке кода новой локации (при переходах) в $prevloc будет имя предыдущей локации. А можно пожалуйста пример, а то я видимо что-то делаю неправильно, потому что у меня это всё не работает.

Byte: [pre2] #2 $onnewloc='new' act 'next':gt '3' - #3 'Вы перешли с локации <<$prevloc>>' - #new $prevloc=$curloc -[/pre2] Если переменную $prevloc нужно использовать в коде действий, то нужно во временной переменной в коде локации сохранить имя предыдущей: [pre2] #2 $onnewloc='new' act 'next':gt '3' - #3 $ploc=$prevloc 'Вы перешли с локации <<$prevloc>>' act 'show':'Вы перешли с локации <<$ploc>>' - #new $prevloc=$curloc -[/pre2] UPD: Есть ещё такой вариант: [pre2] #2 $onnewloc='new' act 'next':gt '3' - #3 'Вы перешли с локации <<$prevloc>>' act 'show':'Вы перешли с локации <<$aprevloc>>' - #new $aprevloc=$prevloc $prevloc=$curloc -[/pre2] То есть, для кода локации используется $prevloc, а для кода действий $aprevloc.

Ajenta: ммммм... Я запуталась. Давайте так. Я создаю локацию с именем "onnewloc" пишу на ней $prevloc=$curloc насколько я поняла - это должнло выполняться всегда, когда я перехожу на новую локацию? но если я на локации с названием "Карта" делаю act 'next': gt $prevloc он говорит, что такой локации не существует, при условии, что в локацию Карта - я захожу с какой-то локации. Что здесь не так? Где ошибка?

Nex: Ajenta в самой первой локации напиши [pre2]$ONNEWLOC = 'onnewloc'[/pre2] Байт, будь лаконичнее. К тому же девушка наверняка пользуется QGen4, а не TXT2GAM.

Ajenta: Угу, пасиб, попробую.

Ajenta: Тааак. Сделала как сказали. Я сделала вывод переменной $prevloc на экран Происходит следующее Перехожу я на карту - $prevloc пишет название предыдущей локации. Делается act 'next': gt $prevloc после чего $prevloc - пишет Карта и никуда не переходит я что-то опять не так делаю. :( что ему ещё нехватает?

Ajenta: А пользуюсь действительно QGen'ном и именно четвёртым.

Nex: В локации "onnewloc" должно быть это: [pre2]$aprevloc=$prevloc $prevloc=$curloc[/pre2] Когда используешь "имя предыдущей локации", то для действий используй переменную $aprevloc, а для остального - $prevloc. т.е. действие должно быть таким: [pre2]act 'next': gt $aprevloc[/pre2] Извини, что сразу не разобрался.

Ajenta: Урра!!! Заработало! Чмок и большущее спасибо Сама бы фиг догадалась.

denis-1: Люди, я очень давно здесь не был - появился вопрос. Есть вот такой код $USERCOM=$CURLOC $USRTXT = '' if (первое_посещение=1): 'Встаю. В комнате полумрак - не понятно, ещё ночь или уже утро?' act 'посмотреть на будильник': !смотрит прямо end первое_посещение=0 end if ($USRTXT = '1'): ! посмотрел направо cla act 'посмотреть на будильник': end end if ($USRTXT = '2'): cla act 'включить свет': !посмотрел прямо 'включил свет' end end if ($USRTXT = '3'): act 'открыть шторы': !посмотрел назад end end При вводе в поле ввода числа 2 должно появляться действие 'включить свет'. На деле оно ещё и выполняется - почему? Кстати, denis - это я, админ, напомни мне мой пароль, пожалуйста. игру, которую я делал, я успешно по**рил во второй раз - теперь уже путем форматирования жёсткого.

denis-1: Всё, разобрался, это баг - Byte, поправь, сейчас если ставишь после act: комментарий, то действие сразу выполняется.

Nex: denis-1 это не баг. Это запланированные Байтом грабли. Восклицательный знак в языке QSP - не просто комментарий, а оператор комментария, который: нельзя использовать в конструкциях [pre2] IF a=b : !наше условие *PL 'a равно b' END [/pre2] , т.к. он посчитает комментарий за оператор, а раз после двоеточия стоит оператор, то IF будет считаться однострочным; то же касается и ACT; нельзя использовать так: [pre2] *PL 'строка1' ! Byte's soft *PL 'строка2' [/pre2] , т.к. кавычки и апострофы внутри комментария необходимо экранировать точно так же, как и в строковых константах - из-за апострофа движок посчитает, что комментарий продолжается на следующей строке.

denis-1: Ага, спасибо. Завтра выложу (тьфу-тьфу-тьфу!) завязку игры для тестирования. :)

denis-1: А можно в этой теме выкладывать поэпизодно игру, если она конкурсная? Т.е. выложу 2-3 эпизода, а в полной версии их 18-20? Просто мне для тестирования нужно.

Byte: Допускается только закрытое тестирование (можно высылать небольшому кругу лиц - с оговорками). Игра или её части не должны быть опубликованы ранее срока сдачи игр. denis, и ещё - если собираешься участвовать в конкурсе, нужно подать заявку (автор+предварительное название).

denis-1: Отлично! Завтра вышлю тебе и Nex-у! :)

Byte: Мне не нужно. Смотреть до конкурса в любом случае не буду.

denis-1: Хорошо, я уже договорился со знакомым в оффлайне, так что тестера я нашёл. Другой вопрос - в правилах указан размер до 2-х мегабайт, что делать, если у меня в игре много изображений (не крупных, но под 70 штук). Просто в локациях можно осматриваться вверх-вниз, влево-вправо. Думаю, урезать не получится. :(

Byte: 2мб это рекомендация :) в принципе, можно и больше.

denis-1: А почему может не работать код USEHTML=1 '<img src="фон.jpg" usrmap="#map">' '<MAP NAME="map"><AREA shape="rect" coords="0,0,1000,1000" href="exec:gt ''...''"></MAP>' Картинка выводится. Локация ... есть.

Byte: "usrmap" вместо "usemap"?

denis-1: Да, спасибо! %)

denis-1: Byte, опят траблы с сохранкой... Игра сохраняется в определённый момент, затем появляется действие act 'загрузить': $ongload='load' opengame '1.sav' end В локации load if прошли_первый_уровень=1: gt 'улица' end Локация 'улица' тоже есть. При попытке всё это проделать плеер ругается и говорит, что нельзя открыть файл (ошибка 105). При попытке загрузить вручную (средствами плеера, т.е.) - тоже самое. Игра сохраняется так: #улица прошли_первый_уровень=1 NoSave=0 SAVEGAME "Другое_зрение.sav" NoSave=1 ... остальное В общем, сохранки, сделанные ручками (Игра->сохранить состояние...) грузятся нормально, сделанные с помощью savegame - не пашут.

Byte: act 'загрузить': $ongload='load' opengame '1.sav' end $ongload='load' здесь ни к чему, так как при загрузке сохранения переменные будут загружены из файла. $ongload нужно устанавливать перед savegame. ругается на файл именно в этой локации и в этой строчке?

Byte: Сохранения savegame - абсолютно такие же, что и сделанные вручную :)

Byte: А ругается на файл - у тебя [pre2]SAVEGAME "Другое_зрение.sav"[/pre2] но при этом [pre2]opengame '1.sav'[/pre2] имя файла должно быть одинаковым.

denis-1: Да нет, уже одинаковые, всё равно ругается. :( P.S. Да, спасибо, заработало - нужно было $ongload='load' перед сохранением поставить. :)

Nex: Какие-то извращения... Первая игра, и уже в такие дебри залез? Нафига?

denis-1: :) Хочу победить. Чтобы победить, нужно, чтобы моя игра понравилась. Чтобы она понравилась, нужно не халтурить.

Nex: Да не, я просто не могу представить, зачем делать сейвы прямо из игры. Ну, автору виднее. Может, это и правда пригодится.

denis-1: Вот ещё вопрос: т.к. до этого момента моё произведение больше напоминало книгу-игру, то с предметами я особо не работал. А вот теперь не могу понять, как сделать, чтобы по выделению предмета совершалось какое-нибудь действие. Например, у меня есть объект 'мобильник', и после его выделения я хочу перейти на локацию, где обрабатывается работа с мобильным. add obj 'мобильник', 'Объекты\мобильник.jpg' if $SELOBJ='мобильник': GOSUB $SELOBJ end На практике нужно совершение какого-нибудь другого действия - только тогда выделенный объект начинает работать, и выполняется GOSUB $SELOBJ

Byte: denis-1, создай локацию 'OBJSEL', и установи [pre2]$ONOBJSEL='OBJSEL'[/pre2] далее, уже на самой локации [pre2] if $SELOBJ='мобильник': GOSUB $SELOBJ end unselect[/pre2] Неужели совсем справку не читаем?

denis-1: Читаем, иначе как бы я про $SELOBJ узнал :) Да, спасибо, заработало.

denis-1: Как программно выделить объект?

Byte: Зачем?

denis-1: Всё, уже не надо. :) Сделал по-другому, и даже лучше вписалось в сюжет - получилась небольшая загадка.

Nex: .k™: как думаешь стоит ли свой сервер сделать? lip: для чего? .k™: ты ответил на мой вопрос http://bash.org.ru/quote/402196

Byte:

flir3: Здравствуйте. Извините за глупый вопрос, но можно ли в qsp с помощью html-тегов позиционировать текст посередине? Т.е. не только по горизонтали, но и по вертикали?

Byte: flir3, в данный момент нет. Сейчас можно создать таблицу с ячейкой указанной высоты (в пикселях), и только потом выровнять текст по вертикали. Указание относительной высоты (в процентах) - в планах.

flir3: Byte пишет: можно создать таблицу с ячейкой указанной высоты (в пикселях) Byte, я долго въезжал, но не понял, атрибутом какого тега при этом пользоваться. Можешь привести пример, если не трудно?

Byte: [pre2] usehtml=1 *p '<table width=100%><tr valign=middle>' *p '<td width=0><hr width=0 size=300></td>' *p '<td>' *p 'Текст, выровненный по вертикали' *p '</td></tr></table>' [/pre2] Здесь 300 - высота по вертикали.

Ntropy: Похоже нужно тему для записи различных хаков, например, что для замены однопиксельного gif'а или div'а можно использовать hr.

Byte: Кстати файрфокс для <hr width=0 size=300> всё равно умудряется рисовать один пиксель в ширину. Как другие браузеры не знаю.

Ntropy: Это тень от HR, она всегда рисуется. Лучше взять однопиксельный GIF и поставить ему размеры.

Byte: Ну я так и подумал, что тень.

flir3: Byte, подскажи ещё, оператору gosub нельзя передать больше десяти параметров?

Byte: Сейчас ограничение на максимум 10 параметров :)

Byte: Много параметров можно передать отдельным массивом.

[Ray]: [Byte пишет: Сейчас ограничение на максимум 10 параметров :) байт, увеличь хотя бы до 16. пожалуйста.

fireton: Ntropy пишет: Это тень от HR, она всегда рисуется. А noshade в wxHTML не поддерживается?

Byte: fireton, в данном случае проблема не с wxHTML, а с фаерфоксом :) А вообще noshade это не отключение тени, это просто смена типа тени.

Byte: [Ray], зачем 16 параметров? o_O

[Ray]: Byte мм... да как бы тебе сказать... особенность движка... вообщем, базы оружия, монстров, лута и т.д. я для простоты задаю так: !ENGINE_ENEMY_ADD(0.ID, 1.Название, 2.Здоровье, 3.Мин.урон, 4.Макс.урон, 5.Уровень, 6.Награда-опыт) GS'ENGINE_ENEMY_ADD',1,"Лесной волк",22,3,4,1,6

[Ray]: Byte я лишь боюсь что параметров придется использовать больше.. намного больше. например, на заклинания которые он(монстр) может творить, ссылка на таблицу вещей которые из него выпадают.... а вот если бы ты сделал возможность импорта данных из .txt - был бы вообще праздник просто ;)

Byte: [Ray] есть addqst

[Ray]: Byte нет, addqst не решит проблему. нужно загружать файл как таблицу. а лучше сразу в массив.

Byte: А, ещё есть разбор текста - можно данные в виде строки оформить, потом их разобрать.

Ntropy: 16 параметров в локации это перебор, для разбора текста можно использовать разбиение по пробелам.

WladySpb: [Ray] Я такого рода проблему решал передавая в локацию только название противника, тип места боя и время суток. При обработке боёвки игра обращалась к БД (отдельная лока) где на основе названия противника и на основе уровня определяла все статсы и прочие переменные.

[Ray]: WladySpb кинь кусочек кода, который определяет по названию противника все его характеристики; я уверен там такой же мусор как у mioirel'я в его The Underworld Slayer. угу. я за чистоту нации кода.

[Ray]: Byte разбор текста? круто! а поподробнее?

WladySpb: [Ray] Ну, примерно это происходит так: Задаём тип противника, запускаем бой, в начале локации-боя инициализация противника, делаем gs на локацию с БД. Там что-то такое: if $enemy['кто']='волк': $enemy['кого']='волка' $enemy['кому']='волку' ......... enemy['жизнь']=10+level*2 \\ у меня сила мобов вычислялась в зависимости от уровня героя. enemy['мин_урон']=4+level enemy['макс_урон']=7+level ........ end if $enemy['кто']='бандит': ....... Ну вот как-то так. Весь список параметров приводить не буду)

Nex: Одному мало 10, другому 16 мало, и т.д.

Byte: [Ray], ну есть текст с данными, например $data=' волк,10,23,45,67,88,99,44,22 коза,100,3,5,66,78,49,40,20 капуста,12,45,67,2,43,12,0,5 .... ' Далее этот текст разбиваем по переносам строк и каждую строку по запятым. Проще всего сделать через регэкспы, но можно и без них.

[Ray]: Nex а что, шестнадцати жалко? :) действительно, я думал что изменить количество нетрудно) Byte а что за функции это делают?

Nex: [Ray] 16 - нелогично. В QSP те ограничения, которые еще остались, кратны 10. Так легче запоминается. Если все будет кратно 10, а одно-единственное будет 16, будет просто некрасиво.

WladySpb: Nex На самом деле, ограничения вообще нелогичны, если не являются следствием конкретных особенностей языка. Хотя в данном случае мне не кажется аккуратным сам метод, но и ограничений я не понимаю. кстати, что меня приятно порадовало в куспе, когда я начинал, это то, что нет глупых ограничений. Переменные не нужно объявлять заранее(как в паскале или Си), к примеру. Нет разграничений переменных по типам, экономить несколько байт информации уже не нужно, хотя раньше наверное это было критично...

Nex: WladySpb из двух зол следует выбирать меньшее. И из ограничений на 16 и на 10 параметров, я выберу 10, т.к. это более соответствует всему остальному.

Byte: [Ray] пишет: действительно, я думал что изменить количество нетрудно) Изменить нетрудно.

flir3: Подскажите, пожалуйста, а размер переменной строкового типа в qsp ограничен?

Byte: Практически нет.

flir3: Практически нет. Byte, а можно поподробнее?

Byte: Грубо говоря, действует ограничение доступной приложению оперативной памяти.

ShamanEdy: Короче, мне нужно сделать так, что бы мои числовые переменные, выводились текстом. Например, если у меня перемнная Реклама=2, то в игре выводилось Реклама = слабая.

werewolf: создаешь массив текстовых значений с числовыми индексами например $характеристики[1] = 'плохая' $характеристики[2] = 'слабая' и т.д. потом останется только вывести *p 'Реклама = <<$характеристики[Реклама]>>'

Hertz: Всем привет! Почитал форум, похоже для того, чтобы задать пару вопросов по коду эта тема лучше всего подходит. Собственно у меня вопросы чисто по html-части. 1. Не нашел списка хтмл-тэгов, которые поддерживает кусп. Такое есть вообще? 2. Все стаилы работать будут? Ну вот например, чтобы сылка не подчёркивалась видел тут где-то конструкцию с доп.тегом внутри {a}. А вот {a href="путь" style="text-decoration:none"}ссыль{/a} будет работать? 3. Таблицы он нормально показывает, кривости нет? Я тут игрушку затеял, но для реализации нужно чтобы таблицы с точностью до пикселя были такими, какими я их навоял. заранее спасибо за ответы и терпение)

Nex: 1. Hertz, судя по всему, ты еще не скачал справку. Немедленно скачай - http://qsp.su/files/redirect.php?dlid=7 В справке см. "Операторы и функции"->"Использование тегов HTML при разработке игр" 2. "стаилы" не поддерживаются. Ссылки без подчеркиваний - это костыль. 3. таблицы с большой вероятностью будут НЕ такими, как в твоем любимом браузере(все браузеры рисуют их по-разному).

Hertz: Nex спасибо, всё нашел. Очень жаль что для таблиц не поддерживается backcolor. Ведь в таком случае можно было бы делать фон, а в ячейках таблицы распологать предемты в виде png. Ну и чтобы они были ссылками. Очень интересные игрушки можно было бы делать. Неужели трудно реализовать это? А ещё параметр height у таблиц не работает.

Byte: Hertz пишет: Ведь в таком случае можно было бы делать фон, а в ячейках таблицы распологать предемты в виде png. Ну и чтобы они были ссылками. Очень интересные игрушки можно было бы делать В ячейках таблиц картинки могут быть. Ссылки сделать картинками тоже можно - для картинок подчёркивания нет.

Hertz: Byte пишет: В ячейках таблиц картинки могут быть. Ссылки сделать картинками тоже можно - для картинок подчёркивания нет. Я знаю! Я уже пробовал это сделать. Проблема в том, что у таблиц и ячеек только ширина фиксится. А высота зависит только от содержания. И нельзя положить фон под таблицу, т.к. работает только bgcolor, а background он не понимает.

Nex: Hertz платформа QSP создана для текстовых игр. Возможности графики в ней ограничены. Рекомендую применять QSP по назначению - написать текстовую игру.

Nex: Hertz пишет: нельзя положить фон под таблицу Можно. Для этого используется системная переменная $BACKIMAGE (см. справку)

Hertz: Nex пишет: Рекомендую применять QSP по назначению - написать текстовую игру. Текстовую и пишу. Диалоги и дейсвия будут текстовыми, а вот перемещения хотел сделать путём тыканья по карте "мира". Просто возможность положить фон под таблицу, а сверху размещать в зависимости от условий нужные картинки-ссылки весьма облегчило бы задачу и украсило бы игру. Хотя это и не главное, но почему бы и нет? ps ничего, что я тут у вас флудить помногу буду?)

Hertz: Nex пишет: Для этого используется системная переменная $BACKIMAGE (см. справку) не врубаюсь, как положить строго под таблицу. если не трудно напиши кусок кода, которым под таблицу 400 на 400 пикселей кладётся картинка такого же размера, а в самой таблице что-нибудь написано просто.

Byte: Строго под таблицу в текущем плеере не выйдет.

flir3: Byte, ты писал, что можно сделать массив в качестве аргумента оператора gosub. Расскажи поподробнее, как это сделать? Как мне выудить переменную из массива в массиве?

Ajenta: Hertz, Здесь вариант только один, нарисовать картинку на бэкграунд, а потом надрать кусками и пихать эти куски в таблицу, меняя в ячейках те, которые надо менять.

Nex: Hertz "карту мира" в виде таблицы сделать можно, где-то на форуме уже обсуждались способы.

Hertz: Ajenta пишет: ertz, Здесь вариант только один, нарисовать картинку на бэкграунд, а потом надрать кусками и пихать эти куски в таблицу, меняя в ячейках те, которые надо менять. Это и так понятно. Просто хотелось бы изящно сделать. Хотя грамотно составленый список из ссылок тоже прекрасен.

elmortem: Hertz Изящно можно реализовать через карты ссылок картинки. Смотри тег MAP.

WladySpb: elmortem Я так понял, нужно чтобы на статической карте появлялись, к примеру, города по которым можно кликнуть. Так что изящное решение недоступно... На мой взгляд, поверх фона можно было бы выводить картинки-ссылки с абсолютным позиционированием, но это тоже не поддерживается) А так да, карта ссылок тема...

Byte: flir3, имелся в виду вариант, когда имя массива известно. например: [pre2] $a[0]='sdsd' $a[1]='ddfdf' $a[2]='vbvb' gosub 'test'[/pre2] В 'test' будет доступен весь массив $a. А если передать имя массива, то значения можно получать через функцию DYNEVAL.

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

WladySpb: elmortem Как идеальный вариант - карта аля Baldurs Gate, узнал о локации - появилась на карте. Самый логичный способ реализации - картинка фона, плюс картинки городов как ссылки. А теперь представь насколько возрастает объём если всё это разбивать на куски? Я не говорю что это невозможно, просто на данный момент это значительно менее удобно, чем даже в чистом html) В принципе, разбить это на куски в таблице самое логичное, тогда будет, скажем, 10 кусков карты и десять картинок этой же карты но с городами. Сделать легко, просто неаккуратненько как-то.. А если предположить возможность нелинейного развития, рандомных встреч или ещё какой динамической фигни - сложность возрастает в разы.

Hertz: WladySpb прав. А вот если реализовать возможность тэга background для таблички, то всё очень хорошо получится - и резать ничего не надо.

Nex: Чем меньше картинок - тем больше текста. Так что, по моему мнению, не надо "реализовать возможность тэга background для таблички". WladySpb, никто не пишет настолько масштабных игр. Не потому, что "нельзя сделать карту", а просто потому, что сил, умений и желания на такую игру, с "городами" ни у кого не хватает. К тому моменту, когда такую игру напишут - уже наверняка будет SDL-версия :) Более того, даю торжественное обещание: если кто-то напишет полноценную игру, в которой будет необходима такая карта, то я сам возмусь и сделаю SDL-версию.

WladySpb: Nex Я согласен) Пока это было чисто теоретическое размышление, на тему как сделать карту удобней... Пока это никому не нужно, по крайней мере, в существующих проектах)

Ntropy: Расширенную карту с произвольным появлением областей можно сделать табличкой, вот только недавно рисовал схемку для Ajenta'ы. А ноги растут вот отсюда http://htmlbook.ru/content/?id=88.

Hertz: WladySpb пишет: Пока это никому не нужно, по крайней мере, в существующих проектах) мне нужно) или думаете, что просто так спросил?

WladySpb: Hertz Кинь подробное ТЗ, может, соображу кода кусок. Не гарантирую конечно, но подумаю как можно. UPD: Хотя не, всё равно резать придётся, и по кускам монтировать... Тегов маловато

[Ray]: я забыл как передавать ID действия как число. напомние плз

Byte: Можно создать массив названий действий, а индекс элемента будет id.

[Ray]: плз, подробнее и с примером

Ntropy: [pre2] $acts['поднять'] = 1 $acts['осмотреть'] = 2 ... id = $acts[selact] [/pre2]

[Ray]: Такс. Оказывается всё гораздо сложне... вообщем, необходимо сделать так: Есть несколько действий с одинаковым gs'Локация',argument Вот только аргумент - переменная. Т.е. Все действия имеют одинаковый код при нажатии. (блин, как же я криво всё описал... не поймёте - спросите, пояюсню.) Сабж: Как сделать, чтобы действие у act'' генерировалось при создании действия, а не при нажатии? ещё раз поясню. мне нужно чтобы аргумент превращался в числовое его значение.... блджад, я не знаю ещё как вам описать.. кто понял, помогите.

Nex: [Ray] см. оператор DYNAMIC Где-то здесь уже обсуждался такой же вопрос.

[Ray]: я пытался его использовать, но так и не понял суть. да и если прикинуть, мне скорее Static чем Dynamic нужно.

Byte: [Ray], это старый вопрос. Варианта 2: 1) $a='Действие'+n acts[$a]=n act $a: pl acts[$selact] end 2) DYNAMIC " act 'Действие <<n>>':pl <<n>> "

[Ray]: Byte аригато, сейчас попробую...

[Ray]: БЛДЖАД у меня скобок не хватает! " и ' уже стоят. есть ли третий тип?

Byte: Используй "удвоение" кавычки :)

[Ray]: Хаха! даа! йес, я сделал это! скоро выложу убер-движок, только вот еще пару фичей прикручу)

Nex: [Ray] эх, лучше б игру.

[Ray]: Nex да над игрой вот тружусь... я задумал много контента для нее, там работы побольше чем над двигом.

Aleks Versus: Пытаюсь сделать перевод из десятеричной системы в шестнадцатеричную. то есть подменять циферки типа 10 на буковки типа 0A. Бьюсь уже вторые сутки. Кто-нибудь пробовал писать такое? поделитесь опытом.

Yashko: '<center><u><a href=exec:gt 'начало't>Начать игру</a></u></center>' не пашит. Походу что-то с кавычками. Хелп.

Yashko: А все, справился.

Nex: Aleks Versus [pre2] !перевод из десятичной системы счисления в шестнадцатеричную $shablon='0123456789ABCDEF' num10=val($input('Введите число:')) t10 = num10 :loop ost = t10 mod 16 $t = $mid($shablon,ost+1,1) $num16_str = $t + $num16_str t10 = t10 / 16 if t10 > 0: jump 'loop' '<<num10>>=<<$num16_str>>' [/pre2]

Aleks Versus: Nex пишет: ost = t10 mod 16 Дико извиняюсь, а mod - это что за операция? В справке найти не могу. Возвращает остаток от деления? А вцелом спасибо.

Nex: Aleks Versus да, к моему ужасу, в справке про это ничего не написано. Так и есть, остаток от целочисленного деления. Все операции в QSP производятся с целыми числами.

Aleks Versus: Nex пишет: Aleks Versus да, к моему ужасу, в справке про это ничего не написано. Полагаю это был сарказм, и еще раз извиняюсь. mod в справке нашел- мои кривые руки опять вводили не то слово.

Nex: Хм. У меня, оказывается, была не последняя версия справки. Скачал сейчас новую. В последней версии (5.6.2), датированной сентябрем, действительно упомянут MOD, хотя его нет в указателе. Зато обнаружилось, что в этой последней версии не работает половина разделов O_o Надо срочно исправлять.

Byte: Гм.. Только что проверил, вроде все работает.. Какой раздел не работал?

Nex: О программе -> Благодарности; Принцип работы; Операторы и функции; Операторы и функции -> Выражения -> Использование массивов; Операторы и функции -> Операторы -> Работа с действиями; Операторы и функции -> Операторы -> Работа с инвентарём; Операторы и функции -> Операторы -> Работа с переменными / массивами; Операторы и функции -> Операторы -> Настройка интерфейса; Операторы и функции -> Операторы -> Мультимедийные возможности: звук и музыка; Операторы и функции -> Функции; Операторы и функции -> Функции -> Работа с действиями; Операторы и функции -> Функции -> Работа с инвентарём; Операторы и функции -> Функции -> Работа с массивами; Операторы и функции -> Системные переменные; Операторы и функции -> Системные переменные -> Базовые системные переменные; Операторы и функции -> Системные переменные -> Переменные, задающие обработчики событий; Операторы и функции -> Системные переменные -> Переменные настройки интерфейса; Операторы и функции -> Создание меню для предметов; Подсказки / Советы; Словарь терминов.

Byte: У меня это работает

rrock.ru: У меня тоже работает.. но по-моему Nex уже перезалил исправленны файл..

Byte: Не, это вряд ли.

Сидан Рейдан: Осваиваю азы, возник такой вот вопросик... Сейчас. Придумаю вменяемую формулировку... Хм. Есть локация 1. На ней, по сюжету предоставленного мне теста, сидит говорящая собака (вот не надо смеяться, это тест по диалогам из архива qsp300ddemos))) Я, представив свою реакцию, в аналогичной ситуации, добавил действие "Убежать от собаки". Локация 2. Сюда убегает игрок в процессе. Отсюда есть развилка. На этой локации есть код: if был_здесь=1: DELACT 'Убежать ещё дальше' & *PL 'Молодец, вы прибежали к собаке.' & ACT 'Подойти к собаке': GOTO 'Начало' if был_здесь=2: DELACT 'Свернуть в лес' Вариант 1 - "Убежать ещё дальше" - на локацию 3; и вариант 2, "Свернуть в лес", на локацию 4. Локация 3. Здесь присутствует параметр (или как его?) был_здесь=1. И действие а-ля "Вам тут холодно, идите обратно, поговорите с собакой". Локация 4. Здесь присутствует аналогичный параметр "был_здесь=2", и аналогичное действие "тут темно, и т.д.". То есть. Игрок уходит от собаки, появляется на развилке. Там два действия. Каждое из них должно пропасть, после того, как игрок там побывал. Вроде как всё нормально. Но! Если игрок побывал в лесу, то действие "лес" действительно удаляется. Если игрок после этого побежит дальше, и, соответственно, вернётся обратно - то пропадёт только действие "убежать дальше", а "лес" опять появится! Короче, прекращаю вас мучить своей чрезмерной вербальной активностью, прикладываю файл. QSP. http://zalil.ru/upload/28424374 Вопрос №2 (не волнуйтесь, он короткий!) Как можно сделать какую-то функцию, выполняющуюся при ПОКИДАНИИ локации?

Nex: Сидан Рейдан ссылка на файл не работает. Не очень понятно, что ты хотел сделать с переходами. Используй многострочные IF'ы вместо однострочных. DELACT лучше вообще не использовать, он только запутывает. Я всегда прекрасно без него обхожусь. Как можно сделать какую-то функцию, выполняющуюся при ПОКИДАНИИ локации? Через ту же служебную локацию что выполняется при ПОСЕЩЕНИИ локации - $ONNEWLOC

Сидан Рейдан: Спасибо. Попытаюсь уточнить формулировку. Развилка Y. Можно перейти в две локации. Соответственно, два действия. С обеих локаций происходит возврат в первую локацию. В итоге, с помощью функции "был_здесь" и "DELACT" пресловутые два действия должны исчезнуть. При возвращении с первой локации, остаётся ссылка на вторую. При возвращении со второй - остаётся ссылка на первую. Вот, я попытался перезалить файл. http://zalil.ru/upload/28424854 Используй многострочные IF'ы вместо однострочных. DELACT лучше вообще не использовать, он только запутывает. Я всегда прекрасно без него обхожусь. К своему сожалению, я пока только учусь, премудростей не знаю)) Ещё один вопросик возник. Для параметров BCOLOR, FCOLOR - какие значения ставить? Какие-то цифровые? Где их найти? Или буквенные? И куда из ставить, просто на "начало"?

Nex: Сидан Рейдан эта ссылка тоже не работает. Заходи на канал по этой ссылке: http://tinyurl.com/qsp-irc

Сидан Рейдан: Ох, месяц прошёл, а в этой теме после моего же сообщения вновь появился только я же... Плохая тенденция, однако... - сказал чукча, почёсывая затылок. Ну да ладно, сомнения прочь, флаг в руки, скипидар под причинное место, да вперёд, с вопросами к знатокам. Сперва обосную, почему я тут сейчас пишу: На IRC-канале Интерактивной Литературы я не могу долго поддерживать контакт (перебои со связью, знаете ли, лень излишняя, и вообще в Украине с коммуникациями плохо), а вопрос у меня для моего восприятия непростой, и требует долгого "переваривания". В чём суть... Пишу квест (как ни странно), и столкнулся с рядом проблем. Ряд образовал некое подобие Берлинской Стены, придётся мне его осилить. Суть такова - поциэнт, простите, глав.герой идёт в далёкое странствие. Он - дурак, а вдобавок ещё и сталкер (нет, не тот, который в мифической Зоне, а тот, который шастает по всяким заброшенным и покинутым местам цивилизации, вполне реальные люди) и вот-вот собирается в очередной поход. И, собственно, тут-то и попёр ряд проблем. Проблема первая. Персонаж по причине некоей физической ограниченности своего вещмешка может взять с собой ограниченное количество вещей. Сперва я хотел сделать аксиому в виде "не больше четырёх", потом понял, что это алогично. Допустим, в одном варианте персонаж захочет взять телефон, навигатор, фонарик, да светотрубку, а в другом - паёк на неделю, оружие, набор инструментов и медпакет. Де-юре - четыре предмета. Де-факто - совершенно разные по объёму вещи. Вот и пришла мне в голову мою глупую идея: сделать некий объём вещмешка (в кубических дециметрах, как пишут в Украине О_о) (шутка) и каждому предмету присвоить определённый вес. Чтоб он занимал ровно столько, сколько ему положено. ...Перечитал, вроде написано понятно. Проблема вторая, близкая к первой. Предметы будут исчезать\прибывать, как, допустим, при таких ситуациях а-ля "скушал за часок весь паёк", "купил в магазинчике ещё молоточек", и, соответственно, объём свободного места в вещмешке должен динамично изменяться. Может, вам тут не видно никакой проблемы, но мне лично процентов на 99 непонятно, как это сделать - я тотальнейший новичок в программировании. Желательно, что бы "свободное место" динамично изменялось прямо при выполнении команд ADDOBJ и DELOBJ (если это, разумеется, возможно, а то мне каждые три строчки нового, неизвестного кода - как чукче двигатель атомной подлодки) (и вновь почти что шутка. Почти). Проблема третья. Философская. Инвентарь и деньги. Да, я такой дурак, что толком не могу это сделать, вернее, не понимаю, как. Как сделать счётчик имеющихся денег? Как создать полноценный инвентарь? Просто в лице "списка предметов" в, собственно, "окне предметов"? Проблема четвёртая, от которой у большинства присутствующих может наступить когнитивный диссонанс (я предупредил) Как... кхэм... как, простите, можно по игре нормально взаимодействовать с предметами? С локацией-обработчиком (или как её) $ONOBJSEL я не справился, просто не заработала. Выводить описание предметов по щелчку на них в "инвентаре" не могу, дальше элементарных действий наподобие "щёлкнул на фонарик - свет появился" (и то с вашей же помощью) я не продвинулся. Товарищи доктора, у меня есть шанс? Простите за излишнюю наглость и загруженность вопросами, так уж вышло. Срочного ответа не требуется, лучше напишите дураку подольше, да пообстоятельней) Заранее спасибо за внимание.

Ajenta: Мдаааа... Ты бы хоть вопросы не кучей пихал что ли, а по одному. Ну да ладно. Приду домой напишу пообстоятельней, если до меня этого никто сделать не успеет.

Nex: Сидан Рейдан совсем откажись от ограничений на вес и объем предметов. Либо сделай подсчет максимально простым - например, всякую мелочь вроде денег и патронов можно набирать сколько хочешь, а крупные предметы ограничить по количеству (например, не более 6). Сперва я хотел сделать аксиому в виде "не больше четырёх", потом понял, что это алогично. Допустим, в одном варианте персонаж захочет взять телефон, навигатор, фонарик, да светотрубку, а в другом - паёк на неделю, оружие, набор инструментов и медпакет. Де-юре - четыре предмета. Де-факто - совершенно разные по объёму вещи. Зря уповаешь на логику - хорошая игра должна быть интересной, а от логичности мало что зависит - в любых играх куча условностей и допущений. Не плоди сущностей без крайней необходимости. Вводи ограничения только там, где без этого не обойтись.

Hertz: любая игра - это модель. для того и есть игры, чтобы отбросить сложности, иначе можно было бы просто жить - никаких игр не надо. так что +1 к Nex

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

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 тогда пустых строк не будет

Hertz: Ajenta



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