RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2433553 views

Aleks Versus Moderator 16.05.2018 06:20 (7 years ago)

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

Оно?

Aleks Versus Moderator 22.05.2018 06:39 (7 years ago)

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 возможностям.

Короче, есть фон, на котором изображены люди. Необходимо, чтобы при наведении на определённого человека, его изображение изменялось(хотя бы как-то выделялось). Весьма буду благодарен за помощь.

Aleks Versus Moderator 07.06.2018 08:53 (7 years ago)

Oliver,
как сделать подсветку куска фона — не знаю. Подсветку элемента можно делать с помощью css.

Вот статья: http://seodnevnik.ru/sozdanie-sajtov/podsvetka-kartinki-ili-sozdanie-knopki-na-css.html

Я бы предложил нарезать фон на куски с человеками, затем для нужных кусков сделать дубли изображений, но с дорисованной подсветкой. И воспользоваться статьёй.

Ребят, такой вопрос, пилю что - то типа визуальной новеллы, и хотелось бы проконсультироваться по аспектам кода.
Допустим на локации в описании посередине портрет персонажа, под портретом его имя выделенное жирным, и минуя одну пустую строчку то, что персонаж говорит.
Так вот, как возможно реализовать вывод текста по клику кнопки далее в действиях? Как бы, я пытался сделать это через act, но штрудирование руководств мне не помогло и текст просто выводился лишь по первому нажатию кнопки далее, затем кнопка пропадала, хотя дальнейший акт с тем же названием, но другим текстом уже имеется.
Надеюсь на вашу помощь, заранее спасибо)

Log in or Register to post comments.