//updates a group member's client pointer when they zone in //if the group was in the zone allready bool Group::UpdatePlayer(Mob* update){ VerifyGroup(); uint32 i=0; if(update->IsClient()) { //update their player profile PlayerProfile_Struct &pp = update->CastToClient()->GetPP(); for (i = 0; i < MAX_GROUP_MEMBERS; i++) { if(membername[i][0] == '\0') memset(pp.groupMembers[i], 0, 64); else strn0cpy(pp.groupMembers[i], membername[i], 64); } } for (i = 0; i < MAX_GROUP_MEMBERS; i++) { if (!strcasecmp(membername[i],update->GetName())) { members[i] = update; members[i]->SetGrouped(true); return true; } } return false; }
LPCFGELEMENTINFO CCfgFile::FindElement( HGROUP hGroup, LPCTSTR pName ) {_STTEX(); // Find the NULL group if ( hGroup == NULL ) { hGroup = VerifyGroup( NULL ); if ( hGroup == NULL ) return FALSE; } // end if LPCFGELEMENTINFO pcei = NULL; while ( ( pcei = GetNextElement( hGroup, pcei ) ) != NULL ) if ( !strcmpi( pName, pcei->name ) ) return pcei; return NULL; }
BOOL CCfgFile::RemoveGroup(HGROUP node) {_STTEX(); // Find the NULL group if ( node == NULL ) { node = VerifyGroup( NULL ); if ( node == NULL ) return FALSE; } // end if // Remove this node from the list if ( node->pPrev != NULL ) node->pPrev->pNext = node->pNext; if ( node->pNext != NULL ) node->pNext->pPrev = node->pPrev; if ( m_pHead == node ) m_pHead = node->pNext; if ( m_pTail == node ) m_pTail = node->pPrev; // Delete this node DeleteElements( node ); delete node; // Decrement the count if ( m_dwSize ) m_dwSize--; return TRUE; }
BOOL CCfgFile::RemoveElement( HGROUP hGroup, LPCFGELEMENTINFO node) {_STTEX(); // Find the NULL group if ( hGroup == NULL ) { hGroup = VerifyGroup( NULL ); if ( hGroup == NULL ) return FALSE; } // end if if ( node == NULL ) return FALSE; // Remove this node from the list if ( node->pPrev != NULL ) node->pPrev->pNext = node->pNext; if ( node->pNext != NULL ) node->pNext->pPrev = node->pPrev; if ( hGroup->head == node ) hGroup->head = node->pNext; if ( hGroup->tail == node ) hGroup->tail = node->pPrev; // Delete this node delete node; // Decrement the count if ( m_dwSize ) m_dwSize--; return TRUE; }
BOOL CCfgFile::AddElement( HGROUP hGroup, LPCTSTR name, DWORD type, DWORD size, LPVOID value ) {_STTEX(); BOOL bNew = FALSE; LPCFGELEMENTINFO node = FindElement( hGroup, name ); // Find the NULL group if ( hGroup == NULL ) { hGroup = VerifyGroup( NULL ); if ( hGroup == NULL ) hGroup = AddGroup( NULL ); if ( hGroup == NULL ) return FALSE; } // end if // Does it already exist if ( node == NULL ) { bNew = TRUE; node = new CFGELEMENTINFO; if ( node == NULL ) return FALSE; } // end if // Lose previous memory else if ( node->size != 0 && node->value != NULL ) delete[] node->value; // Save element name if ( name != NULL ) { strcpy_sz( node->name, name ); } else *node->name = NULL; // Save type and size information node->type = type; node->size = size; // Just store value if size is zero if ( size == 0 ) node->value = value; // Allocate memory if needed else { // Allocate memory for user information node->value = new BYTE[ size + 1 ]; // Punt if no memory if ( node->value == NULL ) { delete node; return FALSE; } // Copy user data if ( value != NULL ) memcpy( node->value, value, size ); else { ZeroMemory( node->value, size ); } // NULL terminate data ( (LPBYTE)node->value )[ size ] = 0; } // end else // Don't add if not new if ( !bNew ) return TRUE; // Add this node to the list node->pNext = NULL; node->pPrev = hGroup->tail; if ( hGroup->tail == NULL ) hGroup->head = node; else hGroup->tail->pNext = node; hGroup->tail = node; hGroup->size++; return TRUE; }
bool Group::BelongsToGroup(const std::wstring& group) const { return (m_Groups.find(VerifyGroup(group)) != m_Groups.end()); }