EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::Windows Servers (https://www.eqemulator.org/forums/forumdisplay.php?f=587)
-   -   RoF Guild Lobby Question (https://www.eqemulator.org/forums/showthread.php?t=39209)

provocating 01-10-2015 11:19 AM

RoF Guild Lobby Question
 
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

Quote:

Originally Posted by Uleat (Post 236790)
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.

Code:

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

Code:

# 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

Code:

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);
        }
}



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

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