• There is NO official Otland's Discord server and NO official Otland's server list. The Otland's Staff does not manage any Discord server or server list. Moderators or administrator of any Discord server or server lists have NO connection to the Otland's Staff. Do not get scammed!

TFS 0.X Missing trigger when leaving guilds

potinho

Advanced OT User
Joined
Oct 11, 2009
Messages
1,458
Solutions
17
Reaction score
175
Location
Brazil
My server have in AAC (Gesior) a button to "clean up players", for some reason, while joining and leaving guilds some players got bugged. So, constantly i need to press this button:

1738284937942.webp

Thats what this button do:
PHP:
if($action == 'cleanup_players')
{
    if($logged)
    {
        if($group_id_of_acc_logged >= $config['site']['access_admin_panel'])
        {
            $players_list = new DatabaseList('Player');
        }
        else
            $players_list = $account_logged->getPlayersList();
        if(count($players_list) > 0)
        {
            foreach($players_list as $player)
            {
                $player_rank = $player->getRank();
                if(!empty($player_rank))
                {
                    if($player_rank->isLoaded())
                    {
                        $rank_guild = $player_rank->getGuild();
                        if(!$rank_guild->isLoaded())
                        {
                            $player->setCustomField('guild_join_cooldown', time());
                            $player->setCustomField('guild_leave_cooldown', time());
                            $player->setRank();
                            $player->setGuildNick();
                            $player->save();
                            $changed_ranks_of[] = $player->getName();
                            $deleted_ranks[] = 'ID: '.$player_rank->getId().' - '.$player_rank->getName();
                            $player_rank->delete();
                        }
                    }
                    else
                    {
                        $player->setCustomField('guild_join_cooldown', time());
                        $player->setCustomField('guild_leave_cooldown', time());
                        $player->setRank();
                        $player->setGuildNick('');
                        $player->save();
                        $changed_ranks_of[] = $player->getName();
                    }

                }
            }
            $main_content .= "<b>Deleted ranks (this ranks guilds doesn't exist [bug fix]):</b>";
            if(!empty($deleted_ranks))
                foreach($deleted_ranks as $rank)
                    $main_content .= "<li>".htmlspecialchars($rank);
            $main_content .= "<BR /><BR /><b>Changed ranks of players (rank or guild of rank doesn't exist [bug fix]):</b>";
            if(!empty($changed_ranks_of))
                foreach($changed_ranks_of as $name)
                    $main_content .= "<li>".htmlspecialchars($name);
        }
        else
            $main_content .= "0 players found.";
    }
    else
        $main_content .= "You are not logged in.";
    $main_content .= "<center><h3><a href=\"?subtopic=guilds\">BACK</a></h3></center>";
}

How to fix this? I guess some trigger in DB is missing. For now i had this two triggers:

1738285076533.webp

1738285091914.webp
 
Back
Top