mirror of
https://github.com/psforever/PSF-LoginServer.git
synced 2026-07-16 08:55:18 +00:00
message when inventory is full (assumes player inventory destination, but item winds up in hand due to lack of space, but it works)
This commit is contained in:
parent
e4275cf298
commit
8f98f67aef
4 changed files with 32 additions and 28 deletions
|
|
@ -120,13 +120,8 @@ class GeneralLogic(val ops: GeneralOperations, implicit val context: ActorContex
|
||||||
ops.fallHeightTracker(pos.z)
|
ops.fallHeightTracker(pos.z)
|
||||||
if (isCrouching && !player.Crouching) {
|
if (isCrouching && !player.Crouching) {
|
||||||
//dev stuff goes here
|
//dev stuff goes here
|
||||||
sendResponse(ChatMsg(ChatMessageType.UNK_227, "@NoChat_NoSquad"))
|
sendResponse(ChatMsg(ChatMessageType.UNK_229, "@PadDeconstruct_secsA^23~"))
|
||||||
sendResponse(ChatMsg(ChatMessageType.UNK_227, "@InventoryPickupNoRoom"))
|
sendResponse(ChatMsg(ChatMessageType.UNK_227, "@InventoryPickupNoRoom"))
|
||||||
// zone.LocalEvents ! LocalServiceMessage(
|
|
||||||
// "",
|
|
||||||
// LocalAction.SendResponse(ChatMsg(ChatMessageType.UNK_227, "@InventoryPickupNoRoom"))
|
|
||||||
// LocalAction.SendResponse(ChatMsg(ChatMessageType.UNK_227, "@InventoryPickupNoRoom"))
|
|
||||||
// )
|
|
||||||
}
|
}
|
||||||
player.Position = pos
|
player.Position = pos
|
||||||
player.Velocity = vel
|
player.Velocity = vel
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ object WorldSession {
|
||||||
Zone.Ground.DropItem(localItem, localContainer.Position, Vector3.z(localContainer.Orientation.z)),
|
Zone.Ground.DropItem(localItem, localContainer.Position, Vector3.z(localContainer.Orientation.z)),
|
||||||
localContainer.Actor
|
localContainer.Actor
|
||||||
)
|
)
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
@ -163,7 +163,7 @@ object WorldSession {
|
||||||
result.onComplete {
|
result.onComplete {
|
||||||
case Failure(_) | Success(_: Containable.CanNotPutItemInSlot) =>
|
case Failure(_) | Success(_: Containable.CanNotPutItemInSlot) =>
|
||||||
TaskWorkflow.execute(GUIDTask.unregisterEquipment(localContainer.Zone.GUID, localItem))
|
TaskWorkflow.execute(GUIDTask.unregisterEquipment(localContainer.Zone.GUID, localItem))
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
@ -361,17 +361,21 @@ object WorldSession {
|
||||||
val future = ask(localZone.Ground, Zone.Ground.PickupItem(item.GUID))
|
val future = ask(localZone.Ground, Zone.Ground.PickupItem(item.GUID))
|
||||||
future.onComplete {
|
future.onComplete {
|
||||||
case Success(Zone.Ground.ItemInHand(_)) =>
|
case Success(Zone.Ground.ItemInHand(_)) =>
|
||||||
PutEquipmentInInventoryOrDrop(localContainer)(localItem)
|
PutEquipmentInInventoryOrDrop(localContainer)(localItem).onComplete {
|
||||||
|
case Success(Containable.ItemPutInSlot(_, _, Player.FreeHandSlot, _)) =>
|
||||||
|
localContainer.Actor ! Zone.Ground.CanNotPickupItem(localZone, localItem.GUID, "@InventoryPickupNoRoom")
|
||||||
|
case _ => ()
|
||||||
|
}
|
||||||
case Success(Zone.Ground.CanNotPickupItem(_, item_guid, _)) =>
|
case Success(Zone.Ground.CanNotPickupItem(_, item_guid, _)) =>
|
||||||
localZone.GUID(item_guid) match {
|
localZone.GUID(item_guid) match {
|
||||||
case Some(_) => ;
|
case Some(_) => ()
|
||||||
case None => //acting on old data?
|
case None => //acting on old data?
|
||||||
localZone.AvatarEvents ! AvatarServiceMessage(
|
localZone.AvatarEvents ! AvatarServiceMessage(
|
||||||
localZone.id,
|
localZone.id,
|
||||||
AvatarAction.ObjectDelete(Service.defaultPlayerGUID, item_guid)
|
AvatarAction.ObjectDelete(Service.defaultPlayerGUID, item_guid)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
future
|
future
|
||||||
}
|
}
|
||||||
|
|
@ -407,7 +411,7 @@ object WorldSession {
|
||||||
.DropItem(localItem, localPos.getOrElse(localContainer.Position), Vector3.z(localContainer.Orientation.z)),
|
.DropItem(localItem, localPos.getOrElse(localContainer.Position), Vector3.z(localContainer.Orientation.z)),
|
||||||
localContainer.Actor
|
localContainer.Actor
|
||||||
)
|
)
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
result
|
result
|
||||||
}
|
}
|
||||||
|
|
@ -584,7 +588,7 @@ object WorldSession {
|
||||||
case Success(Containable.ItemPutInSlot(_, _, _, Some(swapItem))) =>
|
case Success(Containable.ItemPutInSlot(_, _, _, Some(swapItem))) =>
|
||||||
//swapItem is not registered right now, we can not drop the item without re-registering it
|
//swapItem is not registered right now, we can not drop the item without re-registering it
|
||||||
TaskWorkflow.execute(PutNewEquipmentInInventorySlot(localSource)(swapItem, localSrcSlot))
|
TaskWorkflow.execute(PutNewEquipmentInInventorySlot(localSource)(swapItem, localSrcSlot))
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
|
|
||||||
override def description(): String = s"unregistering $localItem before stowing in $localDestination"
|
override def description(): String = s"unregistering $localItem before stowing in $localDestination"
|
||||||
|
|
@ -597,7 +601,7 @@ object WorldSession {
|
||||||
localChannel,
|
localChannel,
|
||||||
AvatarAction.ObjectDelete(Service.defaultPlayerGUID, guid)
|
AvatarAction.ObjectDelete(Service.defaultPlayerGUID, guid)
|
||||||
)
|
)
|
||||||
case None => ;
|
case None => ()
|
||||||
}
|
}
|
||||||
val moveResult = ask(localDestination.Actor, Containable.PutItemInSlotOrAway(localItem, Some(localDestSlot)))
|
val moveResult = ask(localDestination.Actor, Containable.PutItemInSlotOrAway(localItem, Some(localDestSlot)))
|
||||||
moveResult.onComplete(localMoveOnComplete)
|
moveResult.onComplete(localMoveOnComplete)
|
||||||
|
|
@ -610,7 +614,7 @@ object WorldSession {
|
||||||
moveItemTaskFunc(fromSlot),
|
moveItemTaskFunc(fromSlot),
|
||||||
GUIDTask.unregisterEquipment(fromSource.Zone.GUID, itemToMove)
|
GUIDTask.unregisterEquipment(fromSource.Zone.GUID, itemToMove)
|
||||||
))
|
))
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
val result = ask(source.Actor, Containable.RemoveItemFromSlot(item))
|
val result = ask(source.Actor, Containable.RemoveItemFromSlot(item))
|
||||||
result.onComplete(resultOnComplete)
|
result.onComplete(resultOnComplete)
|
||||||
|
|
@ -689,7 +693,7 @@ object WorldSession {
|
||||||
case Success(Containable.ItemPutInSlot(_, _, _, Some(swapItem))) =>
|
case Success(Containable.ItemPutInSlot(_, _, _, Some(swapItem))) =>
|
||||||
//swapItem is not registered right now, we can not drop the item without re-registering it
|
//swapItem is not registered right now, we can not drop the item without re-registering it
|
||||||
TaskWorkflow.execute(PutNewEquipmentInInventorySlot(localSource)(swapItem, localSrcSlot))
|
TaskWorkflow.execute(PutNewEquipmentInInventorySlot(localSource)(swapItem, localSrcSlot))
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
|
|
||||||
override def description(): String = s"registering $localItem in ${localDestination.Zone.id} before removing from $localSource"
|
override def description(): String = s"registering $localItem in ${localDestination.Zone.id} before removing from $localSource"
|
||||||
|
|
@ -702,7 +706,7 @@ object WorldSession {
|
||||||
localChannel,
|
localChannel,
|
||||||
AvatarAction.ObjectDelete(Service.defaultPlayerGUID, guid)
|
AvatarAction.ObjectDelete(Service.defaultPlayerGUID, guid)
|
||||||
)
|
)
|
||||||
case None => ;
|
case None => ()
|
||||||
}
|
}
|
||||||
val moveResult = ask(localDestination.Actor, Containable.PutItemInSlotOrAway(localItem, Some(localDestSlot)))
|
val moveResult = ask(localDestination.Actor, Containable.PutItemInSlotOrAway(localItem, Some(localDestSlot)))
|
||||||
moveResult.onComplete(localMoveOnComplete)
|
moveResult.onComplete(localMoveOnComplete)
|
||||||
|
|
@ -715,7 +719,7 @@ object WorldSession {
|
||||||
moveItemTaskFunc(fromSlot),
|
moveItemTaskFunc(fromSlot),
|
||||||
GUIDTask.registerEquipment(fromSource.Zone.GUID, itemToMove)
|
GUIDTask.registerEquipment(fromSource.Zone.GUID, itemToMove)
|
||||||
))
|
))
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
val result = ask(source.Actor, Containable.RemoveItemFromSlot(item))
|
val result = ask(source.Actor, Containable.RemoveItemFromSlot(item))
|
||||||
result.onComplete(resultOnComplete)
|
result.onComplete(resultOnComplete)
|
||||||
|
|
@ -847,17 +851,17 @@ object WorldSession {
|
||||||
case Some(e) =>
|
case Some(e) =>
|
||||||
log.info(s"${tplayer.Name} has dropped ${tplayer.Sex.possessive} ${e.Definition.Name}")
|
log.info(s"${tplayer.Name} has dropped ${tplayer.Sex.possessive} ${e.Definition.Name}")
|
||||||
PutEquipmentInInventoryOrDrop(tplayer)(e)
|
PutEquipmentInInventoryOrDrop(tplayer)(e)
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
//restore previously-held-up equipment
|
//restore previously-held-up equipment
|
||||||
itemInPreviouslyDrawnSlotToDrop match {
|
itemInPreviouslyDrawnSlotToDrop match {
|
||||||
case Some(e) => PutEquipmentInInventorySlot(tplayer)(e, previouslyDrawnSlot)
|
case Some(e) => PutEquipmentInInventorySlot(tplayer)(e, previouslyDrawnSlot)
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
log.info(s"${tplayer.Name} has quickly drawn a ${grenade.Definition.Name}")
|
log.info(s"${tplayer.Name} has quickly drawn a ${grenade.Definition.Name}")
|
||||||
case _ => ;
|
case _ => ()
|
||||||
}
|
}
|
||||||
case None => ;
|
case None => ()
|
||||||
}
|
}
|
||||||
optGrenadeInSlot.nonEmpty
|
optGrenadeInSlot.nonEmpty
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -522,6 +522,12 @@ class PlayerControl(player: Player, avatarActor: typed.ActorRef[AvatarActor.Comm
|
||||||
|
|
||||||
case Zone.Ground.CanNotPickupItem(_, item_guid, reason) =>
|
case Zone.Ground.CanNotPickupItem(_, item_guid, reason) =>
|
||||||
log.warn(s"${player.Name} failed to pick up an item ($item_guid) from the ground because $reason")
|
log.warn(s"${player.Name} failed to pick up an item ($item_guid) from the ground because $reason")
|
||||||
|
if (reason.startsWith("@")) {
|
||||||
|
player.Zone.AvatarEvents ! AvatarServiceMessage(
|
||||||
|
player.Name,
|
||||||
|
AvatarAction.SendResponse(Service.defaultPlayerGUID, ChatMsg(ChatMessageType.UNK_227, reason))
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
case Player.BuildDeployable(obj: TelepadDeployable, tool: Telepad) =>
|
case Player.BuildDeployable(obj: TelepadDeployable, tool: Telepad) =>
|
||||||
obj.Router = tool.Router //necessary; forwards link to the router that produced the telepad
|
obj.Router = tool.Router //necessary; forwards link to the router that produced the telepad
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,8 @@ class CaptureFlagManager(zone: Zone) extends Actor {
|
||||||
val building = flag.Owner.asInstanceOf[Building]
|
val building = flag.Owner.asInstanceOf[Building]
|
||||||
CaptureFlagManager.ChatBroadcast(
|
CaptureFlagManager.ChatBroadcast(
|
||||||
zone,
|
zone,
|
||||||
CaptureFlagChatMessageStrings.CTF_Failed_FlagLost(building.Name, flag.Faction)
|
CaptureFlagChatMessageStrings.CTF_Failed_FlagLost(building.Name, flag.Faction),
|
||||||
|
fanfare = false
|
||||||
)
|
)
|
||||||
case CaptureFlagLostReasonEnum.Ended =>
|
case CaptureFlagLostReasonEnum.Ended =>
|
||||||
()
|
()
|
||||||
|
|
@ -175,10 +176,7 @@ class CaptureFlagManager(zone: Zone) extends Actor {
|
||||||
if (hackTimeRemaining < nextMessageAfterMinutes.minutes.toMillis) {
|
if (hackTimeRemaining < nextMessageAfterMinutes.minutes.toMillis) {
|
||||||
entry.currentMessageIndex += 1
|
entry.currentMessageIndex += 1
|
||||||
val msg = CaptureFlagManager.ComposeWarningMessage(flag, owner.Name, nextMessageAfterMinutes)
|
val msg = CaptureFlagManager.ComposeWarningMessage(flag, owner.Name, nextMessageAfterMinutes)
|
||||||
//can't use ChatBroadcast(...) because the message contents are wide
|
CaptureFlagManager.ChatBroadcast(zone, msg, fanfare = false)
|
||||||
events ! LocalServiceMessage(zoneId, LocalAction.SendResponse(
|
|
||||||
ChatMsg(ChatMessageType.UNK_229, wideContents = true, "", msg, None)
|
|
||||||
))
|
|
||||||
}
|
}
|
||||||
FlagInfo(
|
FlagInfo(
|
||||||
u1 = 0,
|
u1 = 0,
|
||||||
|
|
@ -241,6 +239,7 @@ object CaptureFlagManager {
|
||||||
|
|
||||||
private def ChatBroadcast(zone: Zone, message: String, fanfare: Boolean = true): Unit = {
|
private def ChatBroadcast(zone: Zone, message: String, fanfare: Boolean = true): Unit = {
|
||||||
//todo use UNK_222 sometimes
|
//todo use UNK_222 sometimes
|
||||||
|
//todo I think the fanfare was relate to whether the message was celebratory is tone, based on the faction
|
||||||
val messageType: ChatMessageType = if (fanfare) {
|
val messageType: ChatMessageType = if (fanfare) {
|
||||||
ChatMessageType.UNK_223
|
ChatMessageType.UNK_223
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -250,7 +249,7 @@ object CaptureFlagManager {
|
||||||
zone.id,
|
zone.id,
|
||||||
LocalAction.SendChatMsg(
|
LocalAction.SendChatMsg(
|
||||||
PlanetSideGUID(-1),
|
PlanetSideGUID(-1),
|
||||||
ChatMsg(messageType, wideContents = false, "", message, None)
|
ChatMsg(messageType, wideContents = true, "", message, None)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue