Reworked zones to allow for isolated zones (IE Opening Zone) and private area instances.

This commit is contained in:
Filip Maj 2016-02-07 13:05:54 -05:00
parent c83b4a12b9
commit 42ba95b69d
14 changed files with 482 additions and 317 deletions

View file

@ -163,7 +163,7 @@ namespace FFXIVClassic_Lobby_Server.packets
while (binreader.BaseStream.Position + 4 < data.Length)
{
uint read = binreader.ReadUInt32();
if (read == 0x029B2941 || read == 0x02977DC7 || read == 0x0297D2C8 || read == 0x0230d573 || read == 0x23317df || read == 0x23344a3) //Original ID
if (read == 0x029B2941 || read == 0x02977DC7 || read == 0x0297D2C8 || read == 0x0230d573 || read == 0x23317df || read == 0x23344a3 || read == 0x1730bdb) //Original ID
{
binWriter.BaseStream.Seek(binreader.BaseStream.Position - 0x4, SeekOrigin.Begin);
binWriter.Write(actorID);

View file

@ -1,4 +1,5 @@
using FFXIVClassic_Map_Server.lua;
using FFXIVClassic_Lobby_Server.common;
using FFXIVClassic_Map_Server.lua;
using System;
using System.Collections.Generic;
using System.IO;
@ -21,6 +22,10 @@ namespace FFXIVClassic_Map_Server.packets.receive.events
public uint val2;
public byte val3;
public uint errorIndex;
public uint errorNum;
public string error = null;
public string eventStarter;
public List<LuaParam> luaParams;
@ -37,7 +42,20 @@ namespace FFXIVClassic_Map_Server.packets.receive.events
val1 = binReader.ReadUInt32();
val2 = binReader.ReadUInt32();
val3 = binReader.ReadByte();
/*
//Lua Error Dump
if (val1 == 0x39800010)
{
errorIndex = actorID;
errorNum = scriptOwnerActorID;
error = ASCIIEncoding.ASCII.GetString(binReader.ReadBytes(0x80)).Replace("\0", "");
if (errorIndex == 0)
Log.error("LUA ERROR:");
return;
}
*/
List<byte> strList = new List<byte>();
byte curByte;
while ((curByte = binReader.ReadByte())!=0)

View file

@ -22,8 +22,10 @@ namespace FFXIVClassic_Map_Server.packets.send.actor
{
using (BinaryWriter binWriter = new BinaryWriter(mem))
{
int value = 0;
binWriter.Write((Int32)value);
int value1 = 0x10; //Instance ID?
int value2 = 0x3980;
binWriter.Write((Int16)value1);
binWriter.Write((Int16)value2);
binWriter.Write(Encoding.ASCII.GetBytes(objectName), 0, Encoding.ASCII.GetByteCount(objectName) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(objectName));
binWriter.BaseStream.Seek(0x24, SeekOrigin.Begin);
binWriter.Write(Encoding.ASCII.GetBytes(className), 0, Encoding.ASCII.GetByteCount(className) >= 0x20 ? 0x20 : Encoding.ASCII.GetByteCount(className));