1
This commit is contained in:
parent
a754e09114
commit
9ac84073b1
@ -222,6 +222,11 @@ enum HumanAttrType_e
|
||||
HAT_End
|
||||
};
|
||||
|
||||
enum EquipType_e
|
||||
{
|
||||
EquipType_Bullet = 1,
|
||||
};
|
||||
|
||||
const char* const PROJ_NAME_FMT = "game%d_gameserver";
|
||||
const char* const PROJ_ROOT_FMT = "/data/logs/%s";
|
||||
|
||||
|
@ -1578,8 +1578,7 @@ void Human::DeadDrop()
|
||||
if (inventory_[slot] > 0) {
|
||||
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquipBySlotId(slot);
|
||||
if (equip_meta) {
|
||||
if (equip_meta->i->equip_type() == 2 &&
|
||||
MetaMgr::Instance()->fighting_mode) {
|
||||
if (!equip_meta->CanDrop()) {
|
||||
return;
|
||||
}
|
||||
a8::Vec2 drop_pos = pos;
|
||||
@ -1748,7 +1747,10 @@ void Human::ProcSkillPhase(MetaData::SkillPhase* phase)
|
||||
break;
|
||||
case Skill_Shot:
|
||||
{
|
||||
|
||||
MetaData::Equip* bullet_meta = MetaMgr::Instance()->GetEquip(phase->param1.GetInt());
|
||||
if (bullet_meta) {
|
||||
DirectShot(bullet_meta);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Skill_SummonObject:
|
||||
|
@ -82,6 +82,11 @@ namespace MetaData
|
||||
#endif
|
||||
}
|
||||
|
||||
bool Equip::CanDrop()
|
||||
{
|
||||
return i->equip_type() == EquipType_Bullet && MetaMgr::Instance()->fighting_mode;
|
||||
}
|
||||
|
||||
void Player::Init()
|
||||
{
|
||||
{
|
||||
|
@ -55,6 +55,7 @@ namespace MetaData
|
||||
std::array<int, IS_END> volume = {};
|
||||
|
||||
void Init();
|
||||
bool CanDrop();
|
||||
};
|
||||
|
||||
struct Player
|
||||
|
@ -307,184 +307,6 @@ void Player::LootInteraction(Loot* entity)
|
||||
if (!item_meta) {
|
||||
return;
|
||||
}
|
||||
switch (item_meta->i->equip_type()) {
|
||||
case 1:
|
||||
{
|
||||
//装备
|
||||
if (item_meta->i->equip_subtype() == 1) {
|
||||
//近战
|
||||
if (default_weapon.weapon_id != weapons[0].weapon_id) {
|
||||
/*
|
||||
cs::SMPickup notifymsg;
|
||||
notifymsg.set_error_code(2);
|
||||
SendNotifyMsg(notifymsg);
|
||||
*/
|
||||
return;
|
||||
} else {
|
||||
weapons[0].weapon_idx = 0;
|
||||
weapons[0].weapon_id = entity->item_id;
|
||||
weapons[0].weapon_lv = std::max(1, GetWeaponConfigLv(weapons[0].weapon_id));
|
||||
weapons[0].ammo = 0;
|
||||
weapons[0].meta = item_meta;
|
||||
weapons[0].Recalc();
|
||||
}
|
||||
need_sync_active_player = true;
|
||||
SyncAroundPlayers();
|
||||
} else {
|
||||
Weapon* weapon = nullptr;
|
||||
if (weapons[GUN_SLOT1].weapon_id == 0) {
|
||||
weapon = &weapons[GUN_SLOT1];
|
||||
weapon->weapon_idx = GUN_SLOT1;
|
||||
if (curr_weapon != &weapons[GUN_SLOT2]) {
|
||||
curr_weapon = &weapons[GUN_SLOT1];
|
||||
}
|
||||
} else if (weapons[GUN_SLOT2].weapon_id == 0) {
|
||||
weapon = &weapons[GUN_SLOT2];
|
||||
weapon->weapon_idx = GUN_SLOT2;
|
||||
if (curr_weapon != &weapons[GUN_SLOT1]) {
|
||||
curr_weapon = &weapons[GUN_SLOT2];
|
||||
}
|
||||
}
|
||||
if (!weapon) {
|
||||
/*
|
||||
cs::SMPickup notifymsg;
|
||||
notifymsg.set_error_code(2);
|
||||
SendNotifyMsg(notifymsg);
|
||||
*/
|
||||
return;
|
||||
}
|
||||
weapon->weapon_id = entity->item_id;
|
||||
weapon->weapon_lv = std::max(1, GetWeaponConfigLv(weapon->weapon_id));
|
||||
weapon->ammo = 0;
|
||||
weapon->meta = item_meta;
|
||||
weapon->Recalc();
|
||||
AutoLoadingBullet();
|
||||
need_sync_active_player = true;
|
||||
SyncAroundPlayers();
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
{
|
||||
#if 0
|
||||
if (item_meta->i->is_luck()) {
|
||||
if (skin_jlf.skin_id != 0) {
|
||||
room->DropItem(pos, skin_jlf.skin_id, 1, skin_jlf.skin_lv);
|
||||
}
|
||||
skin_jlf.skin_id = entity->item_id;
|
||||
skin_jlf.skin_lv = std::max(1, GetSkinConfigLv(skin_jlf.skin_id));
|
||||
skin_jlf_meta = MetaMgr::Instance()->GetDress(skin_jlf.skin_id);
|
||||
if (skin_jlf_meta) {
|
||||
skill_meta = MetaMgr::Instance()->GetSkill(skin_jlf_meta->i->skill_id());
|
||||
} else {
|
||||
skill_meta = nullptr;
|
||||
}
|
||||
RecalcBuff();
|
||||
SyncAroundPlayers();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
#if 0
|
||||
if (item_meta->i->_inventory_slot() >= 0 &&
|
||||
item_meta->i->_inventory_slot() < IS_END) {
|
||||
if (GetInventory(item_meta->i->_inventory_slot()) >=
|
||||
GetVolume(item_meta->i->_inventory_slot())
|
||||
) {
|
||||
/*
|
||||
cs::SMPickup notifymsg;
|
||||
notifymsg.set_error_code(1);
|
||||
SendNotifyMsg(notifymsg);
|
||||
*/
|
||||
return;
|
||||
}
|
||||
int add_num = GetVolume(item_meta->i->_inventory_slot()) -
|
||||
GetInventory(item_meta->i->_inventory_slot());
|
||||
add_num = std::min(entity->count, add_num);
|
||||
|
||||
AddInventory(item_meta->i->_inventory_slot(), add_num);
|
||||
if (item_meta->i->_inventory_slot() == 5 ||
|
||||
item_meta->i->_inventory_slot() == 6) {
|
||||
Weapon* weapon = &weapons[3 + (item_meta->i->_inventory_slot() - 5)];
|
||||
weapon->weapon_id = entity->item_id;
|
||||
weapon->weapon_lv = 1;
|
||||
weapon->ammo += entity->count;
|
||||
weapon->meta = item_meta;
|
||||
weapon->Recalc();
|
||||
DecInventory(item_meta->i->_inventory_slot(), add_num);
|
||||
}
|
||||
if (item_meta->i->_inventory_slot() > 12) {
|
||||
if (item_meta->i->_inventory_slot() - 12 > curr_scope_idx) {
|
||||
curr_scope_idx = item_meta->i->_inventory_slot() - 12;
|
||||
}
|
||||
}
|
||||
if (add_num < entity->count) {
|
||||
//刷新数量
|
||||
entity->count -= add_num;
|
||||
entity->BroadcastFullState();
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
switch (item_meta->i->equip_type()) {
|
||||
case 7:
|
||||
{
|
||||
#if 0
|
||||
//背包
|
||||
MetaData::Equip* old_item_meta = MetaMgr::Instance()->GetEquip(backpack);
|
||||
if (old_item_meta) {
|
||||
if (old_item_meta->i->equip_lv() >= item_meta->i->equip_lv()) {
|
||||
return;
|
||||
}
|
||||
room->DropItem(pos, old_item_meta->i->id(), 1, 1);
|
||||
}
|
||||
backpack = item_meta->i->id();
|
||||
RecalcVolume();
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
#if 0
|
||||
//防具
|
||||
if (item_meta->i->equip_subtype() == 1) {
|
||||
//盔甲
|
||||
MetaData::Equip* old_item_meta = MetaMgr::Instance()->GetEquip(chest);
|
||||
if (old_item_meta) {
|
||||
if (old_item_meta->i->equip_lv() >= item_meta->i->equip_lv()) {
|
||||
return;
|
||||
}
|
||||
room->DropItem(pos, old_item_meta->i->id(), 1, 1);
|
||||
}
|
||||
chest = item_meta->i->id();
|
||||
RecalcAttr();
|
||||
} else if (item_meta->i->equip_subtype() == 2) {
|
||||
//头盔
|
||||
MetaData::Equip* old_item_meta = MetaMgr::Instance()->GetEquip(helmet);
|
||||
if (old_item_meta) {
|
||||
if (old_item_meta->i->equip_lv() >= item_meta->i->equip_lv()) {
|
||||
return;
|
||||
}
|
||||
room->DropItem(pos, old_item_meta->i->id(), 1, 1);
|
||||
}
|
||||
helmet = item_meta->i->id();
|
||||
RecalcAttr();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (action_type == AT_None) {
|
||||
AutoLoadingBullet();
|
||||
}
|
||||
need_sync_active_player = true;
|
||||
SyncAroundPlayers();
|
||||
}
|
||||
break;
|
||||
}
|
||||
entity->pickuped = true;
|
||||
room->RemoveObjectLater(entity);
|
||||
}
|
||||
@ -524,129 +346,6 @@ void Player::ProcPrepareItems(const ::google::protobuf::RepeatedField< ::google:
|
||||
handled_items.insert(equip_id);
|
||||
MetaData::Equip* item_meta = MetaMgr::Instance()->GetEquip(equip_id);
|
||||
if (item_meta) {
|
||||
switch (item_meta->i->equip_type()) {
|
||||
case 1:
|
||||
{
|
||||
//装备
|
||||
if (item_meta->i->equip_subtype() == 1) {
|
||||
//近战
|
||||
if (default_weapon.weapon_id == weapons[0].weapon_id) {
|
||||
weapons[0].weapon_idx = 0;
|
||||
weapons[0].weapon_id = equip_id;
|
||||
weapons[0].weapon_lv = std::max(1, GetWeaponConfigLv(weapons[0].weapon_id));
|
||||
weapons[0].ammo = 0;
|
||||
weapons[0].meta = item_meta;
|
||||
weapons[0].Recalc();
|
||||
}
|
||||
} else {
|
||||
Weapon* weapon = nullptr;
|
||||
if (weapons[GUN_SLOT1].weapon_id == 0) {
|
||||
weapon = &weapons[GUN_SLOT1];
|
||||
weapon->weapon_idx = GUN_SLOT1;
|
||||
if (curr_weapon != &weapons[GUN_SLOT2]) {
|
||||
curr_weapon = &weapons[GUN_SLOT1];
|
||||
}
|
||||
} else if (weapons[GUN_SLOT2].weapon_id == 0) {
|
||||
weapon = &weapons[GUN_SLOT2];
|
||||
weapon->weapon_idx = GUN_SLOT2;
|
||||
if (curr_weapon != &weapons[GUN_SLOT1]) {
|
||||
curr_weapon = &weapons[GUN_SLOT2];
|
||||
}
|
||||
}
|
||||
if (weapon) {
|
||||
weapon->weapon_id = equip_id;
|
||||
weapon->weapon_lv = std::max(1, GetWeaponConfigLv(weapon->weapon_id));
|
||||
weapon->ammo = 0;
|
||||
weapon->meta = item_meta;
|
||||
weapon->Recalc();
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
#if 0
|
||||
if (item_meta->i->_inventory_slot() >= 0 &&
|
||||
item_meta->i->_inventory_slot() < IS_END) {
|
||||
if (GetInventory(item_meta->i->_inventory_slot()) >=
|
||||
GetVolume(item_meta->i->_inventory_slot())
|
||||
) {
|
||||
break;
|
||||
}
|
||||
int add_num = GetVolume(item_meta->i->_inventory_slot()) -
|
||||
GetInventory(item_meta->i->_inventory_slot());
|
||||
add_num = std::min(1, add_num);
|
||||
|
||||
AddInventory(item_meta->i->_inventory_slot(), add_num);
|
||||
if (item_meta->i->_inventory_slot() == 5 ||
|
||||
item_meta->i->_inventory_slot() == 6) {
|
||||
Weapon* weapon = &weapons[3 + (item_meta->i->_inventory_slot() - 5)];
|
||||
weapon->weapon_id = equip_id;
|
||||
weapon->weapon_lv = 1;
|
||||
weapon->ammo += 1;
|
||||
weapon->meta = item_meta;
|
||||
weapon->Recalc();
|
||||
DecInventory(item_meta->i->_inventory_slot(), add_num);
|
||||
}
|
||||
if (item_meta->i->_inventory_slot() > 12) {
|
||||
if (item_meta->i->_inventory_slot() - 12 > curr_scope_idx) {
|
||||
curr_scope_idx = item_meta->i->_inventory_slot() - 12;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
switch (item_meta->i->equip_type()) {
|
||||
case 7:
|
||||
{
|
||||
#if 0
|
||||
//背包
|
||||
MetaData::Equip* old_item_meta = MetaMgr::Instance()->GetEquip(backpack);
|
||||
if (old_item_meta) {
|
||||
if (old_item_meta->i->equip_lv() >= item_meta->i->equip_lv()) {
|
||||
break;
|
||||
}
|
||||
room->DropItem(pos, old_item_meta->i->id(), 1, 1);
|
||||
}
|
||||
backpack = item_meta->i->id();
|
||||
RecalcVolume();
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
#if 0
|
||||
//防具
|
||||
if (item_meta->i->equip_subtype() == 1) {
|
||||
//盔甲
|
||||
MetaData::Equip* old_item_meta = MetaMgr::Instance()->GetEquip(chest);
|
||||
if (old_item_meta) {
|
||||
if (old_item_meta->i->equip_lv() >= item_meta->i->equip_lv()) {
|
||||
break;
|
||||
}
|
||||
room->DropItem(pos, old_item_meta->i->id(), 1, 1);
|
||||
}
|
||||
chest = item_meta->i->id();
|
||||
RecalcAttr();
|
||||
} else if (item_meta->i->equip_subtype() == 2) {
|
||||
//头盔
|
||||
MetaData::Equip* old_item_meta = MetaMgr::Instance()->GetEquip(helmet);
|
||||
if (old_item_meta) {
|
||||
if (old_item_meta->i->equip_lv() >= item_meta->i->equip_lv()) {
|
||||
break;
|
||||
}
|
||||
room->DropItem(pos, old_item_meta->i->id(), 1, 1);
|
||||
}
|
||||
helmet = item_meta->i->id();
|
||||
RecalcAttr();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}//end for
|
||||
need_sync_active_player = true;
|
||||
|
@ -511,8 +511,7 @@ void Room::CreateLoot(int equip_id, a8::Vec2 pos, int count, int equip_lv)
|
||||
{
|
||||
MetaData::Equip* equip_meta = MetaMgr::Instance()->GetEquip(equip_id);
|
||||
if (equip_meta) {
|
||||
if (equip_meta->i->equip_type() == 2 &&
|
||||
MetaMgr::Instance()->fighting_mode) {
|
||||
if (!equip_meta->CanDrop()) {
|
||||
return;
|
||||
}
|
||||
Loot* entity = new Loot();
|
||||
|
Loading…
x
Reference in New Issue
Block a user