Перейти к содержанию
Авторизация  
La2Bash

Проверка На Наличие Персонажей В Игре

Рекомендуемые сообщения

Столкнулся с проблемой на сервере: при старте всем даёт сундучок из которого рандомно выпадают итемы, игроки создают персонажей и передают их на основу.

Как ввести проверку на наличие персонажей на аккаунте чтобы итем давало только первому? Сборка фрозен, Interlude.

Мне кажется что нужно просто чуть изменить алгоритм выдачи итема, а конкретно добавить проверку на наличие других персонажей на этом аккаунте, типа SELECT * from characters WHERE account='%s', если true - не даём, если false - даём. Правильно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Столкнулся с проблемой на сервере: при старте всем даёт сундучок из которого рандомно выпадают итемы, игроки создают персонажей и передают их на основу.

Как ввести проверку на наличие персонажей на аккаунте чтобы итем давало только первому? Сборка фрозен, Interlude.

Мне кажется что нужно просто чуть изменить алгоритм выдачи итема, а конкретно добавить проверку на наличие других персонажей на этом аккаунте, типа SELECT * from characters WHERE account='%s', если true - не даём, если false - даём. Правильно?

 

Смысл? Если сделать проверку на персонажей, то будут создавать другие акки. Нужно делать проверку по железу или ИП, но ИП может быть динам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создавать другие акки? У меня письмо приходит на почту с активацией

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Создавать другие акки? У меня письмо приходит на почту с активацией

 

Это мелочи, щас мыл можно насоздавать дофига. Когда сам был игроком, какие только способы не придумывал, чтобы обойти игровой баланс=) Я даже уверен, что до сих пор на серверах выше ИТ работает одна вещь с чампами=)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по hwid можно проверку сделать через ламу?

 

Через котов можно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно верификацию по SMS сделать

 

Тогда тупо онлайн потеряете.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Очень извиняюсь, мб оффтоп, но не проще ли сделать сундучки или вещи из них непередаваемыми?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет так нельзя, там ПВП ПК ЕВЕНТ Коины даёт + лс может выпасть, не катит)

Я думаю если на один аккаунт выдавать по одному сундучку то это чуть добавит гемороя в процесс, есть ещё идеи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может сделать не сразу чтобы выдавало, а только при определенных условиях, к примеру при достижении лвла или при получении нубла

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ещё вопрос - как ява отправляет 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;
   }

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

тут как с бубном не ходи вокруг, игроки найдут способ набивать себе сундуки)

 

выход только как и говорили запрет на передачу(100% вариант)

либо по достижению определенных условий(хотя игроки не поленятся их выполнить)

 

можно попробовать сделать дабл ЛС, которые будут только в сундуке выпадать и не чем не отличаться от оригинальных, просто их нельзя будет передовать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Проблему решил.

Вот кусок кода заменяем его в 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)

 

 

Осталось чуть усложнить регистрацию, но думаю это не проблема.

Изменено пользователем Mister Coder

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

del post)

Изменено пользователем Jol

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...