Система начисления опыта
А вот ещё один вопрос. Как сделать так, чтобы при накоплении определённого опыта давался соответствующий уровень? Пока что я пользуюсь вот таким рабочим кодом, сам додумался до него, но это вообще не вариант, так как это неудобно с каждым уровнем прописывать всё больше и больше новых условий.
#Начало
IF Опыт = 0 OR Опыт = 10 OR Опыт = 20 OR Опыт = 30 OR Опыт = 40:
Уровень = 1
END
IF Опыт = 50 OR Опыт = 60 OR Опыт = 70 OR Опыт = 80 OR Опыт = 90 OR Опыт = 100 OR Опыт = 110 OR Опыт = 120 OR Опыт = 130 OR Опыт = 140:
Уровень = 2
END
IF Опыт = 150 OR Опыт = 160 OR Опыт = 170 OR Опыт = 180 OR Опыт = 190 OR Опыт = 200 OR Опыт = 210 OR Опыт = 220 OR Опыт = 230 OR Опыт = 240 OR Опыт = 250 OR Опыт = 260 OR Опыт = 270 OR Опыт = 280 OR Опыт = 290:
Уровень = 3
END
CLEAR
PL 'Ваш уровень: <<Уровень>>'
PL 'Ваш опыт: <<Опыт>>'
ACT '+20 опыта':
Опыт = Опыт + 20
GOTO $CURLOC
-
Подскажите кто-нибудь :/ Я столько всего перепробовал, что уже готов волосы на голове рвать :=D
Наверное так?
If Опыт >= 0 and Опыт <= 40 : Level = 1
elseif Опыт > 40 and Опыт <= 140 : Level = 2
end
у меня примерно так всегда (в counter):
if expa > 9 + levelexp:
expa = expa - 10 - levelexp
level = level + 1
levelexp = levelexp + rand(15,35) + (levelexp/10)
end
последнее - “levelexp/10” как вариант, эдакое процентное наращивание, можно и без него, а можно и только с ним)
Премного благодарен :rolleyes:
Ужас какой! Нельзя ничего такого записывать в каунтер! Ещё и других этому учить….
Вынесите в отдельную локацию и вызывайте по GS там, где количество опыта меняется.
опыт = опыт + 100
GS 'уровень'
Nex, ну вот и мне будет полезно что-то новое) почему нельзя в каунтер?
а в ньюлок то же самое можно? если без gs обойтись
Самый удобный и подробный от Алекса, за что ему спасибо.
Допустим, уровень считается в переменной lvl. Очки опыта в exp. Поинты, пусть будет point.
Можно сделать подсчёт через формулу. В большинстве RPG так и делается.
Пишем отдельную локацию. Локация вызывается всякий раз при изменении опыта. Т.е. чтобы увеличить опыт на 5 очков нужно сделать
gosub 'level',5
На сто:
gosub 'level',100
!#level
exp=exp+args[0]
:for
if exp>=exp_marker:
! если количество опыта достигло критического значения:
!уровень повышается
lvl=lvl+1
!добавляем поинтов:
point=point+2
!увеличивается критическое значение (это то значение опыта, при котором в следующий раз сменится уровень. Допустим у тебя уровень повышается через каждые сто опыта):
exp_marker=exp_marker+100
!возвращаемся, чтобы вновь проверить, не достигло ли значение опыта критического значения (это нужно для того, чтобы учесть случаи, когда получен опыт сразу на два и больше уровней)
jump 'for'
end
Способ подъёма уровня через массив мне неизвестен. Вывод на экран всего этого безобразия трудностей вызвать не должен. Выводим строкой:
*pl 'Текущий уровень: , Набрано опыта:, Очков развития:,
До слудующего уровня необходимо опыта: '
Да, ну, а если уровень должен повышаться не через каждые сто очков опыта? Сначала, например, повышается через 50, потом через 100, потом через 200 и т.д. Как это осуществить с помощью этого кода?
!#level
exp=exp+args[0]
:for
if exp>=exp_marker:
! если количество опыта достигло критического значения:
!уровень повышается
lvl=lvl+1
!добавляем поинтов:
point=point+2
!увеличивается критическое значение (это то значение опыта, при котором в следующий раз сменится уровень. Допустим у тебя уровень повышается через каждые сто опыта):
exp_marker=exp_marker+100
!возвращаемся, чтобы вновь проверить, не достигло ли значение опыта критического значения (это нужно для того, чтобы учесть случаи, когда получен опыт сразу на два и больше уровней)
jump 'for'
end
Если только использовать IF
#Уровень_игрока
Опыт = Опыт + args[0]
:FOR
IF Опыт >= Опыт_макс:
Уровень_игрока = Уровень_игрока + 1
IF Уровень_игрока = 1:
Опыт_макс = 50
END
IF Уровень_игрока = 2:
Опыт_макс = 150
END
IF Уровень_игрока = 3:
Опыт_макс = 300
END
IF Уровень_игрока = 4:
Опыт_макс = 400
END
JUMP 'FOR'
END
Белый Шарик:
Наверное так?
If Опыт >= 0 and Опыт <= 40 : Level = 1 elseif Опыт > 40 and Опыт <= 140 : Level = 2 end
Проще надо быть :)
Level = 1
if Опыт > 40: Level = 2
if Опыт > 140: Level = 3
Slavik_44,
любое изменение опыта можно забить в формулу, если, конечно, пороговые значения взяты не от балды.
Формула, где для следующего уровня нужно накопить в два раза больше опыта, чем для предыдущего:
exp_marker=exp_marker*2
Формула, где количество требуемого опыта до следующего уровня зависит от предыдущего уровня:
exp_marker=exp_marker+100*lvl
Поиграйся с формулами в Exel’е и обязательно подберёшь оптимальную.