Перейти к содержимому

Рекомендуемые сообщения

Даааа, чувствую, поорем тут :D

 

ГУИ, ерунда. Ты опыт получил?  Учитываешь дискретность и его вес на разных уровнях? Как списываешь и добавляешь опыт? Где хранишь пока его?

Опыт получил радаром, храню в своей БД, учитываю разное количество опыта разным уровням,выдаю его через КБ, отнимаю тоже через КБ

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Опыт получил радаром, храню в своей БД, учитываю разное количество опыта разным уровням,выдаю его через КБ, отнимаю тоже через КБ

Можешь сдампить в таблицу уровни и левелы по /xp  1L   для nextLevelXp и присобачить в пост?

И по какой формуле считаешь текущий опыт в абсолютных шариках (ед.), зная текущий левел, сайз левела и левелпрогресс?

 

ур.  size

0      17

1      17

2      17

4      24

5      28

6      62

........

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А до какого уровня? Их-то миллионы

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А до какого уровня? Их-то миллионы

ну ешкин кот, у тебя же циклы есть в луа и схрон в файл, шлепни 60 уровней или 100.=)

 

Просто здесь  какая-то подозрительная какашка, которая оговаривает, что уровни как-то получены экспериментально и приблизительно. У нас же есть точный механизм замера благодаря ОС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

ну ешкин кот, у тебя же циклы есть в луа и схрон в файл, шлепни 60 уровней или 100.=)

 

 

Level: 1 ; EXP: 17
Level: 2 ; EXP: 17
Level: 3 ; EXP: 17
Level: 4 ; EXP: 17
Level: 5 ; EXP: 17
Level: 6 ; EXP: 17
Level: 7 ; EXP: 17
Level: 8 ; EXP: 17
Level: 9 ; EXP: 17
Level: 10 ; EXP: 17
Level: 11 ; EXP: 17
Level: 12 ; EXP: 17
Level: 13 ; EXP: 17
Level: 14 ; EXP: 17
Level: 15 ; EXP: 17
Level: 16 ; EXP: 17
Level: 17 ; EXP: 20
Level: 18 ; EXP: 23
Level: 19 ; EXP: 26
Level: 20 ; EXP: 29
Level: 21 ; EXP: 32
Level: 22 ; EXP: 35
Level: 23 ; EXP: 38
Level: 24 ; EXP: 41
Level: 25 ; EXP: 44
Level: 26 ; EXP: 47
Level: 27 ; EXP: 50
Level: 28 ; EXP: 53
Level: 29 ; EXP: 56
Level: 30 ; EXP: 59
Level: 31 ; EXP: 62
Level: 32 ; EXP: 69
Level: 33 ; EXP: 76
Level: 34 ; EXP: 83
Level: 35 ; EXP: 90
Level: 36 ; EXP: 97
Level: 37 ; EXP: 104
Level: 38 ; EXP: 111
Level: 39 ; EXP: 118
Level: 40 ; EXP: 125
Level: 41 ; EXP: 132
Level: 42 ; EXP: 139
Level: 43 ; EXP: 146
Level: 44 ; EXP: 153
Level: 45 ; EXP: 160
Level: 46 ; EXP: 167
Level: 47 ; EXP: 174
Level: 48 ; EXP: 181
Level: 49 ; EXP: 188
Level: 50 ; EXP: 195
Level: 51 ; EXP: 202
Level: 52 ; EXP: 209
Level: 53 ; EXP: 216
Level: 54 ; EXP: 223
Level: 55 ; EXP: 230
Level: 56 ; EXP: 237
Level: 57 ; EXP: 244
Level: 58 ; EXP: 251
Level: 59 ; EXP: 258
Level: 60 ; EXP: 265
Level: 61 ; EXP: 272
Level: 62 ; EXP: 279
Level: 63 ; EXP: 286
Level: 64 ; EXP: 293
Level: 65 ; EXP: 300
Level: 66 ; EXP: 307
Level: 67 ; EXP: 314
Level: 68 ; EXP: 321
Level: 69 ; EXP: 328
Level: 70 ; EXP: 335
Level: 71 ; EXP: 342
Level: 72 ; EXP: 349
Level: 73 ; EXP: 356
Level: 74 ; EXP: 363
Level: 75 ; EXP: 370
Level: 76 ; EXP: 377
Level: 77 ; EXP: 384
Level: 78 ; EXP: 391
Level: 79 ; EXP: 398
Level: 80 ; EXP: 405
Level: 81 ; EXP: 412
Level: 82 ; EXP: 419
Level: 83 ; EXP: 426
Level: 84 ; EXP: 433
Level: 85 ; EXP: 440
Level: 86 ; EXP: 447
Level: 87 ; EXP: 454
Level: 88 ; EXP: 461
Level: 89 ; EXP: 468
Level: 90 ; EXP: 475
Level: 91 ; EXP: 482
Level: 92 ; EXP: 489
Level: 93 ; EXP: 496
Level: 94 ; EXP: 503
Level: 95 ; EXP: 510
Level: 96 ; EXP: 517
Level: 97 ; EXP: 524
Level: 98 ; EXP: 531
Level: 99 ; EXP: 538
Level: 100 ; EXP: 545

 

 

  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Можешь еще за 100 итераций сложить всю экспу и сказать сумму?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

22070

Ага, а Вика предлагает другое число - 18000. Ну ок. Как они там считали, не понятно. Мы получили реальное значение из кода майна, считай, вызовами из ОС.

 

Ну теперь смотри. У меня 30 лвл и я хочу снять в банк 50%  Ты с меня спишешь 15 уровней.

Потом я чарю колбасу на вкусность. У меня остается 1 лвл. Прихожу в банк, забираю свои 15 лвл. Но по факту опыта я верну намного меньше.

 

Как поступишь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ага, а Вика предлагает другое число - 18000. Ну ок. Как они там считали, не понятно. Мы получили реальное значение из кода майна, считай, вызовами из ОС.

 

Ну теперь смотри. У меня 30 лвл и я хочу снять в банк 50%  Ты с меня спишешь 15 уровней.

Потом я чарю колбасу на вкусность. У меня остается 1 лвл. Прихожу в банк, забираю свои 15 лвл. Но по факту опыта я верну намного меньше.

 

Как поступишь?

Хм, вот это я не продумал... Я храню уровни,а надо их переводить в именно в сферки. Реализую.

Ага, а Вика предлагает другое число - 18000. Ну ок. Как они там считали, не понятно. Мы получили реальное значение из кода майна, считай, вызовами из ОС.

 

Кстати, вот 18000 опыта: 5f78626c1a.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хм, вот это я не продумал... Я храню уровни,а надо их переводить в именно в сферки. Реализую.

Вот именно!

 

Кстати, ввел себе /xp 22070 при 0 опыта текущего,    получил  http://puu.sh/iTW2u/f3725ff02a.png.   Не хватило 1й миллионной дольки сферы=)  Где-то там с округлениями и точностью плавает комп.

 

Так что все правильно. Вика неточную инфу дает. Можешь постить на Вику дамп опыта правильный. Молодец!

 

 

П.С. А вот выдал себе еще +1 опыта http://puu.sh/iTWc1/c535362c3e.png

  • Нравится 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Так что все правильно. Вика неточную инфу дает. Можешь постить на Вику дамп опыта правильный. Молодец!

 

На вику постить не смогу, у меня по какой-то непонятной причине очень провисает gamepedia.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

На вику постить не смогу, у меня по какой-то непонятной причине очень провисает gamepedia.

Следующий квест: пройти в вайт-лист на gamepedia.
  • Нравится 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А почему возникает проблема с уровнями?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А почему возникает проблема с уровнями?

Если не знал, то чем выше уровень, тем больше опыта он содержит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Надо просто заставить монстрика узнать алгоритм рассчитывания опыта, и он все сделает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В исходниках покопаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

В исходниках покопаться.

 

 

--ПОДКЛЮЧЕНИЕ КОМПОНЕНТОВ
component=require("component")
radar=component.openperipheral_sensor
cb=component.command_block
--НАСТРОЙКИ
background=0x00ff00
foregroundBANKKEY=0x5A009D
backgroundBANKKKEY=0x00CCCC
foregroundPUTKEY=0xBFFF00
backgroundPUTKEY=0x007BA7
--НАСТРОЙКИ БАЗЫ ДАННЫХ
DBLOGIN="myExperience"
DBPASSWORD="****************************"
DBUSER="EXP"
DBNAME="EXP_USERS_XP"
--ПРОГРУЖЕНИЕ БИБЛИОТЕК
db=require("mydb")
--СОЗДАНИЕ БАЗЫ ДАННЫХ
db.auth(DBLOGIN, DBPASSWORD)
db.createDataBase(DBUSER, DBNAME)
--ФУНКЦИИ
function getUserXP_local(login)
	ta=radar.getPlayerByName(login).all().player.experience
	return ta.level, ta.levelProgress, ta.nextLevelXp
end
function getUserXP_db(login)
	_, data = db.readData(DBUSER, DBNAME, login)
	if data==nil then data=getUserXP_local(login) end
	return tonumber(data)
end
function c(command)
	cb.setCommand(command)
	cb.executeCommand()
end
function setUserLevel(login, level)
	userLevel, LevelProgress, nextLevelXP=getUserXP_local(login)
	if userLevel<level then
		for i=userLevel, level-1 do
			_, _, xp = getUserXP_local(login)
			c("xp "..xp.." "..login)
		end
		return true, "up", "Уровень повышен!"
	elseif userLevel>level then
		c("xp -18000000 "..login)
		matt=userLevel-level
		for i=1, userLevel-matt do
			_, _, xp = getUserXP_local(login)
			c("xp "..xp.." "..login)
		end
		return true, "down", "Уровень понижен!"
	else 
		return false, "У игрока этот же уровень!"
	end
end
function writeLevelToTB(login, level)
	db.createCollum(DBUSER, DBNAME, login)
	return table.unpack({db.writeData(DBUSER, DBNAME, login, level)})
end

 

 

P.S. Кусок, который отвечает за опыт игрока

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ктстаи, Монстр, лучше делай локальные переменные, не нагружай глобальное окружение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А почему возникает проблема с уровнями?

 

В исходниках покопаться.

 

 

Первое: В исходниках вы там вряд ли найдешь формулу. И я не заметил там какой-то прямой зависимости (см. таблицу Монстрика). Там нет четкой формулы типа:

exp = a * L^2 + b * L + c

Несколько уровней может быть по 17 шариков (16 уровней), потом сколько-то уровней идет по +3 шарика, потом по + 5, + 7   +9 и т.д. Дискретно!

 

Там нет плавной зависимости. Это раз.  

 

Второе: Нельзя с игрока снять 134 очка, например. Можно только добавить четкое количество очков командой /xp AlexCC 145  

или /xp AleCC 5L  (добавит 5 уровней) или  /xp AleCC -2L  (снять 2 уровня). 

 

А вот снять какое-то количество очков опыта  /xp -151 AlexCC  НЕ ПОЛУЧИТСЯ!

 

Поэтому нужно всегда при выдаче/снятии опыта знать его абсолютное количество в очках, а не в уровнях.

 

Зная суммарный "вес" текущего уровня (а его можно вычислить из таблы дампа для каждого уровня) мы переводим его в единицы. Например, у нас  35 лвл и еще на полоске есть немного, это 8520 очков для 35 лвл.  Также 36 уровень имеет размер 240 очков. Полоска у нас (прогресс бар заполнен, например, на 0.55)    Значит это еще 132 очка. Итого у нас сейчас 8520 + 240*0.55 = 8652

 

Далее я хочу снять 50% в Банк опыта.   Отнять 4326 я не смогу, так как отнимать в майне можно только целые ЛВЛ. Поэтому   мы игроку отнимаем весь опыт какой у него был (    /xp AlexCC  -(currentLVL+1)L   , станет 0)   и выдаем разницу от того, что было и сколько он положил, то есть /хp AlexCC 4326

 

В Банке опыт тоже хранится в абсолютных единицах, а не в уровнях. Ферштейн?  ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

:smile3:

На вики же есть формула

910b2a7899b16751a8a736e555da84aa.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...