RU 📌 Pinned

Как сделать?

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

Драккан:

Происходит бой, как после победы вернуться на ту локацию в которой случилось событие?

https://qsp.org/forum/622-vozvrat-na-predydusuu-lokaciu

И пробуйте пользоваться поиском.

evp,
Помогло, спасибо!
Получается каждая моя строчка начиналась с *pl. Но почему оно всё подкопилось и выставило все пропущенные строки только в конце? И почему работает без этого если сделать в отдельной локации, но не работает в игре?

Я непонял в чем разница “в отдельной локации” и “в игре” ?
Что значит в отдельной? Весь код он всегда в какой-нибудь локации.

Axil,
Если вот этот мой код скопировать на отдельную локацию и сохранить как новую игру (с одной локацией), тогда всё работает правильно в первозданном стиле. Но в самой игре (где много всяких локаций), откуда этот кусок вынут, приходится прописывать перед каждой строкой *P, чтобы пробела не было. Мне уже просто интересно почему так происходит?

Не нашел через поиск, и в примере “Игровое время [1.0] ” как форматировать время чтоб показывало по стандарту чч:мм есть форматирование? или чрез условия парится…

Spoiler

usehtml=1

if no (dt=0):
ddt=dt
dt=0
ХОД=1

if (t+60)/1440>(t-ddt+60)/1440: день=день+1
if день>7: день=1
$день_недели[1]=‘Понедельник’
$день_недели[2]=‘Вторник’
$день_недели[3]=‘Среда’
$день_недели[4]=‘Четверг’
$день_недели[5]=‘Пятница’
$день_недели[6]=‘Суббота’
$день_недели[7]=‘Воскресенье’
else
ХОД=0
end
t=t+ddt
дни = t/1440
часы = (t-дни*1440)/60
минуты = t-дни*1440-часы*60
$день_недели = $день_недели[день]

‘<font color=“#00008B”>
Сегодня: <<$день_недели>>
Время: <<часы>>:<<минуты>>
У меня <<деньги>>$</font>’
if no ($квест[кв]=‘’): ‘<font color=“#000099”>Сейчас активен квест: “<<$квест[кв]>>” подробности задания можно узнать в телефоне.</font>’
if no ($квест_подсказка[кв]=‘’): ‘<font color=“#000099”>Подсказка: <<$квест_подсказка[кв]>></font>’
ddt=0

Всем привет, кто может помогите плиз.
Есть 3 числа
надо определить какое из них самое большое, а затем также вычислить большее из 2-х оставшихся. Понимаю нужен цикл, но пока не пойму как проверять числа…

sergeev_v, я бы сделал так

!Делаешь массив из трех чисел
a[0]=2
a[1]=3
a[2]=1
!Через оператор MAX ищешь максимальное число в массиве, пускай это будет переменная a1_max
a1_max=MAX('a')
!Затем удаляешь максимальный элемент из массива a.
KILLVAR 'a',a_max
!Ещё раз находишь максимальное среди двух оставшихся чисел
a2_max=MAX('a')

Ответ конкретно под задачу на три числа. Но минус этого способа: удаляются элементы из массива a.
Или тебе написать через цикл для любого количества элементов и без потери массива?

sergeev_v,
Простой, но одноразовый способ

a[1] = rand(100)
a[2] = rand(100)
a[3] = rand(100)

:loop
n += 1
'a[<<n>>] = <<a[n]>>'
IF n < 3: JUMP 'loop'

act 'Найти самое большое число':
	:loop_1
	'<<MAX("a")>>'
	killvar 'a', ARRPOS ('a', max("a"))
	IF ARRSIZE ('a') > 1: JUMP 'loop_1' 
end

Чтобы запомнить значения, придётся перед killvar переписывать их в новый массив.

UPD>> Где-то в теме лежит уже описание способа “сортировка пузырьком”, но я с местным поиском на ножах..
Есть ещё сборник модулей EasyMath by Aleks Versus (вроде бы), там куча всяких полезных примеров, посмотри её…

UPD 2>>
C переписыванием сортированного в новый массив

Spoiler
:loop
n += 1
a[n] = rand(100)
'a[<<n>>] = <<a[n]>>'
IF n < 3: JUMP 'loop'

act 'Сортировать по убыванию':
	cla
	m = 1
	:loop_1
	'<<MAX("a")>>'
	b[m] = max('a')
	m += 1
	killvar 'a', ARRPOS ('a', max("a"))
	IF ARRSIZE ('a') > 1: JUMP 'loop_1' 
	act 'Показать сортированное':
		m = 1
		:loop_2
		'b[<<m>>] = <<b[m]>>'
		m += 1
		IF m < 4: JUMP 'loop_2'
	end
end
Edited at 10.07.2015 08:51 (10 years ago)

Огромное спасибо, очень помогло.

Aleks Versus Moderator 10.07.2015 13:43 (10 years ago)

Драккан,
если у тебя в папке создаются файлы .tmp, скорее всего в той же папке лежит файл конфигурации плеера с атрибутом “только для чтения”. Присутствие файлов в данном случае - явление вполне нормальное. Сними атрибут, или удали файл .cfg.
svandrus,
вывод пустых строк под таблицей происходит по причине, которую тебе скорее всего лишь Nex сможет объяснить. Но, как правильно показал evp, записывать таблицу, выводимую на экран, необходимо в одну непрерывную строку. Переводы строк внутри таблицы (а так же отступы) классическим плеером не игнорируются. Где-то была даже тема на эту тему, но я что-то не нашёл.

Если в игре используются HTML-теги, то выводить текст следует оператором *P, это всё, что следует запомнить )

Народ, нужна помощь. Я заинтересовался вопросом написания текстовиков 3 дня назад)) До этого никакого опыта написания кодов или чего-либо ещё у меня не было. За банальность некоторых вопросов заранее прошу прощения. Теперь конкретно о вопросе.
Может кто-нибудь подсказать как сделать пробел через каждые три буквы/цифры сплошного слова?
Например, начинаем с
$текст = input(’текст’)
Вводим текст. А он например является сплошной стеной букв/цифр без пробелов. Как сделать пробелы через каждые 3 буквы/цифры?

Aleks Versus:

если у тебя в папке создаются файлы .tmp, скорее всего в той же папке лежит файл конфигурации плеера с атрибутом “только для чтения”. Присутствие файлов в данном случае - явление вполне нормальное. Сними атрибут, или удали файл .cfg.

Да, но если снять “только для чтения” то приходится окна настраивать каждый раз по новой, а это неудобно. Может есть способ и не вызывать .tmp и окна не раскидывать каждый раз

Aleks Versus Moderator 13.07.2015 14:16 (10 years ago)

ItsHim,
тебе поможет изучение справки, в частности команды для работы с текстом, а так же организация циклов:

!$text - здесь лежит текст
:for
if len($text)>0:
     !вырезаем первые три символа
     $t=$mid($text,1,3)
     !убираем первые три символа из строки
     $text=$mid($text,4)
     ! составляем новую строку
     $print_text=$print_text+$t+' '
     ! повторяем процедуру
     jump 'for'
end

Драккан,
думаю, такого способа нет.

ItsHim,
Я совсем недавно опубликовал способ

Log in or Register to post comments.