mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
92 lines
3.9 KiB
C#
92 lines
3.9 KiB
C#
using FFXIVClassic_Lobby_Server;
|
|
using FFXIVClassic_Lobby_Server.common;
|
|
using FFXIVClassic_Lobby_Server.dataobjects;
|
|
using FFXIVClassic_Lobby_Server.packets;
|
|
using FFXIVClassic_Map_Server.lua;
|
|
using FFXIVClassic_Map_Server.packets.send.actor;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace FFXIVClassic_Map_Server.dataobjects.chara.npc
|
|
{
|
|
class Npc : Character
|
|
{
|
|
public Npc(uint id, string actorName, uint displayNameId, string customDisplayName, float positionX, float positionY, float positionZ, float rotation, uint animationId, string className, byte[] initParams)
|
|
: base(id)
|
|
{
|
|
this.actorName = actorName;
|
|
this.displayNameId = displayNameId;
|
|
this.customDisplayName = customDisplayName;
|
|
this.positionX = positionX;
|
|
this.positionY = positionY;
|
|
this.positionZ = positionZ;
|
|
this.rotation = rotation;
|
|
this.animationId = animationId;
|
|
this.className = className;
|
|
|
|
if (initParams.Length != 0)
|
|
this.classParams = LuaUtils.readLuaParams(initParams);
|
|
|
|
setPlayerAppearance();
|
|
}
|
|
|
|
public void setPlayerAppearance()
|
|
{
|
|
DBAppearance appearance = Database.getAppearance(false, actorId);
|
|
|
|
if (appearance == null)
|
|
return;
|
|
|
|
modelID = DBAppearance.getTribeModel(appearance.tribe);
|
|
appearanceIDs[SIZE] = appearance.size;
|
|
appearanceIDs[COLORINFO] = (uint)(appearance.skinColor | (appearance.hairColor << 10) | (appearance.eyeColor << 20));
|
|
appearanceIDs[FACEINFO] = PrimitiveConversion.ToUInt32(appearance.getFaceInfo());
|
|
appearanceIDs[HIGHLIGHT_HAIR] = (uint)(appearance.hairHighlightColor | appearance.hairStyle << 10);
|
|
appearanceIDs[VOICE] = appearance.voice;
|
|
appearanceIDs[WEAPON1] = appearance.mainHand;
|
|
appearanceIDs[WEAPON2] = appearance.offHand;
|
|
appearanceIDs[HEADGEAR] = appearance.head;
|
|
appearanceIDs[BODYGEAR] = appearance.body;
|
|
appearanceIDs[LEGSGEAR] = appearance.legs;
|
|
appearanceIDs[HANDSGEAR] = appearance.hands;
|
|
appearanceIDs[FEETGEAR] = appearance.feet;
|
|
appearanceIDs[WAISTGEAR] = appearance.waist;
|
|
appearanceIDs[R_EAR] = appearance.rightEar;
|
|
appearanceIDs[L_EAR] = appearance.leftEar;
|
|
appearanceIDs[R_FINGER] = appearance.rightFinger;
|
|
appearanceIDs[L_FINGER] = appearance.leftFinger;
|
|
|
|
}
|
|
|
|
public override SubPacket createScriptBindPacket(uint playerActorId)
|
|
{
|
|
List<LuaParam> lParams;
|
|
|
|
lParams = LuaUtils.createLuaParamList("/Chara/Player/Player_work", false, false, false, false, false, true);
|
|
|
|
return ActorInstantiatePacket.buildPacket(actorId, playerActorId, actorName, className, lParams);
|
|
}
|
|
|
|
public override BasePacket getInitPackets(uint playerActorId)
|
|
{
|
|
List<SubPacket> subpackets = new List<SubPacket>();
|
|
subpackets.Add(createAddActorPacket(playerActorId));
|
|
subpackets.Add(createSpeedPacket(playerActorId));
|
|
subpackets.Add(createSpawnPositonPacket(playerActorId, 0xFF));
|
|
subpackets.Add(createAppearancePacket(playerActorId));
|
|
subpackets.Add(createNamePacket(playerActorId));
|
|
subpackets.Add(createStatePacket(playerActorId));
|
|
subpackets.Add(createIdleAnimationPacket(playerActorId));
|
|
subpackets.Add(createInitStatusPacket(playerActorId));
|
|
subpackets.Add(createSetActorIconPacket(playerActorId));
|
|
subpackets.Add(createIsZoneingPacket(playerActorId));
|
|
//subpackets.Add(createScriptBindPacket(playerActorId));
|
|
return BasePacket.createPacket(subpackets, true, false);
|
|
}
|
|
|
|
}
|
|
}
|