Instead of asking such a generic question, can't you be more specific?
What exactly do you want help with?
What exactly are you not understanding?
The logic of schedulers is actually pretty simple, TDMA/OFDMA do the bulk of work.
The only thing that changes is the scheduling policy
(implemented by GetUeCompareDlFn() GetUeCompareUlFn).
The scheduling then uses these to compare the set of existing active UEs via std::sort (ueVector.begin (), ueVector.end (), GetUeCompareDlFn ());
TL;DR: You just need to create a copy of one of the existing scheduler policy source files, rename file and classes to your policy name, add them to the CMakeLists file, and reconfigure.
Then change the implementation of GetUeCompareDlFn to match the behaviour you want. That is it.