Как сделать?
…
помогите разобраться как вставить в диалог условия. Вот код, qsp ссылается на ошибку на 29 строчке которой вообще нету
if args[0]=0:
if $сестрапохоть = 0 :
'комар летает около уха'
act 'прислушаться к нему .':
'я слушаю как комар летает у уха'
delact $selact
'ззззз-зззззз-зззззз-ззззз-ззззз'
gs 'комар',1
end
act 'отмахнуться от него.':
'вы начинаете махать руками чтобы он улител '
gs 'комар',2
delact $selact
if $руки = 0: 'не могу придётся его слушать' gs 'комар',3
end
end
end
oleksandrigo,
oleksandrigo:
Почему вместо того чтобы изменить Х он просто в виде текста выдает мне x -= 10. И как сделать так чтобы это был не текст а код?
потому что оператор dynamic выполняет строку текста (переданную ему), как код.
Какую строку ты ему передаёшь?
“$forEvadingY”
Какой код содержится в этой строке?
$forEvadingY
Что делает этот код? — Выводит значение переменной $forEvadingY на экран.
Чтобы выполнялся код, который ты поместил в виде текста в переменную, нужно передавать оператору dynamic значение этой переменной:
dynamic $forEvadingY
satna,
satna:
if $руки = 0: 'не могу придётся его слушать' gs 'комар',3
явная ошибка, а то и две. Должно быть:
if руки = 0: 'не могу придётся его слушать' & gs 'комар',3
а лучше так
if руки=0:
'не могу придётся его слушать'
gs 'комар',3
end
Thank, Aleks Versus
Рукожоп бьёт тревогу и просит о помощи. Нужно сделать так, чтобы $strfind находил в $usrtxt последовательность из “непустых” символов, находящуюся в конце строки. Пробовал так:
if $strfind($usrtxt,'^\w{2,9}\s?\w+')='run' and $strfind($usrtxt, '$\s\S{18,33}')=' root/SD_Disk_2_GB/2.protocol':
if disk = 1 and $diskname = 'SD_Card_2_GB':
if дым = 1: дым = 0
pl 'Протокол успешно запущен...'
p 'Выполняю... |||'
wait 700
p '|||||'
wait 700
pl '|||'
wait 700
pl 'Готово.'
end
'test'
end
так:
if $strfind($usrtxt,'^\w{2,9}\s?\w+')='run' and $strfind($usrtxt, '$\S{18,33}')=' root/SD_Disk_2_GB/2.protocol':
if disk = 1 and $diskname = 'SD_Card_2_GB':
if дым = 1: дым = 0
pl 'Протокол успешно запущен...'
p 'Выполняю... |||'
wait 700
p '|||||'
wait 700
pl '|||'
wait 700
pl 'Готово.'
end
'test'
end
и даже так:
if $strfind($usrtxt,'^\w{2,9}\s?\w+')='run' and $strfind($usrtxt, '$\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*\*}')=' root/SD_Disk_2_GB/2.protocol':
if disk = 1 and $diskname = 'SD_Card_2_GB':
if дым = 1: дым = 0
pl 'Протокол успешно запущен...'
p 'Выполняю... |||'
wait 700
p '|||||'
wait 700
pl '|||'
wait 700
pl 'Готово.'
end
'test'
end
Ничего не работать. :-(
NickoAilus,
"sss ssss sss root/SD_Disk_2_GB/2.protocol"
$regex = '\S+$'
$strfind($maintxt, $regex)
Вроде работает
oleksandrigo,
Со строкой “run root/SD_Disk_2_GB/2.protocol” не сработало. Возможно, дело в $usrtxt?
NickoAilus,
Зачем тебе uxrtxt ??
Если прям без него никак то можно сделать так.
$usercom = 'enter' &! это в начало игры
А это в локацию enter
gt $curloc
и тогда
$regex = '\S+$'
$strfind($usrtxt, $regex)
будет работать
oleksandrigo, я планировал, что у игры будет небольшая вставка с терминалом. К примеру, как в игре “Килобайты роз”, но там вся игра на нём завязана.
Юзерком использовал с самого начала, но регекс там не сработал.
Псст. Решение вроде бы найдено, но оно немного кривоватое.
Вот, какая строка должна была задействовать код: “run root/SD_Disk_2_GB/2.protocol”. Но на деле работает только эта строка: “run**root/SD_Disk_2_GB/2.protocol” (обратить внимание на два пробела).
Код:
$regex = '\s\S+$'
if $strfind($usrtxt,'^\w{2,9}\s?\w+')='run' and $strfind($user_text, $regex)=' root/SD_Disk_2_GB/2.protocol':
if disk = 1 and $diskname = 'SD_Card_2_GB':
if дым = 1: дым = 0
pl 'Протокол успешно запущен...'
p 'Выполняю... |||'
wait 700
p '|||||'
wait 700
pl '|||'
wait 700
pl 'Готово.'
end
'test'
end
Может ли кто-нибудь подсказать, как изменить эту ситуацию? Сразу скажу, что код
$regex = '\S+$'
if $strfind($usrtxt,'^\w{2,9}\s?\w+')='run' and $strfind($user_text, $regex)='root/SD_Disk_2_GB/2.protocol':
if disk = 1 and $diskname = 'SD_Card_2_GB':
if дым = 1: дым = 0
pl 'Протокол успешно запущен...'
p 'Выполняю... |||'
wait 700
p '|||||'
wait 700
pl '|||'
wait 700
pl 'Готово.'
end
'test'
end
тоже работает лишь с двумя пробелами.
NickoAilus,
Spoiler
$regex = '\S+$'
$strfind($usrtxt,'^\w{2,9}\w+')
$strfind($user_text, $regex)
if $strfind($usrtxt,'^\w{2,9}\s?\w+') = 'run' and $strfind($user_text, $regex)=' root/SD_Disk_2_GB/2.protocol':
if disk = 1 and $diskname = 'SD_Card_2_GB':
if дым = 1: дым = 0
pl 'Протокол успешно запущен...'
p 'Выполняю... |||'
wait 700
p '|||||'
wait 700
pl '|||'
wait 700
pl 'Готово.'
end
'test'
end
Оно?
NickoAilus:
Нужно сделать так, чтобы $strfind находил в $usrtxt последовательность из “непустых” символов, находящуюся в конце строки. Пробовал так:
вместо того, чтобы ковырять весь код целиком, рекомендую проверять регэкспы, создав отдельный файл qsp.
Не совсем понимаю поставленную задачу.
Если в строке присутствует несколько слов (под словом подразумеваются кусочки текста, не содержащие пробельные символы), их легко выбрать в массив:
killvar '$input_text_word'
$args['string']=$user_text
:BALOON
if len($args['string'])>0:
$input_text_word[]=$TRIM($strfind($args['string'],'\s*\S+\s*'))
$args['string']=$TRIM($replace($args['string'],$strfind($args['string'],'\s*\S+\s*')))
jump 'BALOON'
end
никаких премудростей. Теперь просто проверяешь соответствующие ячейки:
if $input_text_word[0]='run' and $input_text_word[1]='root/SD_Disk_2_GB/2.protocol':
! код ...
если нужно проверить точное соответствие.
Более того, не увлекайтесь регэкспами в QSP. Везде, где можно обойтись без регэкспа, делайте без регэкспа. Я как-то увлёкся так, что игра повисала при попытке выбрать строку, а я грешил на бесконечный цикл.
Aleks Versus,
Спасибо за решение :-)
Думаю, в симуляторе терминала трудно обойтись без рэгекспов, если не хочется прописывать каждую комбинацию вручную. А если к нам подключается case-insensitive, то без них вообще дело - жопа
oleksandrigo,
Вроде да, оно
В общем, такой вопрос назрел, так как устал искать решение. Пишется на Навигаторе, так что, вопрос скорее к web возможностям.
Короче, есть фон, на котором изображены люди. Необходимо, чтобы при наведении на определённого человека, его изображение изменялось(хотя бы как-то выделялось). Весьма буду благодарен за помощь.