SaErrorT cIpmi::IfGetInventoryInfo( cIpmiFru *fru, SaHpiInventoryDataT &data ) { assert( fru->m_inventory_size ); GetInventoryInfo( fru, data ); return SA_OK; }
void CGameServerPlayer::PrepareInitialPackets() { QueuePacket(PacketData(std::begin(g_client0_login1), std::end(g_client0_login1))); QueuePacket(PacketData(std::begin(g_client0_login2), std::end(g_client0_login2))); QueuePacket(PacketData(std::begin(g_client0_login3), std::end(g_client0_login3))); QueuePacket(PacketData(std::begin(g_client0_login4), std::end(g_client0_login4))); QueuePacket(GetMotd()); QueuePacket(PacketData(std::begin(g_client0_login7), std::end(g_client0_login7))); QueuePacket(GetCharacterInfo()); QueuePacket(GetInventoryInfo()); QueuePacket(PacketData(std::begin(g_client0_login11), std::end(g_client0_login11))); QueuePacket(PacketData(std::begin(g_client0_login12), std::end(g_client0_login12))); QueuePacket(PacketData(std::begin(g_client0_login13), std::end(g_client0_login13))); QueuePacket(PacketData(std::begin(g_client0_login14), std::end(g_client0_login14))); ResetInstance(); #if 0 //Test mob in room SpawnNpc(1155006509, 10516, 3105901, 159.8f, 0, 156.4f, 0); #endif }
void CGameServerPlayer::SendTeleportSequence(uint32 levelId, uint32 musicId, float x, float y, float z, float angle) { QueuePacket(PacketData(std::begin(g_client0_moor1), std::end(g_client0_moor1))); QueuePacket(PacketData(std::begin(g_client0_moor2), std::end(g_client0_moor2))); QueuePacket(PacketData(std::begin(g_client0_moor3), std::end(g_client0_moor3))); QueuePacket(PacketData(std::begin(g_client0_moor4), std::end(g_client0_moor4))); QueuePacket(PacketData(std::begin(g_client0_moor5), std::end(g_client0_moor5))); QueuePacket(PacketData(std::begin(g_client0_moor6), std::end(g_client0_moor6))); QueuePacket(PacketData(std::begin(g_client0_moor7), std::end(g_client0_moor7))); QueuePacket(PacketData(std::begin(g_client0_moor8), std::end(g_client0_moor8))); QueuePacket(PacketData(std::begin(g_client0_moor9), std::end(g_client0_moor9))); { CCompositePacket result; { CSetMusicPacket packet; packet.SetSourceId(PLAYER_ID); packet.SetTargetId(PLAYER_ID); packet.SetMusicId(musicId); result.AddPacket(packet.ToPacketData()); } { CSetWeatherPacket packet; packet.SetSourceId(PLAYER_ID); packet.SetTargetId(PLAYER_ID); packet.SetWeatherId(CSetWeatherPacket::WEATHER_CLEAR); result.AddPacket(packet.ToPacketData()); } { CSetMapPacket packet; packet.SetSourceId(PLAYER_ID); packet.SetTargetId(PLAYER_ID); packet.SetMapId(levelId); result.AddPacket(packet.ToPacketData()); } QueuePacket(result.ToPacketData()); } QueuePacket(PacketData(std::begin(g_client0_moor11), std::end(g_client0_moor11))); QueuePacket(PacketData(std::begin(g_client0_moor12), std::end(g_client0_moor12))); { PacketData outgoingPacket(std::begin(g_client0_moor13), std::end(g_client0_moor13)); { const uint32 setInitialPositionBase = 0x360; CSetInitialPositionPacket setInitialPosition; setInitialPosition.SetSourceId(PLAYER_ID); setInitialPosition.SetTargetId(PLAYER_ID); setInitialPosition.SetX(x); setInitialPosition.SetY(y); setInitialPosition.SetZ(z); setInitialPosition.SetAngle(angle); auto setInitialPositionPacket = setInitialPosition.ToPacketData(); memcpy(outgoingPacket.data() + setInitialPositionBase, setInitialPositionPacket.data(), setInitialPositionPacket.size()); } QueuePacket(outgoingPacket); } QueuePacket(GetInventoryInfo()); QueuePacket(PacketData(std::begin(g_client0_moor21), std::end(g_client0_moor21))); //QueuePacket(PacketData(std::begin(g_client0_moor22), std::end(g_client0_moor22))); if(!m_zoneMasterCreated) { //Zone Master QueuePacket(PacketData(std::begin(g_client0_moor23), std::end(g_client0_moor23))); /* QueuePacket(PacketData(std::begin(g_client0_moor24), std::end(g_client0_moor24))); QueuePacket(PacketData(std::begin(g_client0_moor25), std::end(g_client0_moor25))); QueuePacket(PacketData(std::begin(g_client0_moor26), std::end(g_client0_moor26))); QueuePacket(PacketData(std::begin(g_client0_moor27), std::end(g_client0_moor27))); QueuePacket(PacketData(std::begin(g_client0_moor28), std::end(g_client0_moor28))); QueuePacket(PacketData(std::begin(g_client0_moor29), std::end(g_client0_moor29))); QueuePacket(PacketData(std::begin(g_client0_moor30), std::end(g_client0_moor30))); QueuePacket(PacketData(std::begin(g_client0_moor31), std::end(g_client0_moor31))); QueuePacket(PacketData(std::begin(g_client0_moor32), std::end(g_client0_moor32))); QueuePacket(PacketData(std::begin(g_client0_moor33), std::end(g_client0_moor33))); QueuePacket(PacketData(std::begin(g_client0_moor34), std::end(g_client0_moor34))); QueuePacket(PacketData(std::begin(g_client0_moor35), std::end(g_client0_moor35))); QueuePacket(PacketData(std::begin(g_client0_moor36), std::end(g_client0_moor36))); QueuePacket(PacketData(std::begin(g_client0_moor37), std::end(g_client0_moor37))); */ //Enables chat? // QueuePacket(PacketData(std::begin(g_client0_moor38), std::end(g_client0_moor38))); { CCompositePacket packet; packet.AddPacket(PacketData(std::begin(g_client0_moor38), std::end(g_client0_moor38))); QueuePacket(packet.ToPacketData()); } // QueuePacket(PacketData(std::begin(g_client0_moor39), std::end(g_client0_moor39))); // QueuePacket(PacketData(std::begin(g_client0_moor40), std::end(g_client0_moor40))); ResetInstance(); //Only makes sense in Black Shroud for now if(levelId == CSetMapPacket::MAP_BLACKSHROUD) { const auto& actorDatabase = CGlobalData::GetInstance().GetActorDatabase(); for(const auto& actorInfo : actorDatabase.GetActors()) { SpawnNpc(actorInfo.id, actorInfo.baseModelId, actorInfo.nameStringId, std::get<0>(actorInfo.pos), std::get<1>(actorInfo.pos), std::get<2>(actorInfo.pos), 0); } } m_zoneMasterCreated = true; } }
void cIpmi::IfFruAdd( cIpmiEntity *ent, cIpmiFru *fru ) { IpmiLog( "adding inventory data\n" ); dbg( "adding inventory data %d.%d (%s): id %02x", ent->EntityId(), ent->EntityInstance(), ent->EntityIdString(), fru->FruId() ); // calulate fru inventory size unsigned char *buffer = new unsigned char[1024*128]; SaHpiInventoryDataT *d = (SaHpiInventoryDataT *)buffer; fru->m_inventory_size = GetInventoryInfo( fru, *d ); delete [] buffer; // check for overflow { unsigned int n = 256; buffer = new unsigned char[fru->m_inventory_size+n]; unsigned char *b = buffer + fru->m_inventory_size; unsigned int i; for( i = 0; i < n; i++ ) *b++ = (unsigned char)i; d = (SaHpiInventoryDataT *)buffer; unsigned int s = GetInventoryInfo( fru, *d ); assert( s == fru->m_inventory_size ); b = buffer + fru->m_inventory_size; for( i = 0; i < n; i++, b++ ) { //printf( "%d = 0x%02x\n", i, *b ); assert( *b == i ); } delete [] buffer; } // find resource SaHpiRptEntryT *resource = ent->Domain()->FindResource( ent->m_resource_id ); if ( !resource ) { assert( 0 ); return; } if ( !(resource->ResourceCapabilities & SAHPI_CAPABILITY_INVENTORY_DATA ) ) { // update resource resource->ResourceCapabilities |= SAHPI_CAPABILITY_RDR|SAHPI_CAPABILITY_INVENTORY_DATA; struct oh_event *e = (struct oh_event *)g_malloc0( sizeof( struct oh_event ) ); if ( !e ) { IpmiLog( "Out of space !\n" ); return; } memset( e, 0, sizeof( struct oh_event ) ); e->type = oh_event::OH_ET_RESOURCE; e->u.res_event.entry = *resource; AddHpiEvent( e ); } // create rdr AddInventoryDataEvent( ent, fru, *resource ); }