Свернуть ↑
Index: AE-go_GameServer/config/administration/admin.properties
================================================== =================
--- AE-go_GameServer/config/administration/admin.properties (revision 1844)
+++ AE-go_GameServer/config/administration/admin.properties (working copy)
@@ -33,6 +33,9 @@
# List of Commands
+# Self explanatory
+gameserver.administration.fly_everywhere = 3
+
# Various AI-related tasks
gameserver.administration.command.ai = 3
Index: AE-go_GameServer/src/com/aionemu/gameserver/configs/administration/AdminConfig.java
================================================== =================
--- AE-go_GameServer/src/com/aionemu/gameserver/configs/administration/AdminConfig.java (revision 1844)
+++ AE-go_GameServer/src/com/aionemu/gameserver/configs/administration/AdminConfig.java (working copy)
@@ -23,10 +23,13 @@
*/
public class AdminConfig
{
- @Property(key = "gameserver.administration.gmlevel", defaultValue = "3")
+ @Property(key = "gameserver.administration.gmlevel", defaultValue = "3")
public static int GM_LEVEL;
- @Property(key = "gameserver.administration.command.add", defaultValue = "3")
+ @Property(key = "gameserver.administration.fly_everywhere", defaultValue = "3")
+ public static int FLY_EVERYWHERE;
+
+ @Property(key = "gameserver.administration.command.add", defaultValue = "3")
public static int COMMAND_ADD;
@Property(key = "gameserver.administration.command.ai", defaultValue = "3")
@@ -158,8 +161,8 @@
@Property(key = "gameserver.administration.command.legion", defaultValue = "3")
public static int COMMAND_LEGION;
- @Property(key = "gameserver.administration.command.remove", defaultValue = "3")
- public static int COMMAND_REMOVE;
+ @Property(key = "gameserver.administration.command.remove", defaultValue = "3")
+ public static int COMMAND_REMOVE;
@Property(key = "gameserver.administration.command.prison", defaultValue = "3")
public static int COMMAND_PRISON;
Index: AE-go_GameServer/src/com/aionemu/gameserver/model/gameobjects/stats/PlayerLifeStats.java
================================================== =================
--- AE-go_GameServer/src/com/aionemu/gameserver/model/gameobjects/stats/PlayerLifeStats.java (revision 1844)
+++ AE-go_GameServer/src/com/aionemu/gameserver/model/gameobjects/stats/PlayerLifeStats.java (working copy)
@@ -19,6 +19,7 @@
import java.util.concurrent.Future;
import java.util.concurrent.locks.ReentrantLock;
+import com.aionemu.gameserver.configs.administration.Admi nConfig;
import com.aionemu.gameserver.model.gameobjects.player.Pl ayer;
import com.aionemu.gameserver.model.gameobjects.state.Cre atureState;
import com.aionemu.gameserver.model.group.GroupEvent;
@@ -299,6 +300,9 @@
public void triggerFpReduce()
{
+ if (getOwner().getAccessLevel() >= AdminConfig.FLY_EVERYWHERE)
+ return;
+
cancelFpRestore();
if(flyReduceTask == null && !alreadyDead)
Index: AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_EMOTION.java
================================================== =================
--- AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_EMOTION.java (revision 1844)
+++ AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_EMOTION.java (working copy)
@@ -19,6 +19,7 @@
import org.apache.log4j.Logger;
+import com.aionemu.gameserver.configs.administration.Admi nConfig;
import com.aionemu.gameserver.model.gameobjects.player.Pl ayer;
import com.aionemu.gameserver.model.gameobjects.state.Cre atureState;
import com.aionemu.gameserver.network.aion.AionClientPack et;
@@ -144,8 +145,11 @@
boolean flightAllowed = currentZone.getTemplate().isFlightAllowed();
if(!flightAllowed)
{
- PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_FLYING_FORBIDDEN_HERE);
- return;
+ if(player.getAccessLevel() < AdminConfig.FLY_EVERYWHERE)
+ {
+ PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_FLYING_FORBIDDEN_HERE);
+ return;
+ }
}
}
player.getFlyController().startFly();
Index: AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_LEVEL_READY.java
================================================== =================
--- AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_LEVEL_READY.java (revision 1844)
+++ AE-go_GameServer/src/com/aionemu/gameserver/network/aion/clientpackets/CM_LEVEL_READY.java (working copy)
@@ -18,6 +18,7 @@
import com.aionemu.gameserver.model.gameobjects.player.Pl ayer;
import com.aionemu.gameserver.network.aion.AionClientPack et;
+import com.aionemu.gameserver.network.aion.serverpackets. SM_EMOTION;
import com.aionemu.gameserver.network.aion.serverpackets. SM_PLAYER_INFO;
import com.aionemu.gameserver.network.aion.serverpackets. SM_SYSTEM_MESSAGE;
import com.aionemu.gameserver.questEngine.QuestEngine;
@@ -79,6 +80,12 @@
activePlayer.getController().startProtectionActive Task();
/**
+ * This SM_EMOTION has to be sent after the SM_PLAYER_INFO,
+ * or else the client will not update charater's speed while flying.
+ */
+ sendPacket(new SM_EMOTION(activePlayer, 30, 0, 0));
+
+ /**
* Spawn player into the world.
*/
world.spawn(activePlayer);
Index: AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_STATS_INFO.java
================================================== =================
--- AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_STATS_INFO.java (revision 1844)
+++ AE-go_GameServer/src/com/aionemu/gameserver/network/aion/serverpackets/SM_STATS_INFO.java (working copy)
@@ -18,6 +18,7 @@
import java.nio.ByteBuffer;
+import com.aionemu.gameserver.configs.administration.Admi nConfig;
import com.aionemu.gameserver.model.gameobjects.player.Pl ayer;
import com.aionemu.gameserver.model.gameobjects.player.Pl ayerCommonData;
import com.aionemu.gameserver.model.gameobjects.stats.Pla yerGameStats;
@@ -104,7 +105,11 @@
writeD(buf, pls.getCurrentFp());// [current fly time]
- writeC(buf, player.getFlyState());// [fly state]
+ if(player.getAccessLevel() < AdminConfig.FLY_EVERYWHERE)
+ writeC(buf, player.getFlyState());// [fly state]
+ else
+ writeC(buf, 0);
+
writeC(buf, 0);// [unk]
writeH(buf, pgs.getCurrentStat(StatEnum.MAIN_HAND_POWER)); // [current main hand attack]
Index: AE-go_GameServer/src/com/aionemu/gameserver/services/TeleportService.java
================================================== =================
--- AE-go_GameServer/src/com/aionemu/gameserver/services/TeleportService.java (revision 1844)
+++ AE-go_GameServer/src/com/aionemu/gameserver/services/TeleportService.java (working copy)
@@ -18,6 +18,8 @@
import org.apache.log4j.Logger;
+import com.aionemu.gameserver.configs.administration.Admi nConfig;
+import com.aionemu.gameserver.controllers.movement.Moveme ntType;
import com.aionemu.gameserver.dataholders.BindPointData;
import com.aionemu.gameserver.dataholders.PlayerInitialDa ta;
import com.aionemu.gameserver.dataholders.PortalData;
@@ -209,8 +211,11 @@
{
if(player.isInState(CreatureState.FLYING))
{
- PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_CANNOT_USE_AIRPORT_WHEN_FLYI NG);
- return;
+ if(player.getAccessLevel() < AdminConfig.FLY_EVERYWHERE)
+ {
+ PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_CANNOT_USE_AIRPORT_WHEN_FLYI NG);
+ return;
+ }
}
Npc object = (Npc) world.findAionObject(targetObjectId);
@@ -313,7 +318,10 @@
*/
private void changePosition(Player player, int worldId, int instanceId, float x, float y, float z, byte heading)
{
- player.getFlyController().endFly();
+ if(player.getAccessLevel() < AdminConfig.FLY_EVERYWHERE)
+ {
+ player.getFlyController().endFly();
+ }
world.despawn(player);