- Сообщения
- 280
- Реакции
- 46
- Сообщения
- 280
- Реакции
- 46
Вот еще одна задачка..
Сделал в игре опыт и уровни. С опытом проблем нет. А вот не могу прикрутить опыт к уровням правильно. Т.е. чтобы при получении определенного к-ва опыта - получался определенный уровень.
Нашел пару скриптов игр с уровнями - но там такая белиберда, что сам черт ногу сломит. И проверить не возможно, потому что скрипты коцанные..
Суть в чем. Вытащил из одного скрипта из бд таблицу вида:
id: 1 2 3 4 5 6 7
level: 1 2 3 4 5 6 7
exp: 100 200 400 800 1600 3200 6400
(пока правда не пойму зачем тут id, но это не важно). Так вот нужно создать условие, чтобы при определенном уровне считался определенный опыт до уровня.
Делаем запрос в бд где эта таблица с переменными:
$db->Query("SELECT * FROM db_level WHERE id = '1' LIMIT 1");
$level_data = $db->FetchArray();
Есть переменные у юзера для опыта и уровня типа $user_exp и $user_lvl
Создаем в пхп, что
$level_data["level"] = $user_lvl - тоесть приравниваем уровень юзера к необходимому уровню в таблице в бд.
И вот дальше я не пойму как сделать
нужно в соответствии с уровнем (как в таблице и у игрока) сделать соответствие опыта игрока и в таблице. Т.е. если у игрока становится опыта >= необходимого для нового уровня то уровень повышается!
Пример: у меня 3 уровень и 750 опыта. Совершив действия я получил +100 опыта и, соответственно, должен получить 4 уровень.
Просто если тупо прописать в пхп данные насчет каждого уровня и соответствующего опыта - может получиться ерунда (скорее всего так и будет). Нужно чтобы данные брались из таблицы в бд. - КАК ЭТО СДЕЛАТЬ?
Или может у кого есть другие варианты как это сделать? Заранее спасибо!
Сделал в игре опыт и уровни. С опытом проблем нет. А вот не могу прикрутить опыт к уровням правильно. Т.е. чтобы при получении определенного к-ва опыта - получался определенный уровень.
Нашел пару скриптов игр с уровнями - но там такая белиберда, что сам черт ногу сломит. И проверить не возможно, потому что скрипты коцанные..
Суть в чем. Вытащил из одного скрипта из бд таблицу вида:
id: 1 2 3 4 5 6 7
level: 1 2 3 4 5 6 7
exp: 100 200 400 800 1600 3200 6400
(пока правда не пойму зачем тут id, но это не важно). Так вот нужно создать условие, чтобы при определенном уровне считался определенный опыт до уровня.
Делаем запрос в бд где эта таблица с переменными:
$db->Query("SELECT * FROM db_level WHERE id = '1' LIMIT 1");
$level_data = $db->FetchArray();
Есть переменные у юзера для опыта и уровня типа $user_exp и $user_lvl
Создаем в пхп, что
$level_data["level"] = $user_lvl - тоесть приравниваем уровень юзера к необходимому уровню в таблице в бд.
И вот дальше я не пойму как сделать
нужно в соответствии с уровнем (как в таблице и у игрока) сделать соответствие опыта игрока и в таблице. Т.е. если у игрока становится опыта >= необходимого для нового уровня то уровень повышается!
Пример: у меня 3 уровень и 750 опыта. Совершив действия я получил +100 опыта и, соответственно, должен получить 4 уровень.
Просто если тупо прописать в пхп данные насчет каждого уровня и соответствующего опыта - может получиться ерунда (скорее всего так и будет). Нужно чтобы данные брались из таблицы в бд. - КАК ЭТО СДЕЛАТЬ?
Или может у кого есть другие варианты как это сделать? Заранее спасибо!
- Сообщения
- 322
- Реакции
- 72
Что у тебя по конкретному юзеру есть в БД? Уровень и опыт?skroliks написал(а):Вот еще одна задачка..
Сделал в игре опыт и уровни. С опытом проблем нет. А вот не могу прикрутить опыт к уровням правильно. Т.е. чтобы при получении определенного к-ва опыта - получался определенный уровень.
Нашел пару скриптов игр с уровнями - но там такая белиберда, что сам черт ногу сломит. И проверить не возможно, потому что скрипты коцанные..
Суть в чем. Вытащил из одного скрипта из бд таблицу вида:
id: 1 2 3 4 5 6 7
level: 1 2 3 4 5 6 7
exp: 100 200 400 800 1600 3200 6400
(пока правда не пойму зачем тут id, но это не важно). Так вот нужно создать условие, чтобы при определенном уровне считался определенный опыт до уровня.
Делаем запрос в бд где эта таблица с переменными:
$db->Query("SELECT * FROM db_level WHERE id = '1' LIMIT 1");
$level_data = $db->FetchArray();
Есть переменные у юзера для опыта и уровня типа $user_exp и $user_lvl
Создаем в пхп, что
$level_data["level"] = $user_lvl - тоесть приравниваем уровень юзера к необходимому уровню в таблице в бд.
И вот дальше я не пойму как сделать
нужно в соответствии с уровнем (как в таблице и у игрока) сделать соответствие опыта игрока и в таблице. Т.е. если у игрока становится опыта >= необходимого для нового уровня то уровень повышается!
Пример: у меня 3 уровень и 750 опыта. Совершив действия я получил +100 опыта и, соответственно, должен получить 4 уровень.
Просто если тупо прописать в пхп данные насчет каждого уровня и соответствующего опыта - может получиться ерунда (скорее всего так и будет). Нужно чтобы данные брались из таблицы в бд. - КАК ЭТО СДЕЛАТЬ?
Или может у кого есть другие варианты как это сделать? Заранее спасибо!
Можно сделать двумя способами
PHP:
$levels_info = array();
$db->Query("SELECT * FROM db_level");
$i = 1;
while($data = $db->FetchArray()){
$levels_info[] = $data;
$i++;
}
// Теперь в $levels_info у тебя хранится таблица из бд
$expForFourLevel = $levels_info[4]['exp']; // сколько опыта надо для 4-го уровня
Если есть у тебя текущий уровень, то можно сделать так:
PHP:
$nextLevel = $user_lvl + 1;
$db->Query("SELECT * FROM db_level WHERE level = '$nextLevel' LIMIT 1");
$level_data = $db->FetchArray();
$expForFourLevel = $level_data['exp']; // сколько опыта надо для следующего уровня
- Сообщения
- 280
- Реакции
- 46
$nextLevel = $user_lvl + 1;
$db->Query("SELECT * FROM db_level WHERE level = '$nextLevel' LIMIT 1");
$level_data = $db->FetchArray();
$expForLevel = $level_data['exp']; // сколько опыта надо для следующего уровня
Это больше подходит! Только как теперь привязать условие, что если при получении опыта большего, чем нужно для следующего уровня - дается новый уровень? Если я правильно думаю, то надо сделать что-то вроде:
If ($exp (опыт который получили) + $user exp (опыт который у игрока) >= $expforlevel) {
$db->Query("UPDATE db_users_b SET user_lvl = user_lvl + 1 WHERE id = '$usid'");
echo "Вы получили $user_lvl уровень!"
}
(ну синтаксис и оформление правильно я смогу сделать) - главное - правильно ли мыслю??
$db->Query("SELECT * FROM db_level WHERE level = '$nextLevel' LIMIT 1");
$level_data = $db->FetchArray();
$expForLevel = $level_data['exp']; // сколько опыта надо для следующего уровня
Это больше подходит! Только как теперь привязать условие, что если при получении опыта большего, чем нужно для следующего уровня - дается новый уровень? Если я правильно думаю, то надо сделать что-то вроде:
If ($exp (опыт который получили) + $user exp (опыт который у игрока) >= $expforlevel) {
$db->Query("UPDATE db_users_b SET user_lvl = user_lvl + 1 WHERE id = '$usid'");
echo "Вы получили $user_lvl уровень!"
}
(ну синтаксис и оформление правильно я смогу сделать) - главное - правильно ли мыслю??
- Сообщения
- 322
- Реакции
- 72
>> $db->Query("UPDATE db_users_b SET user_lvl = user_lvl + 1 WHERE id = '$usid'");skroliks написал(а):$nextLevel = $user_lvl + 1;
$db->Query("SELECT * FROM db_level WHERE level = '$nextLevel' LIMIT 1");
$level_data = $db->FetchArray();
$expForLevel = $level_data['exp']; // сколько опыта надо для следующего уровня
Это больше подходит! Только как теперь привязать условие, что если при получении опыта большего, чем нужно для следующего уровня - дается новый уровень? Если я правильно думаю, то надо сделать что-то вроде:
If ($exp (опыт который получили) + $user exp (опыт который у игрока) >= $expforlevel) {
$db->Query("UPDATE db_users_b SET user_lvl = user_lvl + 1 WHERE id = '$usid'");
echo "Вы получили $user_lvl уровень!"
}
(ну синтаксис и оформление правильно я смогу сделать) - главное - правильно ли мыслю??
Не забудь еще обновить текущий опыт пользователя.
И возможно надо сделать после этого еще одну проверку, вдруг пользователь получил сразу несколько уровней.
- Сообщения
- 280
- Реакции
- 46
- Сообщения
- 322
- Реакции
- 72
Так же как и уровеньskroliks написал(а):Я попробовал - все работает! Что бы я без Вас делал!
А как обновить текущий опыт пользователя? Это команда какая-то?
$db->Query("UPDATE db_users_b SET user_lvl = user_lvl + 1 WHERE id = '$usid'");
$db->Query("UPDATE db_users_b SET user_exp = user_exp + '$exp' WHERE id = '$usid'");
Либо одним запросом
$db->Query("UPDATE db_users_b SET user_lvl = user_lvl + 1, user_exp = user_exp + '$exp' WHERE id = '$usid'");
- Сообщения
- 280
- Реакции
- 46
- Сообщения
- 280
- Реакции
- 46
Модуль надо писать. По типу того, что мы тут обсуждали.. Это парой строк не опишешь..alexsoft59 написал(а):И всем вопрос,как сделать апгрейд фруктов,чтоб он после апгрейда стал давать больше урожая? Че то совсем ни одна мысля в голову не идет,подскажет может кто?
У тебя каждый фрукт приносит определенное к-во плодов в час. Нужно сделать так, чтобы когда у фрукта повышался уровень - переменная, которая отвечает за к-во плодов в час изменялась на нужное..
Так понятно что надо писать,только не пойму сам процесс этого апгрейда как происходить должен вот??skroliks написал(а):Модуль надо писать. По типу того, что мы тут обсуждали.. Это парой строк не опишешь..
У тебя каждый фрукт приносит определенное к-во плодов в час. Нужно сделать так, чтобы когда у фрукта повышался уровень - переменная, которая отвечает за к-во плодов в час изменялась на нужное..
вискас сделал такое) вип аккант называется) один оплатой серебром другой оплатой паерalexsoft59 написал(а):И всем вопрос,как сделать апгрейд фруктов,чтоб он после апгрейда стал давать больше урожая? Че то совсем ни одна мысля в голову не идет,подскажет может кто?
- Сообщения
- 280
- Реакции
- 46
Я думаю он немного не об этом..kvozimir написал(а):вискас сделал такое) вип аккант называется) один оплатой серебром другой оплатой паер![]()
Что именно тебе не понятно? Делаешь возле каждого фрукта кнопочку "Апгрейд" - при нажатии на нее списывается с баланса необходимая сумма и у фрукта меняются параметры.. Можно для апгрейда отдельную вкладку с фруктами сделать и кнопочками..alexsoft59 написал(а):Так понятно что надо писать,только не пойму сам процесс этого апгрейда как происходить должен вот??
Суть только в чем - у тебя только один фрукт покупать можно одного вида или много? Просто если много и они у тебя все в одном слоте - тогда нужно апгрейдить сразу все - по одному будет проблематично.. Как вариант - возможность покупать только 1 фрукт каждого вида и вместо покупки второго - апгрейд.. Но по сути это ничего не меняет.. Что у тебя будет 1 фрукт и покупать ему апгрейды, что будет возможность покупать много фруктов - тогда прибыль тоже увеличивается - смысл один и тот же..
Так в этом то и проблема,что нужно каждый фрукт по отдельности делать апгрейд,все то это не велика проблема сделать,а это проблематично и даже не понятно как это должно выглядеть...) Все проапгрейдить это вполне просто можно чуточку переписать модуль апгрейда аккаунта и все...))skroliks написал(а):Я думаю он немного не об этом..
Что именно тебе не понятно? Делаешь возле каждого фрукта кнопочку "Апгрейд" - при нажатии на нее списывается с баланса необходимая сумма и у фрукта меняются параметры.. Можно для апгрейда отдельную вкладку с фруктами сделать и кнопочками..
Суть только в чем - у тебя только один фрукт покупать можно одного вида или много? Просто если много и они у тебя все в одном слоте - тогда нужно апгрейдить сразу все - по одному будет проблематично.. Как вариант - возможность покупать только 1 фрукт каждого вида и вместо покупки второго - апгрейд.. Но по сути это ничего не меняет.. Что у тебя будет 1 фрукт и покупать ему апгрейды, что будет возможность покупать много фруктов - тогда прибыль тоже увеличивается - смысл один и тот же..
- Сообщения
- 322
- Реакции
- 72
Делать отдельную колонку для подсчета улучшенных деревьев. При сборе смотреть кол-во улучшенных, умножать их на некий коэффициент и добавлять к собранным фруктамalexsoft59 написал(а):Так в этом то и проблема,что нужно каждый фрукт по отдельности делать апгрейд,все то это не велика проблема сделать,а это проблематично и даже не понятно как это должно выглядеть...) Все проапгрейдить это вполне просто можно чуточку переписать модуль апгрейда аккаунта и все...))