La2Bash 87 Опубликовано 16 апреля, 2013 Столкнулся с проблемой на сервере: при старте всем даёт сундучок из которого рандомно выпадают итемы, игроки создают персонажей и передают их на основу. Как ввести проверку на наличие персонажей на аккаунте чтобы итем давало только первому? Сборка фрозен, Interlude. Мне кажется что нужно просто чуть изменить алгоритм выдачи итема, а конкретно добавить проверку на наличие других персонажей на этом аккаунте, типа SELECT * from characters WHERE account='%s', если true - не даём, если false - даём. Правильно? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 16 апреля, 2013 Столкнулся с проблемой на сервере: при старте всем даёт сундучок из которого рандомно выпадают итемы, игроки создают персонажей и передают их на основу. Как ввести проверку на наличие персонажей на аккаунте чтобы итем давало только первому? Сборка фрозен, Interlude. Мне кажется что нужно просто чуть изменить алгоритм выдачи итема, а конкретно добавить проверку на наличие других персонажей на этом аккаунте, типа SELECT * from characters WHERE account='%s', если true - не даём, если false - даём. Правильно? Смысл? Если сделать проверку на персонажей, то будут создавать другие акки. Нужно делать проверку по железу или ИП, но ИП может быть динам. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 16 апреля, 2013 Создавать другие акки? У меня письмо приходит на почту с активацией Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 16 апреля, 2013 по hwid можно проверку сделать через ламу? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 16 апреля, 2013 Создавать другие акки? У меня письмо приходит на почту с активацией Это мелочи, щас мыл можно насоздавать дофига. Когда сам был игроком, какие только способы не придумывал, чтобы обойти игровой баланс=) Я даже уверен, что до сих пор на серверах выше ИТ работает одна вещь с чампами=) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 16 апреля, 2013 по hwid можно проверку сделать через ламу? Через котов можно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 16 апреля, 2013 можно верификацию по SMS сделать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Naik 419 Опубликовано 16 апреля, 2013 можно верификацию по SMS сделать Тогда тупо онлайн потеряете. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
BrainEater 217 Опубликовано 16 апреля, 2013 Очень извиняюсь, мб оффтоп, но не проще ли сделать сундучки или вещи из них непередаваемыми? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 16 апреля, 2013 Нет так нельзя, там ПВП ПК ЕВЕНТ Коины даёт + лс может выпасть, не катит) Я думаю если на один аккаунт выдавать по одному сундучку то это чуть добавит гемороя в процесс, есть ещё идеи? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
deluxe13 16 Опубликовано 16 апреля, 2013 Может сделать не сразу чтобы выдавало, а только при определенных условиях, к примеру при достижении лвла или при получении нубла Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 16 апреля, 2013 Кстати можно Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 16 апреля, 2013 ещё вопрос - как ява отправляет mysql запросы на получение 0 или 1? какой алгоритм? полазил по ядру нашел public synchronized boolean doesCharNameExist(String name) { boolean result = true; Connection con = null; try { con = L2DatabaseFactory.getInstance().getConnection(false); final PreparedStatement statement = con.prepareStatement("SELECT account_name FROM characters WHERE char_name=?"); statement.setString(1, name); final ResultSet rset = statement.executeQuery(); result = rset.next(); statement.close(); rset.close(); } catch(SQLException e) { _log.severe("could not check existing charname"+" "+ e); } finally { CloseUtil.close(con); } return result; } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jumper 551 Опубликовано 16 апреля, 2013 тут как с бубном не ходи вокруг, игроки найдут способ набивать себе сундуки) выход только как и говорили запрет на передачу(100% вариант) либо по достижению определенных условий(хотя игроки не поленятся их выполнить) можно попробовать сделать дабл ЛС, которые будут только в сундуке выпадать и не чем не отличаться от оригинальных, просто их нельзя будет передовать Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
La2Bash 87 Опубликовано 16 апреля, 2013 (изменено) Проблему решил. Вот кусок кода заменяем его в CharacterCreate if (Config.CUSTOM_STARTER_ITEMS_ENABLED) { if (CharNameTable.getInstance().accountCharNumber(getClient().getAccountName()) < 2) { if (newChar.isMageClass()) { for (int[] reward : Config.STARTING_CUSTOM_ITEMS_M) { if (ItemTable.getInstance().createDummyItem(reward[0]).isStackable()) newChar.getInventory().addItem("Starter Items Mage", reward[0], reward[1], newChar, null); else for (int i = 0; i < reward[1]; ++i) newChar.getInventory().addItem("Starter Items Mage", reward[0], 1, newChar, null); } } else { for (int[] reward : Config.STARTING_CUSTOM_ITEMS_F) { if(ItemTable.getInstance().createDummyItem(reward[0]).isStackable()) newChar.getInventory().addItem("Starter Items Fighter", reward[0], reward[1], newChar, null); else for (int i = 0; i < reward[1]; ++i) newChar.getInventory().addItem("Starter Items Fighter", reward[0], 1, newChar, null); } } } } Тут добавлена просто проверка на кол-во персонажей на аккаунте, если меньше двух то даём, если больше - не даём. Проверил, работает. if (CharNameTable.getInstance().accountCharNumber(getClient().getAccountName()) < 2) Осталось чуть усложнить регистрацию, но думаю это не проблема. Изменено 16 апреля, 2013 пользователем Mister Coder Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Jol 13 Опубликовано 18 апреля, 2013 (изменено) del post) Изменено 18 апреля, 2013 пользователем Jol Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты