EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::General Support (https://www.eqemulator.org/forums/forumdisplay.php?f=598)
-   -   RoF2 GuildLobby Issue (https://www.eqemulator.org/forums/showthread.php?t=44296)

Riklin 01-31-2025 03:29 AM

RoF2 GuildLobby Issue
 
I've done a fair amount of searching for solutions for this, even tried one with some code, but it didn't work completely.

The issue is the RoF2 client guildlobby instancing issue. When you zone in from PoK to guildlobby, or from the guild hall to the guildlobby, you get dumped in the instance. Want all clients to go to the same guildlobby and guildhall. I have "buffbots" in the guildlobby, so want all clients to go to the same one.

We recently created a test server using a windows build, (because the linux version seems to only support akkastack now) but that default server setup still does the instancing with the ROF2 client. I can't believe this is a unique situation.

Has anyone got player.pl files for the guildlobby, the guildhall and poknowledge that work the same way with all supported clients that support PoP expansions and above, that they can post the code for?

Thank you...

Riklin 01-31-2025 06:29 PM

I have modified the guildlobby player.pl file to prevent the player with an ROF2 client from getting sent to the instanced version of the guildlobby. That said, the specific issue I have is getting into the guildhall with the ROF2 client. The two doors do not work whatsoever, that makes the ROF2 client unusable until this issue is resolved.

I think this involves the player.pl file from either the guildhall or the guildlobby. To that end, I think the best way to resolve this is to post the 2 files here and hope someone sees something I am obviously missing.

guildlobby player.pl:

Code:

my $Pet_ENT;

sub EVENT_CLICKDOOR {
        if($doorid == 2 || $doorid == 4 || $doorid == 40 || $doorid == 42) {
                if($uguild_id > 0) {
                        $client->SendToGuildHall();
                }
          } elsif((($doorid >= 5) && ($doorid <= 38)) ||  (($doorid >= 43) && ($doorid <= 76))) {
                $client->OpenLFGuildWindow();
          }
}

sub EVENT_ENTERZONE {

        #off the map
        if ($client->GetX() > 315 || $client->GetX() < -315 || $client->GetY() > 685 || $client->GetY() < -60 || $client->GetZ() < -5 || $client->GetZ() > 15) {
                $client->MovePC(344, 0, 312, 2, 0); # Zone: guildlobby
        }

        #if I am idle for more than xx seconds, auto-afk and go invisible/don't draw model
#  Disabling AutoAFK  rdh 05222023
#        quest::settimer("afk_check", 1200); #20 minutes

/*  Client version doesn't matter - sending everyone to the ONE instance of guildlobby    -rdh01302025

        if(($client->GetClientVersionBit() & 4294967264)!= 0) {
                if($client->GetInstanceID() != 5) {
                        quest::settimer(1,10);
                        $client->Message(0,"Invalid Zone(344:0): You will be redirected to the proper instance in 10 seconds.");
                }
        } else {
                if($client->GetInstanceID() == 5) {
                        quest::settimer(2,10);
                        $client->Message(0,"Invalid Zone(344:5): You will be redirected to the proper zone in 10 seconds.");
                }
        }
}
*/

sub EVENT_SIGNAL {
        #signals received from enter/exit proximity of various NPCs
        #if ($client->GetRace() != 127) {
                #I am not invisible from auto-afk, and I'm still moving around, reset auto-afk timer
                #quest::settimer("afk_check", 1200);
        #} else {
                #I was already set invisible from auto-afk, but now I am moving, set back to base race - not afk
                #$client->SetRace($client->GetBaseRace());
                #$client->SetGender($client->GetBaseGender());
                #if ($client->GetPetID()) {
                #        $Pet_ENT = $entity_list->GetMobByID($client->GetPetID());
                #        $Pet_ENT->SetRace($Pet_ENT->GetBaseRace());
                #}
                #$client->Message(4, "You are no longer idle.");
                #quest::settimer("afk_check", 1200);
        #}
}

sub EVENT_TIMER {
        if($timer == 1) {
#                quest::MovePCInstance(344,5,$x,$y,$z,450); # Zone: guildlobby_INSTANCED
                quest::movepc(344,$x,$y,$z,225); # Zone: guildlobby
        } elsif($timer == 2) {
                quest::movepc(344,$x,$y,$z,225); # Zone: guildlobby
        } elsif($timer eq "afk_check") {
                #I have been idle, go auto-afk and don't draw model
                $client->Message(4, "You are idle, Auto-AFK");
                if ($client->GetPetID()) {
                        $Pet_ENT = $entity_list->GetMobByID($client->GetPetID());
                        $Pet_ENT->SetRace(127);
                }
                $client->SetRace(127);
                $client->SetGender(0);
                quest::stoptimer("afk_check");



This is the guildhall player.pl file:

Code:

# Guild Hall Regen Pool Script - Player Portion

sub EVENT_ENTERZONE {
  quest::settimer("ZoneIn", 3);
}

sub EVENT_TIMER {
  if ($timer eq "ZoneIn") {
    quest::stoptimer("ZoneIn");
    quest::signalwith(345004,$charid); # NPC: Zeflmin_Werlikanin Portal Crystals
  }
}

sub EVENT_POPUPRESPONSE {
  if ($popupid == 666) { #hateplaneb
    quest::movepc(186,-393,656,3); # Zone: hateplaneb
  }
  if ($popupid == 674) { #airplane
    quest::movepc(71,539,1384,-664); # Zone: airplane
  }
  if ($popupid == 15891) { #dragonscale
    #quest::movepc(442,-1954,3916,19);
  }
  if ($popupid == 2708) { #northkarana
    quest::movepc(13,1209,-3685,-5); # Zone: northkarana
  }
  if ($popupid == 4176) { #ecommons
    quest::movepc(22,-140,-1520,3); # Zone: ecommons
  }
  if ($popupid == 534) { #lavastorm
    quest::movepc(27,460,460,-86); # Zone: lavastorm
  }
  if ($popupid == 2707) { #tox
    quest::movepc(38,-916,-1510,-33); # Zone: tox
  }
  if ($popupid == 2706) { #gfaydark
    quest::movepc(54,-441,-2023,4); # Zone: gfaydark
  }
  if ($popupid == 2709) { #dreadlands
    quest::movepc(86,9658,3047,1052); # Zone: dreadlands
  }
  if ($popupid == 2284) { #iceclad
    quest::movepc(110,385,5321,-17); # Zone: iceclad
  }
  if ($popupid == 2031) { #coboltscar
    quest::movepc(117,-1634,-1065,299); # Zone: cobaltscar
  }
  if ($popupid == 3615) { #twilight
    quest::movepc(170,-1028,1338,39); # Zone: twilight
  }
  if ($popupid == 3794) { #stonebrunt
    quest::movepc(100,673,-4531,0); # Zone: stonebrunt
  }
  if ($popupid == 6180) { #wallofslaughter
    quest::movepc(300,-943,13,130); # Zone: wallofslaughter
  }
  if ($popupid == 5733) { #barindu
    quest::movepc(283,209,-515,-119); # Zone: barindu
  }
  if ($popupid == 8237) { #eastkorlach
    #quest::movepc(362,-750,-1002,48);
  }
  if ($popupid == 8967) { #arcstone
    #quest::movepc(369,1630,-279,5);
  }
  if ($popupid == 999) { #mesa
    #quest::movepc(397,-85,-2050,19);
  }
  if ($popupid == 1000) { #guild banner
    #not implemented yet
  }
  if ($popupid == 416) { #kattacastrum
    #quest::movepc(416,-2,-425,-19);
  }
  if ($popupid == 20543) { #potimea
    quest::movepc(219,0,110,8); # Zone: potimea
  }
  if ($popupid == 21986) { #brellsrest
    #quest::movepc(480,-23,-619,36);
  }
}

sub EVENT_CLICKDOOR
{
# This will move RoF clients to their instance, the rest are handled in the DB
  if (($client->GetClientVersionBit() & 4294967264) != 0) {
    if ($doorid == 2 || $doorid == 5) {
# Do we really need the check here?
#      if ($client->CalculateDistance(-3.4, -162.9, 6.9) <= 30) {
#        quest::MovePCInstance(344, 5, 0, 588, 1.75, 260); # Zone: guildlobby
        quest::MovePC(344, 0, 312, 2, 0); # Zone: guildlobby       
#      }
    }
  }
}


Splose 02-01-2025 09:28 AM

The guild hall is working as intended. It is always an instanced zone on Live based on guild.

I’m on mobile so didn’t read the code snippets but the easiest way to get the functionality you want would be to send players to a public instance of the guild hall.. You’d likely need to add the door back in to go back out the guild lobby but it should work as expected then.

fryguy 02-01-2025 11:53 AM

Quote:

Originally Posted by Riklin (Post 270406)
I have modified the guildlobby player.pl file to prevent the player with an ROF2 client from getting sent to the instanced version of the guildlobby. That said, the specific issue I have is getting into the guildhall with the ROF2 client. The two doors do not work whatsoever, that makes the ROF2 client unusable until this issue is resolved.

I think this involves the player.pl file from either the guildhall or the guildlobby. To that end, I think the best way to resolve this is to post the 2 files here and hope someone sees something I am obviously missing.

guildlobby player.pl:

Code:

my $Pet_ENT;

sub EVENT_CLICKDOOR {
        if($doorid == 2 || $doorid == 4 || $doorid == 40 || $doorid == 42) {
                if($uguild_id > 0) {
                        $client->SendToGuildHall();
                }
          } elsif((($doorid >= 5) && ($doorid <= 38)) ||  (($doorid >= 43) && ($doorid <= 76))) {
                $client->OpenLFGuildWindow();
          }
}

sub EVENT_ENTERZONE {

        #off the map
        if ($client->GetX() > 315 || $client->GetX() < -315 || $client->GetY() > 685 || $client->GetY() < -60 || $client->GetZ() < -5 || $client->GetZ() > 15) {
                $client->MovePC(344, 0, 312, 2, 0); # Zone: guildlobby
        }

        #if I am idle for more than xx seconds, auto-afk and go invisible/don't draw model
#  Disabling AutoAFK  rdh 05222023
#        quest::settimer("afk_check", 1200); #20 minutes

/*  Client version doesn't matter - sending everyone to the ONE instance of guildlobby    -rdh01302025

        if(($client->GetClientVersionBit() & 4294967264)!= 0) {
                if($client->GetInstanceID() != 5) {
                        quest::settimer(1,10);
                        $client->Message(0,"Invalid Zone(344:0): You will be redirected to the proper instance in 10 seconds.");
                }
        } else {
                if($client->GetInstanceID() == 5) {
                        quest::settimer(2,10);
                        $client->Message(0,"Invalid Zone(344:5): You will be redirected to the proper zone in 10 seconds.");
                }
        }
}
*/

sub EVENT_SIGNAL {
        #signals received from enter/exit proximity of various NPCs
        #if ($client->GetRace() != 127) {
                #I am not invisible from auto-afk, and I'm still moving around, reset auto-afk timer
                #quest::settimer("afk_check", 1200);
        #} else {
                #I was already set invisible from auto-afk, but now I am moving, set back to base race - not afk
                #$client->SetRace($client->GetBaseRace());
                #$client->SetGender($client->GetBaseGender());
                #if ($client->GetPetID()) {
                #        $Pet_ENT = $entity_list->GetMobByID($client->GetPetID());
                #        $Pet_ENT->SetRace($Pet_ENT->GetBaseRace());
                #}
                #$client->Message(4, "You are no longer idle.");
                #quest::settimer("afk_check", 1200);
        #}
}

sub EVENT_TIMER {
        if($timer == 1) {
#                quest::MovePCInstance(344,5,$x,$y,$z,450); # Zone: guildlobby_INSTANCED
                quest::movepc(344,$x,$y,$z,225); # Zone: guildlobby
        } elsif($timer == 2) {
                quest::movepc(344,$x,$y,$z,225); # Zone: guildlobby
        } elsif($timer eq "afk_check") {
                #I have been idle, go auto-afk and don't draw model
                $client->Message(4, "You are idle, Auto-AFK");
                if ($client->GetPetID()) {
                        $Pet_ENT = $entity_list->GetMobByID($client->GetPetID());
                        $Pet_ENT->SetRace(127);
                }
                $client->SetRace(127);
                $client->SetGender(0);
                quest::stoptimer("afk_check");



This is the guildhall player.pl file:

Code:

# Guild Hall Regen Pool Script - Player Portion

sub EVENT_ENTERZONE {
  quest::settimer("ZoneIn", 3);
}

sub EVENT_TIMER {
  if ($timer eq "ZoneIn") {
    quest::stoptimer("ZoneIn");
    quest::signalwith(345004,$charid); # NPC: Zeflmin_Werlikanin Portal Crystals
  }
}

sub EVENT_POPUPRESPONSE {
  if ($popupid == 666) { #hateplaneb
    quest::movepc(186,-393,656,3); # Zone: hateplaneb
  }
  if ($popupid == 674) { #airplane
    quest::movepc(71,539,1384,-664); # Zone: airplane
  }
  if ($popupid == 15891) { #dragonscale
    #quest::movepc(442,-1954,3916,19);
  }
  if ($popupid == 2708) { #northkarana
    quest::movepc(13,1209,-3685,-5); # Zone: northkarana
  }
  if ($popupid == 4176) { #ecommons
    quest::movepc(22,-140,-1520,3); # Zone: ecommons
  }
  if ($popupid == 534) { #lavastorm
    quest::movepc(27,460,460,-86); # Zone: lavastorm
  }
  if ($popupid == 2707) { #tox
    quest::movepc(38,-916,-1510,-33); # Zone: tox
  }
  if ($popupid == 2706) { #gfaydark
    quest::movepc(54,-441,-2023,4); # Zone: gfaydark
  }
  if ($popupid == 2709) { #dreadlands
    quest::movepc(86,9658,3047,1052); # Zone: dreadlands
  }
  if ($popupid == 2284) { #iceclad
    quest::movepc(110,385,5321,-17); # Zone: iceclad
  }
  if ($popupid == 2031) { #coboltscar
    quest::movepc(117,-1634,-1065,299); # Zone: cobaltscar
  }
  if ($popupid == 3615) { #twilight
    quest::movepc(170,-1028,1338,39); # Zone: twilight
  }
  if ($popupid == 3794) { #stonebrunt
    quest::movepc(100,673,-4531,0); # Zone: stonebrunt
  }
  if ($popupid == 6180) { #wallofslaughter
    quest::movepc(300,-943,13,130); # Zone: wallofslaughter
  }
  if ($popupid == 5733) { #barindu
    quest::movepc(283,209,-515,-119); # Zone: barindu
  }
  if ($popupid == 8237) { #eastkorlach
    #quest::movepc(362,-750,-1002,48);
  }
  if ($popupid == 8967) { #arcstone
    #quest::movepc(369,1630,-279,5);
  }
  if ($popupid == 999) { #mesa
    #quest::movepc(397,-85,-2050,19);
  }
  if ($popupid == 1000) { #guild banner
    #not implemented yet
  }
  if ($popupid == 416) { #kattacastrum
    #quest::movepc(416,-2,-425,-19);
  }
  if ($popupid == 20543) { #potimea
    quest::movepc(219,0,110,8); # Zone: potimea
  }
  if ($popupid == 21986) { #brellsrest
    #quest::movepc(480,-23,-619,36);
  }
}

sub EVENT_CLICKDOOR
{
# This will move RoF clients to their instance, the rest are handled in the DB
  if (($client->GetClientVersionBit() & 4294967264) != 0) {
    if ($doorid == 2 || $doorid == 5) {
# Do we really need the check here?
#      if ($client->CalculateDistance(-3.4, -162.9, 6.9) <= 30) {
#        quest::MovePCInstance(344, 5, 0, 588, 1.75, 260); # Zone: guildlobby
        quest::MovePC(344, 0, 312, 2, 0); # Zone: guildlobby       
#      }
    }
  }
}


Update your quests in the Guild Hall and Lobby to the newest quests located on PEQs repo. https://github.com/projecteq/projecteqquests

Riklin 02-01-2025 08:17 PM

Quote:

Originally Posted by fryguy (Post 270408)
Update your quests in the Guild Hall and Lobby to the newest quests located on PEQs repo. https://github.com/projecteq/projecteqquests

Those the quests didn't completely fix the issue. I end up with being able to go into the guild hall, but the door to return to the guildlobby is gone. I temporarily put a teleport npc there to mediate the issue until I can get a permanent resolution... Oh, and yes, I realized the guildhall has to be an instance, because of there being one for each guild...

You hit the "nail on the head"! I need to clone this server, rebuild the server, then replace the new database with one from a backup. If that works, I'm golden until things change too much again...

Thank you for your assistance...


All times are GMT -4. The time now is 01:31 AM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.