* Green dots on the mainmap for avatar.
* Initial implementation * You'll only be able to seen green dots on regions on the map that have been updated.0.6.0-stable
parent
6bf72c95cb
commit
f8acdeb437
|
@ -310,6 +310,9 @@ namespace OpenSim.Framework
|
||||||
public delegate void TerrainUnacked(IClientAPI remoteClient, int patchX, int patchY);
|
public delegate void TerrainUnacked(IClientAPI remoteClient, int patchX, int patchY);
|
||||||
|
|
||||||
public delegate void DirPlacesQuery(IClientAPI remoteClient, UUID queryID, string queryText, int queryFlags, int category, string simName, int queryStart);
|
public delegate void DirPlacesQuery(IClientAPI remoteClient, UUID queryID, string queryText, int queryFlags, int category, string simName, int queryStart);
|
||||||
|
|
||||||
|
public delegate void MapItemRequest(IClientAPI remoteClient, uint flags, uint EstateID, bool godlike, uint itemtype, ulong regionhandle);
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public struct DirPlacesReplyData
|
public struct DirPlacesReplyData
|
||||||
|
@ -546,6 +549,9 @@ namespace OpenSim.Framework
|
||||||
|
|
||||||
event DirPlacesQuery OnDirPlacesQuery;
|
event DirPlacesQuery OnDirPlacesQuery;
|
||||||
|
|
||||||
|
event MapItemRequest OnMapItemRequest;
|
||||||
|
|
||||||
|
|
||||||
// void ActivateGesture(UUID assetId, UUID gestureId);
|
// void ActivateGesture(UUID assetId, UUID gestureId);
|
||||||
|
|
||||||
// [Obsolete("IClientAPI.OutPacket SHOULD NOT EXIST outside of LLClientView please refactor appropriately.")]
|
// [Obsolete("IClientAPI.OutPacket SHOULD NOT EXIST outside of LLClientView please refactor appropriately.")]
|
||||||
|
@ -775,6 +781,9 @@ namespace OpenSim.Framework
|
||||||
void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt);
|
void SendScriptTeleportRequest(string objName, string simName, Vector3 pos, Vector3 lookAt);
|
||||||
|
|
||||||
void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data);
|
void SendDirPlacesReply(UUID queryID, DirPlacesReplyData[] data);
|
||||||
|
|
||||||
|
void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags);
|
||||||
|
|
||||||
void KillEndDone();
|
void KillEndDone();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) Contributors, http://opensimulator.org/
|
||||||
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
* * Redistributions of source code must retain the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer.
|
||||||
|
* * Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* * Neither the name of the OpenSim Project nor the
|
||||||
|
* names of its contributors may be used to endorse or promote products
|
||||||
|
* derived from this software without specific prior written permission.
|
||||||
|
*
|
||||||
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
||||||
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
||||||
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*/
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using OpenMetaverse;
|
||||||
|
|
||||||
|
namespace OpenSim.Framework
|
||||||
|
{
|
||||||
|
public struct mapItemReply
|
||||||
|
{
|
||||||
|
public uint x;
|
||||||
|
public uint y;
|
||||||
|
public UUID id;
|
||||||
|
public int Extra;
|
||||||
|
public int Extra2;
|
||||||
|
public string name;
|
||||||
|
}
|
||||||
|
}
|
|
@ -262,6 +262,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
private DirPlacesQuery handlerDirPlacesQuery = null;
|
private DirPlacesQuery handlerDirPlacesQuery = null;
|
||||||
|
|
||||||
|
private MapItemRequest handlerMapItemRequest = null;
|
||||||
|
|
||||||
//private TerrainUnacked handlerUnackedTerrain = null;
|
//private TerrainUnacked handlerUnackedTerrain = null;
|
||||||
|
|
||||||
//**
|
//**
|
||||||
|
@ -988,6 +990,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
public event DirPlacesQuery OnDirPlacesQuery;
|
public event DirPlacesQuery OnDirPlacesQuery;
|
||||||
|
|
||||||
|
public event MapItemRequest OnMapItemRequest;
|
||||||
|
|
||||||
// voire si c'est necessaire
|
// voire si c'est necessaire
|
||||||
public void ActivateGesture(UUID assetId, UUID gestureId)
|
public void ActivateGesture(UUID assetId, UUID gestureId)
|
||||||
|
@ -6215,6 +6218,16 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
//break;
|
//break;
|
||||||
case PacketType.MapItemRequest:
|
case PacketType.MapItemRequest:
|
||||||
// TODO: handle this packet
|
// TODO: handle this packet
|
||||||
|
MapItemRequestPacket mirpk = (MapItemRequestPacket)Pack;
|
||||||
|
//System.Console.WriteLine(mirpk.ToString());
|
||||||
|
handlerMapItemRequest = OnMapItemRequest;
|
||||||
|
if (handlerMapItemRequest != null)
|
||||||
|
{
|
||||||
|
handlerMapItemRequest(this,mirpk.AgentData.Flags, mirpk.AgentData.EstateID,
|
||||||
|
mirpk.AgentData.Godlike,mirpk.RequestData.ItemType,
|
||||||
|
mirpk.RequestData.RegionHandle);
|
||||||
|
|
||||||
|
}
|
||||||
//m_log.Warn("[CLIENT]: unhandled MapItemRequest packet");
|
//m_log.Warn("[CLIENT]: unhandled MapItemRequest packet");
|
||||||
break;
|
break;
|
||||||
case PacketType.TransferAbort:
|
case PacketType.TransferAbort:
|
||||||
|
@ -6756,6 +6769,27 @@ namespace OpenSim.Region.ClientStack.LindenUDP
|
||||||
|
|
||||||
OutPacket(packet, ThrottleOutPacketType.Task);
|
OutPacket(packet, ThrottleOutPacketType.Task);
|
||||||
}
|
}
|
||||||
|
public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags)
|
||||||
|
{
|
||||||
|
MapItemReplyPacket mirplk = new MapItemReplyPacket();
|
||||||
|
mirplk.AgentData.AgentID = AgentId;
|
||||||
|
mirplk.RequestData.ItemType = mapitemtype;
|
||||||
|
mirplk.Data = new MapItemReplyPacket.DataBlock[replies.Length];
|
||||||
|
for (int i = 0; i < replies.Length; i++ )
|
||||||
|
{
|
||||||
|
MapItemReplyPacket.DataBlock mrdata = new MapItemReplyPacket.DataBlock();
|
||||||
|
mrdata.X = replies[i].x;
|
||||||
|
mrdata.Y = replies[i].y;
|
||||||
|
mrdata.ID = replies[i].id;
|
||||||
|
mrdata.Extra = replies[i].Extra;
|
||||||
|
mrdata.Extra2 = replies[i].Extra2;
|
||||||
|
mrdata.Name = Utils.StringToBytes(replies[i].name);
|
||||||
|
mirplk.Data[i] = mrdata;
|
||||||
|
}
|
||||||
|
//System.Console.WriteLine(mirplk.ToString());
|
||||||
|
OutPacket(mirplk, ThrottleOutPacketType.Task);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
public void KillEndDone()
|
public void KillEndDone()
|
||||||
{
|
{
|
||||||
|
|
|
@ -324,6 +324,8 @@ namespace OpenSim.Region.Environment.Modules.World.NPC
|
||||||
|
|
||||||
public event DirPlacesQuery OnDirPlacesQuery;
|
public event DirPlacesQuery OnDirPlacesQuery;
|
||||||
|
|
||||||
|
public event MapItemRequest OnMapItemRequest;
|
||||||
|
|
||||||
#pragma warning restore 67
|
#pragma warning restore 67
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -895,6 +897,10 @@ namespace OpenSim.Region.Environment.Modules.World.NPC
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public void KillEndDone()
|
public void KillEndDone()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,9 +31,11 @@ using System.Collections.Generic;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Drawing.Imaging;
|
using System.Drawing.Imaging;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
|
using System.Net;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using OpenMetaverse;
|
using OpenMetaverse;
|
||||||
using OpenMetaverse.Imaging;
|
using OpenMetaverse.Imaging;
|
||||||
|
using OpenMetaverse.StructuredData;
|
||||||
using log4net;
|
using log4net;
|
||||||
using Nini.Config;
|
using Nini.Config;
|
||||||
using OpenSim.Framework;
|
using OpenSim.Framework;
|
||||||
|
@ -45,6 +47,9 @@ using OpenSim.Region.Environment.Scenes;
|
||||||
using OpenSim.Region.Environment.Types;
|
using OpenSim.Region.Environment.Types;
|
||||||
using Caps = OpenSim.Framework.Communications.Capabilities.Caps;
|
using Caps = OpenSim.Framework.Communications.Capabilities.Caps;
|
||||||
|
|
||||||
|
using LLSD = OpenMetaverse.StructuredData.LLSD;
|
||||||
|
using LLSDMap = OpenMetaverse.StructuredData.LLSDMap;
|
||||||
|
using LLSDArray = OpenMetaverse.StructuredData.LLSDArray;
|
||||||
|
|
||||||
namespace OpenSim.Region.Environment.Modules.World.WorldMap
|
namespace OpenSim.Region.Environment.Modules.World.WorldMap
|
||||||
{
|
{
|
||||||
|
@ -85,6 +90,7 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap
|
||||||
|
|
||||||
|
|
||||||
m_scene.AddHTTPHandler(regionimage, OnHTTPGetMapImage);
|
m_scene.AddHTTPHandler(regionimage, OnHTTPGetMapImage);
|
||||||
|
m_scene.AddLLSDHandler("/MAP/MapItems/" + scene.RegionInfo.RegionHandle.ToString(),HandleRemoteMapItemRequest);
|
||||||
//QuadTree.Subdivide();
|
//QuadTree.Subdivide();
|
||||||
//QuadTree.Subdivide();
|
//QuadTree.Subdivide();
|
||||||
|
|
||||||
|
@ -231,6 +237,7 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap
|
||||||
|
|
||||||
//doFriendListUpdateOnline(client.AgentId);
|
//doFriendListUpdateOnline(client.AgentId);
|
||||||
client.OnRequestMapBlocks += RequestMapBlocks;
|
client.OnRequestMapBlocks += RequestMapBlocks;
|
||||||
|
client.OnMapItemRequest += HandleMapItemRequest;
|
||||||
}
|
}
|
||||||
private void ClientLoggedOut(UUID AgentId)
|
private void ClientLoggedOut(UUID AgentId)
|
||||||
{
|
{
|
||||||
|
@ -238,6 +245,109 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
public virtual void HandleMapItemRequest(IClientAPI remoteClient, uint flags,
|
||||||
|
uint EstateID, bool godlike, uint itemtype, ulong regionhandle)
|
||||||
|
{
|
||||||
|
if (itemtype == 6) // we only sevice 6 right now (avatar green dots)
|
||||||
|
{
|
||||||
|
RegionInfo mreg = m_scene.SceneGridService.RequestNeighbouringRegionInfo(regionhandle);
|
||||||
|
if (mreg != null)
|
||||||
|
{
|
||||||
|
string httpserver = "http://" + mreg.ExternalEndPoint.Address.ToString() + ":" + mreg.HttpPort + "/MAP/MapItems/" + regionhandle.ToString();
|
||||||
|
List<mapItemReply> returnitems = new List<mapItemReply>();
|
||||||
|
LLSDMap ramap = RequestMapItems(httpserver);
|
||||||
|
if (ramap.ContainsKey(itemtype.ToString()))
|
||||||
|
{
|
||||||
|
LLSDArray itemarray = (LLSDArray)ramap[itemtype.ToString()];
|
||||||
|
for (int i = 0; i < itemarray.Count; i++)
|
||||||
|
{
|
||||||
|
LLSDMap mapitem = (LLSDMap)itemarray[i];
|
||||||
|
mapItemReply mi = new mapItemReply();
|
||||||
|
mi.x = (uint)mapitem["X"].AsInteger();
|
||||||
|
mi.y = (uint)mapitem["Y"].AsInteger();
|
||||||
|
mi.id = mapitem["ID"].AsUUID();
|
||||||
|
mi.Extra = mapitem["Extra"].AsInteger();
|
||||||
|
mi.Extra2 = mapitem["Extra2"].AsInteger();
|
||||||
|
mi.name = mapitem["Name"].AsString();
|
||||||
|
returnitems.Add(mi);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
remoteClient.SendMapItemReply(returnitems.ToArray(), itemtype, flags);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private LLSDMap RequestMapItems(string httpserver)
|
||||||
|
{
|
||||||
|
WebRequest mapitemsrequest = WebRequest.Create(httpserver);
|
||||||
|
mapitemsrequest.Method = "POST";
|
||||||
|
mapitemsrequest.ContentType = "application/xml+llsd";
|
||||||
|
LLSDMap RAMap = new LLSDMap();
|
||||||
|
|
||||||
|
string RAMapString = RAMap.ToString();
|
||||||
|
LLSD LLSDofRAMap = RAMap; // RENAME if this works
|
||||||
|
|
||||||
|
byte[] buffer = LLSDParser.SerializeXmlBytes(LLSDofRAMap);
|
||||||
|
LLSDMap responseMap = new LLSDMap();
|
||||||
|
Stream os = null;
|
||||||
|
try
|
||||||
|
{ // send the Post
|
||||||
|
mapitemsrequest.ContentLength = buffer.Length; //Count bytes to send
|
||||||
|
os = mapitemsrequest.GetRequestStream();
|
||||||
|
os.Write(buffer, 0, buffer.Length); //Send it
|
||||||
|
os.Close();
|
||||||
|
m_log.InfoFormat("[WorldMap]: Getting MapItems from Sim {0}", httpserver);
|
||||||
|
}
|
||||||
|
catch (WebException ex)
|
||||||
|
{
|
||||||
|
m_log.InfoFormat("[WorldMap] Bad send on GetMapItems {0}", ex.Message);
|
||||||
|
responseMap["connect"] = LLSD.FromBoolean(false);
|
||||||
|
|
||||||
|
return responseMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
//m_log.Info("[OGP] waiting for a reply after rez avatar send");
|
||||||
|
string response_mapItems_reply = null;
|
||||||
|
{ // get the response
|
||||||
|
try
|
||||||
|
{
|
||||||
|
WebResponse webResponse = mapitemsrequest.GetResponse();
|
||||||
|
if (webResponse == null)
|
||||||
|
{
|
||||||
|
//m_log.Info("[OGP:] Null reply on rez_avatar post");
|
||||||
|
}
|
||||||
|
|
||||||
|
StreamReader sr = new StreamReader(webResponse.GetResponseStream());
|
||||||
|
response_mapItems_reply = sr.ReadToEnd().Trim();
|
||||||
|
//m_log.InfoFormat("[OGP]: rez_avatar reply was {0} ", response_mapItems_reply);
|
||||||
|
|
||||||
|
}
|
||||||
|
catch (WebException ex)
|
||||||
|
{
|
||||||
|
//m_log.InfoFormat("[OGP]: exception on read after send of rez avatar {0}", ex.Message);
|
||||||
|
responseMap["connect"] = LLSD.FromBoolean(false);
|
||||||
|
|
||||||
|
return responseMap;
|
||||||
|
}
|
||||||
|
LLSD rezResponse = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rezResponse = LLSDParser.DeserializeXml(response_mapItems_reply);
|
||||||
|
|
||||||
|
responseMap = (LLSDMap)rezResponse;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
//m_log.InfoFormat("[OGP]: exception on parse of rez reply {0}", ex.Message);
|
||||||
|
responseMap["connect"] = LLSD.FromBoolean(false);
|
||||||
|
|
||||||
|
return responseMap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return responseMap;
|
||||||
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Requests map blocks in area of minX, maxX, minY, MaxY in world cordinates
|
/// Requests map blocks in area of minX, maxX, minY, MaxY in world cordinates
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -378,5 +488,63 @@ namespace OpenSim.Region.Environment.Modules.World.WorldMap
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
public LLSD HandleRemoteMapItemRequest(string path, LLSD request, string endpoint)
|
||||||
|
{
|
||||||
|
uint xstart = 0;
|
||||||
|
uint ystart = 0;
|
||||||
|
|
||||||
|
Helpers.LongToUInts(m_scene.RegionInfo.RegionHandle,out xstart,out ystart);
|
||||||
|
|
||||||
|
LLSDMap responsemap = new LLSDMap();
|
||||||
|
List<ScenePresence> avatars = m_scene.GetAvatars();
|
||||||
|
LLSDArray responsearr = new LLSDArray(avatars.Count);
|
||||||
|
LLSDMap responsemapdata = new LLSDMap();
|
||||||
|
int tc = System.Environment.TickCount;
|
||||||
|
/*
|
||||||
|
foreach (ScenePresence av in avatars)
|
||||||
|
{
|
||||||
|
responsemapdata = new LLSDMap();
|
||||||
|
responsemapdata["X"] = LLSD.FromInteger((int)(xstart + av.AbsolutePosition.X));
|
||||||
|
responsemapdata["Y"] = LLSD.FromInteger((int)(ystart + av.AbsolutePosition.Y));
|
||||||
|
responsemapdata["ID"] = LLSD.FromUUID(UUID.Zero);
|
||||||
|
responsemapdata["Name"] = LLSD.FromString("TH");
|
||||||
|
responsemapdata["Extra"] = LLSD.FromInteger(0);
|
||||||
|
responsemapdata["Extra2"] = LLSD.FromInteger(0);
|
||||||
|
responsearr.Add(responsemapdata);
|
||||||
|
}
|
||||||
|
responsemap["1"] = responsearr;
|
||||||
|
*/
|
||||||
|
if (avatars.Count == 0)
|
||||||
|
{
|
||||||
|
responsemapdata = new LLSDMap();
|
||||||
|
responsemapdata["X"] = LLSD.FromInteger((int)(xstart + 1));
|
||||||
|
responsemapdata["Y"] = LLSD.FromInteger((int)(ystart + 1));
|
||||||
|
responsemapdata["ID"] = LLSD.FromUUID(UUID.Zero);
|
||||||
|
responsemapdata["Name"] = LLSD.FromString(Util.Md5Hash(m_scene.RegionInfo.RegionName + tc.ToString()));
|
||||||
|
responsemapdata["Extra"] = LLSD.FromInteger(0);
|
||||||
|
responsemapdata["Extra2"] = LLSD.FromInteger(0);
|
||||||
|
responsearr.Add(responsemapdata);
|
||||||
|
|
||||||
|
responsemap["6"] = responsearr;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
responsearr = new LLSDArray(avatars.Count);
|
||||||
|
foreach (ScenePresence av in avatars)
|
||||||
|
{
|
||||||
|
responsemapdata = new LLSDMap();
|
||||||
|
responsemapdata["X"] = LLSD.FromInteger((int)(xstart + av.AbsolutePosition.X));
|
||||||
|
responsemapdata["Y"] = LLSD.FromInteger((int)(ystart + av.AbsolutePosition.Y));
|
||||||
|
responsemapdata["ID"] = LLSD.FromUUID(UUID.Zero);
|
||||||
|
responsemapdata["Name"] = LLSD.FromString(Util.Md5Hash(m_scene.RegionInfo.RegionName + tc.ToString()));
|
||||||
|
responsemapdata["Extra"] = LLSD.FromInteger(1);
|
||||||
|
responsemapdata["Extra2"] = LLSD.FromInteger(0);
|
||||||
|
responsearr.Add(responsemapdata);
|
||||||
|
}
|
||||||
|
responsemap["6"] = responsearr;
|
||||||
|
}
|
||||||
|
return responsemap;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -219,6 +219,8 @@ namespace OpenSim.Region.Examples.SimpleModule
|
||||||
|
|
||||||
public event DirPlacesQuery OnDirPlacesQuery;
|
public event DirPlacesQuery OnDirPlacesQuery;
|
||||||
|
|
||||||
|
public event MapItemRequest OnMapItemRequest;
|
||||||
|
|
||||||
|
|
||||||
#pragma warning restore 67
|
#pragma warning restore 67
|
||||||
|
|
||||||
|
@ -892,6 +894,10 @@ namespace OpenSim.Region.Examples.SimpleModule
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void SendMapItemReply(mapItemReply[] replies, uint mapitemtype, uint flags)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
public void KillEndDone()
|
public void KillEndDone()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue