The floor editor only works half of the time for me also,Now I have problems with badges and Floor Editor.
Someone who have any fixes?
public bool SetFloorItem(GameClient Session, Item Item, int newX, int newY, int newRot, bool newItem, bool OnRoller, bool sendMessage, bool updateRoomUserStatuses = false)
{
// Questions -> Skype: keiz.er
bool NeedsReAdd = false;
if (newItem)
if (Item.IsWired)
if (Item.GetBaseItem().WiredType == WiredBoxType.EffectRegenerateMaps && _room.GetRoomItemHandler().GetFloor.Where(x => x.GetBaseItem().WiredType == WiredBoxType.EffectRegenerateMaps).Count() > 0)
return false;
List<Item> ItemsOnTile = GetFurniObjects(newX, newY);
if (Item.GetBaseItem().InteractionType == InteractionType.ROLLER && ItemsOnTile.Where(x => x.GetBaseItem().InteractionType == InteractionType.ROLLER && x.Id != Item.Id).Count() > 0)
return false;
if (!newItem)
NeedsReAdd = _room.GetGameMap().RemoveFromMap(Item);
Dictionary<int, ThreeDCoord> AffectedTiles = Gamemap.GetAffectedTiles(Item.GetBaseItem().Length, Item.GetBaseItem().Width, newX, newY, newRot);
if (!_room.GetGameMap().ValidTile(newX, newY) || _room.GetGameMap().SquareHasUsers(newX, newY) && !Item.GetBaseItem().IsSeat)
{
if (NeedsReAdd)
_room.GetGameMap().AddToMap(Item);
return false;
}
foreach (ThreeDCoord Tile in AffectedTiles.Values)
{
if (!_room.GetGameMap().ValidTile(Tile.X, Tile.Y) ||
(_room.GetGameMap().SquareHasUsers(Tile.X, Tile.Y) && !Item.GetBaseItem().IsSeat))
{
if (NeedsReAdd)
{
_room.GetGameMap().AddToMap(Item);
}
return false;
}
}
Double newZ = _room.GetGameMap().Model.SqFloorHeight[newX, newY];
if (!OnRoller)
{
if (_room.GetGameMap().Model.SqState[newX, newY] != SquareState.OPEN && !Item.GetBaseItem().IsSeat)
{
return false;
}
foreach (ThreeDCoord Tile in AffectedTiles.Values)
{
if (_room.GetGameMap().Model.SqState[Tile.X, Tile.Y] != SquareState.OPEN &&
!Item.GetBaseItem().IsSeat)
{
if (NeedsReAdd)
{
//AddItem(Item);
_room.GetGameMap().AddToMap(Item);
}
return false;
}
}
if (!Item.GetBaseItem().IsSeat && !Item.IsRoller)
{
foreach (ThreeDCoord Tile in AffectedTiles.Values)
{
if (_room.GetGameMap().GetRoomUsers(new Point(Tile.X, Tile.Y)).Count > 0)
{
if (NeedsReAdd)
_room.GetGameMap().AddToMap(Item);
return false;
}
}
}
}
// Find affected objects
var ItemsAffected = new List<Item>();
var ItemsComplete = new List<Item>();
foreach (ThreeDCoord Tile in AffectedTiles.Values.ToList())
{
List<Item> Temp = GetFurniObjects(Tile.X, Tile.Y);
if (Temp != null)
{
ItemsAffected.AddRange(Temp);
}
}
ItemsComplete.AddRange(ItemsOnTile);
ItemsComplete.AddRange(ItemsAffected);
if (!OnRoller)
{
foreach (Item I in ItemsComplete.ToList())
{
if (I == null)
continue;
if (I.Id == Item.Id)
continue;
if (I.GetBaseItem() == null)
continue;
}
}
{
if (Item.Rotation != newRot && Item.GetX == newX && Item.GetY == newY)
newZ = Item.GetZ;
foreach (Item I in ItemsComplete.ToList())
{
if (I == null)
continue;
if (I.Id == Item.Id)
continue;
if (I.GetBaseItem().InteractionType == InteractionType.STACKTOOL)
{ // Basically the core of the fix
// Questions -> Skype: keiz.er
newZ = I.GetZ;
break;
}
if (I.TotalHeight > newZ)
{
newZ = I.TotalHeight;
}
}
}
if (newRot != 0 && newRot != 2 && newRot != 4 && newRot != 6 && newRot != 8 && !Item.GetBaseItem().ExtraRot)
newRot = 0;
Item.Rotation = newRot;
int oldX = Item.GetX;
int oldY = Item.GetY;
Item.SetState(newX, newY, newZ, AffectedTiles);
if (!OnRoller && Session != null)
Item.Interactor.OnPlace(Session, Item);
if (newItem)
{
if (_floorItems.ContainsKey(Item.Id))
{
if (Session != null)
Session.SendNotification(PlusEnvironment.GetGame().GetLanguageLocale().TryGetValue("room_item_placed"));
_room.GetGameMap().RemoveFromMap(Item);
return true;
}
if (Item.IsFloorItem && !_floorItems.ContainsKey(Item.Id))
_floorItems.TryAdd(Item.Id, Item);
else if (Item.IsWallItem && !_wallItems.ContainsKey(Item.Id))
_wallItems.TryAdd(Item.Id, Item);
if (sendMessage)
_room.SendMessage(new ObjectAddComposer(Item, _room));
}
else
{
UpdateItem(Item);
if (!OnRoller && sendMessage)
_room.SendMessage(new ObjectUpdateComposer(Item, _room.OwnerId));
}
_room.GetGameMap().AddToMap(Item);
if (Item.GetBaseItem().IsSeat)
updateRoomUserStatuses = true;
if (updateRoomUserStatuses)
_room.GetRoomUserManager().UpdateUserStatusses();
if (Item.GetBaseItem().InteractionType == InteractionType.TENT || Item.GetBaseItem().InteractionType == InteractionType.TENT_SMALL)
{
_room.RemoveTent(Item.Id, Item);
_room.AddTent(Item.Id);
}
using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
{
dbClient.RunQuery("UPDATE `items` SET `room_id` = '" + _room.RoomId + "', `x` = '" + Item.GetX + "', `y` = '" + Item.GetY + "', `z` = '" + Item.GetZ + "', `rot` = '" + Item.Rotation + "' WHERE `id` = '" + Item.Id + "' LIMIT 1");
}
return true;
}
Someone who have a txt or sql file for the badge_definitions?
Its 4 hours work if I must take all badges and write them inside.
Database table called Badge_definitions edit it in there.Where do I edit the Name and Desc for the Staff badges I have found 2 places the flash_text file and the database Flash tabel.
Are it any more places?
download this then run it.Its only 2 coloums in that table Require and BadgeID.
How can I edit it then?
yes exactly this, or make it so when they're idle for a certain amount of time it d/cs them.So you ping the clients in game, and if said client doesn't respond, you dispose of their connection? I don't really understand
yeah do this, been a whileeeYou can edit the badge name and description in the table "client_external_badge_texts" NOT the "badge_definitions" table. The badge_definitions table is used to define the badge ID and the required rights to be used.
ite, and how sure are you that it's the emulator not properly DCin them that causes the 76% freeze for some people?yes exactly this, or make it so when they're idle for a certain amount of time it d/cs them.
Not if you're flash_texts is being called from the PHP file because the txt file gets overwrited with the data from the database.or you can do it in external flash texts Lol
Well my proxy is only an OVH vps. I could purchase a small vps, and host the emulator on that. Would there be any lag caused by having the emulator hosted separately? (They will both be in france).pretty certain, all hotels I know that don't use a proxy it seems to work just fine.
Nope, they shouldn't be. That's all I do too.Well my proxy is only an OVH vps. I could purchase a small vps, and host the emulator on that. Would there be any lag caused by having the emulator hosted separately? (They will both be in france).