Add RemoveItemFromInventory GM

Fixes #2
This commit is contained in:
lcdr
2022-11-22 16:42:11 +01:00
parent 42477ef10c
commit 1df0902bbb
7 changed files with 104 additions and 29 deletions

View File

@@ -7,7 +7,7 @@ use crate::common::{ObjId, OBJID_EMPTY};
use crate::world::{CloneId, CLONE_ID_INVALID, Lot, LOT_NULL, LuNameValue, MapId, MAP_ID_INVALID, Quaternion, Vector3, ZoneId};
use crate::world::amf3::Amf3;
pub use super::{EquipInventory, InventoryType, KillType, UnEquipInventory, MissionState, PetNotificationType, MoveItemInInventory, MoveInventoryBatch, RemoveSkill, SetIgnoreProjectileCollision};
pub use super::{EquipInventory, InventoryType, KillType, UnEquipInventory, LootType, MissionState, PetNotificationType, MoveItemInInventory, MoveInventoryBatch, RemoveSkill, RemoveItemFromInventory, SetIgnoreProjectileCollision};
use super::{GmString, GmWString};
#[derive(Debug, Deserialize, PartialEq, Serialize)]
@@ -38,6 +38,7 @@ pub enum GameMessage {
EnableRebuild(EnableRebuild) = 213,
MoveItemInInventory(MoveItemInInventory) = 224,
AddItemToInventoryClientSync(AddItemToInventoryClientSync) = 227,
RemoveItemFromInventory(RemoveItemFromInventory) = 230,
EquipInventory(EquipInventory) = 231,
UnEquipInventory(UnEquipInventory) = 233,
OfferMission(OfferMission) = 248,
@@ -297,33 +298,6 @@ pub struct SetCurrency {
pub source_type: LootType,
}
#[derive(Debug, Deserialize, Serialize, PartialEq, GmParam)]
#[repr(u32)]
pub enum LootType {
None,
Chest,
Mission,
Mail,
Currency,
Achievement,
Trade,
Quickbuild,
Deletion,
Vendor,
Activity,
Pickup,
Brick,
Property,
Moderation,
Exhibit,
Inventory,
Claimcode,
Consumption,
Crafting,
LevelReward,
Relocate,
}
#[derive(Debug, GameMessage, PartialEq)]
pub struct TeamPickupItem {
pub loot_id: ObjId,

Binary file not shown.

View File

@@ -0,0 +1,19 @@
GameMessage::RemoveItemFromInventory(
RemoveItemFromInventory {
confirmed: true,
delete_item: true,
out_success: false,
inv_type: InventoryType::Default,
loot_type_source: crate::world::gm::LootType::Activity,
extra_info: lnv! {},
force_deletion: true,
loot_type_source_id: 70368744177662,
obj_id: 0,
obj_template: 3039,
requesting_obj_id: 70368744177662,
stack_count: 1,
stack_remaining: 0,
subkey: 0,
trade_id: 0
}
)

View File

@@ -8,6 +8,7 @@ use endio::{Deserialize, LERead, LEWrite, Serialize};
use lu_packets_derive::{GameMessage, GmParam};
use crate::common::{LuVarString, LuVarWString, ObjId, OBJID_EMPTY};
use crate::world::LuNameValue;
use super::{Lot, LOT_NULL};
type GmString = LuVarString<u32>;
@@ -78,6 +79,7 @@ pub enum InventoryType {
Donation,
BankModel,
BankBehavior,
All,
}
#[derive(Debug, Deserialize, Serialize, PartialEq, GmParam)]
@@ -129,6 +131,66 @@ pub struct RemoveSkill {
pub skill_id: u32,
}
#[derive(Debug, Deserialize, Serialize, PartialEq, GmParam)]
#[repr(u32)]
pub enum LootType {
None,
Chest,
Mission,
Mail,
Currency,
Achievement,
Trade,
Quickbuild,
Deletion,
Vendor,
Activity,
Pickup,
Brick,
Property,
Moderation,
Exhibit,
Inventory,
Claimcode,
Consumption,
Crafting,
LevelReward,
Relocate,
}
#[derive(Debug, GameMessage, PartialEq)]
pub struct RemoveItemFromInventory {
#[default(false)]
pub confirmed: bool,
#[default(true)]
pub delete_item: bool,
#[default(false)]
pub out_success: bool,
#[default(InventoryType::All)]
pub inv_type: InventoryType,
#[default(LootType::None)]
pub loot_type_source: LootType,
pub extra_info: LuNameValue,
#[default(true)]
pub force_deletion: bool,
#[default(OBJID_EMPTY)]
pub loot_type_source_id: ObjId,
#[default(OBJID_EMPTY)]
pub obj_id: ObjId,
#[default(LOT_NULL)]
pub obj_template: Lot,
#[default(OBJID_EMPTY)]
pub requesting_obj_id: ObjId,
#[default(1)]
pub stack_count: u32,
#[default(0)]
pub stack_remaining: u32,
#[default(OBJID_EMPTY)]
pub subkey: ObjId,
#[default(OBJID_EMPTY)]
pub trade_id: ObjId,
}
#[derive(Debug, GameMessage, PartialEq)]
pub struct EquipInventory {
#[default(false)]

View File

@@ -7,7 +7,7 @@ use crate::common::{ObjId, OBJID_EMPTY};
use crate::world::{Lot, LOT_NULL, Quaternion, Vector3};
use crate::world::amf3::Amf3;
pub use super::{EquipInventory, InventoryType, KillType, UnEquipInventory, MissionState, PetNotificationType, MoveItemInInventory, MoveInventoryBatch, SetIgnoreProjectileCollision};
pub use super::{EquipInventory, InventoryType, KillType, UnEquipInventory, MissionState, PetNotificationType, MoveItemInInventory, MoveInventoryBatch, RemoveItemFromInventory, SetIgnoreProjectileCollision};
use super::{GmString, GmWString};
#[derive(Debug, Deserialize, PartialEq, Serialize)]
@@ -32,6 +32,7 @@ pub enum GameMessage {
PopEquippedItemsState = 192,
RebuildCancel(RebuildCancel) = 209,
MoveItemInInventory(MoveItemInInventory) = 224,
RemoveItemFromInventory(RemoveItemFromInventory) = 230,
EquipInventory(EquipInventory) = 231,
UnEquipInventory(UnEquipInventory) = 233,
RespondToMission(RespondToMission) = 249,

Binary file not shown.

View File

@@ -0,0 +1,19 @@
GameMessage::RemoveItemFromInventory(
RemoveItemFromInventory {
confirmed: true,
delete_item: true,
out_success: false,
inv_type: InventoryType::Default,
loot_type_source: crate::world::gm::LootType::Activity,
extra_info: lnv! {},
force_deletion: true,
loot_type_source_id: 70368744177662,
obj_id: 0,
obj_template: 3039,
requesting_obj_id: 70368744177662,
stack_count: 1,
stack_remaining: 0,
subkey: 0,
trade_id: 0
}
)