Asummonster 592 Опубликовано: 10 июля, 2015 Даааа, чувствую, поорем тут ГУИ, ерунда. Ты опыт получил? Учитываешь дискретность и его вес на разных уровнях? Как списываешь и добавляешь опыт? Где хранишь пока его? Опыт получил радаром, храню в своей БД, учитываю разное количество опыта разным уровням,выдаю его через КБ, отнимаю тоже через КБ Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 10 июля, 2015 Опыт получил радаром, храню в своей БД, учитываю разное количество опыта разным уровням,выдаю его через КБ, отнимаю тоже через КБ Можешь сдампить в таблицу уровни и левелы по /xp 1L для nextLevelXp и присобачить в пост? И по какой формуле считаешь текущий опыт в абсолютных шариках (ед.), зная текущий левел, сайз левела и левелпрогресс? ур. size 0 17 1 17 2 17 4 24 5 28 6 62 ........ Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 10 июля, 2015 А до какого уровня? Их-то миллионы Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 10 июля, 2015 А до какого уровня? Их-то миллионы ну ешкин кот, у тебя же циклы есть в луа и схрон в файл, шлепни 60 уровней или 100.=) Просто здесь какая-то подозрительная какашка, которая оговаривает, что уровни как-то получены экспериментально и приблизительно. У нас же есть точный механизм замера благодаря ОС. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 10 июля, 2015 ну ешкин кот, у тебя же циклы есть в луа и схрон в файл, шлепни 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 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 10 июля, 2015 Можешь еще за 100 итераций сложить всю экспу и сказать сумму? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 10 июля, 2015 22070 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 10 июля, 2015 22070 Ага, а Вика предлагает другое число - 18000. Ну ок. Как они там считали, не понятно. Мы получили реальное значение из кода майна, считай, вызовами из ОС. Ну теперь смотри. У меня 30 лвл и я хочу снять в банк 50% Ты с меня спишешь 15 уровней. Потом я чарю колбасу на вкусность. У меня остается 1 лвл. Прихожу в банк, забираю свои 15 лвл. Но по факту опыта я верну намного меньше. Как поступишь? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 10 июля, 2015 Ага, а Вика предлагает другое число - 18000. Ну ок. Как они там считали, не понятно. Мы получили реальное значение из кода майна, считай, вызовами из ОС. Ну теперь смотри. У меня 30 лвл и я хочу снять в банк 50% Ты с меня спишешь 15 уровней. Потом я чарю колбасу на вкусность. У меня остается 1 лвл. Прихожу в банк, забираю свои 15 лвл. Но по факту опыта я верну намного меньше. Как поступишь? Хм, вот это я не продумал... Я храню уровни,а надо их переводить в именно в сферки. Реализую. Ага, а Вика предлагает другое число - 18000. Ну ок. Как они там считали, не понятно. Мы получили реальное значение из кода майна, считай, вызовами из ОС. Кстати, вот 18000 опыта: Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 10 июля, 2015 Хм, вот это я не продумал... Я храню уровни,а надо их переводить в именно в сферки. Реализую. Вот именно! Кстати, ввел себе /xp 22070 при 0 опыта текущего, получил http://puu.sh/iTW2u/f3725ff02a.png. Не хватило 1й миллионной дольки сферы=) Где-то там с округлениями и точностью плавает комп. Так что все правильно. Вика неточную инфу дает. Можешь постить на Вику дамп опыта правильный. Молодец! П.С. А вот выдал себе еще +1 опыта http://puu.sh/iTWc1/c535362c3e.png 2 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 11 июля, 2015 Так что все правильно. Вика неточную инфу дает. Можешь постить на Вику дамп опыта правильный. Молодец! На вику постить не смогу, у меня по какой-то непонятной причине очень провисает gamepedia. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
eu_tomat 2 148 Опубликовано: 11 июля, 2015 На вику постить не смогу, у меня по какой-то непонятной причине очень провисает gamepedia.Следующий квест: пройти в вайт-лист на gamepedia. 1 Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SergOmarov 34 Опубликовано: 13 июля, 2015 А почему возникает проблема с уровнями? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 398 Опубликовано: 13 июля, 2015 А почему возникает проблема с уровнями? Если не знал, то чем выше уровень, тем больше опыта он содержит. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 624 Опубликовано: 13 июля, 2015 Надо просто заставить монстрика узнать алгоритм рассчитывания опыта, и он все сделает. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
NEO 541 Опубликовано: 13 июля, 2015 В исходниках покопаться. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Asummonster 592 Опубликовано: 13 июля, 2015 В исходниках покопаться. --ПОДКЛЮЧЕНИЕ КОМПОНЕНТОВ 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. Кусок, который отвечает за опыт игрока Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
LeshaInc 624 Опубликовано: 13 июля, 2015 Ктстаи, Монстр, лучше делай локальные переменные, не нагружай глобальное окружение. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Alex Автор темы 4 683 Опубликовано: 13 июля, 2015 А почему возникает проблема с уровнями? В исходниках покопаться. Первое: В исходниках вы там вряд ли найдешь формулу. И я не заметил там какой-то прямой зависимости (см. таблицу Монстрика). Там нет четкой формулы типа: 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 В Банке опыт тоже хранится в абсолютных единицах, а не в уровнях. Ферштейн? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 748 Опубликовано: 13 июля, 2015 На вики же есть формула Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах