У мя тут важный вопрос по поводу вселенной... Пишу гаму, и делаю систему левлов exp = кол-во минут в игре level = какой у игрока левл Для того чтоб получить новый левл, нужно... Эмм... В общем слушайте, перечитывайте 3 раза, но я хз как вам это объяснить, вот например таблицу такую напишу левл - необходимое кол-во часов для получения левла эээ.... ща... эммм.... *пол часа спустя* 0 - 0 1 - 2 2 - эээ... не, ща... эээ... *ещё пол часа спустя* в общем для 1го левла надо играть 2 часа для 2го левла надо играть ЕЩЁ 4 часа (не всего 4, а ещё 4) для 3го левла надо играть ещё 6 часов для 4го левла надо играть ещё 8 часов для 5го левла надо играть ещё 10 часов для 6го левла надо играть ещё 12 часов В общем всегда +2 Вот нужна формула... Ато что я сделал, выдаёт левл каждые 2 часа exp - кол-во минут, скоко гамал игрок (а оно в формуле и не надо получаецо) level - его текущий левл сколько нужно exp для седующего левла - мозг has gone away during query P.S> моё оно вот need_exp_to_level_up = level*60+120;
цикл же. пишется печенька геймеру, или в данные его на сервере. по интервалу в 1 час - данные обновляются. на сервере - проще. демон crond всё сделает, bash script. не сложнее, чем написать новый левел игры.
altblitz, да чего ты... мне надо знать need_exp_to_level_up в которой хранится кол-во минут необходимое для следующего уровня
satana666, вот ща как у мя, каждые 2 часа левл даётся, а мне не так надо sn0w, я лёгкии/лёхкие/лёгкие (этот русский язык фиг поймёшь) наркотики не юзаю
Ponchik, стараемся, как проще. crond - исполняется раз в час, сутки, месяц. к тому, чтобы данные о посещении юзером сайта - хранить на сайте. в данных пользователя - next_level_up, сравнивается - текущее время и время последнего посещения, которое обновляется при логине юзера. if разница => 2 часа поле в базе данных пользователя level = level++ ------ edit ------ во-первых, отключатся от сервера и тут же заходить по-новой - не сработает. менять время на локальном компе - тоже. сервер точно хранит время.
altblitz, гама не браузерка, на серваке всё со временем нормально, +1 exp каждую минуту, а вот теперь надо подсчитать какой левл давать игроку А именно скоко опыта надо всего для следующего уровня
need_exp_to_level_up = (level+1)*2*60; для первого уровня покажет 120 для второго уровня покажет 240 и тд это в минутах конечно
need_exp_to_level_up = ((level+1)*2 + level*2)*60; а это сколько опыта всего надо.... получается для первого уровня всего надо - 120 для второго - 360 и тд
во, на любимом пыхе смогу вам показать как надо PHP: $next_level = 0; $summ = 0; for($i=0;$i<=20;$i++) { echo "Для $i левла надо играть ещё $next_level часов, всего $summ часов\r\n"; $next_level += 2; $summ += $next_level; } И фот нужна формула, в которую передать левел, и она вернёт кол-во часов, которых нужно всего для игры, эээ.. ну вы поняли Scripter, попробуемс не, не так твоё работает
ошибся, вот так: int total = 0; int level = 17; for (int x = 0; x <= level; x++) { total = total + x*2; }
Может добавление массива, проиндексированного int значением level, наполненного соответствующими данными необходимого времени игры (полного, без ЕЩЁ). Так можно регулировать баланс игры. Высчитывать оставшееся время - очень просто. ptivate int[] lTimes = new int[666]; lTimes[2] = 2; // 2 level = 2 hours lTimes[3] = 6; // 3 level = 6 hours lTimes[4] = 12; // 4 level = 12 hours private int level_of_player = 2; // Текущий уровень игрока private int currentHour = 3; // Текщее игровое время, абстрактно представим public int ToNextLevelTimes() { int aTime = lTimes[(level_of_player + 1)]; // Всего времени до следующего уровня, получаем значение массива по индексу (уровень игрока + 1) int bTime = currentHour - aTime // Вауля! Текущее игровое время - всего времени до следующего уровня! return bTime }
Code: typedef struct _PLAYER { int nLevel; int nRemainedTime; // ... }PLAYER, *PPLAYER; // Primary callback void GameEventCallback(IN PPLAYER pcurrplayer, EVENT event) { if(event == EVENT_TIME_TICK) // каждую минуту например { pcurrplayer->nRemainedTime--; if(pcurrplayer->nRemainedTime <= 0) { pcurrplayer->nLevel++; pcurrplayer->nRemainedTime = 120; } } else if(event == EVENT_PLAYER_JOINED) { // ... } else { // ... } } // Player API // ... int GetPlayerLevelRemain(PPLAYER ppl) { return ppl->nRemainedTime; } int GetPlayerLevel(PPLAYER ppl) { return ppl->nLevel; } // ... кажется я за тебя игру написал и даже не знаю, красивше ли будет если оформить классом?