public async Task OnEnterColshape(IColShape colShape, IEntity targetEntity, bool state) => await AltAsync.Do(() => { IPlayer player = targetEntity as IPlayer; if (!state) { return; } if (colShape == null || !colShape.Exists) { return; } if (targetEntity.Type != BaseObjectType.Player) { return; } Alt.Log("Budynki"); BuildingEntity buildingEntity = colShape.GetBuildingEntity(); if (buildingEntity == null) { return; } if (buildingEntity.InteriorColshape != colShape && buildingEntity.ExteriorColshape != colShape) { return; } bool colshapeEnter = buildingEntity.InteriorColshape == colShape ? true : false; Alt.Log("buildingEntity.IsCharacterTenant(player.GetAccountEntity().characterEntity): " + buildingEntity.IsCharacterTenant(player.GetAccountEntity().characterEntity).ToString()); player.EmitAsync("building:request", buildingEntity.DbModel.EntryFee, buildingEntity.DbModel.Name, colshapeEnter, buildingEntity.IsCharacterOwner(player), buildingEntity.IsCharacterTenant(player.GetAccountEntity().characterEntity)); player.SetData("current:doors", colShape); });
public void GetBuildingManageData(IPlayer player) { player.GetData("current:doors", out IColShape colShape); if (colShape == null) { return; } BuildingEntity buildingEntity = colShape.GetBuildingEntity(); if (!buildingEntity.IsCharacterOwner(player) && !buildingEntity.IsCharacterTenant(player.GetAccountEntity().characterEntity)) { return; } BuildingTenantModel tenant = buildingEntity.DbModel.BuildingTenants.SingleOrDefault(plr => plr.CharacterId == player.GetAccountEntity().characterEntity.DbModel.Id); player.Emit("building:manageData", buildingEntity.DbModel, buildingEntity.DbModel.ItemsInBuilding, player.GetAccountEntity().characterEntity.DbModel.Items, buildingEntity.PlayersInBuilding, tenant); }
public void OnEnterBuilding(IPlayer player) { player.GetData("current:doors", out IColShape colShape); if (colShape == null) { return; } BuildingEntity buildingEntity = colShape.GetBuildingEntity(); if (buildingEntity.IsLocked) { player.SendNativeNotify(null, NotificationNativeType.Building, 1, "Drzwi są zamknięte", "~g~Budynek", "Drzwi od tego budynku są zamknięte"); return; } if (buildingEntity.DbModel.EntryFee > 0 && (!buildingEntity.IsCharacterOwner(player) && !buildingEntity.IsCharacterTenant(player.GetAccountEntity().characterEntity))) { if (!player.GetAccountEntity().characterEntity.HasEnoughMoney(buildingEntity.DbModel.EntryFee, false)) { player.SendNativeNotify(null, NotificationNativeType.Normal, 1, "Nie masz przy sobie gotówki", "~g~Budynek", $"Aby wejść do tego budynku potrzebujesz ~g~{buildingEntity.DbModel.EntryFee}$"); return; } player.GetAccountEntity().characterEntity.RemoveMoney(buildingEntity.DbModel.EntryFee, false); buildingEntity.AddMoney(buildingEntity.DbModel.EntryFee); player.SendNativeNotify(null, NotificationNativeType.Building, 1, "Pobrano opłatę", "~g~Budynek", $"Pobrano opłatę {buildingEntity.DbModel.EntryFee}$ za wejście do budynku", 1); } // W późniejszym czasie wczytywanie customowych obiektów - dorobić tabelę building_objects i tam umieszczać obiekty player.GetAccountEntity().characterEntity.Dimension = buildingEntity.DbModel.Id; player.Position = new Position(buildingEntity.DbModel.ExternalPickupPositionX, buildingEntity.DbModel.ExternalPickupPositionY, buildingEntity.DbModel.ExternalPickupPositionZ); buildingEntity.PlayersInBuilding.Add(player); }