RU 📌 Pinned

Как сделать?

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

Ребят столкнулся с проблемами некорректного отображения гифок. Она какая-то поломанная.
Что делать?

Последний из Гаяр Moderator 23.05.2019 07:50 (6 years ago)

oleksandrigo,
У кого-то уже была подобная проблема. Советую поискать на форуме. Либо использовать qqsp, он вроде с гифками нормально работает

oleksandrigo,
А в чём конкретно поломанность выражается?)

Aleks Versus Moderator 24.05.2019 18:28 (6 years ago)

oleksandrigo,
возможно нужна оптимизация. Здесь Аджента рассказывает, как оптимизировать гифку для плеера.

Aleks Versus,
о, прекрасно!

Как заставить его вывести полный список?
Выводит только первого остальных “игнорит”.

Spoiler

*pl’<center>За время путешествия Вы ,благословили следующих монстров</center>’
BLMNmax = arrsize(’BLMN’)
arrsize(’BLMN’)
*pl ‘<<BLMN[MONS]>>’
if arrsize(’BLMN’)>0:
:BLMNstart
j+=1
*pl ‘<center>Монстр <<$MONS[BLMN[j]]>> он получил <<BLMNS[MONS]>> <<$bless[bless]>></center>’
if BLMNmax<j:
jump ‘BLMNstart’
end
end
end

Спасибо заранее.

Freem82,
Уважаемый, а что это за MONS и bless? Где вы их увеличиваете?
И лучше пихать код в тег code, это так, к сведению.
А так, скиньте что ли данные, которые нужно выводить. А то так и не понятно.
В <<BLMNS[MONS]>> <<$bless[bless]>> всегда будет выводить только индексы, которые сейчас в MONS и bless. И лучше не обзывать текстовые и численные переменные одинаковыми именами.

*P '<center>'
	*PL 'За время путешествия Вы, благословили следующих монстров:'
*P '</center>'

!//-- *PL '<<BLMN[MONS]>>' & ! Это точно нужно?
if arrsize('BLMN'):
    :BLMNstart
		*P '<center>'
			*PL 'Монстр <<$MONS[BLMN[index]]>> он получил <<BLMNS[MONS]>> <<$bless[bless]>>'
		*P '</center>'
		index += 1
	if arrsize('BLMN') < index: jump 'BLMNstart'
end

В данном случае кстати, arrsize(’BLMN’) будет возвращать размер текстового массива.

Приношу извинения файл с игрой не скину, слишком много мусора. Код генерации монстров

Spoiler

!Благословение (PRM - магия ГГ)
if bless =1:
BLMNS[MONS]=rand(1,PRM)
end
if bless =2:
BLMNA[MONS]=rand(1,PRM)
end
if bless =3:
BLMNE[MONS]=rand(1,PRM)
end
if bless =4:
BLMNH[MONS]=rand(1,PRM)
end
if bless =5:
BLMNM[MONS]=rand(1,PRM)
end
if bless =6:
BLMNAT[MONS]=rand(1,PRM)
end
if bless > 0:
BLMN += 1
BLMN[BLMN]=MONS[MONS]
!Номер по порядку
MONS = MONS+1
if LV = 1:
!Уровень монстра
LVM[MONS] = LV
!Ранг монстра
ULM[MONS] = UL
! код монстра ($наименование) ранг_уровень_номер по порядку (гоблин 1_1_1)
$MONS[MONS] = ‘<<$LVM[LVM[MONS]]>> <<ULM[MONS]>>_<<LVM[MONS]>>_<<MONS[MONS]>>’
! Сила монстра (Сила(1,2) + LEVSLEV+ BLMNSMONS)
MNS[MONS] = rand(1,2)+LEVS[LEV]+BLMNS[MONS]
! Ловкость монстра
MNA[MONS] = rand(1,2)+LEVA[LEV]+BLMNA[MONS]
!Выносливость монстра
MNE[MONS] = rand(1,2)+LEVE[LEV]+BLMNE[MONS]
!Здоровье монстра
MNH[MONS] = rand(10,15)+LEVH[LEV]+BLMNH[MONS]
!Магия монстра
MNM[MONS] = rand(1,2)+LEVE[LEV]+BLMNM[MONS]
!Мастерство атаки монстра
MNAT[MONS] = rand(1,2)+LEVAT[LEV]+BLMNAT[MONS]
end

!//– *PL ‘<<BLMN[MONS]>>’ & ! Это точно нужно? - нет, я это для проверки чтоб видеть число данного массива.
Код Благословения

Spoiler

if brdm>=PRE:
imax=PRE
else
imax = brdm
end
end
!Кле́ймор - сила
!Рапира - ловкость
!Секира - выносливость
!Кольчуге - жизни
!Булава - мастерство
!Глефа - магия
!Уровень монстра чтобы новосозданные монстры были идентичны.
LV=LVM[MONS]
*clr
*pl’<a href=“exec: set bless = 1 & blessgen = 1 & gs ‘‘bless’’”><center>Благословение Клеймор богине силы</a></center>’
*pl’<a href=“exec: set bless = 2 & blessgen = 1 & gs ‘‘bless’’”><center>Благословение Рапиры богине скорости</a></center>’
*pl’<a href=“exec: set bless = 3 & blessgen = 1 & gs ‘‘bless’’”><center>Благословение Секиры богине выносливости</a></center>’
*pl’<a href=“exec: set bless = 4 & blessgen = 1 & gs ‘‘bless’’”><center>Благословение Булавы богине магии </a></center>’
*pl’<a href=“exec: set bless = 5 & blessgen = 1 & gs ‘‘bless’’”><center>Благословение Глефы богине жизни </a></center>’
*pl’<a href=“exec: set bless = 5 & blessgen = 1 & gs ‘‘bless’’”><center>Благословение Гунгнир богине битвы </a></center>’

if blessgen=1:
*clr
:mgenmonster
set i+=1
gs ‘monstr’
*pl ‘<center>Монстр <<$MONS[MONS]>> он получил + <<BLMNS[MONS]>><<$bless[bless]>></center> ’
if i<imax:
jump ‘mgenmonster’
end
end
end
*pl’<a href=“exec:set i=0 & set blessgen=0 & gt ‘‘step’’”><center> Вернутся </a></center>’

Спасибо.

Freem82,
В общем, к чему эти усложнения?
Вам нужно, чтобы монстры получали благословения? Делаем вот так:

$monster[] = 'Василиск'
$monster[] = 'Стрига'
$monster[] = 'Петрович'

$bless[] = 'на силу'
$bless[] = 'на ловкость'
$bless[] = 'на выносливость'

buff[] = 1
buff[2] = 1
typeBuff[] = 0
typeBuff[2] = 2

index = 0
:renderBless
	if (buff[index]):
		*PL 'Монстр: <<$monster[index]>>'
		*PL 'Благословение: <<$bless[typeBuff[index]]>>'
	end
	
	index += 1
if (index < arrsize('$monster')): jump 'renderBless'

Принцип понял. Сейчас попробую как то, обыграть. В конечном итоге эти монстры должны составлять армию поэтому хотел их сделать уникальными. Файл игры предоставляю на грамматические ошибки постарайтесь не обращать внимание. На даном этапе работает только два этапа и послушница игру начал делать пару вечеров назад так-что она сырая. Благословление после поражения ГГ.WP.rar

Freem82,
Совет: пихайте локации в папки.
Связанные со системой - в, к примеру, #System.
Алгоритмы, функции, массивы и прочая в свои версии.
В будущем, вам же проще будет ориентироваться, где и что лежит.
Оператор set опциональный, существует лишь, чтобы немного помочь разработчикам разобраться с языком. На деле, как по мне, особо не нужен, но тут уж кому как удобно.
Капсом пишут в случае, если хотят обозначить, что данная переменная - константа. Если вы тоже следуете этому пути, вопросов нет. Но если вы пишите их от случая к случаю, то лучше перестать :)
Базовые действия бесполезная весчь. Тем более, что вы используете ссылки для действий. К чему их создавать? Может, это просто старые наработки? Их лучше использовать, для создания хот-кеев. Быстрого сохранения/загрузки или выбора варианта в диалогах.
Таблицы - тихий ужас :(
Писать нужно так, если не хотите много пустого пространства под таблицей и повысить читабельность в коде.

*P '<table>'

	*P '<tr>'
		*P '<th>Title 1</th>'
		*P '<th>Title 2</th>'
	*P '</tr>'
	
	*P '<tr>'
		*P '<td>Cell 1.1</td>'
		*P '<td>Cell 1.2</td>'
	*P '</tr>'
	
*P '</table>'

Есть такая классная вещь - массивы. Вы собственно уже начали их использовать.
Тех же монстров можно описать массивом. Вот наиболее простой способ:

$mName[] = 'Маленькая сколопендра'
$mDesc[] = 'Размером с собаку, весьма ядовитая сколопендра, с которой лучше не связываться обычному человеку. Но когда это останавливало приключенца?'
mDamage[] = 10
mDefence[] = 20
mSpeed[] = 5
mAgility[] = 6
! и т. д.

Более сложный завязан на регулярных выражениях, так что, лучше пока туда не соваться)

    1. Проиграть мне так и не удалось))

Всем привет.
Вот сижу пишу на куспе и натолкнулся на реально странную ошибку…
Объяснить что именно произошло затруднительно поэтому вот вам файлик урезанной игры.
Откройте его и следите за мыслью. Нажимаем навыки и выбираем силовой удар.
Всё ок никакой ошибки. Можете даже сами посмотреть на вывод действий и убедиться что всё вроде нормально.
Дальше. Переходим к странному багу.
Нажмите на ударить. Это по сути пустая локация, где есть gt на локацию 1. На ней ничего больше не происходит.
Казалось бы что не так.
Но теперь нажмите на навыки и на силовой удар.
Хопа! Непонятная ошибка. Начнем с того что кусп говорит про 23 строку (которой нет).
А если проще то аргумент в выводе навыков почему то равен 2. При том что максимум должен быть 0. И изза этого и сам баг.
откуда двойка?
pamagiti.qsp

Aleks Versus Moderator 05.06.2019 14:47 (6 years ago)

oleksandrigo,
он говорит о строке в действии, причём о строке в сгенерированном действии.

Чтобы отследить эту ошибку, я бы написал после каждой строки кода вывод тех данных, которые эта строка формирует. Например, в окно доп описания. Так я и отлавливаю непонятные баги.

Но вообще мне кажется, что у тебя не одна, а две или больше ошибок, которые совместными усилиями выдают глюк. Генерация действия в локации 2:

gs $Skills[args[0]], 'player', 'enemy'

в этой строке определённо будет подставляться всегда только 0 вместо args[0], потому что args сохраняет значения только в рамках одной “сессии” текущего блока кода. Блок кода в данном случае — это действие, а действию мы не можем передавать аргумент. Если генерировать действие с помощью dynamic, то глюк пропадает, но я не уверен, что работает правильно. Слишком мудрённый код.

dynamic "act '<<$Skills.Name[args[0]]>>':
	!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ВОТ ЗДЕСЬ!!!!!!!!!!!!
	'вывод <<args[0]>>'
	*pl 'Вы использовали <<$Skills.Name[args[0]]>>'
	gs '<<$Skills[args[0]]>>', 'player', 'enemy'
	xgt 'FightT'
end"

oleksandrigo:

откуда двойка?

двойка берётся из строки args[0] += 1. Ты по сути генерируешь действие с одинаковым названием, чем заменяешь старое правильное действие новым неправильным. Если в название действия подставить его номер (<<args[0]>>), ты увидишь сколько действий действительно генерируешь.

UPD^^ нет, последнее неверно. Не пойму, откуда берётся двойка. Надо более глубоко вникать в код.

Забавно если args[’memory’] приравнять у нулю после вывода действий на 1, то баг пропадает. Вероятно какая-та ошибка в аргументах.
Также сделал как вы говорили использовал dynamic

Spoiler

dynamic ”
act $Skills.Name[<<args[0]>>]:
<<args[0]>>
*pl ’Вы использовали ’ + $Skills.Name[<<args[0]>>]
gs $Skills[<<args[0]>>], ‘player’, ‘enemy’
xgt ‘FightT’
end

Теперь всё работает корректно. Благодарю за помощь =)

Друзья! Столкнулся со странной проблемой.
В текущем проекте хочу реализовать игровую карту, с ландшафтом, который в начале игры генерировался бы случайно, но зависел от набора также случайно сгенерированных в начале игре чисел. И вроде все получилось, карта каждый раз новая и т.д., однако случайно заметил, что иногда она… повторяется.
Зажимаю Alt+N (начать новую игру) - смотрю, как ландшафты друг друга сменяют и… вдруг в один из моментов два раза подряд одинаковых.
Вывожу на экран переменные, от которых ландшафт зависит (<<a>><<b>><<c>><<d>><<e>><<f>><<g>><<h>><<j>><<k>>), каждой из них заведомо присваивается =rand(1,9) -
и та же самая ситуация, то они случайные, как надо, то в один из моментов два раза подряд абсолютно одинаковые ряды чисел.
От чего это зависит?

Log in or Register to post comments.