Как сделать систему уровней?
|
|
Don_Alexey | Дата: Понедельник, 22 Июля 2013, 22:37 | Сообщение # 1 |
заслуженный участник
Сейчас нет на сайте
| Привет, как правильно сделать уровни? В бд или прописать в файле? Я иммею ввиду: кол—во опыта для уровня, награда и т.д.
Офф. Сайт Битва за Олейрент - Это мой сайт посвящённый серии игр Битва за Олейрент. Видео прохождение игр - Это мой сайт посвящённый прохождению игр.
|
|
| |
Faraon | Дата: Понедельник, 22 Июля 2013, 22:54 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| Привет, прости если я не прав, я в етом полний ноль, но я думаю что можна зделать проверку по опиту, тоесть: 1lvl = 0 ( 0 - ето очки опита) 2lvl = 500 3lvl = 1 000 4lvl = 2 000 и так дале ...
Например наш персонаж на 1lvl и тока что он набрал больше 500 очков, то он должен перейти на уровень 2 Делаем проверку, если очков больше 500 то персонажу в базу приписиваем + один уровень и EV для повишения статов. Я думаю что так зделаю у сябя в браузерке! Жду от тебя коментаря. Наверное не очень хороший спосиб!
|
|
| |
last2424 | Дата: Понедельник, 22 Июля 2013, 22:58 | Сообщение # 3 |
30 мл. блоков
Сейчас нет на сайте
| Faraon, Поправлю больше или равно 500 то поднимаем уровни и так с каждым.
Добавлено (22.07.2013, 22:58) --------------------------------------------- Ну, а на php это выглядит как то так: Код <? $lvl = 1; $xp = 0; $maxp = 500; if($xp >= $maxp){ $lvl + 1; $maxp + 1000; $xp = 0; } ?>
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Понедельник, 22 Июля 2013, 23:03 |
|
| |
Faraon | Дата: Понедельник, 22 Июля 2013, 22:59 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| например if ( $exp > 500) $lvl = 1; if ( $exp > 1 000) $lvl = 1; if ( $exp > 2 000) $lvl = 1; if ( $exp > 3 500) $lvl = 1;
$exp // свой опыт Я собираюсь выводить с таблици "users" поле "exp" и присваивать ему переменную $exp а потом делать проверку которую я написал с верху.
Сообщение отредактировал Faraon - Вторник, 23 Июля 2013, 01:43 |
|
| |
last2424 | Дата: Понедельник, 22 Июля 2013, 22:59 | Сообщение # 5 |
30 мл. блоков
Сейчас нет на сайте
| P.S. писал на скорою руку код надеюсь без ошибок.
Предупреждение: всё что я написал в зачёркнутом виде является шуткой и никак не пытает обидеть того к кому обращаются.(нет)
Сообщение отредактировал last2424 - Понедельник, 22 Июля 2013, 23:02 |
|
| |
HerrPotapov | Дата: Вторник, 23 Июля 2013, 19:50 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Don_Alexey, по-моему никто не понял вопроса. По-крайней мере мне кажется, что автор о другом спрашивает. Необходимо хранить данные о необходимом для получения нового уровня опыте и о награде при достижении этого уровня. Я думаю это можно реализовать очень просто. Упрощенный вид: награда это один предмет.
Тогда создаем таблицу levels_data: int level (primary key), int exp_required, int reward FK В reward храним id предмета который выдаем персонажу. Можно добавить еще например поле reward_money и выдавать игроку еще и деньги.
После каждого действия, ведущего к получению опыта (окончание боя, использование какого-нибудь свитка и т.п.) запускаем функцию типа этой
Код function check_level_up($current_level, $current_exp){ $current_level++; $query = "SELECT * FROM levels_data WHERE level = " . $current_level . ""; /*Делаем запрос к БД, обрабатываем полученные данные и пакуем их в переменную $level_data*/ if($level_data['exp_required'] <= $current_exp){ /*Делаем левел-ап персонажу. Тут уже мало что можно написать, все зависит от архитектуры приложения.*/
/*Типа ООП стиль*/ $user->give_item($level_data['reward']); $user->give_money($level_data['reward_money']); $user->increase_level();
/* Еще вариант */ $user->level_up($level_data);
/*А можно просто вернуть TRUE и уже разбираться с левел-апом там, откуда вызывали функцию*/ return TRUE; }else{ return FALSE; } }
Discord: alpotapov#1741
Интервью с разработчиком WarCastle - Читаем и вникаем!
Сообщение отредактировал HerrPotapov - Вторник, 23 Июля 2013, 19:52 |
|
| |