Go Back   EQEmulator Home > EQEmulator Forums > Support > Support::General Support

Support::General Support Post all topics here having to do with errors while trying to connect to an EQEMu server but not about the setup/running of the Server itself.

Reply
 
Thread Tools Display Modes
  #1  
Old 01-31-2025, 03:29 AM
Riklin
Hill Giant
 
Join Date: May 2003
Location: Tacoma, WA
Posts: 229
Default 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...
Reply With Quote
  #2  
Old 01-31-2025, 06:29 PM
Riklin
Hill Giant
 
Join Date: May 2003
Location: Tacoma, WA
Posts: 229
Default

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        
#      }
    }
  }
}

Last edited by Riklin; 01-31-2025 at 06:36 PM.. Reason: Putting coding in brackets...
Reply With Quote
  #3  
Old 02-01-2025, 09:28 AM
Splose's Avatar
Splose
Discordant
 
Join Date: Apr 2014
Posts: 280
Default

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.
Reply With Quote
  #4  
Old 02-01-2025, 11:53 AM
fryguy
Sarnak
 
Join Date: May 2007
Posts: 53
Default

Quote:
Originally Posted by Riklin View Post
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
Reply With Quote
  #5  
Old 02-01-2025, 08:17 PM
Riklin
Hill Giant
 
Join Date: May 2003
Location: Tacoma, WA
Posts: 229
Default

Quote:
Originally Posted by fryguy View Post
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...
Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 06:08 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3