27.03.2014, 21:41
|
#1
|
Пользователь
Регистрация: 11.06.2013
Возраст: 34
Сообщений: 231
Отблагодарили 8 раз(а)
Рейтинг мнений:
|
FactionInstance.java
Подскажите пожалуйста в чем проблема?
Создал FactionManager'a, прописал NPC <set name="type" value="Faction" />
Подхожу к нпц нажимаю на него, мне открывается npcdefault.htm, а не то что надо.
Вот FactionInstance:
Свернуть ↑
package l2p.gameserver.model.instances;
import gnu.trove.TIntObjectIterator;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledFuture;
import l2p.commons.collections.MultiValueSet;
import l2p.commons.lang.reference.HardReference;
import l2p.commons.threading.RunnableImpl;
import l2p.commons.util.Rnd;
import l2p.gameserver.Config;
import l2p.gameserver.ThreadPoolManager;
import l2p.gameserver.ai.CharacterAI;
import l2p.gameserver.ai.CtrlEvent;
import l2p.gameserver.ai.CtrlIntention;
import l2p.gameserver.cache.Msg;
import l2p.gameserver.clientpackets.Say2C;
import l2p.gameserver.data.htm.HtmCache;
import l2p.gameserver.data.xml.holder.ItemHolder;
import l2p.gameserver.data.xml.holder.MultiSellHolder;
import l2p.gameserver.data.xml.holder.ResidenceHolder;
import l2p.gameserver.data.xml.holder.SkillAcquireHolder;
import l2p.gameserver.database.DatabaseFactory;
import l2p.gameserver.geodata.GeoEngine;
import l2p.gameserver.idfactory.IdFactory;
import l2p.gameserver.instancemanager.DimensionalRiftManager;
import l2p.gameserver.instancemanager.QuestManager;
import l2p.gameserver.instancemanager.ReflectionManager;
import l2p.gameserver.listener.NpcListener;
import l2p.gameserver.model.AggroList;
import l2p.gameserver.model.Creature;
import l2p.gameserver.model.GameObjectTasks.NotifyAITask;
import l2p.gameserver.model.GameObjectsStorage;
import l2p.gameserver.model.MinionList;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.Skill;
import l2p.gameserver.model.SkillLearn;
import l2p.gameserver.model.Spawner;
import l2p.gameserver.model.TeleportLocation;
import l2p.gameserver.model.Territory;
import l2p.gameserver.model.World;
import l2p.gameserver.model.Zone.ZoneType;
import l2p.gameserver.model.actor.listener.NpcListenerList;
import l2p.gameserver.model.actor.recorder.NpcStatsChangeRecorder;
import l2p.gameserver.model.base.AcquireType;
import l2p.gameserver.model.base.ClassId;
import l2p.gameserver.model.base.RestartType;
import l2p.gameserver.model.entity.DimensionalRift;
import l2p.gameserver.model.entity.Reflection;
import l2p.gameserver.model.entity.SevenSigns;
import l2p.gameserver.model.entity.events.GlobalEvent;
import l2p.gameserver.model.entity.events.objects.TerritoryWardObject;
import l2p.gameserver.model.entity.residence.Castle;
import l2p.gameserver.model.entity.residence.ClanHall;
import l2p.gameserver.model.entity.residence.Dominion;
import l2p.gameserver.model.entity.residence.Fortress;
import l2p.gameserver.model.items.ItemInstance;
import l2p.gameserver.model.pledge.Clan;
import l2p.gameserver.model.pledge.SubUnit;
import l2p.gameserver.model.quest.Quest;
import l2p.gameserver.model.quest.QuestEventType;
import l2p.gameserver.model.quest.QuestState;
import l2p.gameserver.serverpackets.*;
import l2p.gameserver.serverpackets.components.CustomMessage;
import l2p.gameserver.serverpackets.components.NpcString;
import l2p.gameserver.serverpackets.components.SystemMsg;
import l2p.gameserver.scripts.Events;
import l2p.gameserver.stats.Stats;
import l2p.gameserver.tables.ClanTable;
import l2p.gameserver.tables.SkillTable;
import l2p.gameserver.taskmanager.DecayTaskManager;
import l2p.gameserver.taskmanager.LazyPrecisionTaskManager;
import l2p.gameserver.templates.StatsSet;
import l2p.gameserver.templates.item.ItemTemplate;
import l2p.gameserver.templates.item.WeaponTemplate;
import l2p.gameserver.templates.npc.Faction;
import l2p.gameserver.templates.npc.NpcTemplate;
import l2p.gameserver.templates.spawn.SpawnRange;
import l2p.gameserver.utils.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class FactionInstance extends NpcInstance
{
public FactionInstance(int objectId, NpcTemplate template)
{
super(objectId, template);
}
private static final Logger _log = LoggerFactory.getLogger(FactionInstance.class);
@Override
public void onBypassFeedback(final Player player, String command)
{
StringTokenizer st = new StringTokenizer(command, " ");
String actualCommand = st.nextToken();
int val = 0;
if (st.countTokens() >= 1)
val = Integer.valueOf(st.nextToken());
if (actualCommand.equalsIgnoreCase("setfaction"))
{
if (val < 1)
return;
String a = "";
if(player.getFactionId() != 0)
{
player.sendMessage("Вы уже выбрали сторону.");
player.sendActionFailed();
return;
}
else
{
if (val == 1)
{
a="Добро";
player.broadcastPacket(new MagicSkillUse(this, player, 4314, 1, 200, 0));
}
else
{
a="Зло";
player.broadcastPacket(new MagicSkillUse(this, player, 4314, 1, 200, 0));
}
Connection con = null;
PreparedStatement statement = null;
try
{
con = DatabaseFactory.getInstance().getConnection();
statement = con.prepareStatement("UPDATE characters SET factionId=? WHERE char_name=?");
statement.setInt(1, val);
statement.setString(2, player.getName());
statement.execute();
statement.close();
con.close();
}
catch (Exception e)
{
_log.info("Couldn't set player faction:" + val + " " + e);
}
finally {
try
{
con.close();
}
catch (Exception e) {}}
player.sendMessage("Вы выбрали сторону "+ a +".");
player.broadcastCharInfo();
player.setFactionId(val);
player.factioncolor(player);
ThreadPoolManager.getInstance().schedule(new Runnable()
{
public void run()
{
if (player.getFactionId() == 1)
{
player.teleToLocation(Location.findAroundPosition(85937, -249618, -8320, 100, 100, 100));
player.broadcastCharInfo();
}
else if (player.getFactionId() == 2)
player.teleToLocation(Location.findAroundPosition(120600, -86952, -3392, 100, 100, 100));
}}, 5000);
}
}
else
{
super.onBypassFeedback(player, command);
}
}
public void onAction(Player player)
{
if (this != player.getTarget())
{
player.setTarget(this);
player.sendPacket(new MyTargetSelected(getObjectId(), player.getLevel() - getLevel()));
player.sendPacket(new ValidateLocation(this));
}
else if (isInRange(player, INTERACTION_DISTANCE))
{
SocialAction sa = new SocialAction(getObjectId(), Rnd.get(8));
broadcastPacket(sa);
player.setLastNpc(this);
showMessageWindow(player);
player.sendActionFailed();
}
else
{
player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT, this);
player.sendActionFailed();
}
}
private void showMessageWindow(Player player)
{
NpcHtmlMessage html = new NpcHtmlMessage(1);
html.setFile("data/html-ru/faction/manager.htm");
html.replace("%objectId%", String.valueOf(getObjectId()));
html.replace("%npcname%", getName());
player.sendPacket(html);
}
}
Code: Java
Свернуть ↑Развернуть ↓
|
|
|