테스트

aion-server 4.8

Gitteol
최고관리자 · 1 · 💬 0 클론/새로받기
 4.8 61f661d · 1 commits 새로받기(Pull)
game-server/src/com/aionemu/gameserver/network/aion/clientpackets/CM_WINDSTREAM.java
package com.aionemu.gameserver.network.aion.clientpackets;

import java.util.Set;

import org.slf4j.LoggerFactory;

import com.aionemu.gameserver.model.EmotionType;
import com.aionemu.gameserver.model.actions.PlayerMode;
import com.aionemu.gameserver.model.gameobjects.player.Player;
import com.aionemu.gameserver.model.gameobjects.state.CreatureState;
import com.aionemu.gameserver.model.gameobjects.state.FlyState;
import com.aionemu.gameserver.model.templates.windstreams.WindstreamPath;
import com.aionemu.gameserver.network.aion.AionClientPacket;
import com.aionemu.gameserver.network.aion.AionConnection.State;
import com.aionemu.gameserver.network.aion.serverpackets.SM_EMOTION;
import com.aionemu.gameserver.network.aion.serverpackets.SM_TRANSFORM;
import com.aionemu.gameserver.network.aion.serverpackets.SM_WINDSTREAM;
import com.aionemu.gameserver.questEngine.QuestEngine;
import com.aionemu.gameserver.questEngine.model.QuestEnv;
import com.aionemu.gameserver.utils.PacketSendUtility;
public class CM_WINDSTREAM extends AionClientPacket {

	int teleportId;
	int distance;
	int state;

	public CM_WINDSTREAM(int opcode, Set<State> validStates) {
		super(opcode, validStates);
	}

	@Override
	protected void readImpl() {
		teleportId = readD();
		distance = readD();
		state = readD();
	}

	@Override
	protected void runImpl() {
		Player player = getConnection().getActivePlayer();
		switch (state) {
			case 0: // ?
				player.unsetPlayerMode(PlayerMode.RIDE);
				break;
			case 1: // entering windstream
				if (player.isInPlayerMode(PlayerMode.WINDSTREAM) || !player.isFlying())
					return;
				player.setPlayerMode(PlayerMode.WINDSTREAM, new WindstreamPath(teleportId, distance));
				player.unsetState(CreatureState.ACTIVE);
				player.unsetState(CreatureState.GLIDING);
				player.setState(CreatureState.FLYING);
				player.unsetFlyState(FlyState.GLIDING);
				player.setFlyState(FlyState.FLYING);
				PacketSendUtility.broadcastPacket(player, new SM_EMOTION(player, EmotionType.WINDSTREAM, teleportId, distance), true);
				player.getLifeStats().triggerFpRestore();
				QuestEngine.getInstance().onEnterWindStream(new QuestEnv(null, player, 0), teleportId);
				return; // don't send SM_WINDSTREAM
			case 2: // leaving windstream (gliding)
			case 3: // leaving windstream
				if (!player.isInPlayerMode(PlayerMode.WINDSTREAM))
					return;
				player.unsetState(CreatureState.FLYING);
				player.setState(CreatureState.ACTIVE);
				player.unsetFlyState(FlyState.FLYING);
				player.unsetFlyState(FlyState.GLIDING);
				if (state == 2)
					player.getFlyController().switchToGliding();
				else
					player.getGameStats().updateStatsAndSpeedVisually();
				player.unsetPlayerMode(PlayerMode.WINDSTREAM);
				PacketSendUtility.broadcastPacket(player, new SM_EMOTION(player, state == 2 ? EmotionType.WINDSTREAM_END : EmotionType.WINDSTREAM_EXIT),
					true);
				if (player.isTransformed()) // send sm_transform if player is transformed
					PacketSendUtility.broadcastPacketAndReceive(player, new SM_TRANSFORM(player));
				break;
			case 4: // ?
				break;
			case 7: // start boost
			case 8: // end boost
				PacketSendUtility.broadcastPacket(player,
					new SM_EMOTION(player, state == 7 ? EmotionType.WINDSTREAM_START_BOOST : EmotionType.WINDSTREAM_END_BOOST), true);
				break;
			default:
				LoggerFactory.getLogger(CM_WINDSTREAM.class).warn("Unknown Windstream state #" + state + " was sent from " + player.getPosition());
				return;
		}
		PacketSendUtility.sendPacket(player, new SM_WINDSTREAM(state, 1));
	}

}

📎 첨부파일

댓글 작성 권한이 없습니다.
🏆 포인트 랭킹 TOP 10
순위 닉네임 포인트
1 no_profile 타키야겐지쪽지보내기 자기소개 아이디로 검색 전체게시물 102,949
2 no_profile 동가리쪽지보내기 자기소개 아이디로 검색 전체게시물 63,733
3 no_profile 라프텔쪽지보내기 자기소개 아이디로 검색 전체게시물 51,771
4 no_profile 불멸의행복쪽지보내기 자기소개 아이디로 검색 전체게시물 36,923
5 서번트쪽지보내기 자기소개 아이디로 검색 전체게시물 35,011
6 no_profile 닥터스쪽지보내기 자기소개 아이디로 검색 전체게시물 29,470
7 no_profile 검은고양이쪽지보내기 자기소개 아이디로 검색 전체게시물 29,077
8 no_profile Revolution쪽지보내기 자기소개 아이디로 검색 전체게시물 28,199
9 no_profile 보거스쪽지보내기 자기소개 아이디로 검색 전체게시물 26,731
10 no_profile 호롤롤로쪽지보내기 자기소개 아이디로 검색 전체게시물 17,020
알림 0