[FIX PLUSEMU] Correções para alguns bugs 02.10.17 4:12
Olá pessoal, algumas pessoas conseguiram ver uma demo do nosso servidor que ficou online por algumas horas para testes e algumas pessoas notaram que corrigimos alguns Wired e adicionamos alguns novos, então vou postar algumas coisas que podem ser útil para vocês, você pode solicitar alguma correção simples aqui embaixo e eu irei responder assim que possível! (Não irei corrigir coisas complexas ou criar comandos, vamos com calma)
Wired GameEndsBox.cs
Interactorgate.cs
Wired FurniHasFurniBox.cs
Wired GameEndsBox.cs
- Spoiler:
- Procure por
foreach (IWiredItem Condition in Conditions)
{
Abaixo adicione
if (!Condition.Execute(Condition.Item))
return false;
No mesmo arquivo procure por
bool HasRandomEffectAddon = Effects.Count(x => x.Type == WiredBoxType.AddonRandomEffect) > 0;
Substitua por
bool HasRandomEffectAddon = Effects.Where(x => x.Type == WiredBoxType.AddonRandomEffect).ToList().Count() > 0;
Wired GameStartBox.cs
Procure por
foreach (IWiredItem Condition in Conditions)
{
Abaixo adicione
if (!Condition.Execute(Condition.Item))
return false;
Procure por
bool HasRandomEffectAddon = Effects.Count(x => x.Type == WiredBoxType.AddonRandomEffect) > 0;
Substitua por
bool HasRandomEffectAddon = Effects.Where(x => x.Type == WiredBoxType.AddonRandomEffect).ToList().Count() > 0;
Interactorgate.cs
- Spoiler:
Procure por
if (!Item.GetRoom().GetGameMap().itemCanBePlacedHere(Item.GetX, Item.GetY))
Abaixo das duas chaves adicione
if (Item.GetRoom() == null || Item.GetRoom().GetGameMap() == null ||
Item.GetRoom().GetGameMap().SquareHasUsers(Item.GetX, Item.GetY))
return;
Abaixo de
Item.UpdateState();
Adicione
Item.RegenerateBlock(NewMode.ToString(), Item.GetRoom().GetGameMap());
Procure por
if (!Item.GetRoom().GetGameMap().itemCanBePlacedHere(Item.GetX, Item.GetY))
Abaixo das duas chaves adicione
if (Item.GetRoom() == null || Item.GetRoom().GetGameMap() == null ||
Item.GetRoom().GetGameMap().SquareHasUsers(Item.GetX, Item.GetY))
return;
Wired FurniHasFurniBox.cs
- Spoiler:
Procure por int Unknown = Packet.PopInt();
Abaixo adicione
int Option = Packet.PopInt();
Procure por
string Unknown2 = Packet.PopString();
Abaixo adicione
this.BoolData = Option == 1;
Procure por
public bool Execute(params object[] Params)
Abaixo da chave adicione
return this.BoolData ? AllFurniHaveFurniOn() : SomeFurniHaveFurniOn();
}
public bool AllFurniHaveFurniOn()
{
Procure por
bool HasFurni = false;
Substitua por bool Furni = false;
Procure por List<Item> Items = Instance.GetGameMap().GetAllRoomItemForSquare(Item.GetX, Item.GetY);
Abaixo disso adicione
if (Items.Where(x => x.GetZ >= Item.GetZ).Count() > 1)
Furni = true;
if (!Furni)
return false;
}
return true;
}
public bool SomeFurniHaveFurniOn()
{
foreach (Item Item in this.SetItems.Values.ToList())
{
if (Item == null || !Instance.GetRoomItemHandler().GetFloor.Contains(Item)) //Si el Furni esta en la sala
continue;
bool Furni = false;
foreach (String I in this.ItemsData.Split(';'))
{
if (String.IsNullOrEmpty(I))
continue;
Item II = Instance.GetRoomItemHandler().GetItem(Convert.ToInt32(I));
if (II == null)
continue;
List<Item> Items = Instance.GetGameMap().GetAllRoomItemForSquare(II.GetX, II.GetY);
if ((Items.Where(x => x.GetZ >= Item.GetZ).Count() > 1))
{
Furni = true;
break;
}
}
if (!Furni)