Несколько вопросов от новичка

Re: Несколько вопросов от новичка

Не помогло. все равно выходит на else.
...
поправка: не понял в чем подвох(или может я косой), но заработало при тупой подстановки пробелов пока правил. было $глава1='t4r6' сделал $глава1 = 't4r6' и в input так же, причем и другой код тоже заработал. И да, с присвоениями помогло в первом коде сразу.
всем спасиб, разобрался.

ejikplains
useravatar
Offline
19 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Несколько вопросов от новичка

Еще один вопрос:
Хочу сделать прыжки по коду с актами. Есть ли команда, которая останавливает дальнейшее выполнение кода?
Что-то типа такого:

Код:

текст текст текст

act 'что-то сделать':
    *clr
    текст
    текст
    jump '123'
end
стоп код
:123
act 'что-то тут сделать':
    *clr
    текст
    текст
    jump '321'
end
стоп код
:321
act 'еще что-то':
    *clr
    текст
    текст
end

иначе получается, что все действия (act) прописываются сразу при входе в локацию

ejikplains
useravatar
Offline
19 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Несколько вопросов от новичка

ejikplains,
Пишешь

Код:

wait 3000

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

 Спойлер Show Spoiler Hide Spoiler
 

Код:

'текст текст текст'

act 'что-то сделать':
    *clr
    'текст'
    'текст'
    wait 3000
end

act 'что-то тут сделать':
    *clr
    'текст'
    'текст'
    wait 5000
end

act 'еще что-то':
    *clr
    'текст'
    'текст'
    wait 2000
end

А можно и так)
 Спойлер Show Spoiler Hide Spoiler
 

Код:

'- Мы ведь ведём с вами разумный разговор?'

act '- Это что ещё за оборот речи такой?': dialog45 = 2 & gt curloc
if dialog45=2:
*clr
cla
'- От детворы услышал. Показалось вразумительным объяснением происходящего.'
act '- Нет, ну вы гений!': dialog45=4 & gt curloc
act '- Да простит меня Иисус, но Вы, крайне неодобрительный персонаж.': dialog45=3 & gt curloc
end
if dialog45=3:
*clr
cla
'Затянулась драка, никто не смог предугадать победителя.'
wait 7000
'Победитель ...!'
end
if dialog45=4:
*clr
cla
'- На том и порешили.'
end

Oliver
Magni nominis umbra
useravatar
Offline
531 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Несколько вопросов от новичка

с if уже общаюсь, но думал, может что проще будет. просто с точки зрения отзывчивости, к метке придти и остановить код намного проще и оперативнее, нежели гонять по ифам весь код с нуля. Вроде только что нашел(не проверенный, прост подсказали) способ через параметр exit, но не пойму почему из под act параметр jump работать не хочет. Просто, если act является контейнером для блока кода, то с jump потерплю фиаско.

ejikplains
useravatar
Offline
19 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Несколько вопросов от новичка

ejikplains,
А, я видимо не так вопрос понял. Только собственно, зачем тебе прыжки? Чтобы быстро диалоги менять? Ну, по идеи, потому что прыгать вниз кода он не может, только вверх(а может и нет, циклами не особо пользовался). И выводит всё, потому что условия нету для скрытия тех, которых быть в данный момент не должны.

Oliver
Magni nominis umbra
useravatar
Offline
531 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Несколько вопросов от новичка

получилось крч! Мучался, да тему накопал, где, как и думал, act служит в виде контейнера для кода, но это можно обойти.
jump работает вроде в обе стороны, но заместо него умельцы придумали другое решение. Ниже код, благодаря которому можно переходы делать.

Код:

IF $args[0]<>'': JUMP $args[0]

:ccc
'ты тут'
act 'иди дальше':
    cla
    *clr
    'пришел'
    gs $CURLOC,'ppp'
end
exit
:ppp
act 'иди назад':
    cla
    *clr
    gs $CURLOC,'ccc'
end
exit

команда exit принудительно останавливает код и его дальнейшее исполнение, а заместо jump исполняется gs $CURLOC,'ccc', с присвоением IF $args[0]<>'': JUMP $args[0]
Теперь поясню для чего это нужно:
1)Игрок путешествует в пределах одной локации, которой присвоил имя "глава первая". Это и удобно и работоспособно. К тому же работа с инвентарем по прежнему активна через взаимодействие с актами(act), а реализацию пропусков(нашел предмет - прошел куда-либо. не нашел - не прошел) легко делается для всей главы в начале при помощи присвоений и изменений 1 или 0.
2)При работе с большим кодом, множество if могут заметно увеличить время "обдумывания" и исполнения. Когда работает if, то до конца кода все ифы проверяются на соответствие. Именно поэтому намного лучше остановить код для дальнейшего исполнения вообще. тогда будет осуществляться только поверхностный поиск меток и при исполнении сразу стоп. Если хочешь понять о чем я говорю, то для эксперимента выполни ниже у себя код:

Код:

a = RAND(1, 50)

if a=1:
'у нас число 1'
end
...
...!вручную пропиши от 1 до 50
...
if a=50:
'у нас число 50'
end

3)Еще прост привык к notepad++ с его ctrl+h. наставил спецсимволов везде у текста, где нужно, все позаменил и сидишь куришь в потолок))))

ejikplains
useravatar
Offline
19 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Несколько вопросов от новичка

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

ejikplains
useravatar
Offline
19 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Несколько вопросов от новичка

ejikplains,

Код:

GOSUB 'матрица'

Nex
useravatar
Offline
4283 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Несколько вопросов от новичка

ejikplains,
Можно вопрос, от человека не очень понимающего, но жгче желающего разобраться в qsp?
Как этот код работает вообше?
UPD.:В предыдущем разобрался, извините.
Как работает gs $curloc +'название метки'?

Тупой
useravatar
Offline
1 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Re: Несколько вопросов от новичка

Чувак,
тебе поможет вопрос, который задан в соседней теме http://qsp.su/index.php?option=com_agor … =57#p26370 что такое ARGs и с чем его едят.

Когда выполняем код

Код:

gosub $curloc,'ААА'

плеер заглядывает повторно на текущую локацию и встречает строку кода

Код:

IF $args[0]<>'': JUMP $args[0]

$args[0] в этот момент для него равен "ААА", и он прыгает к указанной метке.
От метки и до конца локации плеер выполняет весь код и, поскольку мы использовали gosub, возвращается к следующей строке после gosub $curloc,'ААА' и продолжает выполнение кода. Поэтому если строка gosub $curloc,'ААА' была в теле действия, выполнение кода действия не прерывается, а переход на текущую локацию всё равно как бы совершён.

Aleks Versus
воздвигатель башни
useravatar
Онлайн
1359 Сообщений
Информация о пользователе в сообщениях
Администратор отключил публичную отправку сообщений

Информация

Статистика форума:
 
Всего тем:
999
Всего опросов:
14
Всего сообщений:
16790324
Всего сообщений сегодня:
7
Пользователи форума:
 
Всего пользователей:
2176
Последним зарегистрировался:
Последний из Гаяр