PDA

View Full Version : RoF Guild Lobby Question


provocating
01-10-2015, 11:19 AM
I notice that through scripting, everyone has been very persistent redirecting any RoF players to a separate instance of the Guild Hall. Since this can be a bit of a hub zone for some servers, it separates the players. Why the separate instances for RoF players? I removed it temporarily and only see an issue with the doors not appearing, which I would think would be fixable?

Maybe someone knows (Trevius)?

Nightrider84
01-11-2015, 12:49 PM
Yeah thats an issue I run into on my server aswell, A temporary fix is to have the script direct you to the old zone and have a proxy npc setup where the door would be so when you walk up to the blank space it ports you to PoK

trevius
01-12-2015, 11:12 AM
I haven't really had time to look into what causes the doors issue in Guild Lobby yet. The doors appear to be in the same location on the map as previous clients, so I don't know why they show up in completely different locations. I believe the only reason PEQ DB/Scripts move RoF+ chars to another instance is just to fix the doors. So, if we can fix doors without needing to use a separate instance, that would be ideal. I just haven't had time to look into what causes it or anything related to it yet.

Maybe whoever coded the script/instance could chime in. I don't know who did it offhand.

Uleat
01-12-2015, 04:27 PM
Why RoF+ uses a specfic instance over a 'common' one? Might be due to neighborhoods.

I don't know if they actually send you to another zone, or are a part of the guild lobby..which would necessitate a 'guild' instance of lobby.

vsab
01-12-2015, 04:33 PM
They're different zones/ instances of sunrise hills (or sunset hills, I forget)

provocating
01-12-2015, 06:16 PM
Why RoF+ uses a specfic instance over a 'common' one? Might be due to neighborhoods.

I don't know if they actually send you to another zone, or are a part of the guild lobby..which would necessitate a 'guild' instance of lobby.

Yes, that is the main reason, neighborhood access.

provocating
01-17-2015, 11:52 AM
I made quite a few small changes, not sure which one did it but I have the guild lobby working without it being an instance and the doors are working.

Nightrider84
01-17-2015, 01:03 PM
Lol details would be great

provocating
01-17-2015, 02:00 PM
Working on that.

provocating
01-17-2015, 02:22 PM
Let me do more testing on my test server, then the production server. Once I am confident that it is working on all clients I will put the code here.

provocating
02-06-2015, 10:24 AM
If anyone still needs these then just PM me and I will fashion you a delete and replace. There were a few changes on our end.

provocating
02-06-2015, 05:43 PM
I got a report back that this worked, so I am posting it here. Backup your stuff and restart the server after you do it.

UPDATE `doors` SET `version` = 0 WHERE `id` = 36630;
UPDATE `doors` SET `version` = 0, `dest_x` = 1327, `dest_y` = -391, `dest_z` = -124.940002441406, `dest_heading` = 189 WHERE `id` = 36631;
UPDATE `doors` SET `version` = 0 WHERE `id` = 36632;
UPDATE `doors` SET `door_param` = 0, `dest_instance` = 0, `client_version_mask` = 4294967295 WHERE `id` = 36666;
UPDATE `doors` SET `dest_instance` = 0, `client_version_mask` = 4294967295 WHERE `id` = 36667;

COMMIT;

\quests\guildhall\player.pl

# Guild Hall Regen Pool Script - Player Portion

sub EVENT_SIGNAL {
if ($signal == 1) {
quest::settimer("DoRegen", 6);
}
if ($signal == 2) {
quest::stoptimer("DoRegen");
}
}

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

sub EVENT_ZONE {
quest::stoptimer("DoRegen"); #Stop the timer if they zone
}

sub EVENT_TIMER {
if ($timer eq "ZoneIn") {
quest::stoptimer("ZoneIn");
quest::signalwith(345004,$charid);
} else {
quest::stoptimer("DoRegen");
my $RegenPercent = 10; # Set Regen Percent per tic here
if ($client) {
my $HPRatio = $client->GetHPRatio();
if ($HPRatio < 100) {
my $HPMax = $client->GetMaxHP();
my $HPNew = (($HPRatio + $RegenPercent) / 100) * $HPMax;
$client->SetHP($HPNew);
}
my $ManaRatio = $client->GetManaRatio();
if ($ManaRatio < 100) {
my $ManaMax = $client->GetMaxMana();
my $ManaNew = (($ManaRatio + $RegenPercent) / 100) * $ManaMax;
$client->SetMana($ManaNew);
}
my $EnduranceRatio = $client->GetEnduranceRatio();
if ($EnduranceRatio < 100) {
my $EnduranceMax = $client->GetMaxEndurance();
my $EnduranceNew = (($EnduranceRatio + $RegenPercent) / 100) * $EnduranceMax;
$client->SetEndurance($EnduranceNew);
}
quest::settimer("DoRegen", 6);
}
}
}

sub EVENT_POPUPRESPONSE {
if ($popupid == 666) { #hateplaneb
quest::movepc(186,-393,656,3);
}
if ($popupid == 674) { #airplane
quest::movepc(71,539,1384,-664);
}
if ($popupid == 15891) { #dragonscale
#quest::movepc(442,-1954,3916,19);
}
if ($popupid == 2708) { #northkarana
quest::movepc(13,1209,-3685,-5);
}
if ($popupid == 4176) { #ecommons
quest::movepc(22,-140,-1520,3);
}
if ($popupid == 534) { #lavastorm
quest::movepc(27,460,460,-86);
}
if ($popupid == 2707) { #tox
quest::movepc(38,-916,-1510,-33);
}
if ($popupid == 2706) { #gfaydark
quest::movepc(54,-441,-2023,4);
}
if ($popupid == 2709) { #dreadlands
quest::movepc(86,9658,3047,1052);
}
if ($popupid == 2284) { #iceclad
quest::movepc(110,385,5321,-17);
}
if ($popupid == 2031) { #coboltscar
quest::movepc(117,-1634,-1065,299);
}
if ($popupid == 3615) { #twilight
quest::movepc(170,-1028,1338,39);
}
if ($popupid == 3794) { #stonebrunt
quest::movepc(100,673,-4531,0);
}
if ($popupid == 6180) { #wallofslaughter
#quest::movepc(300,-943,13,130);
}
if ($popupid == 5733) { #barindu
quest::movepc(283,209,-515,-119);
}
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);
}
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) {
quest::MovePCInstance(344, 5, 0, 588, 1.75, 130);
}
}
}


\quests\guildlobby\player.pl

sub EVENT_CLICKDOOR
{
if($doorid == 2 || $doorid == 4 || $doorid == 40 || $doorid == 42)
{
if($uguild_id > 0)
{
if (defined($qglobals{"ginstance$uguild_id"}))
{
$guildinstance = $qglobals{"ginstance$uguild_id"};
quest::AssignToInstance($guildinstance);
quest::MovePCInstance(345, $guildinstance, -1.00, -1.00, 3.34);
}
else
{
$guildinstance = quest::CreateInstance("guildhall", 1, 86400);
quest::AssignToInstance($guildinstance);
quest::setglobal("ginstance$uguild_id",$guildinstance,7,"H24");
quest::MovePCInstance(345, $guildinstance, -1.00, -1.00, 3.34)
}
}
}
if((($doorid >= 5) && ($doorid <= 38)) || (($doorid >= 43) && ($doorid <= 76)))
{
$client->OpenLFGuildWindow();
}
}

sub EVENT_TIMER
{
if($timer == 1)
{
quest::MovePCInstance(344,5,$x,$y,$z,225);
}
if($timer == 2)
{
quest::movepc(344,$x,$y,$z,225);
}
}