//---------------------------------------------------------------------------- void CGuildMemberModule::quitGuild() { MODULE_AST( _GuildMemberCore ); CGuild * guild = EGS_PD_CAST<CGuild*>( _GuildMemberCore->getGuild() ); EGS_PD_AST( guild ); SM_STATIC_PARAMS_1( params,STRING_MANAGER::player ); params[0].setEIdAIAlias( _GuildMemberCore->getIngameEId(), CAIAliasTranslator::getInstance()->getAIAlias(_GuildMemberCore->getIngameEId()) ); CFameManager::getInstance().clearPlayerGuild( _GuildMemberCore->getIngameEId() ); CGuildCharProxy proxy; getProxy(proxy); proxy.cancelAFK(); clearOnlineGuildProperties(); guild->deleteMember( _GuildMemberCore ); if ( guild->getMembersBegin() == guild->getMembersEnd() ) { CGuildManager::getInstance()->deleteGuild(guild->getId()); proxy.sendSystemMessage("GUILD_DESTROYED"); } else { guild->sendMessageToGuildMembers("GUILD_QUIT", params); SM_STATIC_PARAMS_1(params, STRING_MANAGER::string_id); params[0].StringId = guild->getNameId(); proxy.sendSystemMessage("GUILD_YOU_QUIT", params); } }
//---------------------------------------------------------------------------- void CGuildMemberModule::kickMember( uint16 index,uint8 session )const { MODULE_AST( _GuildMemberCore ); CGuild * guild = EGS_PD_CAST<CGuild*>( _GuildMemberCore->getGuild() ); EGS_PD_AST( guild ); CGuildCharProxy proxy; getProxy(proxy); proxy.cancelAFK(); if ( guild->getMembersSession() != session ) { proxy.sendSystemMessage( "GUILD_BAD_SESSION" ); return; } if ( _GuildMemberCore->getMemberIndex() == index ) { nlwarning("<GUILD>%s tries to kick himself",proxy.getId().toString().c_str()); return; } CGuildMember * member = guild->getMemberByIndex( index ); if ( member == NULL ) { nlwarning("<GUILD>%s set invalid member idx %u as leader",proxy.getId().toString().c_str(),index ); return; } EGSPD::CGuildGrade::TGuildGrade targetGrade = member->getGrade(); if ( !canAffectGrade( targetGrade ) ) { proxy.sendSystemMessage("GUILD_INSUFFICIENT_GRADE"); return; } // if the user is online reset its guild id CGuildMemberModule * module = NULL; if ( member->getReferencingModule( module ) ) { module->clearOnlineGuildProperties(); } // send system message SM_STATIC_PARAMS_2(params,STRING_MANAGER::player,STRING_MANAGER::string_id); params[0].setEIdAIAlias( proxy.getId(), CAIAliasTranslator::getInstance()->getAIAlias(proxy.getId()) ); params[1].StringId = CEntityIdTranslator::getInstance()->getEntityNameStringId(member->getIngameEId()); sendMessageToGuildMembers("GUILD_KICK_MEMBER",params); guild->deleteMember( member ); }