EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Support::Windows Servers (https://www.eqemulator.org/forums/forumdisplay.php?f=587)
-   -   Guild Hall, Guild Bank, and Dynamic Zones (https://www.eqemulator.org/forums/showthread.php?t=39278)

Missneye 01-27-2015 02:45 PM

Guild Hall, Guild Bank, and Dynamic Zones
 
First, I'm looking into getting my Guild Hall working for all guilds on my server. Currently I can get it to work with all NPCs inside and all of them being functional except the Guild Banker. However, the Guild Hall doors in the Guild Lobby will often not create a Guild Hall instance, and will instead port people right back into the Guild Lobby. I'm guessing this is because of my player.pl file. Does anyone happen to have a working script for the Guild Hall that I could use?

Second, when trying to use the Guild Bank, the game simply crashes. I assume that's because I need a script or it isn't implemented. I am using the SoF and Titanium clients with the AXClassic repack, PEQ database. If it does require a script, could someone let me steal that as well?

And third...I use dynamic zones rather than static. For the most part it works perfectly fine, and I have zones staying up for 30 minutes before shutting down if no one is inside. However, corpses will disappear if someone kills something, camps or zones, then tries to come back on either the same or a different character and loot it. Perhaps I have a rule set to something I shouldn't. Has anyone else had this issue?

Thank you. :)

provocating 01-27-2015 03:11 PM

You are probably using RoF2, the guild bank will make your client act strange so stay away from doing that.

Yes, you can remove instancing with the player.pl file, easy to do.

Keep in mind you will have to edit your doors for Guild Hall on the RoF2 client, otherwise there are none.

Hmm, just reread and you say you are using the SoF client? Most of the issues you discuss are related to RoF2.

Missneye 01-27-2015 04:01 PM

Yes, I am using SoF. This repack I'm using doesn't support any higher or I'd use either UF or RoF2.

Any idea if the Guild Hall on Live uses instancing? I'd imagine it does, given the amount of guilds on Live servers, but I'm not entirely sure. I have multiple guilds on my server, so I still want more than just one Guild Hall zone unless I can't get the Guild Bank to work.

provocating 01-27-2015 05:12 PM

Okay, I was thinking Guild Lobby, not Guild Hall.

Post your current player.pl for that zone.

Missneye 01-27-2015 05:36 PM

This is inside the guildlobby player.pl. I haven't changed it at all.

Code:

sub EVENT_CLICKDOOR {
        my $d_id = ($doorid % 256);
          if($door_id == 2 || $d_id == 4) {
                if($uguild_id > 0) {
                            if (defined($qglobals{"ginstance$uguild_id"})) {
                                $guildinstance = $qglobals{"ginstance$uguild_id"};
                                quest::AssignToInstance($guildinstance);
                                quest::MovePCInstance(345, $guildinstance, -1.2, -126, 2.2);
                            }
                            else {
                                $guildinstance = quest::CreateInstance("guildhall", 1, 86400);
                                quest::AssignToInstance($guildinstance);
                                quest::setglobal("ginstance$uguild_id",$guildinstance,7,"H24");
                                quest::MovePCInstance(345, $guildinstance, -1.2, -126, 2.2);
                            }
                }
            }
}


As for the Guild Hall...

Code:

sub EVENT_ENTERZONE {
if (defined $qglobals{whimsy}) {
quest::delglobal("whimsy");
}
if($hasitem{69059}) {
  quest::settimer(1,72);
  }
}

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

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

sub EVENT_TIMER {
  if ($timer eq "DoRegen")
  {
    quest::stoptimer("DoRegen");
      # Set Regen Percent per tic here
      my $RegenPercent = 5;
      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);
      }
  }
if ($timer == 1) {
  $whimsy_count++;
  }
if($whimsy_count == 1) {
 quest::setglobal("whimsy",1,5,"F");
 }
if($whimsy_count == 2) {
 quest::setglobal("whimsy",2,5,"F");
 }
if($whimsy_count == 3) {
 quest::setglobal("whimsy",3,5,"F");
 }
if($whimsy_count == 4) {
 quest::setglobal("whimsy",4,5,"F");
 }
if($whimsy_count == 5) {
 quest::setglobal("whimsy",5,5,"F");
 }
if($whimsy_count == 6) {
 quest::setglobal("whimsy",6,5,"F");
 }
if($whimsy_count == 7) {
 quest::setglobal("whimsy",7,5,"F");
 }
if($whimsy_count == 8) {
 quest::setglobal("whimsy",8,5,"F");
 }
if($whimsy_count == 9) {
 quest::setglobal("whimsy",9,5,"F");
 }
if($whimsy_count == 10) {
 quest::setglobal("whimsy",10,5,"F");
 quest::stoptimer(1);
 }
}

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_COMBINE_SUCCESS {
  if (($recipe_id == 10904) || ($recipe_id == 10905) || ($recipe_id == 10906) || ($recipe_id == 10907)) {
    $client->Message(15,"The gem resonates with power as the shards placed within glow unlocking some of the stone's power. You were successful in assembling most of the stone but there are four slots left to fill, where could those four pieces be?");
  }
  if ($recipe_id == 10903) {
    if (($class eq "Bard") || ($class eq "Beastlord") || ($class eq "Paladin") || ($class eq "Ranger") ||  ($class eq "Shadowknight")) {
      quest::summonitem(67666);
      quest::summonitem(67704);
    }
    elsif (($class eq "Warrior") || ($class eq "Monk") || ($class eq "Berserker")  || ($class eq "Rogue"))  {
      quest::summonitem(67665);
      quest::summonitem(67704);
    }
    elsif (($class eq "Cleric") || ($class eq "Shaman") || ($class eq "Druid")) {
      quest::summonitem(67667); 
      quest::summonitem(67704);
    }
    elsif (($class eq "Necromancer") || ($class eq "Wizard") || ($class eq "Enchanter")  || ($class eq "Magician")) {
      quest::summonitem(67668);
      quest::summonitem(67704);
    }
    $client->Message(1,"Success");
  }
  if ($recipe_id == 10346) {
    if (($class eq "Bard") || ($class eq "Beastlord") || ($class eq "Paladin") || ($class eq "Ranger") ||  ($class eq "Shadowknight")) {
      quest::summonitem(67661);
      quest::summonitem(67704);
    }
    elsif (($class eq "Warrior") || ($class eq "Monk") || ($class eq "Berserker")  || ($class eq "Rogue"))  {
      quest::summonitem(67660);
      quest::summonitem(67704);
    }
    elsif (($class eq "Cleric") || ($class eq "Shaman") || ($class eq "Druid")) {
      quest::summonitem(67662);
      quest::summonitem(67704);
    }
    elsif (($class eq "Necromancer") || ($class eq "Wizard") || ($class eq "Enchanter")  || ($class eq "Magician")) {
      quest::summonitem(67663);
      quest::summonitem(67704);
    }
    $client->Message(1,"Success");
  }
  if ($recipe_id == 10334) {
    if (($class eq "Bard") || ($class eq "Beastlord") || ($class eq "Paladin") || ($class eq "Ranger") ||  ($class eq "Shadowknight")) {
      quest::summonitem(67654);
      quest::summonitem(67704);
    }
    elsif (($class eq "Warrior") || ($class eq "Monk") || ($class eq "Berserker")  || ($class eq "Rogue"))  {
      quest::summonitem(67653);
      quest::summonitem(67704);
    }
    elsif (($class eq "Cleric") || ($class eq "Shaman") || ($class eq "Druid")) {
      quest::summonitem(67655);
      quest::summonitem(67704);
    }
    elsif (($class eq "Necromancer") || ($class eq "Wizard") || ($class eq "Enchanter")  || ($class eq "Magician")) {
      quest::summonitem(67656);
      quest::summonitem(67704);
    }
    $client->Message(1,"Success");
  }
}


trevius 01-28-2015 10:16 AM

AXClassic is quite old and outdated. Your source code is probably from before the guild bank was even implemented into EQEmu at all. I am guessing SoF is the newest client your server supports?

If you want guild bank to work, you are most likely going to have to update your source code (compile the latest), and update your database to match the latest source. We have an auto-update script for database updates now, but I am pretty sure it doesn't go back as far as AXClassic would need yet. So, you would probably have to do some of it manually.

As far as scripts go; you can download the PEQ scripts and check them out/copy them yourself.

Missneye 02-01-2015 09:27 PM

Thanks, trevius!

I've been using some of the files from current PEQ and testing them the last few days. The GH seems to work fine now, and I managed to fix a lot PoP raids just by replacing those files or editing the scripts a little. Oddly enough, some of my old files worked where the most recent PEQ files didn't, such as with the PoNightmare maze raid. My server only goes up to LDoN, so getting PoP fully functional is pretty much essential. Thanks again. :)


All times are GMT -4. The time now is 02:34 PM.

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