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;
}
}