Fixed ObservationInstance (Broadcasting Tower).

Contributed by ReynalDev.
This commit is contained in:
MobiusDevelopment 2019-08-17 13:06:55 +00:00
parent a04e548895
commit f9fadd38c5
3 changed files with 142 additions and 151 deletions

View File

@ -1,5 +1,5 @@
<html><body>&$650;<br><br> <html><body>&$650;<br><br>
<a action="bypass -h npc_%objectId%_observe 80 148416 46724 -3000">&$634; - 80 &$469;</a><br1> <a action="bypass -h npc_%objectId%_observe 148416 46724 -3000 80">&$634; - 80 &$469;</a><br1>
<a action="bypass -h npc_%objectId%_observe 80 149500 46724 -3000">&$635; - 80 &$469;</a><br1> <a action="bypass -h npc_%objectId%_observe 149500 46724 -3000 80">&$635; - 80 &$469;</a><br1>
<a action="bypass -h npc_%objectId%_observe 80 150511 46724 -3000">&$636; - 80 &$469;</a><br1> <a action="bypass -h npc_%objectId%_observe 150511 46724 -3000 80">&$636; - 80 &$469;</a><br1>
</body></html> </body></html>

View File

@ -1,4 +1,4 @@
<html><body>&$650;<br><br> <html><body>&$650;<br><br>
<a action="bypass -h npc_%objectId%_observeSiege 500 77541 -147447 353">&$1424; - 500 &$469;</a><br1> <a action="bypass -h npc_%objectId%_observeSiege 77541 -147447 353 500">&$1424; - 500 &$469;</a><br1>
<a action="bypass -h npc_%objectId%_observeSiege 500 77541 -149245 353">&$1425; - 500 &$469;</a><br1> <a action="bypass -h npc_%objectId%_observeSiege 77541 -149245 353 500">&$1425; - 500 &$469;</a><br1>
</body></html> </body></html>

View File

@ -19,10 +19,10 @@ package org.l2jmobius.gameserver.model.actor.instance;
import java.util.StringTokenizer; import java.util.StringTokenizer;
import org.l2jmobius.gameserver.instancemanager.SiegeManager; import org.l2jmobius.gameserver.instancemanager.SiegeManager;
import org.l2jmobius.gameserver.model.entity.olympiad.Olympiad;
import org.l2jmobius.gameserver.network.SystemMessageId; import org.l2jmobius.gameserver.network.SystemMessageId;
import org.l2jmobius.gameserver.network.serverpackets.ActionFailed; import org.l2jmobius.gameserver.network.serverpackets.ActionFailed;
import org.l2jmobius.gameserver.network.serverpackets.ItemList; import org.l2jmobius.gameserver.network.serverpackets.ItemList;
import org.l2jmobius.gameserver.network.serverpackets.SystemMessage;
import org.l2jmobius.gameserver.templates.creatures.NpcTemplate; import org.l2jmobius.gameserver.templates.creatures.NpcTemplate;
/** /**
@ -45,60 +45,48 @@ public class ObservationInstance extends FolkInstance
@Override @Override
public void onBypassFeedback(PlayerInstance player, String command) public void onBypassFeedback(PlayerInstance player, String command)
{ {
if (player.isInOlympiadMode())
{
player.sendMessage("You already participated in Olympiad!");
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
if (player._inEventTvT || player._inEventDM || player._inEventCTF)
{
player.sendMessage("You already participated in Event!");
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
if (player.isInCombat() || (player.getPvpFlag() > 0))
{
player.sendMessage("You are in combat now!");
player.sendPacket(ActionFailed.STATIC_PACKET);
return;
}
if (command.startsWith("observeSiege")) if (command.startsWith("observeSiege"))
{ {
String val = command.substring(13); StringTokenizer st = new StringTokenizer(command);
StringTokenizer st = new StringTokenizer(val); st.nextToken(); // Command
st.nextToken(); // Bypass cost
if (Olympiad.getInstance().isRegistered(player) || player.isInOlympiadMode()) int x = Integer.parseInt(st.nextToken()); // X location
{ int y = Integer.parseInt(st.nextToken()); // Y location
player.sendMessage("You already participated in Olympiad!"); int z = Integer.parseInt(st.nextToken()); // Z location
return;
}
if (player._inEventTvT || player._inEventDM || player._inEventCTF) if (SiegeManager.getInstance().getSiege(x, y, z) != null)
{ {
player.sendMessage("You already participated in Event!"); doObserve(player, command);
return;
}
if (player.isInCombat() || (player.getPvpFlag() > 0))
{
player.sendMessage("You are in combat now!");
return;
}
if (SiegeManager.getInstance().getSiege(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())) != null)
{
doObserve(player, val);
} }
else else
{ {
player.sendPacket(SystemMessageId.ONLY_VIEW_SIEGE); player.sendPacket(new SystemMessage(SystemMessageId.ONLY_VIEW_SIEGE));
} }
} }
else if (command.startsWith("observe")) else if (command.startsWith("observe"))
{ {
if (Olympiad.getInstance().isRegistered(player) || player.isInOlympiadMode()) doObserve(player, command);
{
player.sendMessage("You already participated in Olympiad!");
return;
}
if (player._inEventTvT || player._inEventDM || player._inEventCTF)
{
player.sendMessage("You already participated in Event!");
return;
}
if (player.isInCombat() || (player.getPvpFlag() > 0))
{
player.sendMessage("You are in combat now!");
return;
}
doObserve(player, command.substring(8));
} }
else else
{ {
@ -130,10 +118,12 @@ public class ObservationInstance extends FolkInstance
private void doObserve(PlayerInstance player, String val) private void doObserve(PlayerInstance player, String val)
{ {
StringTokenizer st = new StringTokenizer(val); StringTokenizer st = new StringTokenizer(val);
final int cost = Integer.parseInt(st.nextToken()); st.nextToken(); // Command
final int x = Integer.parseInt(st.nextToken()); int x = Integer.parseInt(st.nextToken());
final int y = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken());
final int z = Integer.parseInt(st.nextToken()); int z = Integer.parseInt(st.nextToken());
int cost = Integer.parseInt(st.nextToken());
if (player.reduceAdena("Broadcast", cost, this, true)) if (player.reduceAdena("Broadcast", cost, this, true))
{ {
// enter mode // enter mode
@ -141,6 +131,7 @@ public class ObservationInstance extends FolkInstance
final ItemList il = new ItemList(player, false); final ItemList il = new ItemList(player, false);
player.sendPacket(il); player.sendPacket(il);
} }
player.sendPacket(ActionFailed.STATIC_PACKET); player.sendPacket(ActionFailed.STATIC_PACKET);
} }
} }