mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Merge branch 'master' of https://bitbucket.org/Ioncannon/ffxiv-classic-server into method_casing
# Conflicts: # FFXIVClassic Map Server/CommandProcessor.cs # FFXIVClassic Map Server/WorldManager.cs # FFXIVClassic Map Server/actors/area/Area.cs # FFXIVClassic Map Server/actors/area/PrivateArea.cs # FFXIVClassic Map Server/actors/area/Zone.cs # FFXIVClassic Map Server/actors/chara/npc/Npc.cs # FFXIVClassic Map Server/common/Utils.cs # FFXIVClassic Map Server/dataobjects/ConnectedPlayer.cs
This commit is contained in:
		
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -400,7 +400,6 @@ namespace FFXIVClassic_Map_Server | ||||
|                     birthMonth, | ||||
|                     initialTown, | ||||
|                     tribe, | ||||
|                     currentParty, | ||||
|                     restBonus, | ||||
|                     achievementPoints, | ||||
|                     playTime | ||||
| @@ -430,9 +429,9 @@ namespace FFXIVClassic_Map_Server | ||||
|                             player.playerWork.birthdayMonth = reader.GetByte(14); | ||||
|                             player.playerWork.initialTown = reader.GetByte(15); | ||||
|                             player.playerWork.tribe = reader.GetByte(16); | ||||
|                             player.playerWork.restBonusExpRate = reader.GetInt32(18); | ||||
|                             player.achievementPoints = reader.GetUInt32(19); | ||||
|                             player.playTime = reader.GetUInt32(20); | ||||
|                             player.playerWork.restBonusExpRate = reader.GetInt32(17); | ||||
|                             player.achievementPoints = reader.GetUInt32(18); | ||||
|                             player.playTime = reader.GetUInt32(19); | ||||
|                         } | ||||
|                     } | ||||
|                    | ||||
|   | ||||
| @@ -71,7 +71,9 @@ | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Compile Include="actors\area\PrivateArea.cs" /> | ||||
|     <Compile Include="actors\area\SpawnLocation.cs" /> | ||||
|     <Compile Include="actors\area\Zone.cs" /> | ||||
|     <Compile Include="actors\chara\npc\ActorClass.cs" /> | ||||
|     <Compile Include="actors\chara\npc\NpcWork.cs" /> | ||||
|     <Compile Include="actors\chara\AetheryteWork.cs" /> | ||||
|     <Compile Include="actors\chara\player\Equipment.cs" /> | ||||
|   | ||||
| @@ -16,22 +16,22 @@ | ||||
|   See https://github.com/nlog/nlog/wiki/Configuration-file  | ||||
|   for information on customizing logging rules and outputs. | ||||
|    --> | ||||
|   <targets async="true"> | ||||
|   <tarGets async="true"> | ||||
|  | ||||
|     <!--  | ||||
|     add your targets here  | ||||
|     See https://github.com/nlog/NLog/wiki/Targets for possible targets. | ||||
|     add your tarGets here  | ||||
|     See https://github.com/nlog/NLog/wiki/TarGets for possible tarGets. | ||||
|     See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers. | ||||
|     --> | ||||
|        | ||||
|     <!-- | ||||
|     Write events to a file with the date in the filename.  | ||||
|     <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log" | ||||
|     <tarGet xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log" | ||||
|             layout="${longdate} ${uppercase:${level}} ${message}" /> | ||||
|     --> | ||||
|       <target xsi:type="ColoredConsole" name="console" layout="[${longdate}] [${uppercase:${level}}] ${message}" /> | ||||
|       <target xsi:type="File" name="file" fileName="${basedir}/logs/${shortdate}/map.log" layout="[${longdate}] [${uppercase:${level}}] ${message}"/> | ||||
|   </targets> | ||||
|       <tarGet xsi:type="ColoredConsole" name="console" layout="[${longdate}] [${uppercase:${level}}] ${message}" /> | ||||
|       <tarGet xsi:type="File" name="file" fileName="${basedir}/logs/${shortdate}/map.log" layout="[${longdate}] [${uppercase:${level}}] ${message}"/> | ||||
|   </tarGets> | ||||
|  | ||||
|   <rules> | ||||
|     <!-- add your logging rules here --> | ||||
|   | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -349,8 +349,8 @@ namespace FFXIVClassic_Map_Server | ||||
|                             client.QueuePacket(BasePacket.CreatePacket(BlacklistAddedPacket.BuildPacket(player.actorID, true, addBlackList.name), true, false)); | ||||
|                             break; | ||||
|                         case 0x01CA: | ||||
|                             AddRemoveSocialPacket removeBlackList = new AddRemoveSocialPacket(subpacket.data); | ||||
|                             client.QueuePacket(BasePacket.CreatePacket(BlacklistRemovedPacket.BuildPacket(player.actorID, true, removeBlackList.name), true, false)); | ||||
|                             AddRemoveSocialPacket RemoveBlackList = new AddRemoveSocialPacket(subpacket.data); | ||||
|                             client.QueuePacket(BasePacket.CreatePacket(BlacklistRemovedPacket.BuildPacket(player.actorID, true, RemoveBlackList.name), true, false)); | ||||
|                             break; | ||||
|                         case 0x01CB: | ||||
|                             int offset1 = 0; | ||||
| @@ -361,8 +361,8 @@ namespace FFXIVClassic_Map_Server | ||||
|                             client.QueuePacket(BasePacket.CreatePacket(FriendlistAddedPacket.BuildPacket(player.actorID, true, (uint)addFriendList.name.GetHashCode(), true, addFriendList.name), true, false)); | ||||
|                             break; | ||||
|                         case 0x01CD: | ||||
|                             AddRemoveSocialPacket removeFriendList = new AddRemoveSocialPacket(subpacket.data); | ||||
|                             client.QueuePacket(BasePacket.CreatePacket(FriendlistRemovedPacket.BuildPacket(player.actorID, true, removeFriendList.name), true, false)); | ||||
|                             AddRemoveSocialPacket RemoveFriendList = new AddRemoveSocialPacket(subpacket.data); | ||||
|                             client.QueuePacket(BasePacket.CreatePacket(FriendlistRemovedPacket.BuildPacket(player.actorID, true, RemoveFriendList.name), true, false)); | ||||
|                             break; | ||||
|                         case 0x01CE: | ||||
|                             int offset2 = 0; | ||||
|   | ||||
| @@ -17,7 +17,7 @@ namespace FFXIVClassic_Map_Server.Properties { | ||||
|     /// </summary> | ||||
|     // This class was auto-generated by the StronglyTypedResourceBuilder | ||||
|     // class via a tool like ResGen or Visual Studio. | ||||
|     // To add or remove a member, edit your .ResX file then rerun ResGen | ||||
|     // To add or Remove a member, edit your .ResX file then rerun ResGen | ||||
|     // with the /str option, or rebuild your VS project. | ||||
|     [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] | ||||
|     [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
| @@ -105,7 +105,7 @@ namespace FFXIVClassic_Map_Server.Properties { | ||||
|         /// | ||||
|         ///Available commands:  | ||||
|         ///Standard: mypos, music, warp | ||||
|         ///Server Administration: givecurrency, giveitem, givekeyitem, removecurrency, removekeyitem, reloaditems, reloadzones | ||||
|         ///Server Administration: givecurrency, giveitem, givekeyitem, Removecurrency, Removekeyitem, reloaditems, reloadzones | ||||
|         ///Test: test weather. | ||||
|         /// </summary> | ||||
|         public static string CPhelp { | ||||
| @@ -176,38 +176,38 @@ namespace FFXIVClassic_Map_Server.Properties { | ||||
|         /// <summary> | ||||
|         ///   Looks up a localized string similar to Removes the specified currency from the current player's inventory | ||||
|         /// | ||||
|         ///*Syntax:	removecurrency <quantity> | ||||
|         ///		removecurrency <type> <quantity> | ||||
|         ///*Syntax:	Removecurrency <quantity> | ||||
|         ///		Removecurrency <type> <quantity> | ||||
|         ///<type> is the specific type of currency desired, defaults to gil if no type specified. | ||||
|         /// </summary> | ||||
|         public static string CPremovecurrency { | ||||
|         public static string CPRemovecurrency { | ||||
|             get { | ||||
|                 return ResourceManager.GetString("CPremovecurrency", resourceCulture); | ||||
|                 return ResourceManager.GetString("CPRemovecurrency", resourceCulture); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         ///   Looks up a localized string similar to Removes the specified items to the current player's inventory | ||||
|         /// | ||||
|         ///*Syntax:	removeitem <itemid> | ||||
|         ///		removeitem <itemid> <quantity> | ||||
|         ///*Syntax:	Removeitem <itemid> | ||||
|         ///		Removeitem <itemid> <quantity> | ||||
|         ///<item id> is the item's specific id as defined in the server database. | ||||
|         /// </summary> | ||||
|         public static string CPremoveitem { | ||||
|         public static string CPRemoveitem { | ||||
|             get { | ||||
|                 return ResourceManager.GetString("CPremoveitem", resourceCulture); | ||||
|                 return ResourceManager.GetString("CPRemoveitem", resourceCulture); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|         /// <summary> | ||||
|         ///   Looks up a localized string similar to Removes the specified key item to the current player's inventory | ||||
|         /// | ||||
|         ///*Syntax:	removekeyitem <itemid> | ||||
|         ///*Syntax:	Removekeyitem <itemid> | ||||
|         ///<item id> is the key item's specific id as defined in the server database. | ||||
|         /// </summary> | ||||
|         public static string CPremovekeyitem { | ||||
|         public static string CPRemovekeyitem { | ||||
|             get { | ||||
|                 return ResourceManager.GetString("CPremovekeyitem", resourceCulture); | ||||
|                 return ResourceManager.GetString("CPRemovekeyitem", resourceCulture); | ||||
|             } | ||||
|         } | ||||
|          | ||||
|   | ||||
| @@ -83,7 +83,9 @@ namespace FFXIVClassic_Map_Server | ||||
|             mWorldManager = new WorldManager(this); | ||||
|             mWorldManager.LoadZoneList(); | ||||
|             mWorldManager.LoadZoneEntranceList(); | ||||
|             mWorldManager.LoadNPCs(); | ||||
|             mWorldManager.LoadActorClasses(); | ||||
|             mWorldManager.LoadSpawnLocations(); | ||||
|             mWorldManager.SpawnAllActors(); | ||||
|  | ||||
|             IPEndPoint serverEndPoint = new System.Net.IPEndPoint(IPAddress.Parse(ConfigConstants.OPTIONS_BINDIP), int.Parse(ConfigConstants.OPTIONS_PORT)); | ||||
|  | ||||
| @@ -294,7 +296,7 @@ namespace FFXIVClassic_Map_Server | ||||
|         { | ||||
|             BasePacket newPacket = null; | ||||
|  | ||||
|             //Too small to even get length | ||||
|             //Too small to even Get length | ||||
|             if (bytesRead <= offset) | ||||
|                 return null; | ||||
|  | ||||
|   | ||||
| @@ -1,12 +1,21 @@ | ||||
| using FFXIVClassic.Common; | ||||
| using FFXIVClassic_Map_Server; | ||||
| using FFXIVClassic.Common; | ||||
| using FFXIVClassic_Map_Server.actors.area; | ||||
| using FFXIVClassic_Map_Server.actors.chara.npc; | ||||
| using FFXIVClassic_Map_Server.Actors; | ||||
| using FFXIVClassic.Common; | ||||
| using FFXIVClassic_Map_Server.dataobjects; | ||||
| using FFXIVClassic_Map_Server.dataobjects.chara; | ||||
| using FFXIVClassic_Map_Server.lua; | ||||
| using FFXIVClassic_Map_Server.packets.send; | ||||
| using FFXIVClassic_Map_Server.packets.send.actor; | ||||
| using FFXIVClassic_Map_Server.packets.send.login; | ||||
| using MySql.Data.MySqlClient; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server | ||||
| { | ||||
| @@ -16,6 +25,7 @@ namespace FFXIVClassic_Map_Server | ||||
|         private WorldMaster worldMaster = new WorldMaster(); | ||||
|         private Dictionary<uint, Zone> zoneList; | ||||
|         private Dictionary<uint, ZoneEntrance> zoneEntranceList; | ||||
|         private Dictionary<uint, ActorClass> actorClasses = new Dictionary<uint,ActorClass>(); | ||||
|  | ||||
|         private Server mServer; | ||||
|  | ||||
| @@ -66,10 +76,7 @@ namespace FFXIVClassic_Map_Server | ||||
|                     } | ||||
|                 } | ||||
|                 catch (MySqlException e) | ||||
|                 { | ||||
|                     Program.Log.Error(e.ToString()); | ||||
|  | ||||
|                 } | ||||
|                 { Console.WriteLine(e); } | ||||
|                 finally | ||||
|                 { | ||||
|                     conn.Dispose(); | ||||
| @@ -105,7 +112,7 @@ namespace FFXIVClassic_Map_Server | ||||
|                             if (zoneList.ContainsKey(parentZoneId)) | ||||
|                             { | ||||
|                                 Zone parent = zoneList[parentZoneId]; | ||||
|                                 PrivateArea privArea = new PrivateArea(parent, reader.GetUInt32("id"), reader.GetString("className"), reader.GetString("privateAreaName"), reader.GetUInt16("dayMusic"), reader.GetUInt16("nightMusic"), reader.GetUInt16("battleMusic")); | ||||
|                                 PrivateArea privArea = new PrivateArea(parent, reader.GetUInt32("id"), reader.GetString("className"), reader.GetString("privateAreaName"), 1, reader.GetUInt16("dayMusic"), reader.GetUInt16("nightMusic"), reader.GetUInt16("battleMusic")); | ||||
|                                 parent.AddPrivateArea(privArea); | ||||
|                             } | ||||
|                             else | ||||
| @@ -116,16 +123,14 @@ namespace FFXIVClassic_Map_Server | ||||
|                     } | ||||
|                 } | ||||
|                 catch (MySqlException e) | ||||
|                 { | ||||
|                     Program.Log.Error(e.ToString()); | ||||
|                 } | ||||
|                 { Console.WriteLine(e); } | ||||
|                 finally | ||||
|                 { | ||||
|                     conn.Dispose(); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             Program.Log.Info("Loaded {0} zones and {1} private areas.", count1, count2); | ||||
|             Program.Log.Info(String.Format("Loaded {0} zones and {1} private areas.", count1, count2)); | ||||
|         } | ||||
|  | ||||
|         public void LoadZoneEntranceList() | ||||
| @@ -169,19 +174,17 @@ namespace FFXIVClassic_Map_Server | ||||
|                     } | ||||
|                 } | ||||
|                 catch (MySqlException e) | ||||
|                 { | ||||
|                     Program.Log.Error(e.ToString()); | ||||
|                 } | ||||
|                 { Console.WriteLine(e); } | ||||
|                 finally | ||||
|                 { | ||||
|                     conn.Dispose(); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             Program.Log.Info("Loaded {0} zone spawn locations.", count); | ||||
|             Program.Log.Info(String.Format("Loaded {0} zone spawn locations.", count)); | ||||
|         } | ||||
|  | ||||
|         public void LoadNPCs() | ||||
|         public void LoadActorClasses() | ||||
|         {             | ||||
|             int count = 0; | ||||
|             using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) | ||||
| @@ -193,20 +196,11 @@ namespace FFXIVClassic_Map_Server | ||||
|                     string query = @" | ||||
|                                     SELECT  | ||||
|                                     id, | ||||
|                                     name, | ||||
|                                     zoneId,                                     | ||||
|                                     positionX, | ||||
|                                     positionY, | ||||
|                                     positionZ, | ||||
|                                     rotation, | ||||
|                                     actorState, | ||||
|                                     animationId, | ||||
|                                     classPath,                                     | ||||
|                                     displayNameId, | ||||
|                                     customDisplayName, | ||||
|                                     actorClassName, | ||||
|                                     eventConditions | ||||
|                                     FROM gamedata_actor_class | ||||
|                                     WHERE name is not NULL AND zoneId > 0 | ||||
|                                     WHERE classPath <> '' | ||||
|                                     "; | ||||
|  | ||||
|                     MySqlCommand cmd = new MySqlCommand(query, conn); | ||||
| @@ -215,45 +209,35 @@ namespace FFXIVClassic_Map_Server | ||||
|                     { | ||||
|                         while (reader.Read()) | ||||
|                         { | ||||
|                             string customName = null; | ||||
|                             if (!reader.IsDBNull(10)) | ||||
|                                 customName = reader.GetString(10); | ||||
|                             uint id = reader.GetUInt32("id"); | ||||
|                             string classPath = reader.GetString("classPath"); | ||||
|                             uint nameId = reader.GetUInt32("displayNameId"); | ||||
|                             string eventConditions = null; | ||||
|                              | ||||
|                             if (!reader.IsDBNull(3)) | ||||
|                                 eventConditions = reader.GetString("eventConditions"); | ||||
|                             else | ||||
|                                 eventConditions = "{}"; | ||||
|  | ||||
|                             Npc npc = new Npc(reader.GetUInt32(0), reader.GetString(1), reader.GetUInt32(2), reader.GetFloat(3), reader.GetFloat(4), reader.GetFloat(5), reader.GetFloat(6), reader.GetUInt16(7), reader.GetUInt32(8), reader.GetUInt32(9), customName, reader.GetString(11)); | ||||
|  | ||||
|                             if (!reader.IsDBNull(12)) | ||||
|                             { | ||||
|                                 string eventConditions = reader.GetString(12); | ||||
|                                 npc.LoadEventConditions(eventConditions); | ||||
|                             } | ||||
|  | ||||
|                             if (!zoneList.ContainsKey(npc.zoneId)) | ||||
|                                 continue; | ||||
|                             Zone zone = zoneList[npc.zoneId]; | ||||
|                             if (zone == null) | ||||
|                                 continue; | ||||
|                             npc.zone = zone; | ||||
|                             zone.AddActorToZone(npc); | ||||
|                             ActorClass actorClass = new ActorClass(id, classPath, nameId, eventConditions); | ||||
|                             actorClasses.Add(id, actorClass); | ||||
|                             count++; | ||||
|  | ||||
|                         } | ||||
|                     } | ||||
|                     | ||||
|                 } | ||||
|                 catch (MySqlException e) | ||||
|                 { | ||||
|                     Program.Log.Error(e.ToString()); | ||||
|                 } | ||||
|                 { Console.WriteLine(e); } | ||||
|                 finally | ||||
|                 { | ||||
|                     conn.Dispose(); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             Program.Log.Info("Loaded {0} npc(s).", count); | ||||
|             Program.Log.Info(String.Format("Loaded {0} actor classes.", count)); | ||||
|         } | ||||
|  | ||||
|         public void LoadNPCs(uint zoneId) | ||||
|         public void LoadSpawnLocations() | ||||
|         { | ||||
|             int count = 0; | ||||
|             using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) | ||||
| @@ -264,69 +248,80 @@ namespace FFXIVClassic_Map_Server | ||||
|  | ||||
|                     string query = @" | ||||
|                                     SELECT  | ||||
|                                     id, | ||||
|                                     name, | ||||
|                                     zoneId,                                     | ||||
|                                     actorClassId,   | ||||
|                                     uniqueId,                                   | ||||
|                                     zoneId,       | ||||
|                                     privateAreaName,                               | ||||
|                                     privateAreaLevel, | ||||
|                                     positionX, | ||||
|                                     positionY, | ||||
|                                     positionZ, | ||||
|                                     rotation, | ||||
|                                     actorState, | ||||
|                                     animationId, | ||||
|                                     displayNameId, | ||||
|                                     customDisplayName, | ||||
|                                     actorClassName, | ||||
|                                     eventConditions | ||||
|                                     FROM gamedata_actor_class | ||||
|                                     WHERE name is not NULL AND zoneId = @zoneId | ||||
|                                     customDisplayName | ||||
|                                     FROM server_spawn_locations                                     | ||||
|                                     "; | ||||
|  | ||||
|                     MySqlCommand cmd = new MySqlCommand(query, conn); | ||||
|                     cmd.Parameters.AddWithValue("@zoneId", zoneId); | ||||
|  | ||||
|                     using (MySqlDataReader reader = cmd.ExecuteReader()) | ||||
|                     { | ||||
|                         while (reader.Read()) | ||||
|                         { | ||||
|                             string customName = null; | ||||
|                             if (!reader.IsDBNull(10)) | ||||
|                                 customName = reader.GetString(10); | ||||
|                             if (!reader.IsDBNull(11)) | ||||
|                                 customName = reader.GetString("customDisplayName"); | ||||
|  | ||||
|                             Npc npc = new Npc(reader.GetUInt32(0), reader.GetString(1), reader.GetUInt32(2), reader.GetFloat(3), reader.GetFloat(4), reader.GetFloat(5), reader.GetFloat(6), reader.GetUInt16(7), reader.GetUInt32(8), reader.GetUInt32(9), customName, reader.GetString(11)); | ||||
|                             uint classId = reader.GetUInt32("actorClassId"); | ||||
|                             string uniqueId = reader.GetString("uniqueId"); | ||||
|                             uint zoneId = reader.GetUInt32("zoneId"); | ||||
|                             string privAreaName = reader.GetString("privateAreaName"); | ||||
|                             uint privAreaLevel = reader.GetUInt32("privateAreaLevel"); | ||||
|                             float x = reader.GetFloat("positionX"); | ||||
|                             float y = reader.GetFloat("positionY"); | ||||
|                             float z = reader.GetFloat("positionZ"); | ||||
|                             float rot = reader.GetFloat("rotation"); | ||||
|                             ushort state = reader.GetUInt16("actorState"); | ||||
|                             uint animId = reader.GetUInt32("animationId"); | ||||
|  | ||||
|                             if (!reader.IsDBNull(12)) | ||||
|                             { | ||||
|                                 string eventConditions = reader.GetString(12); | ||||
|                                 npc.LoadEventConditions(eventConditions); | ||||
|                             } | ||||
|  | ||||
|                             if (!zoneList.ContainsKey(npc.zoneId)) | ||||
|                             if (!actorClasses.ContainsKey(classId))                                 | ||||
|                                 continue; | ||||
|                             Zone zone = zoneList[npc.zoneId]; | ||||
|                             if (!zoneList.ContainsKey(zoneId)) | ||||
|                                 continue; | ||||
|  | ||||
|                             Zone zone = zoneList[zoneId]; | ||||
|                             if (zone == null) | ||||
|                                 continue; | ||||
|                             npc.zone = zone; | ||||
|                             zone.AddActorToZone(npc); | ||||
|                             count++; | ||||
|  | ||||
|                             SpawnLocation spawn = new SpawnLocation(classId, uniqueId, zoneId, privAreaName, privAreaLevel, x, y, z, rot, state, animId); | ||||
|  | ||||
|                             zone.AddSpawnLocation(spawn); | ||||
|  | ||||
|                             count++; | ||||
|                         } | ||||
|                     } | ||||
|  | ||||
|                      | ||||
|                 } | ||||
|                 catch (MySqlException e) | ||||
|                 { | ||||
|                     Program.Log.Error(e.ToString()); | ||||
|                 } | ||||
|                 { Console.WriteLine(e); } | ||||
|                 finally | ||||
|                 { | ||||
|                     conn.Dispose(); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             Program.Log.Info("Loaded {0} npc(s).", count); | ||||
|             Program.Log.Info(String.Format("Loaded {0} spawn(s).", count)); | ||||
|         } | ||||
|  | ||||
|         //Moves the actor to the new zone if exists. No packets are sent nor position Changed. | ||||
|         public void SpawnAllActors() | ||||
|         { | ||||
|             Program.Log.Info("Spawning actors..."); | ||||
|             foreach (Zone z in zoneList.Values) | ||||
|                 z.SpawnAllActors(true); | ||||
|         } | ||||
|  | ||||
|         //Moves the actor to the new zone if exists. No packets are sent nor position changed. | ||||
|         public void DoSeamlessZoneChange(Player player, uint destinationZoneId) | ||||
|         { | ||||
|             Area oldZone; | ||||
| @@ -340,7 +335,7 @@ namespace FFXIVClassic_Map_Server | ||||
|             //Add player to new zone and update | ||||
|             Zone newZone = GetZone(destinationZoneId); | ||||
|  | ||||
|             //This server Does not contain that zoneId | ||||
|             //This server does not contain that zoneId | ||||
|             if (newZone == null) | ||||
|                 return; | ||||
|  | ||||
| @@ -381,7 +376,7 @@ namespace FFXIVClassic_Map_Server | ||||
|                 newArea = GetZone(destinationZoneId); | ||||
|             else | ||||
|                 newArea = GetZone(destinationZoneId).GetPrivateArea(destinationPrivateArea, 0); | ||||
|             //This server Does not contain that zoneId | ||||
|             //This server does not contain that zoneId | ||||
|             if (newArea == null) | ||||
|                 return; | ||||
|  | ||||
| @@ -451,11 +446,11 @@ namespace FFXIVClassic_Map_Server | ||||
|             //Add player to new zone and update | ||||
|             Zone zone = GetZone(player.zoneId); | ||||
|  | ||||
|             //This server Does not contain that zoneId | ||||
|             //This server does not contain that zoneId | ||||
|             if (zone == null) | ||||
|                 return; | ||||
|  | ||||
|             //Set the current zone and Add player | ||||
|             //Set the current zone and add player | ||||
|             player.zone = zone; | ||||
|  | ||||
|             LuaEngine.OnBeginLogin(player); | ||||
| @@ -469,14 +464,14 @@ namespace FFXIVClassic_Map_Server | ||||
|             LuaEngine.OnZoneIn(player); | ||||
|         } | ||||
|  | ||||
|         public void ReloadZone(uint zoneId) | ||||
|         public void reloadZone(uint zoneId) | ||||
|         { | ||||
|             if (!zoneList.ContainsKey(zoneId)) | ||||
|                 return; | ||||
|  | ||||
|             Zone zone = zoneList[zoneId]; | ||||
|             //zone.Clear(); | ||||
|             LoadNPCs(zone.actorId); | ||||
|             //zone.clear(); | ||||
|             //LoadNPCs(zone.actorId); | ||||
|  | ||||
|         } | ||||
|  | ||||
| @@ -559,6 +554,15 @@ namespace FFXIVClassic_Map_Server | ||||
|             else | ||||
|                 return null; | ||||
|         } | ||||
|  | ||||
|         public ActorClass GetActorClass(uint id) | ||||
|         { | ||||
|             if (actorClasses.ContainsKey(id)) | ||||
|                 return actorClasses[id]; | ||||
|             else | ||||
|                 return null; | ||||
|         } | ||||
|  | ||||
|     } | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -3,13 +3,15 @@ using FFXIVClassic_Map_Server.actors; | ||||
| using FFXIVClassic_Map_Server.lua; | ||||
| using FFXIVClassic_Map_Server.packets.send.actor; | ||||
| using FFXIVClassic_Map_Server.packets.send.actor.events; | ||||
| using FFXIVClassic.Common; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
|  | ||||
| using FFXIVClassic_Map_Server.actors.area; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.Actors | ||||
| { | ||||
|     class Actor | ||||
|     {         | ||||
|     {                | ||||
|         public uint actorId; | ||||
|         public string actorName; | ||||
|  | ||||
| @@ -29,6 +31,7 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|  | ||||
|         public bool spawnedFirstTime = false; | ||||
|  | ||||
|         public string classPath; | ||||
|         public string className; | ||||
|         public List<LuaParam> classParams; | ||||
|  | ||||
| @@ -298,6 +301,53 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|             SubPacket ChangeSpeedPacket = SetActorSpeedPacket.BuildPacket(actorId, actorId, moveSpeeds[0], moveSpeeds[1], moveSpeeds[2]); | ||||
|             zone.BroadcastPacketAroundActor(this, ChangeSpeedPacket); | ||||
|         } | ||||
|          | ||||
|         public void generateActorName(int actorNumber) | ||||
|         { | ||||
|             //Format Class Name | ||||
|             string className = this.className.Replace("Populace", "Ppl") | ||||
|                                              .Replace("Monster", "Mon") | ||||
|                                              .Replace("Crowd", "Crd") | ||||
|                                              .Replace("MapObj", "Map") | ||||
|                                              .Replace("Object", "Obj") | ||||
|                                              .Replace("Retainer", "Rtn") | ||||
|                                              .Replace("Standard", "Std");             | ||||
|             className = Char.ToLowerInvariant(className[0]) + className.Substring(1); | ||||
|  | ||||
|             //Format Zone Name | ||||
|             string zoneName = zone.zoneName.Replace("Field", "Fld") | ||||
|                                            .Replace("Dungeon", "Dgn") | ||||
|                                            .Replace("Town", "Twn") | ||||
|                                            .Replace("Battle", "Btl") | ||||
|                                            .Replace("Test", "Tes") | ||||
|                                            .Replace("Event", "Evt") | ||||
|                                            .Replace("Ship", "Shp") | ||||
|                                            .Replace("Office", "Ofc"); | ||||
|             if (zone is PrivateArea) | ||||
|             { | ||||
|                 //Check if "normal" | ||||
|                 zoneName = zoneName.Remove(zoneName.Length - 1, 1) + "P"; | ||||
|             } | ||||
|             zoneName = Char.ToLowerInvariant(zoneName[0]) + zoneName.Substring(1); | ||||
|  | ||||
|             try | ||||
|             { | ||||
|                 className = className.Substring(0, 20 - zoneName.Length); | ||||
|             } | ||||
|             catch (ArgumentOutOfRangeException e) | ||||
|             {} | ||||
|  | ||||
|             //Convert actor number to base 63 | ||||
|             string classNumber = Utils.ToStringBase63(actorNumber); | ||||
|  | ||||
|             //Get stuff after @ | ||||
|             uint zoneId = zone.actorId; | ||||
|             uint privLevel = 0; | ||||
|             if (zone is PrivateArea) | ||||
|                 privLevel = ((PrivateArea)zone).GetPrivateAreaLevel(); | ||||
|  | ||||
|             actorName = String.Format("{0}_{1}_{2}@{3:X3}{4:X2}", className, zoneName, classNumber, zoneId, privLevel); | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,9 +1,18 @@ | ||||
| using FFXIVClassic_Map_Server.packets; | ||||
| using FFXIVClassic_Map_Server; | ||||
| using FFXIVClassic.Common; | ||||
| using FFXIVClassic_Map_Server.packets; | ||||
| using FFXIVClassic_Map_Server.actors.area; | ||||
| using FFXIVClassic_Map_Server.actors.chara.npc; | ||||
| using FFXIVClassic_Map_Server.dataobjects; | ||||
| using FFXIVClassic_Map_Server.dataobjects.chara; | ||||
| using FFXIVClassic_Map_Server.lua; | ||||
| using FFXIVClassic_Map_Server.packets.send.actor; | ||||
| using MoonSharp.Interpreter; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.Actors | ||||
| { | ||||
| @@ -15,15 +24,16 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|         public ushort weatherNormal, weatherCommon, weatherRare; | ||||
|         public ushort bgmDay, bgmNight, bgmBattle; | ||||
|  | ||||
|         private string classPath; | ||||
|         protected string classPath; | ||||
|  | ||||
|         public int boundingGridSize = 50; | ||||
|         public int minX = -1000, minY = -1000, maxX = 1000, maxY = 1000; | ||||
|         private int numXBlocks, numYBlocks; | ||||
|         private int halfWidth, halfHeight; | ||||
|         protected int numXBlocks, numYBlocks; | ||||
|         protected int halfWidth, halfHeight; | ||||
|  | ||||
|         private Dictionary<uint, Actor> mActorList = new Dictionary<uint,Actor>(); | ||||
|         private List<Actor>[,] mActorBlock; | ||||
|         protected List<SpawnLocation> mSpawnLocations = new List<SpawnLocation>(); | ||||
|         protected Dictionary<uint, Actor> mActorList = new Dictionary<uint, Actor>(); | ||||
|         protected List<Actor>[,] mActorBlock; | ||||
|  | ||||
|         Script areaScript; | ||||
|  | ||||
| @@ -329,5 +339,18 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|             }             | ||||
|         } | ||||
|  | ||||
|         public void SpawnActor(SpawnLocation location) | ||||
|         { | ||||
|             ActorClass actorClass = Server.GetWorldManager().GetActorClass(location.classId); | ||||
|              | ||||
|             if (actorClass == null) | ||||
|                 return; | ||||
|  | ||||
|             Npc npc = new Npc(mActorList.Count + 1, actorClass.actorClassId, location.uniqueId, actorId, location.x, location.y, location.z, location.rot, location.state, location.animId, actorClass.displayNameId, null, actorClass.classPath); | ||||
|             npc.loadEventConditions(actorClass.eventConditions);             | ||||
|  | ||||
|             AddActorToZone(npc);                           | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -2,7 +2,11 @@ | ||||
| using FFXIVClassic_Map_Server.Actors; | ||||
| 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.actors.area | ||||
| { | ||||
| @@ -10,12 +14,14 @@ namespace FFXIVClassic_Map_Server.actors.area | ||||
|     { | ||||
|         private Zone parentZone; | ||||
|         private string privateAreaName; | ||||
|         private uint privateAreaLevel; | ||||
|  | ||||
|         public PrivateArea(Zone parent, uint id, string className, string privateAreaName,ushort bgmDay, ushort bgmNight, ushort bgmBattle) | ||||
|         public PrivateArea(Zone parent, uint id, string className, string privateAreaName, uint privateAreaLevel, ushort bgmDay, ushort bgmNight, ushort bgmBattle) | ||||
|             : base(id, parent.zoneName, parent.regionId, className, bgmDay, bgmNight, bgmBattle, parent.isIsolated, parent.isInn, parent.canRideChocobo, parent.canStealth, true) | ||||
|         { | ||||
|             this.parentZone = parent; | ||||
|             this.privateAreaName = privateAreaName; | ||||
|             this.privateAreaLevel = privateAreaLevel; | ||||
|         } | ||||
|  | ||||
|         public string GetPrivateAreaName() | ||||
| @@ -23,6 +29,11 @@ namespace FFXIVClassic_Map_Server.actors.area | ||||
|             return privateAreaName; | ||||
|         } | ||||
|  | ||||
|         public uint GetPrivateAreaLevel() | ||||
|         { | ||||
|             return privateAreaLevel; | ||||
|         } | ||||
|  | ||||
|         public Zone GetParentZone() | ||||
|         { | ||||
|             return parentZone; | ||||
| @@ -41,6 +52,17 @@ namespace FFXIVClassic_Map_Server.actors.area | ||||
|             ActorInstantiatePacket.BuildPacket(actorId, playerActorId, actorName, className, lParams).DebugPrintSubPacket(); | ||||
|             return ActorInstantiatePacket.BuildPacket(actorId, playerActorId, actorName, className, lParams); | ||||
|         } | ||||
|          | ||||
|  | ||||
|  | ||||
|         public void AddSpawnLocation(SpawnLocation spawn) | ||||
|         { | ||||
|             mSpawnLocations.Add(spawn); | ||||
|         } | ||||
|  | ||||
|         public void SpawnAllActors() | ||||
|         { | ||||
|             foreach (SpawnLocation spawn in mSpawnLocations) | ||||
|                 SpawnActor(spawn); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
							
								
								
									
										38
									
								
								FFXIVClassic Map Server/actors/area/SpawnLocation.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								FFXIVClassic Map Server/actors/area/SpawnLocation.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.actors.area | ||||
| { | ||||
|     class SpawnLocation | ||||
|     { | ||||
|         public uint classId; | ||||
|         public string uniqueId; | ||||
|         public uint zoneId; | ||||
|         public string privAreaName; | ||||
|         public uint privAreaLevel; | ||||
|         public float x; | ||||
|         public float y; | ||||
|         public float z; | ||||
|         public float rot; | ||||
|         public ushort state; | ||||
|         public uint animId; | ||||
|  | ||||
|         public SpawnLocation(uint classId, string uniqueId, uint zoneId, string privAreaName, uint privAreaLevel, float x, float y, float z, float rot, ushort state, uint animId) | ||||
|         { | ||||
|             this.classId = classId; | ||||
|             this.uniqueId = uniqueId; | ||||
|             this.zoneId = zoneId; | ||||
|             this.privAreaName = privAreaName; | ||||
|             this.privAreaLevel = privAreaLevel; | ||||
|             this.x = x; | ||||
|             this.y = y; | ||||
|             this.z = z; | ||||
|             this.rot = rot; | ||||
|             this.state = state; | ||||
|             this.animId = animId; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -1,13 +1,20 @@ | ||||
| using FFXIVClassic_Map_Server.packets; | ||||
| using FFXIVClassic_Map_Server; | ||||
| using FFXIVClassic.Common; | ||||
| using FFXIVClassic_Map_Server.packets; | ||||
| using FFXIVClassic_Map_Server.actors.chara.npc; | ||||
| using FFXIVClassic_Map_Server.Actors; | ||||
| 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.actors.area | ||||
| { | ||||
|     class Zone : Area | ||||
|     { | ||||
|     {         | ||||
|         Dictionary<string, Dictionary<uint, PrivateArea>> privateAreas = new Dictionary<string, Dictionary<uint, PrivateArea>>(); | ||||
|  | ||||
|         public Zone(uint id, string zoneName, ushort regionId, string className, ushort bgmDay, ushort bgmNight, ushort bgmBattle, bool isIsolated, bool isInn, bool canRideChocobo, bool canStealth, bool isInstanceRaid) | ||||
| @@ -50,5 +57,40 @@ namespace FFXIVClassic_Map_Server.actors.area | ||||
|             return ActorInstantiatePacket.BuildPacket(actorId, playerActorId, actorName, className, lParams);         | ||||
|         } | ||||
|  | ||||
|         public void AddSpawnLocation(SpawnLocation spawn) | ||||
|         { | ||||
|             //Is it in a private area? | ||||
|             if (!spawn.privAreaName.Equals("")) | ||||
|             { | ||||
|                 if (privateAreas.ContainsKey(spawn.privAreaName)) | ||||
|                 { | ||||
|                     Dictionary<uint, PrivateArea> levels = privateAreas[spawn.privAreaName]; | ||||
|                     if (levels.ContainsKey(spawn.privAreaLevel)) | ||||
|                         levels[spawn.privAreaLevel].AddSpawnLocation(spawn); | ||||
|                     else | ||||
|                         Program.Log.Error("Tried to add a spawn location to non-existing private area level \"{0}\" in area {1} in zone {2}", spawn.privAreaName, spawn.privAreaLevel, zoneName); | ||||
|                 } | ||||
|                 else | ||||
|                     Program.Log.Error("Tried to add a spawn location to non-existing private area \"{0}\" in zone {1}", spawn.privAreaName, zoneName); | ||||
|             } | ||||
|             else             | ||||
|                 mSpawnLocations.Add(spawn);             | ||||
|         } | ||||
|  | ||||
|         public void SpawnAllActors(bool doPrivAreas) | ||||
|         { | ||||
|             foreach (SpawnLocation spawn in mSpawnLocations)             | ||||
|                 SpawnActor(spawn); | ||||
|  | ||||
|             if (doPrivAreas) | ||||
|             { | ||||
|                 foreach (Dictionary<uint, PrivateArea> areas in privateAreas.Values) | ||||
|                 { | ||||
|                     foreach (PrivateArea pa in areas.Values) | ||||
|                         pa.SpawnAllActors(); | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|  | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -4,7 +4,7 @@ | ||||
|     { | ||||
|         public short tp = 0; | ||||
|  | ||||
|         public int targetInformation = 0; | ||||
|         public int tarGetInformation = 0; | ||||
|  | ||||
|         public ushort[] maxCommandRecastTime = new ushort[40]; | ||||
|  | ||||
|   | ||||
							
								
								
									
										24
									
								
								FFXIVClassic Map Server/actors/chara/npc/ActorClass.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								FFXIVClassic Map Server/actors/chara/npc/ActorClass.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.actors.chara.npc | ||||
| { | ||||
|     class ActorClass | ||||
|     { | ||||
|         public readonly uint actorClassId; | ||||
|         public readonly string classPath; | ||||
|         public readonly uint displayNameId; | ||||
|         public readonly string eventConditions; | ||||
|  | ||||
|         public ActorClass(uint id, string classPath, uint nameId, string eventConditions) | ||||
|         { | ||||
|             this.actorClassId = id; | ||||
|             this.classPath = classPath; | ||||
|             this.displayNameId = nameId; | ||||
|             this.eventConditions = eventConditions; | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -1,41 +1,54 @@ | ||||
| using FFXIVClassic.Common; | ||||
| using FFXIVClassic_Map_Server.packets; | ||||
| using FFXIVClassic_Map_Server.actors; | ||||
| using FFXIVClassic_Map_Server.Actors.Chara; | ||||
| using FFXIVClassic_Map_Server.dataobjects; | ||||
| using FFXIVClassic_Map_Server.lua; | ||||
| using FFXIVClassic_Map_Server.packets; | ||||
| using FFXIVClassic_Map_Server.packets.receive.events; | ||||
| using FFXIVClassic_Map_Server.packets.send.actor; | ||||
| using FFXIVClassic_Map_Server.utils; | ||||
| using MoonSharp.Interpreter; | ||||
| using MySql.Data.MySqlClient; | ||||
| using Newtonsoft.Json; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.Actors | ||||
| { | ||||
|     class Npc : Character | ||||
|     { | ||||
|         private uint actorClassId; | ||||
|         private string uniqueIdentifier; | ||||
|  | ||||
|         public NpcWork npcWork = new NpcWork(); | ||||
|  | ||||
|         public Npc(uint id, string actorName, uint zoneId, float posX, float posY, float posZ, float rot, ushort actorState, uint animationId, uint displayNameId, string customDisplayName, string className) | ||||
|             : base(id) | ||||
|         public Npc(int actorNumber, uint classId, string uniqueId, uint zoneId, float posX, float posY, float posZ, float rot, ushort actorState, uint animationId, uint displayNameId, string customDisplayName, string classPath) | ||||
|             : base((4 << 28 | zoneId << 19 | (uint)actorNumber))   | ||||
|         { | ||||
|             this.actorName = actorName; | ||||
|             this.actorClassId = id; | ||||
|             this.positionX = posX; | ||||
|             this.positionY = posY; | ||||
|             this.positionZ = posZ; | ||||
|             this.rotation = rot; | ||||
|             this.animationId = animationId; | ||||
|             this.className = className; | ||||
|  | ||||
|             this.displayNameId = displayNameId; | ||||
|             this.customDisplayName = customDisplayName; | ||||
|  | ||||
|             this.zoneId = zoneId; | ||||
|             this.uniqueIdentifier = uniqueId; | ||||
|  | ||||
|             LoadNpcTemplate(id); | ||||
|             this.zoneId = zoneId; | ||||
|             this.zone = Server.GetWorldManager().GetZone(zoneId); | ||||
|  | ||||
|             this.actorClassId = classId; | ||||
|  | ||||
|             loadNpcAppearance(classId); | ||||
|  | ||||
|             this.classPath = classPath; | ||||
|             className = classPath.Substring(classPath.LastIndexOf("/")+1); | ||||
|  | ||||
|             charaWork.battleSave.potencial = 1.0f; | ||||
|  | ||||
| @@ -56,6 +69,11 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|  | ||||
|             charaWork.property[3] = 1; | ||||
|             charaWork.property[4] = 1; | ||||
|  | ||||
|             npcWork.pushCommand = 0x271D; | ||||
|             npcWork.pushCommandPriority = 1; | ||||
|  | ||||
|             generateActorName((int)actorNumber);             | ||||
|         } | ||||
|  | ||||
|         public SubPacket CreateAddActorPacket(uint playerActorId) | ||||
| @@ -63,19 +81,34 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|             return AddActorPacket.BuildPacket(actorId, playerActorId, 8); | ||||
|         } | ||||
|  | ||||
|         // actorClassId, [], [], numBattleCommon, [battleCommon], numEventCommon, [eventCommon], args for either initForBattle/initForEvent | ||||
|         public override SubPacket CreateScriptBindPacket(uint playerActorId) | ||||
|         { | ||||
|             List<LuaParam> lParams; | ||||
|  | ||||
|             Player player = Server.GetWorldManager().GetPCInWorld(playerActorId); | ||||
|             lParams = LuaEngine.DoActorInstantiate(player, this); | ||||
|             lParams = DoActorInit(player);             | ||||
|  | ||||
|             if (lParams == null) | ||||
|             { | ||||
|                 className = "PopulaceStandard"; | ||||
|                 lParams = LuaUtils.CreateLuaParamList("/Chara/Npc/Populace/PopulaceStandard", false, false, false, false, false, 0xF47F6, false, false, 0, 1, "TEST"); | ||||
|                 string classPathFake = "/Chara/Npc/Populace/PopulaceStandard"; | ||||
|                 string classNameFake = "PopulaceStandard"; | ||||
|                 lParams = LuaUtils.CreateLuaParamList(classPathFake, false, false, false, false, false, 0xF47F6, false, false, 0, 0); | ||||
|                 ActorInstantiatePacket.BuildPacket(actorId, playerActorId, actorName, classNameFake, lParams).DebugPrintSubPacket(); | ||||
|                 return ActorInstantiatePacket.BuildPacket(actorId, playerActorId, actorName, classNameFake, lParams); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 lParams.Insert(0, new LuaParam(2, classPath)); | ||||
|                 lParams.Insert(1, new LuaParam(4, 4)); | ||||
|                 lParams.Insert(2, new LuaParam(4, 4)); | ||||
|                 lParams.Insert(3, new LuaParam(4, 4)); | ||||
|                 lParams.Insert(4, new LuaParam(4, 4)); | ||||
|                 lParams.Insert(5, new LuaParam(4, 4)); | ||||
|                 lParams.Insert(6, new LuaParam(0, (int)actorClassId)); | ||||
|             } | ||||
|  | ||||
|             ActorInstantiatePacket.BuildPacket(actorId, playerActorId, actorName, className, lParams).DebugPrintSubPacket(); | ||||
|             return ActorInstantiatePacket.BuildPacket(actorId, playerActorId, actorName, className, lParams); | ||||
|         } | ||||
|  | ||||
| @@ -142,6 +175,8 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|             } | ||||
|  | ||||
|             propPacketUtil.AddProperty("npcWork.hateType"); | ||||
|             propPacketUtil.AddProperty("npcWork.pushCommand"); | ||||
|             propPacketUtil.AddProperty("npcWork.pushCommandPriority"); | ||||
|  | ||||
|             return BasePacket.CreatePacket(propPacketUtil.Done(), true, false); | ||||
|         } | ||||
| @@ -151,7 +186,7 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|             return actorClassId; | ||||
|         } | ||||
|  | ||||
|         public void LoadNpcTemplate(uint id) | ||||
|         public void loadNpcAppearance(uint id) | ||||
|         { | ||||
|             using (MySqlConnection conn = new MySqlConnection(String.Format("Server={0}; Port={1}; Database={2}; UID={3}; Password={4}", ConfigConstants.DATABASE_HOST, ConfigConstants.DATABASE_PORT, ConfigConstants.DATABASE_NAME, ConfigConstants.DATABASE_USERNAME, ConfigConstants.DATABASE_PASSWORD))) | ||||
|             { | ||||
| @@ -166,7 +201,7 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|                                     hairStyle, | ||||
|                                     hairHighlightColor, | ||||
|                                     hairVariation, | ||||
|                                     faceType, | ||||
|                                     faceType,    | ||||
|                                     characteristics, | ||||
|                                     characteristicsColor, | ||||
|                                     faceEyebrows, | ||||
| @@ -220,26 +255,32 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|                             appearanceIds[Character.HIGHLIGHT_HAIR] = (uint)(reader.GetUInt32(3) | reader.GetUInt32(2) << 10); //5- Hair Highlight, 4 - Hair Style | ||||
|                             appearanceIds[Character.VOICE] = reader.GetUInt32(17); | ||||
|                             appearanceIds[Character.MAINHAND] = reader.GetUInt32(19); | ||||
|                             //appearanceIds[Character.WEAPON2] = reader.GetUInt32(22); | ||||
|                             appearanceIds[Character.OFFHAND] = reader.GetUInt32(20); | ||||
|                             appearanceIds[Character.SPMAINHAND] = reader.GetUInt32(21); | ||||
|                             appearanceIds[Character.SPOFFHAND] = reader.GetUInt32(22); | ||||
|                             appearanceIds[Character.THROWING] = reader.GetUInt32(23); | ||||
|                             appearanceIds[Character.PACK] = reader.GetUInt32(24); | ||||
|                             appearanceIds[Character.POUCH] = reader.GetUInt32(25); | ||||
|                             appearanceIds[Character.HEADGEAR] = reader.GetUInt32(26); | ||||
|                             appearanceIds[Character.BODYGEAR] = reader.GetUInt32(27); | ||||
|                             appearanceIds[Character.LEGSGEAR] = reader.GetUInt32(28); | ||||
|                             appearanceIds[Character.HANDSGEAR] = reader.GetUInt32(29); | ||||
|                             appearanceIds[Character.FEETGEAR] = reader.GetUInt32(30); | ||||
|                             appearanceIds[Character.WAISTGEAR] = reader.GetUInt32(31); | ||||
|                             appearanceIds[Character.R_EAR] = reader.GetUInt32(32); | ||||
|                             appearanceIds[Character.L_EAR] = reader.GetUInt32(33); | ||||
|                             appearanceIds[Character.R_RINGFINGER] = reader.GetUInt32(36); | ||||
|                             appearanceIds[Character.L_RINGFINGER] = reader.GetUInt32(37); | ||||
|                             appearanceIds[Character.NECKGEAR] = reader.GetUInt32(32); | ||||
|                             appearanceIds[Character.R_EAR] = reader.GetUInt32(33); | ||||
|                             appearanceIds[Character.L_EAR] = reader.GetUInt32(34); | ||||
|                             appearanceIds[Character.R_INDEXFINGER] = reader.GetUInt32(35); | ||||
|                             appearanceIds[Character.L_INDEXFINGER] = reader.GetUInt32(36); | ||||
|                             appearanceIds[Character.R_RINGFINGER] = reader.GetUInt32(37); | ||||
|                             appearanceIds[Character.L_RINGFINGER] = reader.GetUInt32(38); | ||||
|  | ||||
|                         } | ||||
|                     } | ||||
|  | ||||
|                 } | ||||
|                 catch (MySqlException e) | ||||
|                 { | ||||
|                     Program.Log.Error(e.ToString()); | ||||
|                 } | ||||
|                 { Console.WriteLine(e); } | ||||
|                 finally | ||||
|                 { | ||||
|                     conn.Dispose(); | ||||
| @@ -247,10 +288,132 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public void LoadEventConditions(string eventConditions) | ||||
|         public void loadEventConditions(string eventConditions) | ||||
|         { | ||||
|             EventList conditions = JsonConvert.DeserializeObject<EventList>(eventConditions); | ||||
|             this.eventConditions = conditions; | ||||
|         } | ||||
|  | ||||
|         public List<LuaParam> DoActorInit(Player player) | ||||
|         { | ||||
|             Script parent = null, child = null; | ||||
|  | ||||
|             if (File.Exists("./scripts/base/" + classPath + ".lua")) | ||||
|                 parent = LuaEngine.LoadScript("./scripts/base/" + classPath + ".lua"); | ||||
|             if (File.Exists(String.Format("./scripts/unique/{0}/{1}/{2}.lua", zone.zoneName, className, uniqueIdentifier))) | ||||
|                 child = LuaEngine.LoadScript(String.Format("./scripts/unique/{0}/{1}/{2}.lua", zone.zoneName, className, uniqueIdentifier)); | ||||
|  | ||||
|             if (parent == null && child == null) | ||||
|             { | ||||
|                 LuaEngine.SendError(player, String.Format("ERROR: Could not find script for actor {0}.", GetName())); | ||||
|                 return null; | ||||
|             } | ||||
|  | ||||
|             DynValue result; | ||||
|                              | ||||
|             if (child != null && child.Globals["init"] != null) | ||||
|                 result = child.Call(child.Globals["init"], this); | ||||
|             else if (parent != null && parent.Globals["init"] != null) | ||||
|                 result = parent.Call(parent.Globals["init"], this); | ||||
|             else | ||||
|                 return null; | ||||
|  | ||||
|             List<LuaParam> lparams = LuaUtils.CreateLuaParamList(result); | ||||
|             return lparams;           | ||||
|         } | ||||
|  | ||||
|         public void DoEventStart(Player player, EventStartPacket eventStart) | ||||
|         { | ||||
|             Script parent = null, child = null; | ||||
|  | ||||
|             if (File.Exists("./scripts/base/" + classPath + ".lua")) | ||||
|                 parent = LuaEngine.LoadScript("./scripts/base/" + classPath + ".lua"); | ||||
|             if (File.Exists(String.Format("./scripts/unique/{0}/{1}/{2}.lua", zone.zoneName, className, uniqueIdentifier))) | ||||
|                 child = LuaEngine.LoadScript(String.Format("./scripts/unique/{0}/{1}/{2}.lua", zone.zoneName, className, uniqueIdentifier)); | ||||
|  | ||||
|             if (parent == null) | ||||
|             { | ||||
|                 LuaEngine.SendError(player, String.Format("ERROR: Could not find script for actor {0}.", GetName())); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             //Have to do this to combine LuaParams | ||||
|             List<Object> objects = new List<Object>(); | ||||
|             objects.Add(player); | ||||
|             objects.Add(this); | ||||
|             objects.Add(eventStart.triggerName); | ||||
|  | ||||
|             if (eventStart.luaParams != null) | ||||
|                 objects.AddRange(LuaUtils.CreateLuaParamObjectList(eventStart.luaParams)); | ||||
|  | ||||
|             //Run Script | ||||
|             DynValue result; | ||||
|  | ||||
|             if (child != null && !child.Globals.Get("onEventStarted").IsNil()) | ||||
|                 result = child.Call(child.Globals["onEventStarted"], objects.ToArray()); | ||||
|             else if (!parent.Globals.Get("onEventStarted").IsNil()) | ||||
|                 result = parent.Call(parent.Globals["onEventStarted"], objects.ToArray()); | ||||
|             else | ||||
|                 return; | ||||
|  | ||||
|         } | ||||
|  | ||||
|         public void DoEventUpdate(Player player, EventUpdatePacket eventUpdate) | ||||
|         { | ||||
|             Script parent = null, child = null; | ||||
|  | ||||
|             if (File.Exists("./scripts/base/" + classPath + ".lua")) | ||||
|                 parent = LuaEngine.LoadScript("./scripts/base/" + classPath + ".lua"); | ||||
|             if (File.Exists(String.Format("./scripts/unique/{0}/{1}/{2}.lua", zone.zoneName, className, uniqueIdentifier))) | ||||
|                 child = LuaEngine.LoadScript(String.Format("./scripts/unique/{0}/{1}/{2}.lua", zone.zoneName, className, uniqueIdentifier)); | ||||
|  | ||||
|             if (parent == null) | ||||
|             { | ||||
|                 LuaEngine.SendError(player, String.Format("ERROR: Could not find script for actor {0}.", GetName())); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             //Have to do this to combine LuaParams | ||||
|             List<Object> objects = new List<Object>(); | ||||
|             objects.Add(player); | ||||
|             objects.Add(this); | ||||
|             objects.Add(eventUpdate.val2); | ||||
|             objects.AddRange(LuaUtils.CreateLuaParamObjectList(eventUpdate.luaParams)); | ||||
|  | ||||
|             //Run Script | ||||
|             DynValue result; | ||||
|  | ||||
|             if (child != null && !child.Globals.Get("onEventUpdate").IsNil()) | ||||
|                 result = child.Call(child.Globals["onEventUpdate"], objects.ToArray()); | ||||
|             else if (!parent.Globals.Get("onEventUpdate").IsNil()) | ||||
|                 result = parent.Call(parent.Globals["onEventUpdate"], objects.ToArray()); | ||||
|             else | ||||
|                 return; | ||||
|  | ||||
|         } | ||||
|  | ||||
|         internal void DoOnActorSpawn(Player player) | ||||
|         { | ||||
|             Script parent = null, child = null; | ||||
|  | ||||
|             if (File.Exists("./scripts/base/" + classPath + ".lua")) | ||||
|                 parent = LuaEngine.LoadScript("./scripts/base/" + classPath + ".lua"); | ||||
|             if (File.Exists(String.Format("./scripts/unique/{0}/{1}/{2}.lua", zone.zoneName, className, uniqueIdentifier))) | ||||
|                 child = LuaEngine.LoadScript(String.Format("./scripts/unique/{0}/{1}/{2}.lua", zone.zoneName, className, uniqueIdentifier)); | ||||
|  | ||||
|             if (parent == null) | ||||
|             { | ||||
|                 LuaEngine.SendError(player, String.Format("ERROR: Could not find script for actor {0}.", GetName())); | ||||
|                 return; | ||||
|             } | ||||
|                 | ||||
|             //Run Script | ||||
|             if (child != null && !child.Globals.Get("onSpawn").IsNil()) | ||||
|                 child.Call(child.Globals["onSpawn"], player, this); | ||||
|             else if (!parent.Globals.Get("onSpawn").IsNil()) | ||||
|                 parent.Call(parent.Globals["onSpawn"], player, this); | ||||
|             else | ||||
|                 return;                 | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -241,7 +241,7 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|             packets.Add(_0x132Packet.BuildPacket(playerActorId, 0x4, "commandContent")); | ||||
|             packets.Add(_0x132Packet.BuildPacket(playerActorId, 0x6, "commandJudgeMode")); | ||||
|             packets.Add(_0x132Packet.BuildPacket(playerActorId, 0x100, "commandRequest")); | ||||
|             packets.Add(_0x132Packet.BuildPacket(playerActorId, 0x100, "widgetCreate")); | ||||
|             packets.Add(_0x132Packet.BuildPacket(playerActorId, 0x100, "widGetCreate")); | ||||
|             packets.Add(_0x132Packet.BuildPacket(playerActorId, 0x100, "macroRequest")); | ||||
|             return packets; | ||||
|         } | ||||
| @@ -386,7 +386,7 @@ namespace FFXIVClassic_Map_Server.Actors | ||||
|             for (int i = 0; i < charaWork.additionalCommandAcquired.Length; i++) | ||||
|             { | ||||
|                 if (charaWork.additionalCommandAcquired[i] != false) | ||||
|                     propPacketUtil.AddProperty(String.Format("charaWork.additionalCommandAcquired[{0}]", i)); | ||||
|                     propPacketUtil.AddProperty(String.Format("charaWork.AdditionalCommandAcquired[{0}]", i)); | ||||
|             } | ||||
|              | ||||
|             for (int i = 0; i < charaWork.parameterSave.commandSlot_compatibility.Length; i++) | ||||
|   | ||||
| @@ -1,9 +1,14 @@ | ||||
| using FFXIVClassic.Common; | ||||
| using FFXIVClassic_Map_Server; | ||||
| using FFXIVClassic.Common; | ||||
| using FFXIVClassic_Map_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; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
|  | ||||
| namespace FFXIVClassic_Map_Server.dataobjects | ||||
| { | ||||
| @@ -111,7 +116,7 @@ namespace FFXIVClassic_Map_Server.dataobjects | ||||
|         public void UpdateInstance(List<Actor> list) | ||||
|         {             | ||||
|             List<BasePacket> basePackets = new List<BasePacket>(); | ||||
|             List<SubPacket> removeActorSubpackets = new List<SubPacket>(); | ||||
|             List<SubPacket> RemoveActorSubpackets = new List<SubPacket>(); | ||||
|             List<SubPacket> posUpdateSubpackets = new List<SubPacket>(); | ||||
|  | ||||
|             //Remove missing actors | ||||
| @@ -145,7 +150,7 @@ namespace FFXIVClassic_Map_Server.dataobjects | ||||
|  | ||||
|                     if (actor is Npc) | ||||
|                     { | ||||
|                         LuaEngine.DoActorOnSpawn(GetActor(), (Npc)actor); | ||||
|                         ((Npc)actor).DoOnActorSpawn(playerActor); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|   | ||||
| @@ -28,27 +28,27 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|             UserData.RegistrationPolicy = InteropRegistrationPolicy.Automatic; | ||||
|         } | ||||
|  | ||||
|         public static List<LuaParam> DoActorInstantiate(Player player, Actor target) | ||||
|         public static List<LuaParam> DoActorInstantiate(Player player, Actor tarGet) | ||||
|         { | ||||
|             string luaPath; | ||||
|  | ||||
|             if (target is Npc) | ||||
|             if (tarGet is Npc) | ||||
|             { | ||||
|                 luaPath = String.Format(FILEPATH_NPCS, target.zoneId, target.GetName()); | ||||
|                 luaPath = String.Format(FILEPATH_NPCS, tarGet.zoneId, tarGet.GetName()); | ||||
|                 if (File.Exists(luaPath)) | ||||
|                 {                     | ||||
|                     Script script = loadScript(luaPath); | ||||
|                     Script script = LoadScript(luaPath); | ||||
|  | ||||
|                     if (script == null) | ||||
|                         return null; | ||||
|  | ||||
|                     DynValue result = script.Call(script.Globals["init"], target); | ||||
|                     DynValue result = script.Call(script.Globals["init"], tarGet); | ||||
|                     List<LuaParam> lparams = LuaUtils.CreateLuaParamList(result); | ||||
|                     return lparams; | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     SendError(player, String.Format("ERROR: Could not find script for actor {0}.", target.GetName())); | ||||
|                     SendError(player, String.Format("ERROR: Could not find script for actor {0}.", tarGet.GetName())); | ||||
|                     return null; | ||||
|                 } | ||||
|             } | ||||
| @@ -56,24 +56,30 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|             return null; | ||||
|         }        | ||||
|  | ||||
|         public static void DoActorOnEventStarted(Player player, Actor target, EventStartPacket eventStart) | ||||
|         public static void DoActorOnEventStarted(Player player, Actor tarGet, EventStartPacket eventStart) | ||||
|         { | ||||
|             if (tarGet is Npc) | ||||
|             { | ||||
|                 ((Npc)tarGet).DoEventStart(player, eventStart); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             string luaPath; | ||||
|  | ||||
|             if (target is Command) | ||||
|             if (tarGet is Command) | ||||
|             { | ||||
|                 luaPath = String.Format(FILEPATH_COMMANDS, target.GetName()); | ||||
|                 luaPath = String.Format(FILEPATH_COMMANDS, tarGet.GetName()); | ||||
|             } | ||||
|             else if (target is Director) | ||||
|             else if (tarGet is Director) | ||||
|             { | ||||
|                 luaPath = String.Format(FILEPATH_DIRECTORS, target.GetName()); | ||||
|                 luaPath = String.Format(FILEPATH_DIRECTORS, tarGet.GetName()); | ||||
|             } | ||||
|             else  | ||||
|                 luaPath = String.Format(FILEPATH_NPCS, target.zoneId, target.GetName()); | ||||
|                 luaPath = String.Format(FILEPATH_NPCS, tarGet.zoneId, tarGet.GetName()); | ||||
|  | ||||
|             if (File.Exists(luaPath)) | ||||
|             { | ||||
|                 Script script = loadScript(luaPath); | ||||
|                 Script script = LoadScript(luaPath); | ||||
|  | ||||
|                 if (script == null) | ||||
|                     return; | ||||
| @@ -81,7 +87,7 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|                 //Have to Do this to combine LuaParams | ||||
|                 List<Object> objects = new List<Object>(); | ||||
|                 objects.Add(player); | ||||
|                 objects.Add(target); | ||||
|                 objects.Add(tarGet); | ||||
|                 objects.Add(eventStart.triggerName); | ||||
|  | ||||
|                 if (eventStart.luaParams != null) | ||||
| @@ -93,47 +99,53 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 SendError(player, String.Format("ERROR: Could not find script for actor {0}.", target.GetName())); | ||||
|                 SendError(player, String.Format("ERROR: Could not find script for actor {0}.", tarGet.GetName())); | ||||
|             } | ||||
|             | ||||
|         } | ||||
|  | ||||
|         public static void DoActorOnSpawn(Player player, Npc target) | ||||
|         public static void DoActorOnSpawn(Player player, Npc tarGet) | ||||
|         { | ||||
|             string luaPath = String.Format(FILEPATH_NPCS, target.zoneId, target.GetName()); | ||||
|             string luaPath = String.Format(FILEPATH_NPCS, tarGet.zoneId, tarGet.GetName()); | ||||
|  | ||||
|             if (File.Exists(luaPath)) | ||||
|             { | ||||
|                 Script script = loadScript(luaPath); | ||||
|                 Script script = LoadScript(luaPath); | ||||
|  | ||||
|                 if (script == null) | ||||
|                     return; | ||||
|  | ||||
|                 //Run Script | ||||
|                 if (!script.Globals.Get("onSpawn").IsNil()) | ||||
|                     script.Call(script.Globals["onSpawn"], player, target); | ||||
|                     script.Call(script.Globals["onSpawn"], player, tarGet); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 SendError(player, String.Format("ERROR: Could not find script for actor {0}.", target.GetName())); | ||||
|                 SendError(player, String.Format("ERROR: Could not find script for actor {0}.", tarGet.GetName())); | ||||
|             } | ||||
|  | ||||
|         } | ||||
|  | ||||
|         public static void DoActorOnEventUpdated(Player player, Actor target, EventUpdatePacket eventUpdate) | ||||
|         public static void DoActorOnEventUpdated(Player player, Actor tarGet, EventUpdatePacket eventUpdate) | ||||
|         { | ||||
|             if (tarGet is Npc) | ||||
|             { | ||||
|                 ((Npc)tarGet).DoEventUpdate(player, eventUpdate); | ||||
|                 return; | ||||
|             } | ||||
|  | ||||
|             string luaPath;  | ||||
|  | ||||
|             if (target is Command)             | ||||
|                 luaPath = String.Format(FILEPATH_COMMANDS, target.GetName()); | ||||
|             else if (target is Director) | ||||
|                 luaPath = String.Format(FILEPATH_DIRECTORS, target.GetName());             | ||||
|             if (tarGet is Command)             | ||||
|                 luaPath = String.Format(FILEPATH_COMMANDS, tarGet.GetName()); | ||||
|             else if (tarGet is Director) | ||||
|                 luaPath = String.Format(FILEPATH_DIRECTORS, tarGet.GetName());             | ||||
|             else | ||||
|                 luaPath = String.Format(FILEPATH_NPCS, target.zoneId, target.GetName()); | ||||
|                 luaPath = String.Format(FILEPATH_NPCS, tarGet.zoneId, tarGet.GetName()); | ||||
|  | ||||
|             if (File.Exists(luaPath)) | ||||
|             { | ||||
|                 Script script = loadScript(luaPath); | ||||
|                 Script script = LoadScript(luaPath); | ||||
|  | ||||
|                 if (script == null) | ||||
|                     return; | ||||
| @@ -141,7 +153,7 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|                 //Have to Do this to combine LuaParams | ||||
|                 List<Object> objects = new List<Object>(); | ||||
|                 objects.Add(player); | ||||
|                 objects.Add(target); | ||||
|                 objects.Add(tarGet); | ||||
|                 objects.Add(eventUpdate.val2); | ||||
|                 objects.AddRange(LuaUtils.CreateLuaParamObjectList(eventUpdate.luaParams)); | ||||
|  | ||||
| @@ -151,7 +163,7 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 SendError(player, String.Format("ERROR: Could not find script for actor {0}.", target.GetName())); | ||||
|                 SendError(player, String.Format("ERROR: Could not find script for actor {0}.", tarGet.GetName())); | ||||
|             }                   | ||||
|         } | ||||
|  | ||||
| @@ -161,7 +173,7 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|            | ||||
|             if (File.Exists(luaPath)) | ||||
|             { | ||||
|                 Script script = loadScript(luaPath); | ||||
|                 Script script = LoadScript(luaPath); | ||||
|  | ||||
|                 if (script == null) | ||||
|                     return; | ||||
| @@ -176,7 +188,7 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|         { | ||||
|             if (File.Exists(FILEPATH_PLAYER)) | ||||
|             { | ||||
|                 Script script = loadScript(FILEPATH_PLAYER); | ||||
|                 Script script = LoadScript(FILEPATH_PLAYER); | ||||
|  | ||||
|                 if (script == null) | ||||
|                     return; | ||||
| @@ -191,7 +203,7 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|         { | ||||
|             if (File.Exists(FILEPATH_PLAYER)) | ||||
|             { | ||||
|                 Script script = loadScript(FILEPATH_PLAYER); | ||||
|                 Script script = LoadScript(FILEPATH_PLAYER); | ||||
|  | ||||
|                 if (script == null) | ||||
|                     return; | ||||
| @@ -202,14 +214,14 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         private static Script loadScript(string filename) | ||||
|         public static Script LoadScript(string filename) | ||||
|         { | ||||
|             Script script = new Script(); | ||||
|             ((FileSystemScriptLoader)script.Options.ScriptLoader).ModulePaths = FileSystemScriptLoader.UnpackStringPaths("./scripts/?;./scripts/?.lua"); | ||||
|             script.Globals["getWorldManager"] = (Func<WorldManager>)Server.GetWorldManager; | ||||
|             script.Globals["getStaticActor"] = (Func<string, Actor>)Server.GetStaticActors; | ||||
|             script.Globals["getWorldMaster"] = (Func<Actor>)Server.GetWorldManager().GetActor; | ||||
|             script.Globals["getItemGamedata"] = (Func<uint, Item>)Server.GetItemGamedata; | ||||
|             script.Globals["GetWorldManager"] = (Func<WorldManager>)Server.GetWorldManager; | ||||
|             script.Globals["GetStaticActor"] = (Func<string, Actor>)Server.GetStaticActors; | ||||
|             script.Globals["GetWorldMaster"] = (Func<Actor>)Server.GetWorldManager().GetActor; | ||||
|             script.Globals["GetItemGamedata"] = (Func<uint, Item>)Server.GetItemGamedata; | ||||
|  | ||||
|             try | ||||
|             { | ||||
| @@ -223,7 +235,7 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|             return script; | ||||
|         } | ||||
|  | ||||
|         private static void SendError(Player player, string message) | ||||
|         public static void SendError(Player player, string message) | ||||
|         { | ||||
|             List<SubPacket> SendError = new List<SubPacket>(); | ||||
|             SendError.Add(EndEventPacket.BuildPacket(player.actorId, player.currentEventOwner, player.currentEventName)); | ||||
| @@ -238,7 +250,7 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|  | ||||
|             if (File.Exists(luaPath)) | ||||
|             { | ||||
|                 Script script = loadScript(luaPath); | ||||
|                 Script script = LoadScript(luaPath); | ||||
|  | ||||
|                 if (script == null) | ||||
|                     return; | ||||
| @@ -259,7 +271,7 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|  | ||||
|             if (File.Exists(luaPath)) | ||||
|             { | ||||
|                 Script script = loadScript(luaPath); | ||||
|                 Script script = LoadScript(luaPath); | ||||
|  | ||||
|                 if (script == null) | ||||
|                     return; | ||||
|   | ||||
| @@ -1,11 +1,11 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <packages> | ||||
|   <package id="Cyotek.CircularBuffer" version="1.0.0.0" targetFramework="net45" /> | ||||
|   <package id="Dapper" version="1.42" targetFramework="net45" /> | ||||
|   <package id="MoonSharp" version="1.2.1.0" targetFramework="net45" /> | ||||
|   <package id="MySql.Data" version="6.9.7" targetFramework="net45" /> | ||||
|   <package id="Newtonsoft.Json" version="8.0.3" targetFramework="net45" /> | ||||
|   <package id="NLog" version="4.3.5" targetFramework="net45" /> | ||||
|   <package id="NLog.Config" version="4.3.5" targetFramework="net45" /> | ||||
|   <package id="NLog.Schema" version="4.3.4" targetFramework="net45" /> | ||||
|   <package id="Cyotek.CircularBuffer" version="1.0.0.0" tarGetFramework="net45" /> | ||||
|   <package id="Dapper" version="1.42" tarGetFramework="net45" /> | ||||
|   <package id="MoonSharp" version="1.2.1.0" tarGetFramework="net45" /> | ||||
|   <package id="MySql.Data" version="6.9.7" tarGetFramework="net45" /> | ||||
|   <package id="Newtonsoft.Json" version="8.0.3" tarGetFramework="net45" /> | ||||
|   <package id="NLog" version="4.3.5" tarGetFramework="net45" /> | ||||
|   <package id="NLog.Config" version="4.3.5" tarGetFramework="net45" /> | ||||
|   <package id="NLog.Schema" version="4.3.4" tarGetFramework="net45" /> | ||||
| </packages> | ||||
| @@ -10,7 +10,7 @@ namespace FFXIVClassic_Map_Server.packets | ||||
|         public ushort       subpacketSize; | ||||
|         public ushort       type; | ||||
|         public uint         sourceId;  | ||||
|         public uint         targetId; | ||||
|         public uint         tarGetId; | ||||
|         public uint         unknown1; | ||||
|     } | ||||
|  | ||||
| @@ -68,14 +68,14 @@ namespace FFXIVClassic_Map_Server.packets | ||||
|             offset += header.subpacketSize; | ||||
|         } | ||||
|  | ||||
|         public SubPacket(ushort opcode, uint sourceId, uint targetId, byte[] data) | ||||
|         public SubPacket(ushort opcode, uint sourceId, uint tarGetId, byte[] data) | ||||
|         { | ||||
|             this.header = new SubPacketHeader(); | ||||
|             this.gameMessage = new GameMessageHeader(); | ||||
|  | ||||
|             gameMessage.opcode = opcode; | ||||
|             header.sourceId = sourceId; | ||||
|             header.targetId = targetId; | ||||
|             header.tarGetId = tarGetId; | ||||
|  | ||||
|             gameMessage.timestamp = Utils.UnixTimeStampUTC(); | ||||
|  | ||||
| @@ -97,7 +97,7 @@ namespace FFXIVClassic_Map_Server.packets | ||||
|             header.subpacketSize = original.header.subpacketSize; | ||||
|             header.type = original.header.type; | ||||
|             header.sourceId = original.header.sourceId; | ||||
|             header.targetId = newTargetId; | ||||
|             header.tarGetId = newTargetId; | ||||
|             data = original.data; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -8,26 +8,26 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x00E1; | ||||
|         public const uint PACKET_SIZE = 0x30; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId, uint targettedActorId, uint emoteID) | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint tarGetActorId, uint tarGettedActorId, uint emoteID) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
|             if (targettedActorId == 0xC0000000) | ||||
|                 targettedActorId = sourceActorId; | ||||
|             if (tarGettedActorId == 0xC0000000) | ||||
|                 tarGettedActorId = sourceActorId; | ||||
|  | ||||
|             using (MemoryStream mem = new MemoryStream(data)) | ||||
|             { | ||||
|                 using (BinaryWriter binWriter = new BinaryWriter(mem)) | ||||
|                 { | ||||
|                     uint realAnimID = 0x5000000 | ((emoteID - 100) << 12); | ||||
|                     uint realDescID = 20000 + ((emoteID - 1) * 10) + (targettedActorId == sourceActorId ? (uint)2 : (uint)1); | ||||
|                     uint realDescID = 20000 + ((emoteID - 1) * 10) + (tarGettedActorId == sourceActorId ? (uint)2 : (uint)1); | ||||
|                     binWriter.Write((UInt32)realAnimID); | ||||
|                     binWriter.Write((UInt32)targettedActorId); | ||||
|                     binWriter.Write((UInt32)tarGettedActorId); | ||||
|                     binWriter.Write((UInt32)realDescID); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             SubPacket packet = new SubPacket(OPCODE, sourceActorId, targetActorId, data); | ||||
|             SubPacket packet = new SubPacket(OPCODE, sourceActorId, tarGetActorId, data); | ||||
|             packet.DebugPrintSubPacket(); | ||||
|             return packet; | ||||
|         } | ||||
|   | ||||
| @@ -11,7 +11,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x00CC; | ||||
|         public const uint PACKET_SIZE = 0x128; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorID, uint targetActorID, string objectName, string className, List<LuaParam> initParams) | ||||
|         public static SubPacket BuildPacket(uint sourceActorID, uint tarGetActorID, string objectName, string className, List<LuaParam> initParams) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -31,7 +31,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, sourceActorID, targetActorID, data); | ||||
|             return new SubPacket(OPCODE, sourceActorID, tarGetActorID, data); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|   | ||||
| @@ -13,7 +13,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x00E3; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, int iconCode) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, int iconCode) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -25,7 +25,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, targetActorID, playerActorID, data); | ||||
|             return new SubPacket(OPCODE, tarGetActorID, playerActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -7,7 +7,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x0139; | ||||
|         public const uint PACKET_SIZE = 0x58; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint targetId) | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint tarGetId) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -18,7 +18,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, sourceId, targetId, data); | ||||
|             return new SubPacket(OPCODE, sourceId, tarGetId, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -8,7 +8,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x00CF; | ||||
|         public const uint PACKET_SIZE = 0x50; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, float x, float y, float z, float rot, ushort moveState) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, float x, float y, float z, float rot, ushort moveState) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -25,7 +25,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             SubPacket packet = new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|             SubPacket packet = new SubPacket(OPCODE, playerActorID, tarGetActorID, data); | ||||
|             return packet; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -12,7 +12,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x0145; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, uint iconCode) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, uint iconCode) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -24,7 +24,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -8,7 +8,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x144; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetID, uint idleAnimationId) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetID, uint idleAnimationId) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -21,7 +21,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, targetID, data); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -5,11 +5,11 @@ | ||||
|         public const ushort OPCODE = 0x017B; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, bool isDimmed) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, bool isDimmed) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|             data[0] = (byte)(isDimmed ? 1 : 0); | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -9,7 +9,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x013D; | ||||
|         public const uint PACKET_SIZE = 0x48; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, uint displayNameID, string customName) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, uint displayNameID, string customName) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -27,7 +27,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             SubPacket packet = new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|             SubPacket packet = new SubPacket(OPCODE, playerActorID, tarGetActorID, data); | ||||
|             return packet; | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -22,7 +22,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const float INNPOS_Z     = 165.050003f; | ||||
|         public const float INNPOS_ROT   =  -1.530000f; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorID, uint targetActorID, uint actorId, float x, float y, float z, float rotation, uint spawnType, bool isZoningPlayer) | ||||
|         public static SubPacket BuildPacket(uint sourceActorID, uint tarGetActorID, uint actorId, float x, float y, float z, float rotation, uint spawnType, bool isZoningPlayer) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE-0x20]; | ||||
|  | ||||
| @@ -44,7 +44,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, sourceActorID, targetActorID, data); | ||||
|             return new SubPacket(OPCODE, sourceActorID, tarGetActorID, data); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|   | ||||
| @@ -182,9 +182,9 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|             isMore = flag; | ||||
|         } | ||||
|  | ||||
|         public void SetTarget(string target) | ||||
|         public void SetTarget(string tarGet) | ||||
|         { | ||||
|             currentTarget = target; | ||||
|             currentTarget = tarGet; | ||||
|         } | ||||
|  | ||||
|         public void AddTarget() | ||||
|   | ||||
| @@ -12,7 +12,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const float DEFAULT_WALK = 2.0f; | ||||
|         public const float DEFAULT_RUN = 5.0f; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -38,10 +38,10 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetActorID, data); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, float stopSpeed, float walkSpeed, float runSpeed) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, float stopSpeed, float walkSpeed, float runSpeed) | ||||
|         {                | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -67,7 +67,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -27,10 +27,10 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x134; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetID, uint mainState, uint subState) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetID, uint mainState, uint subState) | ||||
|         {             | ||||
|             ulong combined = (mainState & 0xFF) | ((subState & 0xFF) << 8); | ||||
|             return new SubPacket(OPCODE, playerActorID, targetID, BitConverter.GetBytes(combined)); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetID, BitConverter.GetBytes(combined)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -8,7 +8,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x0179; | ||||
|         public const uint PACKET_SIZE = 0x48; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, ushort[] statusIds) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, ushort[] statusIds) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|            | ||||
| @@ -25,7 +25,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             SubPacket packet = new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|             SubPacket packet = new SubPacket(OPCODE, playerActorID, tarGetActorID, data); | ||||
|             return packet; | ||||
|         } | ||||
|     } | ||||
|   | ||||
| @@ -8,7 +8,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x0177; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, ushort index, ushort statusCode) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, ushort index, ushort statusCode) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|            | ||||
| @@ -21,7 +21,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, data);             | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetActorID, data);             | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -7,9 +7,9 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x00D3; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|          | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, uint targetID) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, uint tarGetID) | ||||
|         {             | ||||
|             return new SubPacket(OPCODE, playerActorID, targetID, BitConverter.GetBytes((ulong)targetID)); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetID, BitConverter.GetBytes((ulong)tarGetID)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -7,9 +7,9 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x00DB; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|          | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, uint targetID) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, uint tarGetID) | ||||
|         {             | ||||
|             return new SubPacket(OPCODE, playerActorID, targetID, BitConverter.GetBytes((ulong)targetID)); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetID, BitConverter.GetBytes((ulong)tarGetID)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -7,7 +7,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x000F; | ||||
|         public const uint PACKET_SIZE = 0x38; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -19,7 +19,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -2,7 +2,7 @@ | ||||
| { | ||||
|     class BattleAction | ||||
|     { | ||||
|         public uint targetId; | ||||
|         public uint tarGetId; | ||||
|         public ushort amount; | ||||
|         public ushort worldMasterTextId; | ||||
|         public uint effectId; | ||||
|   | ||||
| @@ -8,7 +8,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle | ||||
|         public const ushort OPCODE = 0x013C; | ||||
|         public const uint PACKET_SIZE = 0x48; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint sourceActorId, uint targetActorId, uint animationId, ushort commandId) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint sourceActorId, uint tarGetActorId, uint animationId, ushort commandId) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle | ||||
|         public const ushort OPCODE = 0x0139; | ||||
|         public const uint PACKET_SIZE = 0x58; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint sourceActorId, uint targetActorId, uint animationId, uint effectId, ushort worldMasterTextId, ushort commandId, ushort amount, byte param) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint sourceActorId, uint tarGetActorId, uint animationId, uint effectId, ushort worldMasterTextId, ushort commandId, ushort amount, byte param) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -26,7 +26,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle | ||||
|                     binWriter.Write((UInt16)commandId); | ||||
|                     binWriter.Write((UInt16)810); //? | ||||
|  | ||||
|                     binWriter.Write((UInt32)targetActorId); | ||||
|                     binWriter.Write((UInt32)tarGetActorId); | ||||
|  | ||||
|                     binWriter.Write((UInt16)amount); | ||||
|                     binWriter.Write((UInt16)worldMasterTextId); | ||||
|   | ||||
| @@ -28,7 +28,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle | ||||
|  | ||||
|                     binWriter.Seek(0x20, SeekOrigin.Begin); | ||||
|                     foreach (BattleAction action in actionList) | ||||
|                         binWriter.Write((UInt32)action.targetId); | ||||
|                         binWriter.Write((UInt32)action.tarGetId); | ||||
|  | ||||
|                     binWriter.Seek(0x50, SeekOrigin.Begin); | ||||
|                     foreach (BattleAction action in actionList) | ||||
|   | ||||
| @@ -28,7 +28,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.battle | ||||
|  | ||||
|                     binWriter.Seek(0x58, SeekOrigin.Begin); | ||||
|                     foreach (BattleAction action in actionList) | ||||
|                         binWriter.Write((UInt32)action.targetId); | ||||
|                         binWriter.Write((UInt32)action.tarGetId); | ||||
|  | ||||
|                     binWriter.Seek(0xA0, SeekOrigin.Begin); | ||||
|                     foreach (BattleAction action in actionList) | ||||
|   | ||||
| @@ -5,11 +5,11 @@ | ||||
|         public const ushort OPCODE = 0x016D; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId) | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint tarGetActorId) | ||||
|         { | ||||
|             byte[] data = new byte[8]; | ||||
|             data[0] = 2; | ||||
|             return new SubPacket(OPCODE, sourceActorId, targetActorId, data); | ||||
|             return new SubPacket(OPCODE, sourceActorId, tarGetActorId, data); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID) | ||||
|   | ||||
| @@ -5,9 +5,9 @@ | ||||
|         public const ushort OPCODE = 0x016E; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId) | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint tarGetActorId) | ||||
|         { | ||||
|             return new SubPacket(OPCODE, sourceActorId, targetActorId, new byte[8]); | ||||
|             return new SubPacket(OPCODE, sourceActorId, tarGetActorId, new byte[8]); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID) | ||||
|   | ||||
| @@ -13,7 +13,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.inventory | ||||
|             return BuildPacket(playerActorId, playerActorId, item); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId, InventoryItem item) | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint tarGetActorId, InventoryItem item) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -25,7 +25,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.inventory | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, sourceActorId, targetActorId, data); | ||||
|             return new SubPacket(OPCODE, sourceActorId, tarGetActorId, data); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|   | ||||
| @@ -15,7 +15,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.inventory | ||||
|             return BuildPacket(playerActorId, playerActorId, items, ref listOffset); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId, List<InventoryItem> items, ref int listOffset) | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint tarGetActorId, List<InventoryItem> items, ref int listOffset) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -40,7 +40,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.inventory | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, sourceActorId, targetActorId, data); | ||||
|             return new SubPacket(OPCODE, sourceActorId, tarGetActorId, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -14,7 +14,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.inventory | ||||
|             return BuildPacket(playerActorId, playerActorId, items, ref listOffset); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId, List<InventoryItem> items, ref int listOffset) | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint tarGetActorId, List<InventoryItem> items, ref int listOffset) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -36,7 +36,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor.inventory | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, sourceActorId, targetActorId, data); | ||||
|             return new SubPacket(OPCODE, sourceActorId, tarGetActorId, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -13,7 +13,7 @@ namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory | ||||
|             return BuildPacket(playerActorId, playerActorId, size, code); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint targetActorId, ushort size, ushort code) | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint tarGetActorId, ushort size, ushort code) | ||||
|         { | ||||
|             byte[] data = new byte[8]; | ||||
|  | ||||
| @@ -27,7 +27,7 @@ namespace FFXIVClassic_Map_Server.packets.send.Actor.inventory | ||||
|                 }                 | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, sourceActorId, targetActorId, data); | ||||
|             return new SubPacket(OPCODE, sourceActorId, tarGetActorId, data); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|   | ||||
| @@ -11,9 +11,9 @@ | ||||
|             return new SubPacket(OPCODE, playerActorId, playerActorId, new byte[8]); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint targetActorID) | ||||
|         public static SubPacket BuildPacket(uint sourceActorId, uint tarGetActorID) | ||||
|         { | ||||
|             return new SubPacket(OPCODE, sourceActorId, targetActorID, new byte[8]); | ||||
|             return new SubPacket(OPCODE, sourceActorId, tarGetActorID, new byte[8]); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|   | ||||
| @@ -56,7 +56,7 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|         private const ushort SIZE_GAMEMESSAGE_WITHOUT_ACTOR4 = 0x48; | ||||
|         private const ushort SIZE_GAMEMESSAGE_WITHOUT_ACTOR5 = 0x68; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint targetId, uint actorId, uint textOwnerActorId, ushort textId, byte log) | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint tarGetId, uint actorId, uint textOwnerActorId, ushort textId, byte log) | ||||
|         { | ||||
|             byte[] data = new byte[SIZE_GAMEMESSAGE_WITH_ACTOR1 - 0x20]; | ||||
|  | ||||
| @@ -71,10 +71,10 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE_GAMEMESSAGE_WITH_ACTOR1, sourceId, targetId, data); | ||||
|             return new SubPacket(OPCODE_GAMEMESSAGE_WITH_ACTOR1, sourceId, tarGetId, data); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint targetId, uint actorId, uint textOwnerActorId, ushort textId, byte log, List<LuaParam> lParams) | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint tarGetId, uint actorId, uint textOwnerActorId, ushort textId, byte log, List<LuaParam> lParams) | ||||
|         { | ||||
|             int lParamsSize = findSizeOfParams(lParams); | ||||
|             byte[] data; | ||||
| @@ -119,10 +119,10 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(opcode, sourceId, targetId, data); | ||||
|             return new SubPacket(opcode, sourceId, tarGetId, data); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint targetId, uint textOwnerActorId, ushort textId, string sender, byte log) | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint tarGetId, uint textOwnerActorId, ushort textId, string sender, byte log) | ||||
|         { | ||||
|             byte[] data = new byte[SIZE_GAMEMESSAGE_WITH_CUSTOM_SENDER1 - 0x20]; | ||||
|  | ||||
| @@ -137,10 +137,10 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE_GAMEMESSAGE_WITH_CUSTOM_SENDER1, sourceId, targetId, data); | ||||
|             return new SubPacket(OPCODE_GAMEMESSAGE_WITH_CUSTOM_SENDER1, sourceId, tarGetId, data); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint targetId, uint textOwnerActorId, ushort textId, string sender, byte log, List<LuaParam> lParams) | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint tarGetId, uint textOwnerActorId, ushort textId, string sender, byte log, List<LuaParam> lParams) | ||||
|         { | ||||
|             int lParamsSize = findSizeOfParams(lParams); | ||||
|             byte[] data; | ||||
| @@ -185,10 +185,10 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(opcode, sourceId, targetId, data); | ||||
|             return new SubPacket(opcode, sourceId, tarGetId, data); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint targetId, uint textOwnerActorId, ushort textId, uint senderDisplayNameId, byte log) | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint tarGetId, uint textOwnerActorId, ushort textId, uint senderDisplayNameId, byte log) | ||||
|         { | ||||
|             byte[] data = new byte[SIZE_GAMEMESSAGE_WITH_DISPID_SENDER1 - 0x20]; | ||||
|  | ||||
| @@ -203,10 +203,10 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE_GAMEMESSAGE_WITH_DISPID_SENDER1, sourceId, targetId, data); | ||||
|             return new SubPacket(OPCODE_GAMEMESSAGE_WITH_DISPID_SENDER1, sourceId, tarGetId, data); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint targetId, uint textOwnerActorId, ushort textId, uint senderDisplayNameId, byte log, List<LuaParam> lParams) | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint tarGetId, uint textOwnerActorId, ushort textId, uint senderDisplayNameId, byte log, List<LuaParam> lParams) | ||||
|         { | ||||
|             int lParamsSize = findSizeOfParams(lParams); | ||||
|             byte[] data; | ||||
| @@ -251,10 +251,10 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(opcode, sourceId, targetId, data); | ||||
|             return new SubPacket(opcode, sourceId, tarGetId, data); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint targetId, uint textOwnerActorId, ushort textId, byte log) | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint tarGetId, uint textOwnerActorId, ushort textId, byte log) | ||||
|         { | ||||
|             byte[] data = new byte[SIZE_GAMEMESSAGE_WITHOUT_ACTOR1 - 0x20]; | ||||
|  | ||||
| @@ -268,10 +268,10 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE_GAMEMESSAGE_WITHOUT_ACTOR1, sourceId, targetId, data); | ||||
|             return new SubPacket(OPCODE_GAMEMESSAGE_WITHOUT_ACTOR1, sourceId, tarGetId, data); | ||||
|         } | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint targetId, uint textOwnerActorId, ushort textId, byte log, List<LuaParam> lParams) | ||||
|         public static SubPacket BuildPacket(uint sourceId, uint tarGetId, uint textOwnerActorId, ushort textId, byte log, List<LuaParam> lParams) | ||||
|         { | ||||
|             int lParamsSize = findSizeOfParams(lParams); | ||||
|             byte[] data; | ||||
| @@ -315,7 +315,7 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(opcode, sourceId, targetId, data); | ||||
|             return new SubPacket(opcode, sourceId, tarGetId, data); | ||||
|         } | ||||
|  | ||||
|         private static int findSizeOfParams(List<LuaParam> lParams) | ||||
|   | ||||
| @@ -34,7 +34,7 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|             public const ushort OPCODE = 0x0003; | ||||
|             public const uint PACKET_SIZE = 0x248; | ||||
|  | ||||
|             public static SubPacket BuildPacket(uint playerActorID, uint targetID, uint messageType, string sender, string message) | ||||
|             public static SubPacket BuildPacket(uint playerActorID, uint tarGetID, uint messageType, string sender, string message) | ||||
|             { | ||||
|                 byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -49,7 +49,7 @@ namespace FFXIVClassic_Map_Server.packets.send | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 return new SubPacket(OPCODE, playerActorID, targetID, data); | ||||
|                 return new SubPacket(OPCODE, playerActorID, tarGetID, data); | ||||
|             } | ||||
|  | ||||
|     } | ||||
|   | ||||
| @@ -11,7 +11,7 @@ namespace FFXIVClassic_Map_Server.packets.send.events | ||||
|         public const ushort OPCODE = 0x012F; | ||||
|         public const uint PACKET_SIZE = 0x90; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorId, uint targetActorId, string conditionName, List<LuaParam> luaParams) | ||||
|         public static SubPacket BuildPacket(uint playerActorId, uint tarGetActorId, string conditionName, List<LuaParam> luaParams) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -20,7 +20,7 @@ namespace FFXIVClassic_Map_Server.packets.send.events | ||||
|                 using (BinaryWriter binWriter = new BinaryWriter(mem)) | ||||
|                 { | ||||
|                     binWriter.Write((UInt32)playerActorId); | ||||
|                     binWriter.Write((UInt32)targetActorId); | ||||
|                     binWriter.Write((UInt32)tarGetActorId); | ||||
|                     binWriter.Write((Byte)0x5); | ||||
|                     binWriter.Write((Byte)0x87); | ||||
|                     binWriter.Write((Byte)0xDC); | ||||
|   | ||||
| @@ -158,11 +158,11 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|             isMore = flag; | ||||
|         } | ||||
|  | ||||
|         public void SetTarget(string target) | ||||
|         public void SetTarget(string tarGet) | ||||
|         { | ||||
|             binWriter.Write((byte)(isMore ? 0x62 + target.Length : 0x82 + target.Length)); | ||||
|             binWriter.Write(Encoding.ASCII.GetBytes(target)); | ||||
|             runningByteTotal += (ushort)(1 + Encoding.ASCII.GetByteCount(target)); | ||||
|             binWriter.Write((byte)(isMore ? 0x62 + tarGet.Length : 0x82 + tarGet.Length)); | ||||
|             binWriter.Write(Encoding.ASCII.GetBytes(tarGet)); | ||||
|             runningByteTotal += (ushort)(1 + Encoding.ASCII.GetByteCount(tarGet)); | ||||
|  | ||||
|         } | ||||
|  | ||||
|   | ||||
| @@ -9,7 +9,7 @@ namespace FFXIVClassic_Map_Server.packets.send.player | ||||
|         public const ushort OPCODE = 0x0133; | ||||
|         public const uint PACKET_SIZE = 0xE0; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, List<LuaParam> luaParams) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, List<LuaParam> luaParams) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -21,7 +21,7 @@ namespace FFXIVClassic_Map_Server.packets.send.player | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -7,11 +7,11 @@ namespace FFXIVClassic_Map_Server.packets.send.player | ||||
|         public const ushort OPCODE = 0x0198; | ||||
|         public const uint PACKET_SIZE = 0x40; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, string name) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, string name) | ||||
|         { | ||||
|             if (Encoding.Unicode.GetByteCount(name) >= 0x20) | ||||
|                 name = "ERR: Too Long"; | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, Encoding.ASCII.GetBytes(name)); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetActorID, Encoding.ASCII.GetBytes(name)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -7,9 +7,9 @@ namespace FFXIVClassic_Map_Server.packets.send.player | ||||
|         public const ushort OPCODE = 0x01A4; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorID, uint targetActorID, uint jobId) | ||||
|         public static SubPacket BuildPacket(uint sourceActorID, uint tarGetActorID, uint jobId) | ||||
|         { | ||||
|             return new SubPacket(OPCODE, sourceActorID, targetActorID, BitConverter.GetBytes((uint)jobId)); | ||||
|             return new SubPacket(OPCODE, sourceActorID, tarGetActorID, BitConverter.GetBytes((uint)jobId)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -8,7 +8,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|         public const ushort OPCODE = 0x0194; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint sourceActorID, uint targetActorID, ushort currentAllegiance, ushort rankLimsa, ushort rankGridania, ushort rankUldah) | ||||
|         public static SubPacket BuildPacket(uint sourceActorID, uint tarGetActorID, ushort currentAllegiance, ushort rankLimsa, ushort rankGridania, ushort rankUldah) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -23,7 +23,7 @@ namespace FFXIVClassic_Map_Server.packets.send.actor | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, sourceActorID, targetActorID, data); | ||||
|             return new SubPacket(OPCODE, sourceActorID, tarGetActorID, data); | ||||
|         } | ||||
|  | ||||
|     } | ||||
|   | ||||
| @@ -7,9 +7,9 @@ namespace FFXIVClassic_Map_Server.packets.send.player | ||||
|         public const ushort OPCODE = 0x019D; | ||||
|         public const uint PACKET_SIZE = 0x28; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID, uint titleID) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID, uint titleID) | ||||
|         { | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, BitConverter.GetBytes((UInt64)titleID)); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetActorID, BitConverter.GetBytes((UInt64)titleID)); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -8,7 +8,7 @@ namespace FFXIVClassic_Map_Server.packets.send.player | ||||
|         public const ushort OPCODE = 0x0196; | ||||
|         public const uint PACKET_SIZE = 0x38; | ||||
|  | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint targetActorID) | ||||
|         public static SubPacket BuildPacket(uint playerActorID, uint tarGetActorID) | ||||
|         { | ||||
|             byte[] data = new byte[PACKET_SIZE - 0x20]; | ||||
|  | ||||
| @@ -21,7 +21,7 @@ namespace FFXIVClassic_Map_Server.packets.send.player | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             return new SubPacket(OPCODE, playerActorID, targetActorID, data); | ||||
|             return new SubPacket(OPCODE, playerActorID, tarGetActorID, data); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -32,11 +32,11 @@ namespace FFXIVClassic_Map_Server.utils | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public void NewTarget(string target) | ||||
|         public void NewTarget(string tarGet) | ||||
|         { | ||||
|             currentActorPropertyPacket.AddTarget(); | ||||
|             currentTarget = target; | ||||
|             currentActorPropertyPacket.SetTarget(target);             | ||||
|             currentTarget = tarGet; | ||||
|             currentActorPropertyPacket.SetTarget(tarGet);             | ||||
|         } | ||||
|  | ||||
|         public List<SubPacket> Done() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user