Показ количества перосонажей при выборе сервера. - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Пользователи Календарь Все разделы прочитаны
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.

Ответ
Опции темы
Непрочитано 12.11.2011, 23:34   #1
Аватар для Mifesto
Пользователь

Автор темы (Топик Стартер) Показ количества перосонажей при выборе сервера.

В ХФ вместо пинга выводиться количество персонажей на сервере.
Суть проблемы в том что есть пакеты ГСа и ЛСа, есть сама структура пакета СерверЛист.

Название пакета на лыже ReplyCharacters.java, на лыже отправляеться с
com/l2jserver/gameserver/LoginServerThread.java

Суть проблеммы в том что не могу найти места откуда отправлять пакет от ГСа (с количеством персонажей на нем данного аккаунта) на Лс в сборках Феникс.

Сами пакеты брал с Лыжы и переделывал ан феникс.
Mifesto вне форума Отправить сообщение для Mifesto с помощью ICQ Ответить с цитированием
Непрочитано 13.11.2011, 00:03   #2
Аватар для Z3oM
Пользователь

По умолчанию Re: Показ количества перосонажей при выборе сервера.

Можно код?
Z3oM вне форума Ответить с цитированием
Непрочитано 13.11.2011, 01:10   #3
Аватар для Mifesto
Пользователь

Автор темы (Топик Стартер) Re: Показ количества перосонажей при выборе сервера.

loginserver\gameservercon\gspackets\ReplyCharacter s.java
Код:
package l2open.loginserver.gameservercon.gspackets;

import l2open.loginserver.gameservercon.AttGS;
import l2open.loginserver.LoginController;
/**
 * @author mrTJO
 * Thanks to mochitto
 */
public class ReplyCharacters extends ClientBasePacket
{
	private AttGS gameserver;
	public ReplyCharacters(byte[] decrypt, AttGS gameserver)
	{
		super(decrypt, gameserver);
		this.gameserver = gameserver;
	}

	@Override
	public void read()
	{
		String account = readS();
		int chars = readC();
		int charsToDel = readC();
		long[] charsList = new long[charsToDel];
		for (int i = 0; i < charsToDel; i++)
		{
			charsList[i] = (long)readF();
		}
		LoginController.getInstance().setCharactersOnServer(account, chars, charsList, gameserver.getServerId());
	}
}
gameserver\loginservercon\gspackets\ReplyCharacter s.java
Код:
package l2open.gameserver.loginservercon.gspackets;

import java.util.List;
/**
 * @author mrTJO
 * Thanks to mochitto
 */
public class ReplyCharacters extends GameServerBasePacket
{
	
	public ReplyCharacters(String account, int chars, List<Long> timeToDel)
	{
		writeC(0x0f);
		writeS(account);
		writeC(chars);
		writeC(timeToDel.size());
		for (long time : timeToDel)
		{
			writeF((double)time);
		}
	}	
}
loginserver\LoginController.java
Код:
*******
public void setCharactersOnServer(String account, int charsNum, long[] timeToDel, int serverId)
	{
		L2LoginClient client = _loginServerClients.get(account);
		
		if (client == null)
			return;
		
		if (charsNum > 0)
			client.setCharsOnServ(serverId, charsNum);
		
		if (timeToDel.length > 0)
			client.serCharsWaitingDelOnServ(serverId, timeToDel);
	}
*******
loginserver\L2LoginClient.java
Код:
**********
private Map<Integer, Integer> _charsOnServers;
private Map<Integer, long[]> _charsToDelete;
**********
public void setCharsOnServ(int servId, int chars)
	{
		if (_charsOnServers == null)
			_charsOnServers = new HashMap<Integer, Integer>();
		_charsOnServers.put(servId, chars);
	}
	
	public Map<Integer, Integer> getCharsOnServ()
	{
		return _charsOnServers;
	}
	
	public void serCharsWaitingDelOnServ(int servId, long[] charsToDel)
	{
		if (_charsToDelete == null)
			_charsToDelete = new HashMap<Integer, long[]>();
		_charsToDelete.put(servId, charsToDel);
	}
	
	public Map<Integer, long[]> getCharsWaitingDelOnServ()
	{
		return _charsToDelete;
	}
********************

В каком файле фени мне написать данное обращение к пакету.....
в Лыже отправка идет:
com\l2jserver\gameserver\LoginServerThread.java
Код:
*************************************
case 0x05:
							RequestCharacters rc = new RequestCharacters(decrypt);
							getCharsOnServer(rc.getAccount());
							break;
***************************************
private void getCharsOnServer(String account)
	{
		Connection con = null;
		int chars = 0;
		List<Long> charToDel = new ArrayList<Long>();
		try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement statement = con.prepareStatement("SELECT deletetime FROM characters WHERE account_name=?");
			statement.setString(1, account);
			ResultSet rset = statement.executeQuery();
			while (rset.next())
			{
				chars++;
				long delTime = rset.getLong("deletetime");
				if (delTime != 0)
					charToDel.add(delTime);
			}
			rset.close();
			statement.close();
		}
		catch (SQLException e)
		{
			_log.log(Level.WARNING, "Exception: getCharsOnServer: " + e.getMessage(), e);
		}
		finally
		{
			L2DatabaseFactory.close(con);
		}
		
		ReplyCharacters rec = new ReplyCharacters(account, chars, charToDel);
		try
		{
			sendPacket(rec);
		}
		catch (IOException e)
		{
			if (Config.DEBUG)
				_log.log(Level.WARNING, "", e);
		}
		
	}
****************************************
Вот вроде весь код дал, в пакетах не силен только учусь.....
Mifesto вне форума Отправить сообщение для Mifesto с помощью ICQ Ответить с цитированием
Непрочитано 13.11.2011, 08:29   #4
Аватар для Z3oM
Пользователь

По умолчанию Re: Показ количества перосонажей при выборе сервера.

Ну для начало нужен коннект к обращению к базе, потом запрос.
Сатри!

Код:
try
		{
			con = L2DatabaseFactory.getInstance().getConnection();
			PreparedStatement statement = con.prepareStatement("SELECT deletetime FROM characters WHERE account_name=?");
			statement.setString(1, account);
			ResultSet rset = statement.executeQuery();
			while (rset.next())
			{
				chars++;
				long delTime = rset.getLong("deletetime");
				if (delTime != 0)
					charToDel.add(delTime);
			}
			rset.close();
			statement.close();
		}
Я так понял по запросу тут время удаления чара? чтоль? Опять же в Цикле тут хз не понятно указывает чтоль на колличество поставленный чаров на удаление? Я понять не могу. Во первых нужен запрос вот такой
Код:
SELECT SUM(online) FROM characters
как то так! Тогда база тебе вернет сумму активных чаров те-кто в игре! Опять же

Код:
LoginServerThread.java
Я так понял это уже ТОГДА когда мы уже выбрали сервер!
Значит нужно искать другой файл отвечающий за это.
Все что ты предоставил ты показал не те файлы это уже при заходе на сервер! Не проканает. Исчи ближе к заходу.

Добавлено через 11 минут
Опять же не могу понять почему в Цикле while chars++; стоит инкримент. Думаю не нужно объяснять что это такое.
Код:
while (rset.next())
За что отвечает это условие за выход? чтоле? понять не могу до кокого состояния будет крутиться цикл?

Добавлено через 12 минут
А если тебе нужно смотреть пакеты с количеством персонажей то ты не там роешь кажется

Добавлено через 16 минут
Рой в L2Player.java в пакете
Код:
l2p.gameserver.model

Последний раз редактировалось Z3oM; 13.11.2011 в 08:46. Причина: Добавлено сообщение
Z3oM вне форума Ответить с цитированием
Непрочитано 13.11.2011, 09:18   #5
Аватар для linliss
Герой

По умолчанию Re: Показ количества перосонажей при выборе сервера.

Цитата:
Сообщение от kasik Посмотреть сообщение
Суть проблеммы в том что не могу найти места откуда отправлять пакет от ГСа (с количеством персонажей на нем данного аккаунта) на Лс в сборках Феникс.
перед отправкой пакета ServerList(LS), посылаем на GS пакет с акаунтом, на GSe берем нужные данные и оправляем обрано на LS, и после этого уже должен отсылатся пакет ServerList

ЗЫ: Z3oM учи яву, не позорься...
linliss вне форума Ответить с цитированием
Непрочитано 13.11.2011, 10:21   #6
Аватар для Z3oM
Пользователь

По умолчанию Re: Показ количества перосонажей при выборе сервера.

Цитата:
Сообщение от linliss Посмотреть сообщение
ЗЫ: Z3oM учи яву, не позорься...
Наверное =) Я учу а я что та не правильно сказал? Именно по синтаксису java?

Добавлено через 1 минуту
Я наверное суть проблемы не правильно понял.

Последний раз редактировалось Z3oM; 13.11.2011 в 10:28. Причина: Добавлено сообщение
Z3oM вне форума Ответить с цитированием
Непрочитано 13.11.2011, 11:14   #7
Изгнанные

По умолчанию Re: Показ количества перосонажей при выборе сервера.

Когда обратились с предложением "реализовать онлайн при входе в игру" (как на Астериосе) к Револтим, то они вроде опытные кодеры не смогли это сделать. Хотелось бы узнать, на этом форуме кто-то знает как это сделать? И как?
Gambit_J вне форума Отправить сообщение для Gambit_J с помощью ICQ Отправить сообщение для Gambit_J с помощью Skype™ Ответить с цитированием
Непрочитано 13.11.2011, 11:44   #8
Аватар для linliss
Герой

По умолчанию Re: Показ количества перосонажей при выборе сервера.

Цитата:
Сообщение от Defuse Посмотреть сообщение
Когда обратились с предложением "реализовать онлайн при входе в игру" (как на Астериосе) к Револтим, то они вроде опытные кодеры не смогли это сделать. Хотелось бы узнать, на этом форуме кто-то знает как это сделать? И как?
так-же как и с кол. чаров на акаунте.... перед отправкой ServerList берем из ГСа количество онлайна

int online = L2World.getAllPlayersCount();
linliss вне форума Ответить с цитированием
Непрочитано 13.11.2011, 12:09   #9
Аватар для Ro_0TT
Супергерой

По умолчанию Re: Показ количества перосонажей при выборе сервера.

Цитата:
Сообщение от Defuse Посмотреть сообщение
Когда обратились с предложением "реализовать онлайн при входе в игру" (как на Астериосе) к Револтим, то они вроде опытные кодеры не смогли это сделать. Хотелось бы узнать, на этом форуме кто-то знает как это сделать? И как?
Револьты - это сборище нубов, язык не поворачивается называть их кодерами.
Онлайн при входе в игру уже обсуждали как сделать и не раз и к вопросу ТС'а это не имеет никакого отношения. Юзаем поиск.

ТС'у поссмотрите как реализовано это в лыже. По факту:
1. Отсылаем запрос ГС'у на получения кол-во чаров. (пакеты логин сервера в логин сервере)
2. Обрабатываем запрос на стороне ГС'а (пакеты логин-сервера в гейм сервере).
3. Отправляем данные логин серверу (пакеты гейм сервера в гейм сервере).
4. Обрабатываем данные на стороне логин сервера (пакеты гейм сервера в логин сервере).
5. После отображения серверов циклично отображаем кол-во персонажей на серверах.
__________________
Ищу работу: Java-разработчик Skype: ro_0tt
Ro_0TT вне форума Отправить сообщение для Ro_0TT с помощью ICQ Отправить сообщение для Ro_0TT с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Непрочитано 13.11.2011, 12:31   #10
Изгнанные

По умолчанию Re: Показ количества перосонажей при выборе сервера.

Цитата:
Сообщение от linliss Посмотреть сообщение
так-же как и с кол. чаров на акаунте.... перед отправкой ServerList берем из ГСа количество онлайна

int online = L2World.getAllPlayersCount();
Да я то в яве не шарю=) Я задал такой вопрос, чтобы лишний раз убедится что револы "сборище нубов" как сказал рут Так как меня удивило это, что такую простую вещь они не смогли реализовать.

Последний раз редактировалось Gambit_J; 13.11.2011 в 12:32. Причина: Добавлено сообщение
Gambit_J вне форума Отправить сообщение для Gambit_J с помощью ICQ Отправить сообщение для Gambit_J с помощью Skype™ Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При выборе сервера их ДВА О_О stopsay Lineage II 1 13.02.2011 02:44
Виснет при выборе сервера Mangos Lineage II 3 13.07.2010 22:05
Зависает при выборе сервера. agentrol Серверная часть 14 07.06.2010 11:36
Проблема при выборе сервера DarkSkeleton Серверная часть 5 28.01.2010 16:48
Останавливается на выборе сервера не входит в игру RikkiTikkyTa Lineage II 2 11.01.2010 15:38


© 2007–2019 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 11:02. Часовой пояс GMT +3.

Вверх