mirror of
				https://bitbucket.org/Ioncannon/project-meteor-server.git
				synced 2025-05-20 08:26:59 -04:00 
			
		
		
		
	Added the game message packets. Fixed "canRideChocobo" param in zone not working. Added a lot more function for lua to access. Various minor changes.
This commit is contained in:
		| @@ -7,6 +7,7 @@ using FFXIVClassic_Map_Server.packets.send; | ||||
| using FFXIVClassic_Map_Server.packets.send.events; | ||||
| using MoonSharp.Interpreter; | ||||
| using MoonSharp.Interpreter.Interop; | ||||
| using MoonSharp.Interpreter.Loaders; | ||||
| using System; | ||||
| using System.Collections.Generic; | ||||
| using System.IO; | ||||
| @@ -36,7 +37,9 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|                 if (File.Exists(luaPath)) | ||||
|                 { | ||||
|                     Script script = new Script(); | ||||
|                     ((ScriptLoaderBase)script.Options.ScriptLoader).ModulePaths = new string[] { "./scripts/?", "./scripts/?.lua" }; | ||||
|                     script.Globals["getStaticActor"] = (Func<string, Actor>)Server.getStaticActors; | ||||
|                     script.Globals["getWorldMaster"] = (Func<Actor>)Server.getServer().GetWorldManager().GetActor; | ||||
|                     script.DoFile(luaPath); | ||||
|                     DynValue result = script.Call(script.Globals["onInstantiate"], target); | ||||
|                     List<LuaParam> lparams = LuaUtils.createLuaParamList(result); | ||||
| @@ -45,7 +48,7 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|                 else | ||||
|                 { | ||||
|                     List<SubPacket> sendError = new List<SubPacket>(); | ||||
|                     sendError.Add(EndEventPacket.buildPacket(player.actorId, player.playerSession.eventCurrentOwner, player.playerSession.eventCurrentStarter)); | ||||
|                     sendError.Add(EndEventPacket.buildPacket(player.actorId, player.eventCurrentOwner, player.eventCurrentStarter)); | ||||
|                     player.sendMessage(SendMessagePacket.MESSAGE_TYPE_SYSTEM_ERROR, "", String.Format("ERROR: Could not find script for actor {0}.", target.getName())); | ||||
|                     player.playerSession.queuePacket(BasePacket.createPacket(sendError, true, false)); | ||||
|                     return null; | ||||
| @@ -55,106 +58,78 @@ namespace FFXIVClassic_Map_Server.lua | ||||
|             return null; | ||||
|         }        | ||||
|  | ||||
|         public void doActorOnEventStarted(Player player, Actor target) | ||||
|         public void doActorOnEventStarted(Player player, Actor target, EventStartPacket eventStart) | ||||
|         { | ||||
|             string luaPath; | ||||
|  | ||||
|             if (target is Command) | ||||
|             { | ||||
|                 luaPath = String.Format(FILEPATH_COMMANDS, target.getName()); | ||||
|                 if (File.Exists(luaPath)) | ||||
|                 { | ||||
|                     Script script = new Script(); | ||||
|                     script.Globals["getStaticActor"] = (Func<string, Actor>)Server.getStaticActors; | ||||
|                     script.DoFile(luaPath); | ||||
|                     DynValue result = script.Call(script.Globals["onEventStarted"], player, target); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     List<SubPacket> sendError = new List<SubPacket>(); | ||||
|                     sendError.Add(EndEventPacket.buildPacket(player.actorId, player.playerSession.eventCurrentOwner, player.playerSession.eventCurrentStarter)); | ||||
|                     player.sendMessage(SendMessagePacket.MESSAGE_TYPE_SYSTEM_ERROR, "", String.Format("ERROR: Could not find script for actor {0}.", target.getName())); | ||||
|                     player.playerSession.queuePacket(BasePacket.createPacket(sendError, true, false)); | ||||
|                 } | ||||
|             } | ||||
|             else if (target is Npc) | ||||
|             { | ||||
|             else  | ||||
|                 luaPath = String.Format(FILEPATH_NPCS, target.zoneId, target.getName()); | ||||
|                 if (File.Exists(luaPath)) | ||||
|                 { | ||||
|                     Script script = new Script(); | ||||
|                     script.Globals["getStaticActor"] = (Func<string, Actor>)Server.getStaticActors; | ||||
|                     script.DoFile(luaPath); | ||||
|                     DynValue result = script.Call(script.Globals["onEventStarted"], player, target); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     List<SubPacket> sendError = new List<SubPacket>(); | ||||
|                     sendError.Add(EndEventPacket.buildPacket(player.actorId, player.playerSession.eventCurrentOwner, player.playerSession.eventCurrentStarter)); | ||||
|                     player.sendMessage(SendMessagePacket.MESSAGE_TYPE_SYSTEM_ERROR, "", String.Format("ERROR: Could not find script for actor {0}.", target.getName())); | ||||
|                     player.playerSession.queuePacket(BasePacket.createPacket(sendError, true, false)); | ||||
|                 } | ||||
|  | ||||
|             if (File.Exists(luaPath)) | ||||
|             { | ||||
|                 Script script = new Script(); | ||||
|                 ((ScriptLoaderBase)script.Options.ScriptLoader).ModulePaths = new string[] { "./scripts/?", "./scripts/?.lua" }; | ||||
|                 script.Globals["getStaticActor"] = (Func<string, Actor>)Server.getStaticActors; | ||||
|                 script.Globals["getWorldMaster"] = (Func<Actor>)Server.getServer().GetWorldManager().GetActor; | ||||
|                 script.DoFile(luaPath); | ||||
|  | ||||
|                 //Have to do this to combine LuaParams | ||||
|                 List<Object> objects = new List<Object>(); | ||||
|                 objects.Add(player); | ||||
|                 objects.Add(target); | ||||
|                 objects.AddRange(LuaUtils.createLuaParamObjectList(eventStart.luaParams)); | ||||
|  | ||||
|                 //Run Script | ||||
|                 DynValue result = script.Call(script.Globals["onEventStarted"], objects.ToArray()); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 List<SubPacket> sendError = new List<SubPacket>(); | ||||
|                 sendError.Add(EndEventPacket.buildPacket(player.actorId, player.eventCurrentOwner, player.eventCurrentStarter)); | ||||
|                 player.sendMessage(SendMessagePacket.MESSAGE_TYPE_SYSTEM_ERROR, "", String.Format("ERROR: Could not find script for actor {0}.", target.getName())); | ||||
|                 player.playerSession.queuePacket(BasePacket.createPacket(sendError, true, false)); | ||||
|             } | ||||
|             | ||||
|         } | ||||
|  | ||||
|         public void doActorOnEventUpdated(Player player, Actor target, EventUpdatePacket eventUpdate) | ||||
|         { | ||||
|             string luaPath; | ||||
|  | ||||
|             if (target is Command) | ||||
|             { | ||||
|             if (target is Command)             | ||||
|                 luaPath = String.Format(FILEPATH_COMMANDS, target.getName()); | ||||
|                 if (File.Exists(luaPath)) | ||||
|                 { | ||||
|                     Script script = new Script(); | ||||
|                     script.Globals["getStaticActor"] = (Func<string, Actor>)Server.getStaticActors; | ||||
|                     script.DoFile(luaPath); | ||||
|             else | ||||
|                  luaPath = String.Format(FILEPATH_NPCS, target.zoneId, target.getName()); | ||||
|  | ||||
|                     //Have to do this to combine LuaParams | ||||
|                     List<Object> objects = new List<Object>(); | ||||
|                     objects.Add(player); | ||||
|                     objects.Add(target); | ||||
|                     objects.Add(eventUpdate.step); | ||||
|                     objects.AddRange(LuaUtils.createLuaParamObjectList(eventUpdate.luaParams)); | ||||
|  | ||||
|                     //Run Script | ||||
|                     DynValue result = script.Call(script.Globals["onEventUpdate"], objects.ToArray()); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     List<SubPacket> sendError = new List<SubPacket>(); | ||||
|                     sendError.Add(EndEventPacket.buildPacket(player.actorId, player.playerSession.eventCurrentOwner, player.playerSession.eventCurrentStarter)); | ||||
|                     player.sendMessage(SendMessagePacket.MESSAGE_TYPE_SYSTEM_ERROR, "", String.Format("ERROR: Could not find script for actor {0}.", target.getName())); | ||||
|                     player.playerSession.queuePacket(BasePacket.createPacket(sendError, true, false)); | ||||
|                 }        | ||||
|             } | ||||
|             else if (target is Npc) | ||||
|             if (File.Exists(luaPath)) | ||||
|             { | ||||
|                 luaPath = String.Format(FILEPATH_NPCS, target.zoneId, target.getName()); | ||||
|                 if (File.Exists(luaPath)) | ||||
|                 { | ||||
|                     Script script = new Script(); | ||||
|                     script.Globals["getStaticActor"] = (Func<string, Actor>)Server.getStaticActors; | ||||
|                     script.DoFile(luaPath); | ||||
|                 Script script = new Script(); | ||||
|                 ((ScriptLoaderBase)script.Options.ScriptLoader).ModulePaths = new string[] { "./scripts/?", "./scripts/?.lua" }; | ||||
|                 script.Globals["getStaticActor"] = (Func<string, Actor>)Server.getStaticActors; | ||||
|                 script.Globals["getWorldMaster"] = (Func<Actor>)Server.getServer().GetWorldManager().GetActor; | ||||
|                 script.DoFile(luaPath); | ||||
|  | ||||
|                     //Have to do this to combine LuaParams | ||||
|                     List<Object> objects = new List<Object>(); | ||||
|                     objects.Add(player); | ||||
|                     objects.Add(target); | ||||
|                     objects.Add(eventUpdate.step); | ||||
|                     objects.AddRange(LuaUtils.createLuaParamObjectList(eventUpdate.luaParams)); | ||||
|                 //Have to do this to combine LuaParams | ||||
|                 List<Object> objects = new List<Object>(); | ||||
|                 objects.Add(player); | ||||
|                 objects.Add(target); | ||||
|                 objects.Add(eventUpdate.step); | ||||
|                 objects.AddRange(LuaUtils.createLuaParamObjectList(eventUpdate.luaParams)); | ||||
|  | ||||
|                     //Run Script | ||||
|                     DynValue result = script.Call(script.Globals["onEventUpdate"], objects.ToArray()); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     List<SubPacket> sendError = new List<SubPacket>(); | ||||
|                     sendError.Add(EndEventPacket.buildPacket(player.actorId, player.playerSession.eventCurrentOwner, player.playerSession.eventCurrentStarter)); | ||||
|                     player.sendMessage(SendMessagePacket.MESSAGE_TYPE_SYSTEM_ERROR, "", String.Format("ERROR: Could not find script for actor {0}.", target.getName())); | ||||
|                     player.playerSession.queuePacket(BasePacket.createPacket(sendError, true, false)); | ||||
|                 } | ||||
|                 //Run Script | ||||
|                 DynValue result = script.Call(script.Globals["onEventUpdate"], objects.ToArray()); | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 List<SubPacket> sendError = new List<SubPacket>(); | ||||
|                 sendError.Add(EndEventPacket.buildPacket(player.actorId, player.eventCurrentOwner, player.eventCurrentStarter)); | ||||
|                 player.sendMessage(SendMessagePacket.MESSAGE_TYPE_SYSTEM_ERROR, "", String.Format("ERROR: Could not find script for actor {0}.", target.getName())); | ||||
|                 player.playerSession.queuePacket(BasePacket.createPacket(sendError, true, false)); | ||||
|             }                   | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -55,8 +55,8 @@ namespace FFXIVClassic_Map_Server | ||||
|                         break; | ||||
|                     case 0x6: //Actor (By Id) | ||||
|                         value = Utils.swapEndian(reader.ReadUInt32()); | ||||
|                         break; | ||||
|                     case 0x10: //Byte? | ||||
|                         break;                        | ||||
|                     case 0xC: //Byte | ||||
|                         value = reader.ReadByte(); | ||||
|                         break; | ||||
|                     case 0x1B: //Short? | ||||
| @@ -106,7 +106,8 @@ namespace FFXIVClassic_Map_Server | ||||
|                     case 0x6: //Actor (By Id) | ||||
|                         writer.Write((UInt32)Utils.swapEndian((UInt32)l.value)); | ||||
|                         break; | ||||
|                     case 0x10: //Byte?                         | ||||
|                     case 0xC: //Byte | ||||
|                         writer.Write((Byte)l.value); | ||||
|                         break; | ||||
|                     case 0x1B: //Short?                         | ||||
|                         break; | ||||
| @@ -164,7 +165,7 @@ namespace FFXIVClassic_Map_Server | ||||
|                             case 0x6: //Actor (By Id) | ||||
|                                 value = Utils.swapEndian(reader.ReadUInt32()); | ||||
|                                 break; | ||||
|                             case 0x10: //Byte? | ||||
|                             case 0xC: //Byte | ||||
|                                 value = reader.ReadByte(); | ||||
|                                 break; | ||||
|                             case 0x1B: //Short? | ||||
| @@ -268,7 +269,7 @@ namespace FFXIVClassic_Map_Server | ||||
|             else if (o is double) | ||||
|             { | ||||
|                 if (((double)o) % 1 == 0) | ||||
|                     luaParams.Add(new LuaParam(0x0, (uint)(double)o)); | ||||
|                     luaParams.Add(new LuaParam(0x0, (int)(double)o)); | ||||
|             } | ||||
|             else if (o is string) | ||||
|             { | ||||
| @@ -289,6 +290,10 @@ namespace FFXIVClassic_Map_Server | ||||
|             { | ||||
|                 luaParams.Add(new LuaParam(0x6, ((Actor)o).actorId)); | ||||
|             } | ||||
|             else if (o is byte) | ||||
|             { | ||||
|                 luaParams.Add(new LuaParam(0xC, (byte)o)); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public static object[] createLuaParamObjectList(List <LuaParam> luaParams) | ||||
| @@ -333,7 +338,7 @@ namespace FFXIVClassic_Map_Server | ||||
|                     case 0x6: //Actor (By Id) | ||||
|                         dumpString += String.Format("0x{0:X}", (uint)lParams[i].value); | ||||
|                         break; | ||||
|                     case 0x10: //Byte? | ||||
|                     case 0xC: //Byte | ||||
|                         dumpString += String.Format("0x{0:X}", (byte)lParams[i].value); | ||||
|                         break; | ||||
|                     case 0x1B: //Short? | ||||
|   | ||||
		Reference in New Issue
	
	Block a user