mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-02 19:42:05 -04:00
Added two callbacks to the Director; onTalked and onCommand. Split the command and event starts and keep track of them separately.
This commit is contained in:
parent
108f5aa677
commit
d989ec2a58
@ -102,6 +102,7 @@
|
||||
<Compile Include="actors\chara\ParameterSave.cs" />
|
||||
<Compile Include="actors\chara\player\PlayerWork.cs" />
|
||||
<Compile Include="dataobjects\DBWorld.cs" />
|
||||
<Compile Include="dataobjects\Event.cs" />
|
||||
<Compile Include="dataobjects\InventoryItem.cs" />
|
||||
<Compile Include="dataobjects\ConnectedPlayer.cs" />
|
||||
<Compile Include="dataobjects\Item.cs" />
|
||||
@ -244,6 +245,7 @@
|
||||
<Compile Include="packets\send\supportdesk\FaqListResponsePacket.cs" />
|
||||
<Compile Include="packets\send\supportdesk\GMTicketPacket.cs" />
|
||||
<Compile Include="packets\send\supportdesk\GMTicketSentResponsePacket.cs" />
|
||||
<Compile Include="packets\send\_0x10Packet.cs" />
|
||||
<Compile Include="packets\send\_0x02Packet.cs" />
|
||||
<Compile Include="packets\send\_0xE2Packet.cs" />
|
||||
<Compile Include="packets\SubPacket.cs" />
|
||||
|
@ -249,19 +249,27 @@ namespace FFXIVClassic_Lobby_Server
|
||||
break;
|
||||
}
|
||||
*/
|
||||
player.getActor().eventCurrentOwner = eventStart.scriptOwnerActorID;
|
||||
player.getActor().eventCurrentStarter = eventStart.triggerName;
|
||||
|
||||
//Is it a static actor? If not look in the player's instance
|
||||
Actor ownerActor = Server.getStaticActors(player.getActor().eventCurrentOwner);
|
||||
Actor ownerActor = Server.getStaticActors(eventStart.scriptOwnerActorID);
|
||||
if (ownerActor != null && ownerActor is Command)
|
||||
{
|
||||
player.getActor().currentCommand = eventStart.scriptOwnerActorID;
|
||||
player.getActor().currentCommandName = eventStart.triggerName;
|
||||
}
|
||||
else
|
||||
{
|
||||
player.getActor().currentEventOwner = eventStart.scriptOwnerActorID;
|
||||
player.getActor().currentEventName = eventStart.triggerName;
|
||||
}
|
||||
|
||||
if (ownerActor == null)
|
||||
{
|
||||
//Is it a instance actor?
|
||||
ownerActor = Server.GetWorldManager().GetActorInWorld(player.getActor().eventCurrentOwner);
|
||||
ownerActor = Server.GetWorldManager().GetActorInWorld(player.getActor().currentEventOwner);
|
||||
if (ownerActor == null)
|
||||
{
|
||||
//Is it a Director?
|
||||
if (player.getActor().currentDirector != null && player.getActor().eventCurrentOwner == player.getActor().currentDirector.actorId)
|
||||
if (player.getActor().currentDirector != null && player.getActor().currentEventOwner == player.getActor().currentDirector.actorId)
|
||||
ownerActor = player.getActor().currentDirector;
|
||||
else
|
||||
{
|
||||
@ -285,12 +293,12 @@ namespace FFXIVClassic_Lobby_Server
|
||||
Log.debug(String.Format("\n===Event UPDATE===\nSource Actor: 0x{0:X}\nCaller Actor: 0x{1:X}\nVal1: 0x{2:X}\nVal2: 0x{3:X}\nStep: 0x{4:X}\nParams: {5}", eventUpdate.actorID, eventUpdate.scriptOwnerActorID, eventUpdate.val1, eventUpdate.val2, eventUpdate.step, LuaUtils.dumpParams(eventUpdate.luaParams)));
|
||||
|
||||
//Is it a static actor? If not look in the player's instance
|
||||
Actor updateOwnerActor = Server.getStaticActors(player.getActor().eventCurrentOwner);
|
||||
Actor updateOwnerActor = Server.getStaticActors(player.getActor().currentEventOwner);
|
||||
if (updateOwnerActor == null)
|
||||
{
|
||||
updateOwnerActor = Server.GetWorldManager().GetActorInWorld(player.getActor().eventCurrentOwner);
|
||||
updateOwnerActor = Server.GetWorldManager().GetActorInWorld(player.getActor().currentEventOwner);
|
||||
|
||||
if (player.getActor().currentDirector != null && player.getActor().eventCurrentOwner == player.getActor().currentDirector.actorId)
|
||||
if (player.getActor().currentDirector != null && player.getActor().currentEventOwner == player.getActor().currentDirector.actorId)
|
||||
updateOwnerActor = player.getActor().currentDirector;
|
||||
|
||||
if (updateOwnerActor == null)
|
||||
|
@ -418,16 +418,22 @@ namespace FFXIVClassic_Lobby_Server
|
||||
}
|
||||
}
|
||||
|
||||
public void doWarp(ConnectedPlayer client, string zone, string privateArea, string sx, string sy, string sz)
|
||||
public void doWarp(ConnectedPlayer client, string zone, string privateArea, string sx, string sy, string sz, string spawnType)
|
||||
{
|
||||
uint zoneId;
|
||||
float x,y,z;
|
||||
byte sType;
|
||||
|
||||
if (zone.ToLower().StartsWith("0x"))
|
||||
zoneId = Convert.ToUInt32(zone, 16);
|
||||
else
|
||||
zoneId = Convert.ToUInt32(zone);
|
||||
|
||||
if (spawnType.ToLower().StartsWith("0x"))
|
||||
sType = Convert.ToByte(spawnType, 16);
|
||||
else
|
||||
sType = Convert.ToByte(spawnType);
|
||||
|
||||
if (mWorldManager.GetZone(zoneId) == null)
|
||||
{
|
||||
if (client != null)
|
||||
@ -440,12 +446,20 @@ namespace FFXIVClassic_Lobby_Server
|
||||
z = Single.Parse(sz);
|
||||
|
||||
if (client != null)
|
||||
mWorldManager.DoZoneChange(client.getActor(), zoneId, privateArea, 0x2, x, y, z, 0.0f);
|
||||
{
|
||||
if (zoneId == client.getActor().zoneId)
|
||||
mWorldManager.DoPlayerMoveInZone(client.getActor(), x, y, z, 0.0f, sType);
|
||||
else
|
||||
mWorldManager.DoZoneChange(client.getActor(), zoneId, privateArea, sType, x, y, z, 0.0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach (KeyValuePair<uint, ConnectedPlayer> entry in mConnectedPlayerList)
|
||||
{
|
||||
mWorldManager.DoZoneChange(entry.Value.getActor(), zoneId, privateArea, 0x2, x, y, z, 0.0f);
|
||||
if (zoneId == entry.Value.getActor().zoneId)
|
||||
mWorldManager.DoPlayerMoveInZone(entry.Value.getActor(), x, y, z, 0.0f, 0x0);
|
||||
else
|
||||
mWorldManager.DoZoneChange(entry.Value.getActor(), zoneId, privateArea, 0x2, x, y, z, 0.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -826,10 +840,10 @@ namespace FFXIVClassic_Lobby_Server
|
||||
{
|
||||
if (split.Length == 2)
|
||||
doWarp(client, split[1]);
|
||||
else if (split.Length == 5)
|
||||
doWarp(client, split[1], null, split[2], split[3], split[4]);
|
||||
else if (split.Length == 6)
|
||||
doWarp(client, split[1], split[2], split[3], split[4], split[5]);
|
||||
doWarp(client, split[1], null, split[2], split[3], split[4], split[5]);
|
||||
else if (split.Length == 7)
|
||||
doWarp(client, split[1], split[2], split[3], split[4], split[5], split[6]);
|
||||
return true;
|
||||
}
|
||||
else if (split[0].Equals("property"))
|
||||
|
@ -417,11 +417,11 @@ namespace FFXIVClassic_Map_Server
|
||||
if (ze.zoneId != player.zoneId)
|
||||
return;
|
||||
|
||||
DoPlayerMoveInZone(player, ze.spawnType, ze.spawnX, ze.spawnY, ze.spawnZ, ze.spawnRotation);
|
||||
DoPlayerMoveInZone(player, ze.spawnX, ze.spawnY, ze.spawnZ, ze.spawnRotation, ze.spawnType);
|
||||
}
|
||||
|
||||
//Moves actor within the zone
|
||||
public void DoPlayerMoveInZone(Player player, byte spawnType, float spawnX, float spawnY, float spawnZ, float spawnRotation)
|
||||
public void DoPlayerMoveInZone(Player player, float spawnX, float spawnY, float spawnZ, float spawnRotation, byte spawnType = 0xF)
|
||||
{
|
||||
//Remove player from currentZone if transfer else it's login
|
||||
if (player.zone != null)
|
||||
@ -437,7 +437,7 @@ namespace FFXIVClassic_Map_Server
|
||||
|
||||
//Send packets
|
||||
player.playerSession.queuePacket(_0xE2Packet.buildPacket(player.actorId, 0x0), true, false);
|
||||
player.playerSession.queuePacket(player.createSpawnTeleportPacket(player.actorId, 0x0f), true, false);
|
||||
player.playerSession.queuePacket(player.createSpawnTeleportPacket(player.actorId, spawnType), true, false);
|
||||
player.sendInstanceUpdate();
|
||||
|
||||
}
|
||||
@ -455,6 +455,9 @@ namespace FFXIVClassic_Map_Server
|
||||
|
||||
//Set the current zone and add player
|
||||
player.zone = zone;
|
||||
|
||||
LuaEngine.onBeginLogin(player);
|
||||
|
||||
zone.addActorToZone(player);
|
||||
|
||||
//Send packets
|
||||
|
@ -84,6 +84,15 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
45000, 47000, 50000, 53000, 56000, 59000, 62000, 65000, 68000, 71000, //Level <= 40
|
||||
74000, 78000, 81000, 85000, 89000, 92000, 96000, 100000, 100000, 110000}; //Level <= 50
|
||||
|
||||
//Event Related
|
||||
public uint currentEventOwner = 0;
|
||||
public string currentEventName = "";
|
||||
|
||||
public uint currentCommand = 0;
|
||||
public string currentCommandName = "";
|
||||
|
||||
public uint eventMenuId = 0;
|
||||
|
||||
//Player Info
|
||||
public uint[] timers = new uint[20];
|
||||
public ushort currentJob;
|
||||
@ -110,11 +119,6 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
public string chocoboName;
|
||||
public byte mountState = 0;
|
||||
|
||||
//Event Related
|
||||
public uint eventCurrentOwner = 0;
|
||||
public string eventCurrentStarter = "";
|
||||
public uint eventMenuId = 0;
|
||||
|
||||
public uint achievementPoints;
|
||||
|
||||
//Property Array Request Stuff
|
||||
@ -125,7 +129,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
public Quest[] questScenario = new Quest[16];
|
||||
public Quest[] questGuildleve = new Quest[8];
|
||||
|
||||
public Director currentDirector;// = new OpeningDirector(0x46080012);
|
||||
public Director currentDirector;
|
||||
|
||||
public PlayerWork playerWork = new PlayerWork();
|
||||
|
||||
@ -256,7 +260,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
if (isMyPlayer(playerActorId))
|
||||
{
|
||||
if (currentDirector != null)
|
||||
lParams = LuaUtils.createLuaParamList("/Chara/Player/Player_work", false, false, true, currentDirector, 0, false, timers, true);
|
||||
lParams = LuaUtils.createLuaParamList("/Chara/Player/Player_work", false, false, true, currentDirector, true, 0, false, timers, true);
|
||||
else
|
||||
lParams = LuaUtils.createLuaParamList("/Chara/Player/Player_work", false, false, false, true, 0, false, timers, true);
|
||||
}
|
||||
@ -472,12 +476,15 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
|
||||
public void sendZoneInPackets(WorldManager world, ushort spawnType)
|
||||
{
|
||||
queuePacket(SetMapPacket.buildPacket(actorId, zone.regionId, zone.actorId));
|
||||
queuePacket(SetActorIsZoningPacket.buildPacket(actorId, actorId, false));
|
||||
queuePacket(_0x10Packet.buildPacket(actorId, 0xFF));
|
||||
queuePacket(SetMusicPacket.buildPacket(actorId, zone.bgmDay, 0x01));
|
||||
queuePacket(SetWeatherPacket.buildPacket(actorId, SetWeatherPacket.WEATHER_CLEAR));
|
||||
|
||||
queuePacket(SetMapPacket.buildPacket(actorId, zone.regionId, zone.actorId));
|
||||
|
||||
queuePacket(getSpawnPackets(actorId, spawnType));
|
||||
//getSpawnPackets(actorId, spawnType).debugPrintPacket();
|
||||
getSpawnPackets(actorId, spawnType).debugPrintPacket();
|
||||
|
||||
#region grouptest
|
||||
//Retainers
|
||||
@ -511,6 +518,7 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
|
||||
playerSession.queuePacket(getInitPackets(actorId));
|
||||
|
||||
|
||||
BasePacket areaMasterSpawn = zone.getSpawnPackets(actorId);
|
||||
BasePacket debugSpawn = world.GetDebugActor().getSpawnPackets(actorId);
|
||||
BasePacket worldMasterSpawn = world.GetActor().getSpawnPackets(actorId);
|
||||
@ -523,8 +531,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
playerSession.queuePacket(debugSpawn);
|
||||
if (directorSpawn != null)
|
||||
{
|
||||
directorSpawn.debugPrintPacket();
|
||||
currentDirector.getInitPackets(actorId).debugPrintPacket();
|
||||
//directorSpawn.debugPrintPacket();
|
||||
// currentDirector.getInitPackets(actorId).debugPrintPacket();
|
||||
queuePacket(directorSpawn);
|
||||
queuePacket(currentDirector.getInitPackets(actorId));
|
||||
//queuePacket(currentDirector.getSetEventStatusPackets(actorId));
|
||||
@ -982,6 +990,17 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool hasQuest(string name)
|
||||
{
|
||||
for (int i = 0; i < questScenario.Length; i++)
|
||||
{
|
||||
if (questScenario[i] != null && questScenario[i].actorName.ToLower().Equals(name.ToLower()))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool hasQuest(uint id)
|
||||
{
|
||||
for (int i = 0; i < questScenario.Length; i++)
|
||||
@ -1004,23 +1023,27 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
return -1;
|
||||
}
|
||||
|
||||
public void setDirector(string directorType)
|
||||
public void setDirector(string directorType, bool sendPackets)
|
||||
{
|
||||
if (directorType.Equals("openingDirector"))
|
||||
{
|
||||
currentDirector = new OpeningDirector(0x46080012);
|
||||
currentDirector = new OpeningDirector(this, 0x46080012);
|
||||
}
|
||||
else if (directorType.Equals("QuestDirectorMan0l001"))
|
||||
{
|
||||
currentDirector = new QuestDirectorMan0l001(0x46080012);
|
||||
currentDirector = new QuestDirectorMan0l001(this, 0x46080012);
|
||||
}
|
||||
|
||||
if (sendPackets)
|
||||
{
|
||||
queuePacket(RemoveActorPacket.buildPacket(actorId, 0x46080012));
|
||||
queuePacket(currentDirector.getSpawnPackets(actorId));
|
||||
queuePacket(currentDirector.getInitPackets(actorId));
|
||||
//queuePacket(currentDirector.getSetEventStatusPackets(actorId));
|
||||
//currentDirector.getSpawnPackets(actorId).debugPrintPacket();
|
||||
//currentDirector.getInitPackets(actorId).debugPrintPacket();
|
||||
}
|
||||
|
||||
// queuePacket(RemoveActorPacket.buildPacket(actorId, 0x46080012));
|
||||
// queuePacket(currentDirector.getSpawnPackets(actorId));
|
||||
// queuePacket(currentDirector.getInitPackets(actorId));
|
||||
// queuePacket(currentDirector.getSetEventStatusPackets(actorId));
|
||||
// currentDirector.getSpawnPackets(actorId).debugPrintPacket();
|
||||
// currentDirector.getInitPackets(actorId).debugPrintPacket();
|
||||
}
|
||||
|
||||
public Director getDirector()
|
||||
@ -1068,22 +1091,32 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
public void runEventFunction(string functionName, params object[] parameters)
|
||||
{
|
||||
List<LuaParam> lParams = LuaUtils.createLuaParamList(parameters);
|
||||
SubPacket spacket = RunEventFunctionPacket.buildPacket(actorId, eventCurrentOwner, eventCurrentStarter, functionName, lParams);
|
||||
SubPacket spacket = RunEventFunctionPacket.buildPacket(actorId, currentEventOwner, currentEventName, functionName, lParams);
|
||||
spacket.debugPrintSubPacket();
|
||||
queuePacket(spacket);
|
||||
}
|
||||
|
||||
public void endEvent()
|
||||
{
|
||||
SubPacket p = EndEventPacket.buildPacket(actorId, eventCurrentOwner, eventCurrentStarter);
|
||||
SubPacket p = EndEventPacket.buildPacket(actorId, currentEventOwner, currentEventName);
|
||||
p.debugPrintSubPacket();
|
||||
queuePacket(p);
|
||||
|
||||
eventCurrentOwner = 0;
|
||||
eventCurrentStarter = "";
|
||||
currentEventOwner = 0;
|
||||
currentEventName = "";
|
||||
eventMenuId = 0;
|
||||
}
|
||||
|
||||
public void endCommand()
|
||||
{
|
||||
SubPacket p = EndEventPacket.buildPacket(actorId, currentCommand, currentCommandName);
|
||||
p.debugPrintSubPacket();
|
||||
queuePacket(p);
|
||||
|
||||
currentCommand = 0;
|
||||
currentCommandName = "";
|
||||
}
|
||||
|
||||
public void setCurrentMenuId(uint id)
|
||||
{
|
||||
eventMenuId = id;
|
||||
|
@ -1,5 +1,6 @@
|
||||
using FFXIVClassic_Lobby_Server.packets;
|
||||
using FFXIVClassic_Map_Server.Actors;
|
||||
using FFXIVClassic_Map_Server.lua;
|
||||
using FFXIVClassic_Map_Server.packets.send.actor;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@ -11,9 +12,11 @@ namespace FFXIVClassic_Map_Server.actors.director
|
||||
{
|
||||
class Director : Actor
|
||||
{
|
||||
public Director(uint id) : base(id)
|
||||
{
|
||||
Player owner;
|
||||
|
||||
public Director(Player owner, uint id) : base(id)
|
||||
{
|
||||
this.owner = owner;
|
||||
}
|
||||
|
||||
public virtual BasePacket getSpawnPackets(uint playerActorId, uint spawnType)
|
||||
@ -37,5 +40,15 @@ namespace FFXIVClassic_Map_Server.actors.director
|
||||
return BasePacket.createPacket(initProperties.buildPacket(playerActorId, actorId), true, false);
|
||||
}
|
||||
|
||||
public void onTalked(Npc npc)
|
||||
{
|
||||
LuaEngine.doDirectorOnTalked(this, owner, npc);
|
||||
}
|
||||
|
||||
public void onCommand(Command command)
|
||||
{
|
||||
LuaEngine.doDirectorOnCommand(this, owner, command);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
using FFXIVClassic_Lobby_Server.packets;
|
||||
using FFXIVClassic_Map_Server.Actors;
|
||||
using FFXIVClassic_Map_Server.lua;
|
||||
using FFXIVClassic_Map_Server.packets.send.actor;
|
||||
using System;
|
||||
@ -11,7 +12,7 @@ namespace FFXIVClassic_Map_Server.actors.director
|
||||
{
|
||||
class OpeningDirector : Director
|
||||
{
|
||||
public OpeningDirector(uint id) : base(id)
|
||||
public OpeningDirector(Player player, uint id) : base(player, id)
|
||||
{
|
||||
this.displayNameId = 0;
|
||||
this.customDisplayName = "openingDire";
|
||||
|
@ -15,8 +15,8 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
{
|
||||
private uint weatherId;
|
||||
|
||||
public WeatherDirector(uint weatherId)
|
||||
: base(0x5FF80003)
|
||||
public WeatherDirector(Player player, uint weatherId)
|
||||
: base(player, 0x5FF80003)
|
||||
{
|
||||
this.weatherId = weatherId;
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
using FFXIVClassic_Lobby_Server.packets;
|
||||
using FFXIVClassic_Map_Server.Actors;
|
||||
using FFXIVClassic_Map_Server.lua;
|
||||
using FFXIVClassic_Map_Server.packets.send.actor;
|
||||
using System;
|
||||
@ -11,7 +12,8 @@ namespace FFXIVClassic_Map_Server.actors.director
|
||||
{
|
||||
class QuestDirectorMan0l001 : Director
|
||||
{
|
||||
public QuestDirectorMan0l001(uint id) : base(id)
|
||||
public QuestDirectorMan0l001(Player player, uint id)
|
||||
: base(player, id)
|
||||
{
|
||||
this.displayNameId = 0;
|
||||
this.customDisplayName = "questDirect_ocn0Btl02_01";
|
||||
|
@ -45,11 +45,21 @@ namespace FFXIVClassic_Map_Server.Actors
|
||||
return null;
|
||||
}
|
||||
|
||||
public void ClearQuestData()
|
||||
{
|
||||
questData.Clear();
|
||||
}
|
||||
|
||||
public uint GetQuestId()
|
||||
{
|
||||
return actorId;
|
||||
}
|
||||
|
||||
public void ClearQuestFlags()
|
||||
{
|
||||
questFlags = 0;
|
||||
}
|
||||
|
||||
public void SetQuestFlag(int bitIndex, bool value)
|
||||
{
|
||||
if (bitIndex >= 32)
|
||||
|
@ -176,6 +176,21 @@ namespace FFXIVClassic_Map_Server.lua
|
||||
}
|
||||
}
|
||||
|
||||
public static void onBeginLogin(Player player)
|
||||
{
|
||||
if (File.Exists(FILEPATH_PLAYER))
|
||||
{
|
||||
Script script = loadScript(FILEPATH_PLAYER);
|
||||
|
||||
if (script == null)
|
||||
return;
|
||||
|
||||
//Run Script
|
||||
if (!script.Globals.Get("onBeginLogin").IsNil())
|
||||
script.Call(script.Globals["onBeginLogin"], player);
|
||||
}
|
||||
}
|
||||
|
||||
public static void onLogin(Player player)
|
||||
{
|
||||
if (File.Exists(FILEPATH_PLAYER))
|
||||
@ -186,8 +201,8 @@ namespace FFXIVClassic_Map_Server.lua
|
||||
return;
|
||||
|
||||
//Run Script
|
||||
if (!script.Globals.Get("onZoneIn").IsNil())
|
||||
script.Call(script.Globals["onZoneIn"], player);
|
||||
if (!script.Globals.Get("onLogin").IsNil())
|
||||
script.Call(script.Globals["onLogin"], player);
|
||||
}
|
||||
}
|
||||
|
||||
@ -215,10 +230,52 @@ namespace FFXIVClassic_Map_Server.lua
|
||||
private static void SendError(Player player, string message)
|
||||
{
|
||||
List<SubPacket> sendError = new List<SubPacket>();
|
||||
sendError.Add(EndEventPacket.buildPacket(player.actorId, player.eventCurrentOwner, player.eventCurrentStarter));
|
||||
sendError.Add(EndEventPacket.buildPacket(player.actorId, player.currentEventOwner, player.currentEventName));
|
||||
player.sendMessage(SendMessagePacket.MESSAGE_TYPE_SYSTEM_ERROR, "", message);
|
||||
player.playerSession.queuePacket(BasePacket.createPacket(sendError, true, false));
|
||||
}
|
||||
|
||||
|
||||
internal static void doDirectorOnTalked(Director director, Player player, Npc npc)
|
||||
{
|
||||
string luaPath = String.Format(FILEPATH_DIRECTORS, director.getName());
|
||||
|
||||
if (File.Exists(luaPath))
|
||||
{
|
||||
Script script = loadScript(luaPath);
|
||||
|
||||
if (script == null)
|
||||
return;
|
||||
|
||||
//Run Script
|
||||
if (!script.Globals.Get("onTalked").IsNil())
|
||||
script.Call(script.Globals["onTalked"], player, npc);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendError(player, String.Format("ERROR: Could not find script for director {0}.", director.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
internal static void doDirectorOnCommand(Director director, Player player, Command command)
|
||||
{
|
||||
string luaPath = String.Format(FILEPATH_DIRECTORS, director.getName());
|
||||
|
||||
if (File.Exists(luaPath))
|
||||
{
|
||||
Script script = loadScript(luaPath);
|
||||
|
||||
if (script == null)
|
||||
return;
|
||||
|
||||
//Run Script
|
||||
if (!script.Globals.Get("onCommand").IsNil())
|
||||
script.Call(script.Globals["onCommand"], player, command);
|
||||
}
|
||||
else
|
||||
{
|
||||
SendError(player, String.Format("ERROR: Could not find script for director {0}.", director.getName()));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
31
FFXIVClassic Map Server/packets/send/_0x10Packet.cs
Normal file
31
FFXIVClassic Map Server/packets/send/_0x10Packet.cs
Normal file
@ -0,0 +1,31 @@
|
||||
using FFXIVClassic_Lobby_Server.packets;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace FFXIVClassic_Map_Server.packets.send
|
||||
{
|
||||
class _0x10Packet
|
||||
{
|
||||
public const ushort OPCODE = 0x0010;
|
||||
public const uint PACKET_SIZE = 0x28;
|
||||
|
||||
public static SubPacket buildPacket(uint playerActorId, int val)
|
||||
{
|
||||
byte[] data = new byte[PACKET_SIZE - 0x20];
|
||||
|
||||
using (MemoryStream mem = new MemoryStream(data))
|
||||
{
|
||||
using (BinaryWriter binWriter = new BinaryWriter(mem))
|
||||
{
|
||||
binWriter.Write((UInt32)val);
|
||||
}
|
||||
}
|
||||
|
||||
return new SubPacket(OPCODE, playerActorId, playerActorId, data);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user