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

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

Ответ
Опции темы
Непрочитано 28.09.2013, 19:18   #1
Аватар для L2J
Пользователь

Автор темы (Топик Стартер) Запись фракции

Подскажите пожалуйста, куда идет запись фракции и как она записывается в виде букв или цифр?
вот код:
package l2r.gameserver.gve.model.instances;
 
import l2r.gameserver.ai.CtrlIntention;
import l2r.gameserver.gve.GveConfig;
import l2r.gameserver.gve.managers.FactionManager;
import l2r.gameserver.model.Player;
import l2r.gameserver.model.base.Experience;
import l2r.gameserver.model.instances.NpcInstance;
import l2r.gameserver.network.serverpackets.NpcHtmlMessage;
import l2r.gameserver.network.serverpackets.components.CustomMessage;
import l2r.gameserver.templates.npc.NpcTemplate;
 
/**
 * @date 29.02.12
 * @time 16:37
 */
public class FactionManagerInstance extends NpcInstance
{
	public FactionManagerInstance(int objectId, NpcTemplate template)
	{
		super(objectId, template);
	}
 
	private enum Cmd
	{
		faction_select_good,
		faction_select_evil
	}
 
	@Override
	public void onBypassFeedback(Player player, String command)
	{
		if (!isInRange(player, INTERACTION_DISTANCE))
		{
			player.getAI().setIntention(CtrlIntention.AI_INTENTION_ATTACK, this);
			player.sendActionFailed();
			return;
		}
 
		try
		{
			Cmd cmd = Cmd.valueOf(command);
 
			switch (cmd)
			{
				case faction_select_evil:
				case faction_select_good:
 
					if (player.getFaction() == FactionManager.Faction.ADMIN)
					{
						if (cmd == Cmd.faction_select_evil)
						{
							FactionManager.Faction.EVIL.sendHome(player);
						}
						else
						{
							FactionManager.Faction.GOOD.sendHome(player);
						}
 
						return;
					}
 
					// если фракция не является не установленной
					if (player.getFaction() != FactionManager.Faction.UNSET)
					{
						if (player.getAdena() < GveConfig.GveFactionChangePrice)
						{
							player.sendMessage(new CustomMessage("l2r.gve.fractionmanger.lowadena", player).addNumber(GveConfig.GveFactionChangePrice));
							return;
						}
 
						if (player.getClan() != null)
						{
							player.sendMessage(new CustomMessage("l2r.gve.fractionmanger.isinclan", player));
							return;
						}
 
						if (player.getParty() != null)
						{
							player.getParty().removePartyMember(player, false);
						}
 
						player.reduceAdena(GveConfig.GveFactionChangePrice, true);
					}
					else
					{
						// устанавливаем лвл тут, чтобы наверняка избежать эксплойта незареганных чаров.
						player.addExpAndSp(Experience.LEVEL[GveConfig.GvePlayerLevel], 0);
					}
 
					FactionManager.getInstance().setFaction(player, cmd == Cmd.faction_select_good ? FactionManager.Faction.GOOD : FactionManager.Faction.EVIL);
					break;
			}
		} catch (IllegalArgumentException iae)
		{
		}
	}
 
	@Override
	public void showChatWindow(Player player, int val, Object... replace)
	{
		player.sendPacket(new NpcHtmlMessage(player, this, "faction/manager.htm", val));
	}
}
 
Code: Java
package l2r.gameserver.gve.managers;
 
import l2r.commons.util.Rnd;
import l2r.gameserver.gve.GveConfig;
import l2r.gameserver.model.Player;
import l2r.gameserver.utils.Location;
 
public class FactionManager
{
	public static final int ITEM_COIN_LV1 = 20977;
 
	private static FactionManager _instance;
 
	public static FactionManager getInstance()
	{
		return _instance == null ? (_instance = new FactionManager()) : _instance;
	}
 
	private FactionManager()
	{
	}
 
	public void setFaction(Player player, Faction faction)
	{
		player.setFaction(faction);
		player.getFaction().sendHome(player);
		player.setTitle(faction == Faction.GOOD ? "Light" : "Dark");
	}
 
	public static enum Faction
	{
		GOOD("Light", GveConfig.GveBaseLight),
		EVIL("Dark", GveConfig.GveBaseDarkk),
		UNSET("", GveConfig.GveBaseUnset),
		ADMIN("[GM]", GveConfig.GveBaseUnset);
 
		private Location[] spawns;
		private String name;
 
		Faction(String n, Location... loc)
		{
			spawns = loc;
			name = n;
		}
 
		public static Faction getFactionByOrdinal(int i)
		{
			return values()[i];
		}
 
		public Location getLocation()
		{
			return Location.findAroundPosition(spawns[Rnd.get(spawns.length)], 200, 0);
		}
 
		public String getName()
		{
			return name;
		}
 
		public void sendHome(Player player)
		{
			if (player.getFaction() != this && player.getFaction() != ADMIN)
			{
				return;
			}
 
			player.teleToLocation(getLocation());
		}
	}
 
	public static enum Rank
	{
		// название, нужно_очков, потеря_при_смерти, награда_за_убийство, надбавка_к_цене_чара, колво_мест
		leader("Военачальник", 360800, 3900, 3806, 15, 1),
		commander("Командующий", 321600, 3629, 3171, 10, 3),
		general("Генерал", 282700, 2687, 2643, 8, 10),
		officer5("Офицер 5-ранга", 244100, 1991, 2203, 5, 30),
		officer4("Офицер 4-ранга", 205850, 1475, 1836, 4, 50),
		officer3("Офицер 3-ранга", 172250, 1092, 1530, 4, 70),
		officer2("Офицер 2-ранга", 139350, 808, 1275, 3, 90),
		officer1("Офицер 1-ранга", 107050, 598, 1062, 3, 110),
		soldier1("Воин 1-ранга", 75400, 443, 885, 2, -1),
		soldier2("Воин 2-ранга", 52800, 281, 632, 2, -1),
		soldier3("Воин 3-ранга", 34850, 178, 452, 2, -1),
		soldier4("Воин 4-ранга", 21390, 113, 323, 1, -1),
		soldier5("Воин 5-ранга", 11750, 72, 231, 1, -1),
		soldier6("Воин 6-ранга", 5495, 46, 165, 1, -1),
		soldier7("Воин 7-ранга", 2110, 29, 118, 0, -1),
		soldier8("Воин 8-ранга", 700, 19, 84,  0, -1),
		soldier9("Воин 9-ранга", 0, 12, 60, 0, -1);
 
		public final String _name;
		public final int needPoints;
		public final int adenaInc, maxCount;
		public final int _pointsLoss, _pointsGain;
 
		Rank(String name, int minPoints, int pointsLoss, int pointsGain, int aInc, int mCount)
		{
			_name = name;
			needPoints = minPoints;
			adenaInc = aInc;
			maxCount = mCount;
			_pointsLoss = pointsLoss;
			_pointsGain = pointsGain;
		}
 
		public static Rank getRankForPlayer(Player player)
		{
			int factionRatingRank = player.getVarInt("fSpecialRank", -1);
 
			if(factionRatingRank >= 0)
			{
				return values()[factionRatingRank];
			}
 
			for(Rank r : Rank.values())
			{
				if(player.getFamePoints() >= r.needPoints && r.maxCount < 0)
					return r;
			}
 
			return soldier9;
		}
	}
}
 
Code: Java
И еще, в чем ошибка, если выбираешь одним персонажем любую фракцию, а потом создаешь нового чара(хоть сколько), они все сразу же без выбора будут за выбранную фракцию?
L2J вне форума Ответить с цитированием
Непрочитано 28.09.2013, 20:42   #2
Аватар для Mifesto
Пользователь

По умолчанию Re: Запись фракции

данном коде нет записи фракций в БД, тут есть присвоение фракции объекту которая определена с помощью Enum Faction.

Думаю что она сохраняется в Player.java
Mifesto вне форума Отправить сообщение для Mifesto с помощью ICQ Ответить с цитированием
Сказали спасибо:
Непрочитано 28.09.2013, 21:01   #3
Аватар для L2J
Пользователь

Автор темы (Топик Стартер) Re: Запись фракции

Благодарю, а что на счет второй проблемы?
L2J вне форума Ответить с цитированием
Непрочитано 28.09.2013, 21:45   #4
Аватар для n3k0nation
Antihero

По умолчанию Re: Запись фракции

Цитата:
Сообщение от L2J Посмотреть сообщение
Благодарю, а что на счет второй проблемы?
Привязка фракции к аккаунту, а не к персонажу.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 28.09.2013, 22:01   #5
Аватар для L2J
Пользователь

Автор темы (Топик Стартер) Re: Запись фракции

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
Привязка фракции к аккаунту, а не к персонажу.
Возможно
Попозже, протестирую, отпишусь
L2J вне форума Ответить с цитированием
Непрочитано 28.09.2013, 22:03   #6
Аватар для Gaikotsu
Герой

По умолчанию Re: Запись фракции

или как вариант данные о фракции хранятся в static переменной
Gaikotsu вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 28.09.2013, 22:14   #7
Аватар для n3k0nation
Antihero

По умолчанию Re: Запись фракции

Цитата:
Сообщение от Gaikotsu Посмотреть сообщение
или как вариант данные о фракции хранятся в static переменной
Даже, если бы был статик, то персонажи массово не могли бы выбрать себе фракцию, т.к. все это хранится в Player-модели. Грубо говоря, кто первый успел - у того и тапки.
Вопрос в том - какой идиот додумался сделать привязку фракций к аккаунту... Тем более, доступ к аккаунт данным, это четко разграниченная привилегия логин-сервера. Да уж. В l2j видимо и не такое увидеть можно. Я стал забывать, что такой ужас вообще существует, сколько лет, то уже прошло без этих ваших l2j-еев
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Сказали спасибо:
Непрочитано 28.09.2013, 23:12   #8
Аватар для moveton
Супер-модератор

По умолчанию Re: Запись фракции

Цитата:
Сообщение от Pointer*Rage Посмотреть сообщение
Даже, если бы был статик, то персонажи массово не могли бы выбрать себе фракцию, т.к. все это хранится в Player-модели. Грубо говоря, кто первый успел - у того и тапки.
Вопрос в том - какой идиот додумался сделать привязку фракций к аккаунту... Тем более, доступ к аккаунт данным, это четко разграниченная привилегия логин-сервера. Да уж. В l2j видимо и не такое увидеть можно. Я стал забывать, что такой ужас вообще существует, сколько лет, то уже прошло без этих ваших l2j-еев
Смотрим на импорты:
l2r...
moveton вне форума Отправить сообщение для moveton с помощью ICQ Отправить сообщение для moveton с помощью Skype™ Ответить с цитированием
Непрочитано 28.09.2013, 23:35   #9
Аватар для n3k0nation
Antihero

По умолчанию Re: Запись фракции

Цитата:
Сообщение от Моветон Посмотреть сообщение
Смотрим на импорты:
l2r...
И что я должен в них увидеть? Святого духа?
Странные юзеры зоны, такие странные.
__________________
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
n3k0nation вне форума Ответить с цитированием
Непрочитано 28.09.2013, 23:37   #10
Аватар для L2J
Пользователь

Автор темы (Топик Стартер) Re: Запись фракции

Привязка не по аккаунту, создал новый аккаунт, создал опять чара, и он опять за ту же сторону.
L2J вне форума Ответить с цитированием
Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
itamename-e.dat UFODriverr Lineage II 5 28.02.2021 18:17
Как в через iweb зделать себе престиж для фракции energy1130 Perfect World 5 23.10.2013 17:57
продается уникальная сборка с механикой DotA xevilx Рынок / Marketplace 0 07.09.2013 22:29
Фикс Фракции "Ошибка запроса" energy1130 Серверная часть 0 15.12.2012 11:01
Запись колонки из БД mysql в файл slimline Lineage II 1 17.11.2012 00:19


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

Вверх